import type { AnyAnalytics, EventProperties, Options, ValidateResult, ChordAnalyticsOptions, AnyOptions, CartViewedInput, IdentifyTraits, CheckoutStartedInput, CheckoutStepCompletedInput, CheckoutStepViewedInput, EmailCapturedInput, ProductListViewedInput, ProductListFilteredInput, ProductAddedInput, ProductClickedInput, VariantClickedInput, ProductRemovedInput, ProductViewedInput, ProductsSearchedInput, CouponAppliedInput, CouponDeniedInput, CouponEnteredInput, CouponRemovedInput, SignedInInput, SignedOutInput, SignedUpInput, LoginStartedInput, ObjectTypes, SubscriptionCancelledInput, NavigationClickedInput, PaymentInfoEnteredInput } from '../types/index.js';
export interface ChordAnalyticsSnippet {
    _loadOptions: ChordAnalyticsOptions<ObjectTypes>;
    invoked: boolean;
    methods: string[];
    queue: any[];
    factory: (method: string) => () => ChordAnalytics;
    load: () => void;
    SNIPPET_VERSION: string;
}
export declare class ChordAnalytics<T extends ObjectTypes = ObjectTypes> {
    /**
     * Allows snippet.js to detect whether this library has been initialized yet.
     */
    initialize: true;
    /**
     * Allows snippet.js to detect whether the snippet has started running yet.
     */
    invoked: true;
    /**
     * Options for ChordAnalytics.
     */
    options: ChordAnalyticsOptions<T>;
    constructor(options: ChordAnalyticsOptions<T>);
    cdp: () => AnyAnalytics;
    logger: (message?: any, ...optionalParams: any[]) => void;
    /**
     * Validate the body of a `track` event against the Chord tracking plan.
     */
    validate: (event: string, props: EventProperties) => ValidateResult[];
    /**
     * Generate the event `meta` property.
     */
    meta: () => {
        ownership: {
            oms_id: string;
            store_id: string;
            tenant_id: string;
        };
        version: {
            major: number;
            minor: number;
            patch: number;
        };
        i18n: import("../types/client.js").i18nMetadata;
        platform: import("../types/client.js").platformMetadata;
        store: import("../types/client.js").storeMetadata;
    };
    /**
     * Send a `track` event to the CDP with any event name and properties.
     */
    track: (event: string, props?: EventProperties, options?: Options) => Promise<void>;
    /**
     * Send an `identify` event to the CDP with user id and traits.
     */
    identify: {
        (userId?: string, traits?: IdentifyTraits, options?: AnyOptions): void;
        (traits?: IdentifyTraits, options?: AnyOptions): void;
    };
    /**
     * Send a `page` event to the CDP.
     */
    page: {
        (): void;
    };
    reset: () => void;
    trackCartViewed: (props: CartViewedInput<T>, options?: AnyOptions) => Promise<void>;
    trackCheckoutStarted: (props: CheckoutStartedInput<T>, options?: AnyOptions) => Promise<void>;
    trackCheckoutStepCompleted: (props: CheckoutStepCompletedInput, options?: AnyOptions) => Promise<void>;
    trackCheckoutStepViewed: (props: CheckoutStepViewedInput, options?: AnyOptions) => Promise<void>;
    trackCouponApplied: (props: CouponAppliedInput, options?: AnyOptions) => Promise<void>;
    trackCouponDenied: (props: CouponDeniedInput, options?: AnyOptions) => Promise<void>;
    trackCouponEntered: (props: CouponEnteredInput, options?: AnyOptions) => Promise<void>;
    trackCouponRemoved: (props: CouponRemovedInput, options?: AnyOptions) => Promise<void>;
    trackEmailCaptured: (props: EmailCapturedInput, options?: AnyOptions) => Promise<void>;
    trackProductAdded: (props: ProductAddedInput<T>, options?: AnyOptions) => Promise<void>;
    trackProductClicked: (props: ProductClickedInput<T>, options?: AnyOptions) => Promise<void>;
    trackVariantClicked: (props: VariantClickedInput<T>, options?: AnyOptions) => Promise<void>;
    trackProductListFiltered: (props: ProductListFilteredInput, options?: AnyOptions) => Promise<void>;
    trackProductListViewed: (props: ProductListViewedInput<T>, options?: AnyOptions) => Promise<void>;
    trackProductRemoved: (props: ProductRemovedInput<T>, options?: AnyOptions) => Promise<void>;
    trackProductViewed: (props: ProductViewedInput<T>, options?: AnyOptions) => Promise<void>;
    trackProductsSearched: (props: ProductsSearchedInput, options?: AnyOptions) => Promise<void>;
    trackSignedIn: (props: SignedInInput, options?: AnyOptions) => Promise<void>;
    trackSignedOut: (props?: SignedOutInput, options?: AnyOptions) => Promise<void>;
    trackSignedUp: (props?: SignedUpInput, options?: AnyOptions) => Promise<void>;
    trackLoginStarted: (props: LoginStartedInput, options?: AnyOptions) => Promise<void>;
    trackSubscriptionCancelled: (props: SubscriptionCancelledInput, options?: AnyOptions) => Promise<void>;
    trackNavigationClicked: (props: NavigationClickedInput, options?: AnyOptions) => Promise<void>;
    trackPaymentInfoEntered: (props: PaymentInfoEnteredInput, options?: AnyOptions) => Promise<void>;
}
