export interface TunnelMessage {
    type: string;
    [key: string]: unknown;
}
export interface TunnelEstablishedMessage extends TunnelMessage {
    type: "tunnel_established";
    url: string;
}
export interface TunnelRequestMessage extends TunnelMessage {
    type: "request";
    requestId: string;
    method: string;
    path: string;
    headers: Record<string, string>;
    body?: string;
}
export interface TunnelPingMessage extends TunnelMessage {
    type: "ping";
    timestamp: number;
}
export interface TunnelErrorMessage extends TunnelMessage {
    type: "error";
    code: string;
    message: string;
    details?: unknown;
}
export type ServerMessage = TunnelEstablishedMessage | TunnelRequestMessage | TunnelPingMessage | TunnelErrorMessage;
export interface TunnelResponseMessage extends TunnelMessage {
    type: "response";
    requestId: string;
    statusCode: number;
    headers: Record<string, string>;
    body?: string;
}
export interface TunnelPongMessage extends TunnelMessage {
    type: "pong";
    timestamp: number;
}
export type ClientMessage = TunnelResponseMessage | TunnelPongMessage;
export declare const TunnelCloseCodes: {
    readonly NORMAL: 1000;
    readonly GOING_AWAY: 1001;
    readonly AUTH_FAILED: 4001;
    readonly TOKEN_REVOKED: 4002;
    readonly TUNNEL_AUTH_FAILED: 4003;
    readonly ACCOUNT_DELETED: 4004;
    readonly SESSION_REPLACED: 4005;
    readonly URL_REGENERATED: 4006;
    readonly SERVICE_UNAVAILABLE: 4008;
    readonly SHUTDOWN: 4009;
    readonly IDLE_TIMEOUT: 4010;
};
export type TunnelCloseCode = (typeof TunnelCloseCodes)[keyof typeof TunnelCloseCodes];
export declare const TUNNEL_DEFAULTS: {
    readonly CONNECTION_TIMEOUT: 10000;
    readonly REQUEST_TIMEOUT: 25000;
    readonly HEARTBEAT_INTERVAL: 30000;
    readonly HEARTBEAT_TIMEOUT: 10000;
    readonly RECONNECT_INITIAL_DELAY: 1000;
    readonly RECONNECT_MAX_DELAY: 30000;
    readonly RECONNECT_MAX_ATTEMPTS: 10;
};
