export declare const GITHUB_SECONDARY_LIMITS_URL: string; export type GitHubWriteHorizon = { limit: number; window_seconds: number }; export declare const GITHUB_CONTENT_WRITE_LIMITS: Readonly<{ minute: GitHubWriteHorizon; hour: GitHubWriteHorizon }>; export declare const QUEUE_AT_FRACTION: number; export declare const GITHUB_WRITE_QUEUE_MAX_SECONDS: number; export declare const GITHUB_WRITE_POOLS: readonly ["editor", "provisioner"]; export declare const GITHUB_WRITE_BUDGET_KEY_PREFIX: string; export declare const GITHUB_WRITES_BUSY_CODE: "github_writes_busy"; export declare const GITHUB_WRITES_BUSY_KEY: "FORHUMAN_GITHUB_WRITES_BUSY"; export type GitHubWriteUsageRow = { used: number; limit: number; queue_at: number; window_seconds: number }; export type GitHubWriteUsage = { minute: GitHubWriteUsageRow; hour: GitHubWriteUsageRow }; export type GitHubWriteBudgetState = Record | null; export declare function githubWriteBudgetKey(pool: "editor" | "provisioner", installationId: string | number): string; export declare function isContentGeneratingRequest(method: unknown, url: unknown): boolean; export declare function githubWriteBudgetUsage(state: unknown, now: number): GitHubWriteUsage; export declare function githubWriteBudgetStep(input: { state?: unknown; now: number; units?: number; maxWaitMs?: number }): | { allowed: true; delay_ms: number; state: GitHubWriteBudgetState; usage: GitHubWriteUsage } | { allowed: false; retry_after: number; state: GitHubWriteBudgetState; usage: GitHubWriteUsage }; export declare function githubWriteBudgetMarkBusy(input: { state?: unknown; now: number; retryAfterSeconds: number }): { state: GitHubWriteBudgetState }; export declare function retryAfterMinutes(retryAfterSeconds: number): number; export declare const GITHUB_WRITE_BUDGET_UNAVAILABLE_RETRY_SECONDS: number; export declare const GITHUB_SECONDARY_LIMIT_DEFAULT_RETRY_SECONDS: number; export declare function githubSecondaryLimitFromResponse( res: { status: number; headers: { get(name: string): string | null } }, opts?: { now?: number }, ): { retryAfterSeconds: number } | null; export declare function githubWritesBusyError(retryAfterSeconds: number, opts?: { unavailable?: boolean }): Error & { code: "github_writes_busy"; retryAfter: number; githubWritesBusy: true; forHuman: string; forHumanKey: { key: "FORHUMAN_GITHUB_WRITES_BUSY"; params: { minutes: number } }; }; export declare function budgetedGitHubFetch(opts: { fetch: (url: any, init?: any) => Promise; admit: (units: number) => Promise; markBusy?: (retryAfterSeconds: number) => Promise; sleep?: (ms: number) => Promise; onUnavailable?: (e: unknown) => void; }): ((url: any, init?: any) => Promise) & { reserve(units: number): Promise }; export declare const GITHUB_WRITE_BUDGET_ADMIT_URL: string; export declare const GITHUB_WRITE_BUDGET_PEEK_URL: string; export declare const GITHUB_WRITE_BUDGET_MARK_BUSY_URL: string; export declare const GITHUB_WRITE_BUDGET_STATE_KEY: string; export declare function handleGitHubWriteBudgetRequest( request: Request, storage: { get(key: string): Promise; put(key: string, value: unknown): Promise }, now?: number, ): Promise; type WriteBudgetNamespace = { idFromName(name: string): unknown; get(id: unknown): { fetch(url: string, init?: any): Promise } }; export declare function askGitHubWriteBudget( namespace: WriteBudgetNamespace, pool: "editor" | "provisioner", installationId: string, units?: number, opts?: { timeoutMs?: number }, ): Promise<{ allowed: boolean; delay_ms?: number; retry_after?: number }>; export declare function markGitHubWriteBudgetBusy( namespace: WriteBudgetNamespace, pool: "editor" | "provisioner", installationId: string, retryAfterSeconds: number, opts?: { timeoutMs?: number }, ): Promise;