import type { ChangesBatch } from './Change.js';
import type { Source } from './Source.js';
import { ReadonlyTree } from './Tree.js';
export interface GithubSourceOptions {
    authToken: string;
    owner: string;
    repo: string;
    branch: string;
    rootDir: string;
    contentDir: string;
}
export declare class GithubSource implements Source {
    #private;
    constructor(options: GithubSourceOptions);
    protected get contentLocation(): string;
    getTree(): Promise<ReadonlyTree>;
    shaAt(ref: string): Promise<string>;
    getTreeIfDifferent(sha: string): Promise<ReadonlyTree | undefined>;
    getBlobs(shas: Array<string>): AsyncGenerator<[sha: string, blob: Uint8Array]>;
    applyChanges(batch: ChangesBatch): Promise<void>;
}
