import type { CaptureModule } from './shared/Types';
import type { SdkError } from './shared/Error';
import type { Event } from './shared/EventEmitter';
import type { CompleteData } from './shared/SdkParameters';
export type ModuleEvent<T extends string> = {
    module: CaptureModule;
    id: string;
    name: string;
} & Event<T>;
export type ModuleStartEvent = ModuleEvent<'moduleStart'>;
export type ModuleCompleteEvent = ModuleEvent<'moduleComplete'>;
export type CompleteEvent = {
    data: CompleteData;
} & Event<'complete'>;
export type UserAnalyticsEvent = Event<'userAnalytics'> & {
    eventName: string;
    properties: Record<string, unknown>;
    isCrossDevice: boolean;
};
export type ErrorEvent = {
    error: SdkError | Error | unknown;
} & Event<'error'>;
export type PermissionUnknownEvent = Event<'permissionUnknown'> & {
    permissionsRequired: string[];
};
export type CaptureRunEvents = {
    complete: CompleteEvent;
    error: ErrorEvent;
    moduleStart: ModuleStartEvent;
    moduleComplete: ModuleCompleteEvent;
    userAnalytics: UserAnalyticsEvent;
    permissionUnknown: PermissionUnknownEvent;
};
