export type ExecFileFn = (cmd: string, args: string[]) => Promise<{
    stdout: string;
    stderr: string;
}>;
export type GitHubAuthMethod = 'gh-cli' | 'env-token' | 'gitconfig' | 'none';
export interface AuthResult {
    method: GitHubAuthMethod;
    user?: string;
    scopes?: string[];
    message?: string;
}
export type GitPlatform = 'github' | 'gitlab' | 'bitbucket' | 'unknown';
export interface PRCreateInput {
    specId: string;
    baseBranch: string;
    headBranch: string;
    title: string;
    body: string;
    draft: boolean;
}
export interface PRCreateResult {
    url: string;
    number: number;
    title: string;
    state: 'open' | 'draft';
}
export interface PRStatusResult {
    number: number;
    title: string;
    author: string;
    branch: string;
    baseBranch: string;
    state: 'open' | 'closed' | 'merged' | 'draft';
    reviewStatus: 'approved' | 'changes_requested' | 'pending' | 'none';
    ciStatus: 'success' | 'failure' | 'pending' | 'none';
    checks: CICheckRun[];
    additions: number;
    deletions: number;
    changedFiles: number;
}
export interface CICheckRun {
    name: string;
    status: 'queued' | 'in_progress' | 'completed';
    conclusion: 'success' | 'failure' | 'neutral' | 'skipped' | 'cancelled' | null;
    url: string;
}
export interface IssueCreateInput {
    title: string;
    body: string;
    labels?: string[];
}
export interface IssueCreateResult {
    url: string;
    number: number;
    title: string;
    labels: string[];
}
export type ReviewType = 'summary' | 'detailed' | 'security' | 'performance' | 'quality';
export interface ReviewResult {
    prNumber: number;
    reviewType: ReviewType;
    filesChanged: number;
    additions: number;
    deletions: number;
    findings: ReviewFinding[];
}
export interface ReviewFinding {
    file: string;
    line?: number;
    severity: 'critical' | 'warning' | 'info';
    category: string;
    message: string;
    suggestion?: string;
}
export type ChangelogType = 'feat' | 'fix' | 'docs' | 'refactor' | 'perf' | 'test' | 'chore' | 'other';
export interface GHChangelogEntry {
    type: ChangelogType;
    title: string;
    prNumber: number;
    prUrl: string;
    author: string;
    issues: number[];
}
export interface ReleaseInput {
    version: string;
    generateNotes: boolean;
    draft: boolean;
    prerelease: boolean;
}
export interface ReleaseResult {
    url: string;
    tagName: string;
}
export interface SpecPRLink {
    specId: string;
    prNumbers: number[];
    issueNumbers: number[];
    lastUpdated: string;
}
export interface GitPlatformClient {
    createPR(input: PRCreateInput): Promise<PRCreateResult>;
    createIssue(input: IssueCreateInput): Promise<IssueCreateResult>;
    getPRStatus(prNumber?: number): Promise<PRStatusResult[]>;
    getPRDiff(prNumber: number): Promise<string>;
    listIssues(state?: 'open' | 'closed' | 'all'): Promise<IssueCreateResult[]>;
    createRelease(input: ReleaseInput): Promise<ReleaseResult>;
    addLabels(issueNumber: number, labels: string[]): Promise<void>;
    getCIStatus(ref: string): Promise<CICheckRun[]>;
}
export interface GhPRStatusRaw {
    number: number;
    title: string;
    author: {
        login: string;
    };
    headRefName: string;
    baseRefName: string;
    state: string;
    isDraft: boolean;
    reviewDecision: string;
    statusCheckRollup?: {
        name: string;
        status: string;
        conclusion: string | null;
        detailsUrl: string;
    }[];
    additions: number;
    deletions: number;
    changedFiles: number;
}
export declare class PlatformNotImplementedError extends Error {
    constructor(platform: string);
}
export interface MilestoneInfo {
    number: number;
    title: string;
    description: string;
    openIssues: number;
    closedIssues: number;
    state: 'open' | 'closed';
    dueOn: string | null;
    completionPercent: number;
}
export type IssueCategory = 'bug' | 'feature' | 'question' | 'documentation' | 'duplicate';
export type IssuePriority = 'critical' | 'high' | 'medium' | 'low';
export interface TriagedIssue {
    number: number;
    title: string;
    url: string;
    category: IssueCategory;
    priority: IssuePriority;
    suggestedLabels: string[];
    linkedSpecId?: string;
    reason: string;
}
/** Coverage status for a single acceptance criterion. */
export type AcCoverageStatus = 'covered' | 'partial' | 'missing';
/** A single AC with its coverage assessment. */
export interface AcCoverageItem {
    text: string;
    status: AcCoverageStatus;
}
/** Full coverage result for a spec's acceptance criteria. */
export interface SpecAcCoverageResult {
    specId: string;
    found: boolean;
    criteria: AcCoverageItem[];
    coveredCount: number;
    partialCount: number;
    missingCount: number;
    complianceScore: number;
}
export type ReviewDimensionName = 'architecture' | 'security' | 'tests' | 'conventions' | 'spec-drift' | 'duplication' | 'complexity' | 'dead-code';
/** Internal diff representation used by review-dimensions engine. */
export interface ReviewFileDiff {
    path: string;
    lines: {
        lineNo: number;
        content: string;
    }[];
}
export interface ReviewDimensionResult {
    dimension: ReviewDimensionName;
    findings: ReviewFinding[];
    duration: number;
}
export interface ReviewDimensionContext {
    hasClaudeMd: boolean;
    specId?: string;
    projectPath?: string;
}
export interface MergedPRReview {
    critical: ReviewFinding[];
    suggestions: ReviewFinding[];
    nits: ReviewFinding[];
    dimensions: string[];
    totalFindings: number;
    durationMs: number;
}
//# sourceMappingURL=github.d.ts.map