import 'cozy-client' import { CozyLink } from 'cozy-client' import { CozyClientDocument, QueryOptions, QueryResult, ClientCapabilities } from 'cozy-client/types/types' declare module 'cozy-client' { interface ClientOptions { appMetadata?: AppMetadata autoHydrate?: boolean backgroundFetching?: boolean capabilities?: ClientCapabilities client?: object link?: object links?: object oauth?: object onError?: (...args: unknown[]) => unknown onTokenRefresh?: (...args: unknown[]) => unknown schema?: object stackClient?: object store?: boolean token?: Token uri?: string warningForCustomHandlers?: boolean } interface OAuthOptions { clientID: string clientName: string clientSecret: string } interface AccessToken { token_type: string access_token: string accessToken?: string refresh_token: string scope: string } interface AccessToken { token_type: string access_token: string accessToken?: string refresh_token: string scope: string } interface AppToken { token: string } interface LoginFlagshipParams { passwordHash: string twoFactorToken?: string twoFactorPasscode?: string } interface LoginFlagship2faNeededResult { two_factor_token: string } interface FlagshipVerificationNeededResult { session_code: string } type LoginFlagshipResult = | AccessToken | LoginFlagship2faNeededResult | FlagshipVerificationNeededResult interface SetPassphraseFlagshipParams { registerToken: string passwordHash: string hint: string iterations: number key: string publicKey: string privateKey: string } type SetPassphraseFlagshipResult = | AccessToken | FlagshipVerificationNeededResult interface StackClient { fetchJSON: (method: string, path: string, body?: unknown) => Promise fetchKonnectorToken: (slug: string) => Promise fetchSessionCode: () => Promise<{ session_code: string }> getAuthorizationHeader: () => string loginFlagship: (params: LoginFlagshipParams) => Promise oauthOptions: OAuthOptions register: (instance: string) => Promise setToken: (token: AccessToken) => void setUri: (uri: string) => void token: AppToken uri: string setPassphraseFlagship: ( params: SetPassphraseFlagshipParams ) => Promise updateInformation: (options: OAuthOptions) => Promise } interface InstanceOptions { capabilities: { flat_subdomains: boolean } subdomain: 'flat' | 'nested' locale: string } export const useClient = (): CozyClient => CozyClient as CozyClient export interface SplitFilenameResult { filename: string extension: string } export interface FileCollectionGetResult { data: { _id: string _rev: string name: string path: string metadata?: { backupDeviceIds: string[] } attributes: { path: string } } } export interface StackErrors { errors: { status: string title: string detail: string }[] } interface Collection { findReferencedBy: ( params: object ) => Promise<{ included: { attributes: unknown }[] }> createDirectoryByPath: (path: string) => Promise ensureDirectoryExists: (path: string) => Promise getDirectoryOrCreate: ( name: string, parentDirectory: object ) => Promise createFileMetadata: (metadata: object) => Promise<{ data: { id: string } }> addReferencesTo: (references: object, dirs: object[]) => Promise // eslint-disable-next-line @typescript-eslint/no-explicit-any launch: (trigger: any) => any } export default class CozyClient { // eslint-disable-next-line @typescript-eslint/no-explicit-any plugins: Record constructor(rawOptions?: ClientOptions) getStackClient(): StackClient getInstanceOptions(): InstanceOptions instanceOptions: InstanceOptions collection(doctype: string): Collection isLogged: boolean on: ( event: string, callback: (doctype: string) => void | Promise ) => void removeListener: (event: string, callback: () => void) => void logout: () => Promise query: ( queryDefinition: QueryDefinition, options?: QueryOptions ) => Promise queryAll: ( queryDefinition: QueryDefinition, options?: QueryOptions ) => Promise links: CozyLink[] capabilities: ClientCapabilities registerPlugin: (Plugin: () => void, options: unknown) => void getCollectionFromState: (type: string) => CozyClientDocument[] } }