import type { CredentialReferenceId } from "@awp/contracts";
export interface GitHubRepositoryConfig {
    readonly repositoryKey: string;
    readonly owner: string;
    readonly repository: string;
    readonly workflowId: string;
    readonly dispatchRef: string;
}
export interface GitHubWorkflowRun {
    readonly id: number;
    readonly name: string;
    readonly displayTitle: string;
    readonly status: "queued" | "in_progress" | "completed" | string;
    readonly conclusion?: string | null;
    readonly htmlUrl?: string;
    readonly headSha?: string;
    readonly runAttempt?: number;
    readonly updatedAt?: string;
}
export interface GitHubActionsTransport {
    dispatch(config: GitHubRepositoryConfig, credentialReferenceId: CredentialReferenceId, operationKey: string, candidateDigest: string): Promise<void>;
    listRuns(config: GitHubRepositoryConfig, credentialReferenceId: CredentialReferenceId): Promise<readonly GitHubWorkflowRun[]>;
    getRun(config: GitHubRepositoryConfig, credentialReferenceId: CredentialReferenceId, runId: number): Promise<GitHubWorkflowRun | undefined>;
    cancelRun(config: GitHubRepositoryConfig, credentialReferenceId: CredentialReferenceId, runId: number): Promise<void>;
    requiredChecks(config: GitHubRepositoryConfig, credentialReferenceId: CredentialReferenceId, branch: string): Promise<readonly string[]>;
}
export interface GitHubCredentialLease {
    readonly token: string;
    dispose(): void;
}
export interface GitHubCredentialResolver {
    resolve(referenceId: CredentialReferenceId, purpose: string): Promise<GitHubCredentialLease>;
}
interface FetchResponse {
    readonly ok: boolean;
    readonly status: number;
    readonly statusText: string;
    text(): Promise<string>;
}
export type GitHubFetch = (url: string, init: {
    method: string;
    headers: Readonly<Record<string, string>>;
    body?: string;
}) => Promise<FetchResponse>;
export declare class GitHubActionsHttpTransport implements GitHubActionsTransport {
    private readonly credentials;
    private readonly fetcher;
    private readonly apiBase;
    constructor(credentials: GitHubCredentialResolver, fetcher?: GitHubFetch, apiBase?: string);
    dispatch(config: GitHubRepositoryConfig, credentialReferenceId: CredentialReferenceId, operationKey: string, candidateDigest: string): Promise<void>;
    listRuns(config: GitHubRepositoryConfig, credentialReferenceId: CredentialReferenceId): Promise<readonly GitHubWorkflowRun[]>;
    getRun(config: GitHubRepositoryConfig, credentialReferenceId: CredentialReferenceId, runId: number): Promise<GitHubWorkflowRun | undefined>;
    cancelRun(config: GitHubRepositoryConfig, credentialReferenceId: CredentialReferenceId, runId: number): Promise<void>;
    requiredChecks(config: GitHubRepositoryConfig, credentialReferenceId: CredentialReferenceId, branch: string): Promise<readonly string[]>;
    private repoUrl;
    private request;
}
export declare class GitHubHttpError extends Error {
    readonly status: number;
    constructor(status: number, message: string);
}
export {};
//# sourceMappingURL=github.d.ts.map