/**
 * @license
 * Copyright 2025 Vybestack LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { z } from 'zod';
/**
 * OAuth token storage schema
 */
export declare const OAuthTokenSchema: z.ZodObject<{
    access_token: z.ZodString;
    refresh_token: z.ZodOptional<z.ZodString>;
    expiry: z.ZodNumber;
    scope: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    token_type: z.ZodEnum<["Bearer", "bearer"]>;
    resource_url: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    access_token: string;
    expiry: number;
    token_type: "Bearer" | "bearer";
    scope?: string | null | undefined;
    refresh_token?: string | undefined;
    resource_url?: string | undefined;
}, {
    access_token: string;
    expiry: number;
    token_type: "Bearer" | "bearer";
    scope?: string | null | undefined;
    refresh_token?: string | undefined;
    resource_url?: string | undefined;
}>;
/**
 * Provider OAuth configuration schema
 */
export declare const ProviderOAuthConfigSchema: z.ZodObject<{
    provider: z.ZodEnum<["gemini", "qwen"]>;
    clientId: z.ZodString;
    authorizationEndpoint: z.ZodString;
    tokenEndpoint: z.ZodString;
    scopes: z.ZodArray<z.ZodString, "many">;
}, "strip", z.ZodTypeAny, {
    clientId: string;
    provider: "gemini" | "qwen";
    authorizationEndpoint: string;
    tokenEndpoint: string;
    scopes: string[];
}, {
    clientId: string;
    provider: "gemini" | "qwen";
    authorizationEndpoint: string;
    tokenEndpoint: string;
    scopes: string[];
}>;
/**
 * Device code response schema
 */
export declare const DeviceCodeResponseSchema: z.ZodObject<{
    device_code: z.ZodString;
    user_code: z.ZodString;
    verification_uri: z.ZodString;
    verification_uri_complete: z.ZodOptional<z.ZodString>;
    expires_in: z.ZodNumber;
    interval: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    device_code: string;
    user_code: string;
    verification_uri: string;
    expires_in: number;
    verification_uri_complete?: string | undefined;
    interval?: number | undefined;
}, {
    device_code: string;
    user_code: string;
    verification_uri: string;
    expires_in: number;
    verification_uri_complete?: string | undefined;
    interval?: number | undefined;
}>;
/**
 * Token response schema
 */
export declare const TokenResponseSchema: z.ZodObject<{
    access_token: z.ZodString;
    token_type: z.ZodString;
    expires_in: z.ZodOptional<z.ZodNumber>;
    refresh_token: z.ZodOptional<z.ZodString>;
    scope: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    resource_url: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    access_token: string;
    token_type: string;
    scope?: string | null | undefined;
    refresh_token?: string | undefined;
    resource_url?: string | undefined;
    expires_in?: number | undefined;
}, {
    access_token: string;
    token_type: string;
    scope?: string | null | undefined;
    refresh_token?: string | undefined;
    resource_url?: string | undefined;
    expires_in?: number | undefined;
}>;
/**
 * Auth status schema
 */
export declare const AuthStatusSchema: z.ZodObject<{
    provider: z.ZodString;
    authenticated: z.ZodBoolean;
    authType: z.ZodEnum<["oauth", "api-key", "none"]>;
    expiresIn: z.ZodOptional<z.ZodNumber>;
    oauthEnabled: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
    provider: string;
    authType: "oauth" | "api-key" | "none";
    authenticated: boolean;
    expiresIn?: number | undefined;
    oauthEnabled?: boolean | undefined;
}, {
    provider: string;
    authType: "oauth" | "api-key" | "none";
    authenticated: boolean;
    expiresIn?: number | undefined;
    oauthEnabled?: boolean | undefined;
}>;
/**
 * Codex OAuth token schema - extends OAuthTokenSchema with account_id
 * Required for ChatGPT-Account-ID header
 */
export declare const CodexOAuthTokenSchema: z.ZodObject<{
    access_token: z.ZodString;
    refresh_token: z.ZodOptional<z.ZodString>;
    expiry: z.ZodNumber;
    scope: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    token_type: z.ZodEnum<["Bearer", "bearer"]>;
    resource_url: z.ZodOptional<z.ZodString>;
} & {
    account_id: z.ZodString;
    id_token: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    access_token: string;
    expiry: number;
    token_type: "Bearer" | "bearer";
    account_id: string;
    scope?: string | null | undefined;
    refresh_token?: string | undefined;
    resource_url?: string | undefined;
    id_token?: string | undefined;
}, {
    access_token: string;
    expiry: number;
    token_type: "Bearer" | "bearer";
    account_id: string;
    scope?: string | null | undefined;
    refresh_token?: string | undefined;
    resource_url?: string | undefined;
    id_token?: string | undefined;
}>;
export type CodexOAuthToken = z.infer<typeof CodexOAuthTokenSchema>;
/**
 * Codex token response schema
 */
export declare const CodexTokenResponseSchema: z.ZodObject<{
    access_token: z.ZodString;
    id_token: z.ZodOptional<z.ZodString>;
    expires_in: z.ZodOptional<z.ZodNumber>;
    refresh_token: z.ZodOptional<z.ZodString>;
    token_type: z.ZodString;
}, "strip", z.ZodTypeAny, {
    access_token: string;
    token_type: string;
    refresh_token?: string | undefined;
    expires_in?: number | undefined;
    id_token?: string | undefined;
}, {
    access_token: string;
    token_type: string;
    refresh_token?: string | undefined;
    expires_in?: number | undefined;
    id_token?: string | undefined;
}>;
export type CodexTokenResponse = z.infer<typeof CodexTokenResponseSchema>;
/**
 * Bucket statistics schema
 */
export declare const BucketStatsSchema: z.ZodObject<{
    bucket: z.ZodString;
    requestCount: z.ZodNumber;
    percentage: z.ZodNumber;
    lastUsed: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    bucket: string;
    requestCount: number;
    percentage: number;
    lastUsed?: number | undefined;
}, {
    bucket: string;
    requestCount: number;
    percentage: number;
    lastUsed?: number | undefined;
}>;
export type OAuthToken = z.infer<typeof OAuthTokenSchema>;
export type ProviderOAuthConfig = z.infer<typeof ProviderOAuthConfigSchema>;
export type DeviceCodeResponse = z.infer<typeof DeviceCodeResponseSchema>;
export type TokenResponse = z.infer<typeof TokenResponseSchema>;
export type AuthStatus = z.infer<typeof AuthStatusSchema>;
export type BucketStats = z.infer<typeof BucketStatsSchema>;
