import { Mapping as Mapping$1 } from '@walkeros/core';
import { DestinationWeb } from '@walkeros/web-core';

declare global {
    interface Window {
        _fbq?: facebook.Pixel.Event;
        fbq?: facebook.Pixel.Event;
    }
}
interface Mapping {
    track?: StandardEventNames;
    trackCustom?: string;
}
interface Env extends DestinationWeb.Env {
    window: {
        fbq: facebook.Pixel.Event;
        _fbq?: facebook.Pixel.Event;
    };
    document: {
        createElement: (tagName: string) => Element;
        head: {
            appendChild: (node: unknown) => void;
        };
    };
}
type Rule = Mapping$1.Rule<Mapping>;
type StandardEventNames = 'PageView' | 'AddPaymentInfo' | 'AddToCart' | 'AddToWishlist' | 'CompleteRegistration' | 'Contact' | 'CustomizeProduct' | 'Donate' | 'FindLocation' | 'InitiateCheckout' | 'Lead' | 'Purchase' | 'Schedule' | 'Search' | 'StartTrial' | 'SubmitApplication' | 'Subscribe' | 'ViewContent' | string;

declare const init: Env | undefined;
declare const push: Env;

declare const env_init: typeof init;
declare const env_push: typeof push;
declare namespace env {
  export { env_init as init, env_push as push };
}

declare function Purchase$1(): unknown[];
declare function AddToCart$1(): unknown[];
declare function InitiateCheckout$1(): unknown[];
declare function ViewContent$1(): unknown[];

declare namespace events {
  export { AddToCart$1 as AddToCart, InitiateCheckout$1 as InitiateCheckout, Purchase$1 as Purchase, ViewContent$1 as ViewContent };
}

declare const Purchase: Rule;
declare const AddToCart: Rule;
declare const InitiateCheckout: Rule;
declare const ViewContent: Rule;
declare const config: {
    order: {
        complete: Rule;
    };
    product: {
        view: Rule;
        add: Rule;
    };
    cart: {
        view: Rule;
    };
};

declare const mapping_AddToCart: typeof AddToCart;
declare const mapping_InitiateCheckout: typeof InitiateCheckout;
declare const mapping_Purchase: typeof Purchase;
declare const mapping_ViewContent: typeof ViewContent;
declare const mapping_config: typeof config;
declare namespace mapping {
  export { mapping_AddToCart as AddToCart, mapping_InitiateCheckout as InitiateCheckout, mapping_Purchase as Purchase, mapping_ViewContent as ViewContent, mapping_config as config };
}

export { env, events, mapping };
