<?php

declare(strict_types=1);

/**
 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
 * SPDX-License-Identifier: AGPL-3.0-or-later
 */

namespace OCA\Files_Sharing;

/**
 * @psalm-type Files_SharingShare = array{
 *     attributes: ?string,
 *     can_delete: bool,
 *     can_edit: bool,
 *     displayname_file_owner: string,
 *     displayname_owner: string,
 *     expiration: ?string,
 *     file_parent: int,
 *     file_source: int,
 *     file_target: string,
 *     has_preview: bool,
 *     hide_download: 0|1,
 *     is-mount-root: bool,
 *     id: string,
 *     item_mtime: int,
 *     item_permissions?: int,
 *     item_size: float|int,
 *     item_source: int,
 *     item_type: 'file'|'folder',
 *     label: string,
 *     mail_send: 0|1,
 *     mimetype: string,
 *     mount-type: string,
 *     note: string,
 *     parent: null,
 *     password?: null|string,
 *     password_expiration_time?: ?string,
 *     path: ?string,
 *     permissions: int,
 *     send_password_by_talk?: bool,
 *     share_type: int,
 *     share_with?: null|string,
 *     share_with_avatar?: string,
 *     share_with_displayname?: string,
 *     share_with_displayname_unique?: ?string,
 *     share_with_link?: string,
 *     status?: array{clearAt: int|null, icon: ?string, message: ?string, status: string},
 *     stime: int,
 *     storage: int,
 *     storage_id: string,
 *     token: ?string,
 *     uid_file_owner: string,
 *     uid_owner: string,
 *     url?: string,
 * }
 *
 * @psalm-type Files_SharingDeletedShare = array{
 *     id: string,
 *     share_type: int,
 *     uid_owner: string,
 *     displayname_owner: string,
 *     permissions: int,
 *     stime: int,
 *     uid_file_owner: string,
 *     displayname_file_owner: string,
 *     path: string,
 *     item_type: string,
 *     mimetype: string,
 *     storage: int,
 *     item_source: int,
 *     file_source: int,
 *     file_parent: int,
 *     file_target: int,
 *     expiration: string|null,
 *     share_with: string|null,
 *     share_with_displayname: string|null,
 *     share_with_link: string|null,
 * }
 *
 * @psalm-type Files_SharingRemoteShare = array{
 *     accepted: bool,
 *     file_id: int|null,
 *     id: int,
 *     mimetype: string|null,
 *     mountpoint: string,
 *     mtime: int|null,
 *     name: string,
 *     owner: string,
 *     parent: int|null,
 *     permissions: int|null,
 *     remote: string,
 *     remote_id: string,
 *     share_token: string,
 *     share_type: int,
 *     type: string|null,
 *     user: string,
 * }
 *
 * @psalm-type Files_SharingSharee = array{
 *     count: int|null,
 *     label: string,
 * }
 *
 * @psalm-type Files_SharingShareeValue = array{
 *     shareType: int,
 *     shareWith: string,
 * }
 *
 * @psalm-type Files_SharingShareeUser = Files_SharingSharee&array{
 *     subline: string,
 *     icon: string,
 *     shareWithDisplayNameUnique: string,
 *     status: array{
 *         status: string,
 *         message: string,
 *         icon: string,
 *         clearAt: int|null,
 *     },
 *     value: Files_SharingShareeValue,
 * }
 *
 * @psalm-type Files_SharingShareeRemoteGroup = Files_SharingSharee&array{
 *     guid: string,
 *     name: string,
 *     value: Files_SharingShareeValue&array{
 *         server: string,
 *     }
 * }
 *
 * @psalm-type Files_SharingLookup = array{
 *     value: string,
 *     verified: int,
 * }
 *
 * @psalm-type Files_SharingShareeLookup = Files_SharingSharee&array{
 *     extra: array{
 *         federationId: string,
 *         name: Files_SharingLookup|null,
 *         email: Files_SharingLookup|null,
 *         address: Files_SharingLookup|null,
 *         website: Files_SharingLookup|null,
 *         twitter: Files_SharingLookup|null,
 *         phone: Files_SharingLookup|null,
 *         twitter_signature: Files_SharingLookup|null,
 *         website_signature: Files_SharingLookup|null,
 *         userid: Files_SharingLookup|null,
 *     },
 *     value: Files_SharingShareeValue&array{
 *         globalScale: bool,
 *     }
 * }
 *
 * @psalm-type Files_SharingShareeEmail = Files_SharingSharee&array{
 *     uuid: string,
 *     name: string,
 *     type: string,
 *     shareWithDisplayNameUnique: string,
 *     value: Files_SharingShareeValue,
 * }
 *
 * @psalm-type Files_SharingShareeRemote = Files_SharingSharee&array{
 *     uuid: string,
 *     name: string,
 *     type: string,
 *     value: Files_SharingShareeValue&array{
 *         server: string,
 *     }
 * }
 *
 * @psalm-type Files_SharingShareeCircle = Files_SharingSharee&array{
 *     shareWithDescription: string,
 *     value: Files_SharingShareeValue&array{
 *         circle: string,
 *     }
 * }
 *
 * @psalm-type Files_SharingShareesSearchResult = array{
 *     exact: array{
 *         circles: list<Files_SharingShareeCircle>,
 *         emails: list<Files_SharingShareeEmail>,
 *         groups: list<Files_SharingSharee>,
 *         remote_groups: list<Files_SharingShareeRemoteGroup>,
 *         remotes: list<Files_SharingShareeRemote>,
 *         rooms: list<Files_SharingSharee>,
 *         users: list<Files_SharingShareeUser>,
 *     },
 *     circles: list<Files_SharingShareeCircle>,
 *     emails: list<Files_SharingShareeEmail>,
 *     groups: list<Files_SharingSharee>,
 *     lookup: list<Files_SharingShareeLookup>,
 *     remote_groups: list<Files_SharingShareeRemoteGroup>,
 *     remotes: list<Files_SharingShareeRemote>,
 *     rooms: list<Files_SharingSharee>,
 *     users: list<Files_SharingShareeUser>,
 *     lookupEnabled: bool,
 * }
 *
 * @psalm-type Files_SharingShareesRecommendedResult = array{
 *     exact: array{
 *         emails: list<Files_SharingShareeEmail>,
 *         groups: list<Files_SharingSharee>,
 *         remote_groups: list<Files_SharingShareeRemoteGroup>,
 *         remotes: list<Files_SharingShareeRemote>,
 *         users: list<Files_SharingShareeUser>,
 *     },
 *     emails: list<Files_SharingShareeEmail>,
 *     groups: list<Files_SharingSharee>,
 *     remote_groups: list<Files_SharingShareeRemoteGroup>,
 *     remotes: list<Files_SharingShareeRemote>,
 *     users: list<Files_SharingShareeUser>,
 * }
 *
 * @psalm-type Files_SharingShareInfo = array{
 *     id: int,
 *     parentId: int,
 *     mtime: int,
 *     name: string,
 *     permissions: int,
 *     mimetype: string,
 *     size: int|float,
 *     type: string,
 *     etag: string,
 *     children?: list<array<string, mixed>>,
 * }
 */
class ResponseDefinitions {
}
