declare global {
    interface YaMetrika2Options {
        accurateTrackBounce?: boolean | number;
        childIframe?: boolean;
        clickmap?: boolean;
        defer?: boolean;
        ecommerce?: string | boolean | string[];
        params?: any;
        userParams?: any;
        trackHash?: boolean;
        trackLinks?: boolean;
        trustedDomains?: string[];
        type?: 0 | 1;
        webvisor?: boolean;
        triggerEvent?: boolean;
        sendTitle?: boolean;
    }
    interface YaMetrika2 extends Record<string, (...args: any) => void> {
        hit(url?: string, options?: YaMetrika2HitOptions): void;
        params(params: any): void;
        reachGoal(target: string, params?: any, callback?: () => void, ctx?: any): void;
        addFileExtension(extension: string | string[]): void;
        extLink(url: string, options?: YaMetrika2ExtLinkOptions): void;
        file(url: string, options?: YaMetrika2FileOptions): void;
        firstPartyParams(params: YaMetrika2FirstPartyParamsParams): void;
        firstPartyParamsHashed(params: YaMetrika2FirstPartyParamsHashedParams): void;
        getClientID(): string;
        setUserID(userId: string): void;
        notBounce(options?: YaMetrika2NotBounceOptions): void;
        userParams(params: any): void;
        destruct(): void;
    }
    interface YaMetrika2ExtLinkOptions {
        callback?: () => void;
        ctx?: any;
        params?: any;
        title?: string;
    }
    interface YaMetrika2FileOptions {
        callback?: () => void;
        ctx?: any;
        params?: any;
        referer?: string;
        title?: string;
    }
    interface YaMetrika2FirstPartyParamsParams {
        email?: string;
        phone_number?: string;
        first_name?: string;
        last_name?: string;
        yandex_cid?: string | number;
    }
    interface YaMetrika2FirstPartyParamsHashedParams {
        email?: string;
        phone_number?: string;
        first_name?: string;
        last_name?: string;
        yandex_cid?: string | number;
    }
    interface YaMetrika2NotBounceOptions {
        callback?: () => void;
        ctx?: any;
    }
    interface YaMetrika2HitOptions {
        callback?: () => void;
        ctx?: any;
        params?: any;
        referer?: string;
        title?: string;
    }
    interface Window {
        [key: `yaCounter${string}`]: YaMetrika2;
        Ya: {
            Metrika2: {
                new (id: string | number | YaMetrika2Options & {
                    id: number;
                }): YaMetrika2;
                counters(): Array<{
                    id: number;
                    type: number;
                    clickmap: boolean;
                    webvisor: boolean;
                    trackHash: boolean;
                }>;
                informer(id: number): void;
            };
        };
    }
}
export {};
