import type { SecretsManager } from '../../config/secrets.js';
import type { ProviderRegistry } from '../../providers/registry.js';
import type { ServiceRegistry } from '../../config/service-registry.js';
import type { SubscriptionManager } from '@pellux/goodvibes-sdk/platform/config/subscriptions';
export type ProviderAuthRoute = 'api-key' | 'subscription' | 'service-oauth' | 'unconfigured';
export type ProviderAuthFreshness = 'healthy' | 'expiring' | 'expired' | 'pending' | 'unconfigured';
export interface ProviderUsageWindow {
    readonly label: string;
    readonly detail: string;
}
export interface ProviderRouteRecord {
    readonly route: Exclude<ProviderAuthRoute, 'unconfigured'>;
    readonly usable: boolean;
    readonly freshness: ProviderAuthFreshness;
    readonly detail: string;
    readonly issues: readonly string[];
}
export interface ProviderAccountRecord {
    readonly providerId: string;
    readonly active: boolean;
    readonly modelCount: number;
    readonly configured: boolean;
    readonly oauthReady: boolean;
    readonly pendingLogin: boolean;
    readonly availableRoutes: readonly ProviderAuthRoute[];
    readonly preferredRoute: ProviderAuthRoute;
    readonly activeRoute: ProviderAuthRoute;
    readonly activeRouteReason: string;
    readonly authFreshness: ProviderAuthFreshness;
    readonly fallbackRoute?: ProviderAuthRoute;
    readonly fallbackRisk?: string;
    readonly expiresAt?: number;
    readonly tokenType?: string;
    readonly notes: readonly string[];
    readonly usageWindows: readonly ProviderUsageWindow[];
    readonly issues: readonly string[];
    readonly recommendedActions: readonly string[];
    readonly routeRecords: readonly ProviderRouteRecord[];
}
export interface ProviderAccountSnapshot {
    readonly capturedAt: number;
    readonly providers: readonly ProviderAccountRecord[];
    readonly configuredCount: number;
    readonly issueCount: number;
}
export interface ProviderAccountSnapshotDeps {
    readonly providerRegistry: Pick<ProviderRegistry, 'listModels' | 'getCurrentModel' | 'getRegistered' | 'describeRuntime'>;
    readonly serviceRegistry: Pick<ServiceRegistry, 'getAll' | 'inspect'>;
    readonly subscriptionManager: Pick<SubscriptionManager, 'list' | 'listPending' | 'get' | 'getPending'>;
    readonly secretsManager: Pick<SecretsManager, 'get'>;
}
export declare function buildProviderAccountSnapshot(deps: ProviderAccountSnapshotDeps): Promise<ProviderAccountSnapshot>;
//# sourceMappingURL=registry.d.ts.map