import { Writable } from 'node:stream';
import { Logger } from 'winston';
import { GoogleFile, SimpleFile } from '../model/GoogleFile.js';
import { FileId } from '../model/model.js';
import { Drive, Permission } from '../containers/folder_registry/FolderRegistryContainer.js';
import { QuotaLimiter } from './QuotaLimiter.js';
import { HasAccessToken } from './AuthClient.js';
import { Buffer } from "node:buffer";
export interface Changes {
    token: string;
    files: GoogleFile[];
}
export interface ListContext {
    folderId?: string;
    fileId?: string;
    modifiedTime?: string;
    driveId?: string;
    retries?: number;
}
export interface HasId {
    id: string;
}
export declare class GoogleDriveService {
    private logger;
    private quotaLimiter;
    constructor(logger: Logger, quotaLimiter: QuotaLimiter);
    getStartTrackToken(auth: HasAccessToken, driveId?: string): Promise<string>;
    watchChanges(auth: HasAccessToken, pageToken: string, driveId?: string): Promise<Changes>;
    listFiles(auth: HasAccessToken, context: ListContext, pageToken?: string): any;
    getFile(auth: HasAccessToken, fileId: FileId): Promise<GoogleFile>;
    download(auth: HasAccessToken, file: SimpleFile, dest: Writable): Promise<void>;
    exportDocument(auth: HasAccessToken, file: GoogleFile, dest: Writable): Promise<void>;
    about(auth: HasAccessToken): Promise<any>;
    listDrives(accessToken: string, pageToken?: string): Promise<Drive[]>;
    getDrive(accessToken: string, driveId: FileId): Promise<Drive>;
    listPermissions(accessToken: string, fileId: string, pageToken?: string): Promise<Permission[]>;
    shareDrive(accessToken: string, fileId: string, email: string): Promise<Permission>;
    createDir(accessToken: string, folderId: FileId, name: string): Promise<HasId>;
    generateIds(accessToken: string, count: number): Promise<FileId[]>;
    upload(accessToken: string, folderId: FileId, name: string, mimeType: string, buffer: Buffer, id?: FileId): Promise<HasId>;
    update(accessToken: string, folderId: FileId, name: string, mimeType: string, buffer: Buffer, fileId: FileId): Promise<HasId>;
}
//# sourceMappingURL=GoogleDriveService.d.ts.map