, * value: non-empty-string, * display_name: non-empty-string, * icon: ?SharingIcon, * } * * @psalm-type SharingUser = array{ * user_id: non-empty-string, * instance: ?non-empty-string, * display_name: non-empty-string, * icon: SharingIcon, * } * * @psalm-type SharingRecipient = array{ * class: class-string, * value: non-empty-string, * instance: ?non-empty-string, * display_name: non-empty-string, * icon: ?SharingIcon, * secret: array{ * updatable: bool, * value?: non-empty-string, * url?: non-empty-string, * }, * initiator: ?SharingUser, * } * * @psalm-type SharingState = 'active'|'draft'|'deleted' * * @psalm-type SharingProperty = array{ * class: class-string, * display_name: non-empty-string, * hint: ?non-empty-string, * priority: int<1, 100>, * required: bool, * advanced: bool, * value: ?string, * } * * @psalm-type SharingPropertyBoolean = SharingProperty&array{ * type: 'boolean', * } * * @psalm-type SharingPropertyDate = SharingProperty&array{ * type: 'date', * // ISO 8601 * min_date: ?non-empty-string, * // ISO 8601 * max_date: ?non-empty-string, * } * * @psalm-type SharingPropertyEnum = SharingProperty&array{ * type: 'enum', * valid_values: non-empty-list, * } * * @psalm-type SharingPropertyPassword = SharingProperty&array{ * type: 'password', * } * * @psalm-type SharingPropertyString = SharingProperty&array{ * type: 'string', * min_length: ?positive-int, * max_length: ?positive-int, * } * * @psalm-type SharingPermissionPreset = array{ * class: class-string, * display_name: non-empty-string, * hint: ?non-empty-string, * } * * @psalm-type SharingPermission = array{ * class: class-string, * source_class: ?class-string, * display_name: non-empty-string, * hint: ?non-empty-string, * priority: int<1, 100>, * presets: list>, * enabled: bool, * } * * @psalm-type SharingSourceType = array{ * class: class-string, * } * * @psalm-type SharingShare = array{ * id: non-empty-string, * owner: SharingUser, * // Unix time in milliseconds * last_updated: numeric-string, * state: SharingState, * sources: list, * recipients: list, * properties: list, * permissions: list, * permission_preset: ?class-string, * } */ final class ResponseDefinitions { }