import type { SourceChangeRequestInput, SourceChangeRequestResult, SourceFile, SourceFileHistoryEntry, SourceFileHistoryInput, SourceFileListEntry, SourceFileListInput, SourceFileRef, SourceControlCapabilities, SourceControlProvider, SourceWriteFileInput, SourceWriteResult } from '../source-control.js';
export type GitHubSourceControlProviderConfig = {
    endpoint: string;
    token: string;
    pathPrefix?: string;
    fetch?: typeof fetch;
};
export declare class GitHubSourceControlProvider implements SourceControlProvider {
    readonly id = "github";
    readonly displayName = "GitHub";
    private readonly endpoint;
    private readonly token;
    private readonly pathPrefix;
    private readonly fetch;
    constructor(config: GitHubSourceControlProviderConfig);
    getCapabilities(): Promise<SourceControlCapabilities>;
    readFile(input: SourceFileRef): Promise<SourceFile | null>;
    writeFile(input: SourceWriteFileInput): Promise<SourceWriteResult>;
    listFileHistory(input: SourceFileHistoryInput): Promise<SourceFileHistoryEntry[]>;
    listFiles(input: SourceFileListInput): Promise<SourceFileListEntry[]>;
    openChangeRequest(input: SourceChangeRequestInput): Promise<SourceChangeRequestResult>;
    private sourcePath;
    private unsourcePath;
    private request;
}
export declare function createGitHubSourceControlProviderFromEnv(env?: Record<string, string | undefined>, defaults?: {
    pathPrefix?: string;
}): GitHubSourceControlProvider | undefined;
//# sourceMappingURL=github.d.ts.map