import type { ApiResponse, CaptureOptions as BrowserCommonCaptureOptions, CapturedEventInfo, Client, DeepReadonly, Disposable, Extension, ExtensionToken, KeyValueStore, Listener, SendRequestInit, SessionContext } from '@posthog/browser-common';
import { type Logger } from '@posthog/core';
import type { PostHog } from '../posthog-core';
import type { Properties, RemoteConfigResult } from '../types';
/** One shared extension client and lifecycle host per browser-v1 PostHog instance. */
export declare class BrowserClientAdapter implements Client, Disposable {
    readonly instance: PostHog;
    readonly kv: KeyValueStore;
    readonly onEvent: Listener<CapturedEventInfo>;
    readonly onRemoteConfig: Listener<DeepReadonly<RemoteConfigResult>>;
    private readonly _logger;
    private readonly _runtime;
    private _latestRemoteConfigResult;
    private _disposed;
    constructor(instance: PostHog);
    get logger(): Logger;
    get distinctId(): string;
    get anonymousId(): string;
    get deviceId(): string | undefined;
    get library(): {
        name: string;
        version: string;
    };
    get initialPersonProperties(): Record<string, unknown>;
    get groups(): Record<string, string>;
    get session(): SessionContext;
    get canCapture(): boolean;
    get projectToken(): string;
    add(extension: Extension): Promise<void>;
    getExtension<T extends Extension>(token: ExtensionToken<T>): T | undefined;
    getExtension<T extends Extension = Extension>(name: string): T | undefined;
    capture(event: string, properties?: Properties | null, options?: BrowserCommonCaptureOptions): Promise<void>;
    registerDynamicEventProperties(producer: () => Record<string, unknown>): Disposable;
    handleRemoteConfig(result: RemoteConfigResult): void;
    sendRequest(path: string, init?: SendRequestInit): Promise<ApiResponse>;
    dispose(): void;
}
