import { GDriveAccessor } from '../../accessor/gdrive.ts';
import { type DeltaHook } from '../../events/index.ts';
import type { ByteSource } from '../../io/types.ts';
import type { CapacityResult, DirListing, FileStat, PathSpec, SetAttrFields } from '../../types.ts';
import { BaseVFS } from '../base.ts';
import type { RedactedSchema } from '../secrets.ts';
import type { ConfigState, Handed } from '../types.ts';
import { GoogleDriveConfig } from './config.ts';
export declare const VFS_MD = "```text\n{prefix}\n  <folder>/              # the Drive folder hierarchy, mirrored\n    <name>.gdoc.json     # Google Docs: the gdocs gdoc.json shape\n    <name>.gsheet.json   # Google Sheets: the gsheets gsheet.json shape\n    <name>.gslide.json   # Google Slides: the gslides gslide.json shape\n    <file>               # PDFs, images and the rest: raw bytes\n  <shared-drive>/        # each shared drive you can see\n```\n\n- There is no `owned/` and `shared/` split: this is your full Drive\n  view, including files shared with you that were added to My Drive.\n- This is a remote mount: prefer targeted reads over full scans. A\n  date-prefixed glob (`2026-05-*`) becomes a Drive `modifiedTime` range\n  query.\n- To act on Drive items by id (create, update, export, permissions), use\n  the `gws` CLI if installed (`gws drive --help`).";
export declare class GoogleDriveVFS extends BaseVFS {
    readonly name: string;
    readonly cachesReads: boolean;
    readonly supportsSnapshot: boolean;
    readonly readRevalidatable: boolean;
    readonly indexTtl: number;
    readonly handed: {
        readonly readdir: readonly ["entry"];
        readonly read: readonly ["entry"];
        readonly stat: readonly ["entry"];
        readonly checksum: readonly ["entry"];
        readonly exists: readonly ["entry"];
        readonly readTree: readonly ["entry"];
        readonly write: readonly ["entry", "parent"];
        readonly create: readonly ["entry", "parent"];
        readonly mkdir: readonly ["parent"];
        readonly unlink: readonly ["entry"];
        readonly rmdir: readonly ["entry"];
        readonly rmR: readonly ["entry"];
        readonly rename: readonly ["entry", "parent", "dstParent", "dstEntry"];
        readonly copy: readonly ["entry", "dstParent", "dstEntry"];
        readonly dirCopy: readonly ["entry", "dstParent", "dstEntry"];
        readonly truncate: readonly ["entry", "parent"];
        readonly setattr: readonly ["entry"];
        readonly filesContaining: readonly ["entry"];
    };
    vfsMd: string;
    readonly wholeWordSearch: boolean;
    readonly config: GoogleDriveConfig;
    readonly accessor: GDriveAccessor;
    constructor(config: GoogleDriveConfig);
    readonly readsRanges: boolean;
    readdir(path: PathSpec, handed?: Handed): Promise<FileStat[] | DirListing>;
    read(path: PathSpec, handed?: Handed, offset?: number, size?: number | null): Promise<ByteSource> | AsyncIterable<Uint8Array>;
    stat(path: PathSpec, handed?: Handed): Promise<FileStat>;
    checksum(path: PathSpec, algorithm: string, handed?: Handed): Promise<string | null>;
    exists(path: PathSpec, handed?: Handed): Promise<boolean>;
    readTree(path: PathSpec, handed?: Handed): Promise<Map<string, FileStat> | null>;
    write(path: PathSpec, data: ByteSource, signal?: AbortSignal, handed?: Handed): Promise<FileStat | null>;
    create(path: PathSpec, handed?: Handed): Promise<FileStat | null>;
    mkdir(path: PathSpec, parents?: boolean, handed?: Handed): Promise<FileStat | null>;
    unlink(path: PathSpec, handed?: Handed): Promise<void>;
    rmdir(path: PathSpec, handed?: Handed): Promise<void>;
    rmR(path: PathSpec, handed?: Handed): Promise<void>;
    rename(src: PathSpec, dst: PathSpec, handed?: Handed): Promise<FileStat | null>;
    copy(src: PathSpec, dst: PathSpec, signal?: AbortSignal, handed?: Handed): Promise<FileStat | null>;
    dirCopy(src: PathSpec, dst: PathSpec, handed?: Handed): Promise<FileStat | null>;
    truncate(path: PathSpec, length: number, noCreate?: boolean, handed?: Handed): Promise<void>;
    /**
     * Whether this VFS answers `name`; with no walk limit it reads every
     * file rather than ask the service's search.
     */
    supports(name: string): boolean;
    filesContaining(path: PathSpec, text: string, opts: {
        wholeWord: boolean;
        ignoreCase: boolean;
    }, handed?: Handed): Promise<PathSpec[] | null>;
    setattr(path: PathSpec, fields: SetAttrFields, handed?: Handed): Promise<Record<string, number | string>>;
    capacity(): Promise<CapacityResult>;
    deltaHook(): DeltaHook;
    getState(): Promise<ConfigState<RedactedSchema<typeof GoogleDriveConfig>>>;
}
//# sourceMappingURL=gdrive.d.ts.map