import type { ClientEngagement, ClientType, Identity, Plan, Product } from "@obi/obi-client";
import { MockObiClient, MockObiSession, MockRoom, type MockClientConfig, type MockSessionConfig } from "@obi/obi-client/mocks";
import { ObiSDK } from "../sdk";
/**
 * Subset of ObiApi methods used in SDK tests.
 * Using a loose type since mocks return simplified data structures
 * and are cast to IObiApi when passed to MockObiClient/MockObiSession.
 */
type MockApi = Record<string, any>;
type MockApiConfig = {
    product?: Product | null;
    plans?: Plan[];
    selectedPlan?: Plan | null;
    planIsCompleted?: boolean[];
    showWidget?: boolean;
    engagement?: ClientEngagement | null;
    featureFlags?: Array<Record<string, any>>;
};
export declare function createMockApi(config?: MockApiConfig, overrides?: MockApi): MockApi;
type CreateMockSdkWithClientArgs = {
    appToken?: string;
    clientType?: ClientType;
    product?: Product | null;
    plans?: Plan[];
    planIsCompleted?: boolean[];
    selectedPlanUuid?: string | null;
    identity?: Identity | null;
    isActive?: boolean;
    featureFlags?: Array<Record<string, any>>;
    apiOverrides?: MockApi;
    mockClientConfig?: MockClientConfig;
    mockSessionConfig?: MockSessionConfig;
    attachSession?: boolean;
    sessionPlanId?: string | null;
    withRoom?: boolean;
};
export declare function createMockSdkWithClient({ appToken, clientType, product, plans, planIsCompleted, selectedPlanUuid, identity, isActive, featureFlags, apiOverrides, mockClientConfig, mockSessionConfig, attachSession, sessionPlanId, withRoom, }?: CreateMockSdkWithClientArgs): {
    sdk: ObiSDK;
    client: MockObiClient;
    session: MockObiSession | undefined;
    room: MockRoom | undefined;
    mockApi: MockApi;
};
export declare function flushMicrotasks(times?: number): Promise<void>;
export declare function ensurePointerEventPolyfill(): () => void;
export declare function setupWidgetDomStubs(): () => void;
export {};
