import { SessionIdManager } from '../sessionid';
import { ErrorEventArgs, ErrorProperties, Properties } from '../types';
import { PostHog } from '../posthog-core';
declare const win: (Window & typeof globalThis) | undefined;
/**
 * This is our contract between (potentially) lazily loaded extensions and the SDK
 * changes to this interface can be breaking changes for users of the SDK
 */
interface PosthogExtensions {
    parseErrorAsProperties?: ([event, source, lineno, colno, error]: ErrorEventArgs) => ErrorProperties;
    errorWrappingFunctions?: {
        wrapOnError: (captureFn: (props: Properties) => void) => () => void;
        wrapUnhandledRejection: (captureFn: (props: Properties) => void) => () => void;
    };
    rrweb?: {
        record: any;
        version: string;
        rrwebVersion: string;
    };
    rrwebPlugins?: {
        getRecordConsolePlugin: any;
        getRecordNetworkPlugin?: any;
    };
    canActivateRepeatedly?: (survey: any) => boolean;
    generateSurveys?: (posthog: PostHog) => any | undefined;
    postHogWebVitalsCallbacks?: {
        onLCP: (metric: any) => void;
        onCLS: (metric: any) => void;
        onFCP: (metric: any) => void;
        onINP: (metric: any) => void;
    };
    tracingHeadersPatchFns?: {
        _patchFetch: (sessionManager: SessionIdManager) => () => void;
        _patchXHR: (sessionManager: any) => () => void;
    };
}
export declare const ArrayProto: any[];
export declare const nativeForEach: (callbackfn: (value: any, index: number, array: any[]) => void, thisArg?: any) => void;
export declare const nativeIndexOf: (searchElement: any, fromIndex?: number) => number;
export declare const navigator: Navigator | undefined;
export declare const document: Document | undefined;
export declare const location: Location | undefined;
export declare const fetch: typeof globalThis.fetch | undefined;
export declare const XMLHttpRequest: {
    new (): XMLHttpRequest;
    prototype: XMLHttpRequest;
    readonly UNSENT: 0;
    readonly OPENED: 1;
    readonly HEADERS_RECEIVED: 2;
    readonly LOADING: 3;
    readonly DONE: 4;
} | undefined;
export declare const AbortController: {
    new (): AbortController;
    prototype: AbortController;
} | undefined;
export declare const userAgent: string | undefined;
export declare const assignableWindow: Window & typeof globalThis & Record<string, any> & {
    __PosthogExtensions__?: PosthogExtensions;
};
export { win as window };
