import type { ClaudeLiveSession } from './adapter-interfaces/ClaudeLiveSessionRepository'; import { type OauthTokenCandidate, OauthTokenSelectUseCase } from './OauthTokenSelectUseCase'; export declare const SEVEN_DAY_SHARE_CONSUMED_PER_FULLY_SPENT_FIVE_HOUR_WINDOW = 0.14; export type LiveSessionOauthTokenSelectionSettings = { maxConcurrentSessionCount: number; fullSpeedFiveHourFreeRatio: number; minFiveHourFreeRatio: number; minSevenDayFreeRatio: number; fiveHourShareConsumedPerSessionHour: number; }; export declare const DEFAULT_LIVE_SESSION_OAUTH_TOKEN_SELECTION_SETTINGS: LiveSessionOauthTokenSelectionSettings; export declare const fiveHourSustainableSessionCountOf: (fiveHourFreeRatio: number, hoursUntilFiveHourReset: number, settings: LiveSessionOauthTokenSelectionSettings) => number; export declare const liveSessionConcurrentLimitOf: (fiveHourFreeRatio: number, selectionWeight: number, settings: LiveSessionOauthTokenSelectionSettings, sevenDayUrgencyBoost?: number) => number; export declare const sevenDayShareDrainableBeforeSpendDeadlineOf: (sevenDayEndEpoch: number, nowEpochSeconds: number, settings: LiveSessionOauthTokenSelectionSettings) => number; export declare const sevenDayBudgetUndrainableBeforeSpendDeadlineOf: (sevenDayFreeRatio: number, sevenDayEndEpoch: number, nowEpochSeconds: number, settings: LiveSessionOauthTokenSelectionSettings) => boolean; export type LiveSessionOauthTokenCandidateMetrics = { name: string; fiveHourFreeRatio: number; sevenDayFreeRatio: number; sevenDayEndEpoch: number; sevenDayBudgetUndrainableBeforeSpendDeadline: boolean; liveSessionCount: number; concurrentSessionLimit: number; hasConcurrencyHeadroom: boolean; eligible: boolean; exclusionReason: string | null; selectionWeight: number; }; export declare const liveSessionOauthTokenCandidateMetricsInSelectionOrder: (metrics: LiveSessionOauthTokenCandidateMetrics[]) => LiveSessionOauthTokenCandidateMetrics[]; export type LiveSessionOauthTokenSelectResult = { selected: OauthTokenCandidate | null; metrics: LiveSessionOauthTokenCandidateMetrics[]; }; export declare class LiveSessionOauthTokenSelectUseCase { private readonly rateLimitSelectUseCase; constructor(rateLimitSelectUseCase?: OauthTokenSelectUseCase); run: (candidates: OauthTokenCandidate[], liveSessions: ClaudeLiveSession[], nowEpochSeconds: number, settings: LiveSessionOauthTokenSelectionSettings) => LiveSessionOauthTokenSelectResult; private liveSessionCountByToken; } //# sourceMappingURL=LiveSessionOauthTokenSelectUseCase.d.ts.map