import { TemplateRepository } from './types';
export interface GitHubFile {
    name: string;
    path: string;
    content: string;
    type: 'file' | 'dir';
}
export interface GitHubRepository {
    id?: number;
    owner: string;
    name: string;
    fullName: string;
    defaultBranch: string;
    isTemplate: boolean;
}
export declare class GitHubClient {
    private octokit;
    private installationId;
    constructor(appId: string, privateKey: string, installationId: number);
    createRepository(name: string, description?: string, isPrivate?: boolean): Promise<GitHubRepository>;
    getRepository(owner: string, name: string): Promise<GitHubRepository>;
    getRepositoryContents(owner: string, repo: string, path?: string, ref?: string): Promise<GitHubFile[]>;
    createOrUpdateFile(owner: string, repo: string, path: string, content: string, message: string, branch?: string): Promise<void>;
    createBranch(owner: string, repo: string, branchName: string, fromBranch?: string): Promise<void>;
    createPullRequest(owner: string, repo: string, title: string, body: string, head: string, base: string): Promise<number>;
    parseRepositoryUrl(url: string): Promise<{
        owner: string;
        repo: string;
        branch?: string;
    }>;
    getTemplateFiles(template: TemplateRepository): Promise<GitHubFile[]>;
}
//# sourceMappingURL=github-client.d.ts.map