export declare const CREATE_WEB_SESSION_CODE_EVENT = "createWebSessionCode"; export interface WebSessionCodeSocketLike { on: (event: string, listener: (...args: unknown[]) => void) => unknown; off: (event: string, listener: (...args: unknown[]) => void) => unknown; } export interface WebSessionCodeTarget { twinId?: string; endpointId?: string; } export interface WebSessionCodeOptions extends WebSessionCodeTarget { renewAtFraction?: number; requestTimeoutMs?: number; logger?: Pick; } export interface WebSessionCode { code: string; url: string; expiresIn: number; expiresAt: Date; endpointId: string; } export type WebSessionCodeState = { status: 'active'; code: string; url: string; expiresIn: number; expiresAt: Date; endpointId: string; } | { status: 'unavailable'; message: string; retryAt: Date | null; }; export type WebSessionCodeListener = (state: WebSessionCodeState) => void; export interface WebSessionCodeSubscription { refresh: () => void; stop: () => void; } export declare class WebSessionCodeConfigError extends Error { constructor(message: string); } export interface WebSessionCodeClientAdapter { ensureConnection: () => Promise; emit: (method: string, payload: unknown, ack: (response: WebSessionCodeAckPayload) => void) => void; getTwinById: (twinId: string) => Promise<{ deviceId: string; type: string; }>; getSocket: () => WebSessionCodeSocketLike | null; } export interface WebSessionCodeAckPayload { status?: string; message?: string; code?: string; url?: string; expiresIn?: number; } export interface WebSessionCodeTimers { schedule: (callback: () => void, delayMs: number) => unknown; cancel: (handle: unknown) => void; } export declare const assertWebSessionCodeTarget: (target: WebSessionCodeTarget) => void; export declare const resolveWebSessionEndpointId: (client: Pick, target: WebSessionCodeTarget) => Promise; export declare const guardWithTimeout: (operation: Promise, timeoutMs: number, timers: WebSessionCodeTimers, operationName: string) => Promise; export declare const requestWebSessionCode: (client: Pick, endpointId: string, requestTimeoutMs?: number, timers?: WebSessionCodeTimers) => Promise; export declare const createWebSessionCode: (client: WebSessionCodeClientAdapter, options: WebSessionCodeOptions, timers?: WebSessionCodeTimers) => Promise; export declare class WebSessionCodeIssuer implements WebSessionCodeSubscription { private readonly client; private readonly options; private readonly listener; private readonly timers; private readonly logger; private readonly random; private readonly renewAtFraction; private stopped; private mintInFlight; private endpointId; private consecutiveFailures; private rotationTimerHandle; private reconnectSocket; private reconnectHandler; constructor(client: WebSessionCodeClientAdapter, options: WebSessionCodeOptions, listener: WebSessionCodeListener, timers?: WebSessionCodeTimers, random?: () => number); start(): void; refresh(): void; stop(): void; private runMint; private handleMintFailure; private scheduleRotation; private cancelRotationTimer; private armReconnectListener; private emitState; } //# sourceMappingURL=web-session-code.service.d.ts.map