import { type RemoteTelemetry } from './telemetry-remote.js';
export interface GithubBridgeDetection {
    available: boolean;
    method: 'gh-cli' | 'token' | 'none';
    reason?: string;
}
export interface GithubPromotionInput {
    hypothesis: string;
    cycleId?: string;
    targetFile?: string;
    learnings?: string[];
    cwd?: string;
    baseBranch?: string;
}
export interface GithubPromotionResult {
    status: 'pr_created' | 'artifact_saved';
    method: GithubBridgeDetection['method'];
    branch?: string;
    url?: string;
    artifactPath?: string;
    reason?: string;
}
export declare class GithubBridge {
    private readonly defaultCwd;
    private readonly telemetry?;
    constructor(defaultCwd?: string, telemetry?: Pick<RemoteTelemetry, 'trackProductEvent'>);
    detect(cwd?: string): GithubBridgeDetection;
    promoteToPR(input: GithubPromotionInput): Promise<GithubPromotionResult>;
    private createPullRequestViaApi;
    private persistArtifact;
    private resolveRepo;
    private detectBaseBranch;
    private buildBranchName;
    private renderCommitBody;
    private renderPrBody;
    private safeExec;
    shareAsGist(pattern: {
        id: string;
        description: string;
        content: string;
    }): Promise<{
        url?: string;
        localPath?: string;
    }>;
    private shellQuote;
    private telemetryConsentLabel;
    private trackProductEvent;
}
export declare function getSharedGithubBridge(cwd?: string): GithubBridge;
