export type StarPromptResult = "yes" | "no" | "seen" | "skipped" | "error";
export interface StarPromptState {
    promptedAt: string;
    answer: "yes" | "no";
    version: string;
    repoUrl: string;
    action: "github-star";
    starred?: boolean;
    starError?: string;
}
export interface StarPromptOptions {
    version: string;
    repoUrl?: string;
    homeDir?: string;
    env?: NodeJS.ProcessEnv;
    argv?: string[];
    stdin?: {
        isTTY?: boolean;
    };
    stdout?: {
        isTTY?: boolean;
    };
    commandName?: string;
    prompt?: (repoUrl: string) => Promise<boolean>;
    starRepo?: (repoUrl: string) => Promise<void> | void;
    openBrowser?: typeof openRepoInBrowser;
    now?: () => Date;
}
export declare function getStarPromptStatePath(homeDir?: string): string;
export declare function isStarPromptEligible(options?: Omit<StarPromptOptions, "version" | "prompt" | "openUrl" | "now"> & {
    allowChat?: boolean;
}): boolean;
export declare function readStarPromptState(homeDir?: string): Promise<StarPromptState | null>;
export declare function maybeAskForGitHubStar(options: StarPromptOptions & {
    allowChat?: boolean;
}): Promise<StarPromptResult>;
export declare function maybeAskForGitHubStarAtChatStart(options: StarPromptOptions): Promise<StarPromptResult>;
export interface StarPromptAfterCommandOptions extends StarPromptOptions {
    commandName: string;
}
export declare function maybeAskForGitHubStarAfterCommand(options: StarPromptAfterCommandOptions): Promise<StarPromptResult>;
export interface StarPromptSummary {
    answered: boolean;
    starred?: boolean;
    starError?: string;
}
export declare function getStarPromptSummary(homeDir?: string): Promise<StarPromptSummary | null>;
export declare function parseGitHubRepoSlug(repoUrl: string): string | null;
export declare function checkGhAuth(): Promise<void>;
export declare function starGitHubRepo(repoUrl: string): Promise<void>;
export interface OpenRepoInBrowserOptions {
    spawnFn?: typeof import("child_process").spawn;
    platform?: NodeJS.Platform;
    display?: string;
    isTTY?: boolean;
    env?: NodeJS.ProcessEnv;
}
export declare function openRepoInBrowser(repoUrl: string, opts?: OpenRepoInBrowserOptions): Promise<boolean>;
