/** * GitHub API client for creating pull requests */ import type { Result } from "../types.js"; import type { PRConfig } from "../config/types.js"; export interface GitHubConfig { owner: string; repo: string; } export interface PullRequest { number: number; url: string; } export interface CreatePROptions { head: string; base: string; title: string; body: string; } export interface GitHubError { code: "AUTH_FAILED" | "API_ERROR" | "NETWORK_ERROR"; message: string; status?: number; } export interface GitHubClient { createPullRequest(options: CreatePROptions): Promise>; compareBranches(base: string, head: string): Promise>; } /** * Token provider interface * * Can be implemented by: * - GitHubAppTokenProvider (installation tokens) * - A simple function returning GITHUB_TOKEN env var */ export interface TokenProvider { getToken(owner: string): Promise>; } /** * Create a GitHub client * * @param config - Repository owner and name * @param tokenProvider - Provides authentication tokens * @param prConfig - PR creation options (draft, labels, etc.) */ export declare function createGitHubClient(config: GitHubConfig, tokenProvider: TokenProvider, prConfig?: PRConfig): GitHubClient; /** * Create a simple token provider from an environment variable * * Falls back to GITHUB_TOKEN env var. Used when GitHub App is not configured. */ export declare function createEnvTokenProvider(): TokenProvider; /** * User token lookup function type */ export type UserTokenLookup = (userId: string) => Promise>; /** * Create a token provider that looks up user tokens from the database * * This provider uses the GitHub access token stored when the user authenticated * via OAuth. The token is stored on the spec and looked up when GitHub API * calls are needed (e.g., creating PRs). * * Falls back to GITHUB_TOKEN env var if no user token is available. */ export declare function createUserTokenProvider(getUserToken: UserTokenLookup): TokenProvider & { setCurrentUserId: (userId: string | undefined) => void; }; //# sourceMappingURL=client.d.ts.map