import { type OperatorSdk } from './_internal/operator/index.js';
import { type PeerSdk } from './_internal/peer/index.js';
import type { AuthTokenResolver, HeaderResolver, HttpRetryPolicy, StreamReconnectPolicy } from './_internal/transport-http/index.js';
import { type RemoteRuntimeEvents } from './_internal/transport-realtime/index.js';
import { type GoodVibesAuthClient, type GoodVibesTokenStore } from './auth.js';
export interface RuntimeEventRecord {
    readonly type: string;
}
export interface GoodVibesSdkOptions {
    readonly baseUrl: string;
    readonly authToken?: string | null;
    readonly getAuthToken?: AuthTokenResolver;
    readonly tokenStore?: GoodVibesTokenStore;
    readonly fetch?: typeof fetch;
    readonly headers?: HeadersInit;
    readonly getHeaders?: HeaderResolver;
    readonly retry?: HttpRetryPolicy;
    readonly WebSocketImpl?: typeof WebSocket;
    readonly realtime?: GoodVibesRealtimeOptions;
}
export interface GoodVibesRealtimeOptions {
    readonly sseReconnect?: StreamReconnectPolicy;
    readonly webSocketReconnect?: StreamReconnectPolicy;
    readonly onError?: (error: unknown) => void;
}
export interface GoodVibesRealtime {
    viaSse(): RemoteRuntimeEvents<RuntimeEventRecord>;
    viaWebSocket(webSocketImpl?: typeof WebSocket): RemoteRuntimeEvents<RuntimeEventRecord>;
}
export interface GoodVibesSdk {
    readonly operator: OperatorSdk;
    readonly peer: PeerSdk;
    readonly auth: GoodVibesAuthClient;
    readonly realtime: GoodVibesRealtime;
}
export declare function createGoodVibesSdk(options: GoodVibesSdkOptions): GoodVibesSdk;
//# sourceMappingURL=client.d.ts.map