/**
 * Narrow `DriveClient` interface — just enough of the Drive v3 API surface
 * for the fetcher to call. Lets unit tests inject a fake at the transport
 * seam instead of mocking `@googleapis/drive` internals.
 *
 * The shape mirrors the real `drive_v3.Drive` client where it matters:
 * `files.get`, `files.export`, `files.list`. Anything else stays unused.
 */
/** A single Drive file as returned by `files.get` / `files.list`. */
export interface DriveFileMeta {
    id: string;
    name: string;
    mimeType: string;
    /** Drive's monotonic version field — the per-file invalidation key. */
    version?: string;
}
export interface DriveFileGetResponse {
    data: DriveFileMeta & {
        [key: string]: unknown;
    };
}
export interface DriveFileExportResponse {
    /** Drive returns the exported body as a string for text MIME types. */
    data: string;
}
export interface DriveFileListResponse {
    data: {
        files?: DriveFileMeta[];
        nextPageToken?: string;
    };
}
export interface DriveClient {
    files: {
        get(params: {
            fileId: string;
            fields?: string;
            alt?: "json" | "media";
            /** Required for Shared Drive content. No-op for My Drive files. */
            supportsAllDrives?: boolean;
        }): Promise<DriveFileGetResponse>;
        export(params: {
            fileId: string;
            mimeType: string;
            /** Required for Shared Drive content. No-op for My Drive files. */
            supportsAllDrives?: boolean;
        }): Promise<DriveFileExportResponse>;
        list(params: {
            q: string;
            fields?: string;
            pageSize?: number;
            pageToken?: string;
            /** Required for Shared Drive content. No-op for My Drive files. */
            supportsAllDrives?: boolean;
            /** Without this, `files.list` excludes Shared Drive items even when
             *  the caller is a member of the Shared Drive. */
            includeItemsFromAllDrives?: boolean;
        }): Promise<DriveFileListResponse>;
    };
}
