import type { CLIProxyProvider } from './types';
export type OAuthFlowType = 'authorization_code' | 'device_code';
export type TokenRefreshOwnership = 'ccs' | 'cliproxy' | 'unsupported';
export interface ProviderCapabilities {
    displayName: string;
    description: string;
    oauthFlow: OAuthFlowType;
    callbackPort: number | null;
    /** Provider name expected by CLIProxyAPI callback endpoint payload. */
    callbackProviderName: string;
    /** Provider name prefix used by CLIProxyAPI auth URL endpoint. */
    authUrlProviderName: string;
    /** Who owns token refresh logic for this provider. */
    refreshOwnership: TokenRefreshOwnership;
    /** Filename prefixes used to identify auth tokens for this provider. */
    authFilePrefixes: readonly string[];
    /** Token JSON "type" values accepted for this provider. */
    tokenTypeValues: readonly string[];
    /**
     * Alternative provider names used by CLIProxyAPI or stats endpoints.
     * These aliases normalize external names to canonical CCS provider IDs.
     */
    aliases: readonly string[];
}
export declare const PROVIDER_CAPABILITIES: Record<CLIProxyProvider, ProviderCapabilities>;
export declare const CLIPROXY_PROVIDER_IDS: readonly CLIProxyProvider[];
export declare const BROWSER_URL_AUTH_PROVIDER_IDS: readonly ["cursor"];
/** Providers currently supported by quota status fetchers. */
export declare const QUOTA_SUPPORTED_PROVIDER_IDS: readonly ["agy", "codex", "claude", "gemini", "ghcp"];
export type QuotaSupportedProvider = (typeof QUOTA_SUPPORTED_PROVIDER_IDS)[number];
export declare const QUOTA_PROVIDER_OPTION_VALUES: readonly string[];
export declare const QUOTA_PROVIDER_HELP_TEXT: string;
export declare function buildProviderMap<T>(valueFor: (provider: CLIProxyProvider) => T): Record<CLIProxyProvider, T>;
export declare function buildProviderAliasMap(capabilities?: Record<CLIProxyProvider, ProviderCapabilities>): ReadonlyMap<string, CLIProxyProvider>;
export declare function isCLIProxyProvider(provider: string): provider is CLIProxyProvider;
export declare function getProviderCapabilities(provider: CLIProxyProvider): ProviderCapabilities;
export declare function getProviderDisplayName(provider: CLIProxyProvider): string;
export declare function getProviderDescription(provider: CLIProxyProvider): string;
export declare function getProvidersByOAuthFlow(flowType: OAuthFlowType): CLIProxyProvider[];
export declare function isBrowserUrlAuthProvider(provider: CLIProxyProvider): boolean;
export declare function getDeviceCodeVerificationProviders(): CLIProxyProvider[];
export declare function getOAuthFlowType(provider: CLIProxyProvider): OAuthFlowType;
export declare function getOAuthCallbackPort(provider: CLIProxyProvider): number | null;
export declare function getCLIProxyCallbackProviderName(provider: CLIProxyProvider): string;
export declare function getCLIProxyAuthUrlProviderName(provider: CLIProxyProvider): string;
export declare function getTokenRefreshOwnership(provider: CLIProxyProvider): TokenRefreshOwnership;
export declare function isRefreshDelegatedToCLIProxy(provider: CLIProxyProvider): boolean;
export declare function getProviderAuthFilePrefixes(provider: CLIProxyProvider): readonly string[];
export declare function getProviderTokenTypeValues(provider: CLIProxyProvider): readonly string[];
export declare function mapExternalProviderName(providerName: string): CLIProxyProvider | null;
export declare function isQuotaSupportedProvider(provider: CLIProxyProvider): provider is QuotaSupportedProvider;
//# sourceMappingURL=provider-capabilities.d.ts.map