import { type TokenResponse } from './token-response.js'; export { parseTokenResponse, type TokenResponse } from './token-response.js'; export interface DeviceCodeResponse { readonly device_code: string; readonly user_code: string; readonly verification_uri: string; readonly verification_uri_complete?: string; readonly expires_in: number; readonly interval: number; } export interface DeviceExchangeContext { readonly grantType: string; readonly deviceToken: string; readonly deviceLabel: string; readonly audience: string; } export interface DeviceIdentity { readonly token: string; readonly label: string; } export interface HttpTransport { fetch(url: string, init: RequestInit & { redirect: 'error'; }): Promise; } export interface Clock { now(): number; } export declare class DeviceFlowDeniedError extends Error { constructor(); } export declare class DeviceFlowExpiredError extends Error { constructor(); } export declare class UnboundSessionError extends Error { readonly verificationUri: string; constructor(verificationUri: string); } export declare function oauthFormRequest(body: URLSearchParams, signal?: AbortSignal): RequestInit & { redirect: 'error'; }; export declare function requestDeviceCode(deviceAuthorizationEndpoint: string, clientId: string, http: HttpTransport, signal?: AbortSignal): Promise; export interface PollForTokenRequest { readonly tokenEndpoint: string; readonly clientId: string; readonly deviceCode: string; readonly interval: number; readonly expiresIn: number; readonly http: HttpTransport; readonly clock?: Clock; readonly signal?: AbortSignal; readonly exchange?: DeviceExchangeContext | DeviceIdentity; } export declare function pollForToken(request: PollForTokenRequest): Promise;