import type { CallToAction } from '@r2u/react-ar-components';
import { SKUHandler, ViewerProps } from './methods/types';
import { Product } from '@services/product';
import { ViewerFunctions } from './methods/viewer';
export default interface R2U {
    init: (params: {
        customerId: string;
        language?: 'pt' | 'en' | 'es';
        analyticsParams?: {
            dataLayerIntegration?: boolean;
            sessionDurationMinutes?: number;
        };
        refreshCache?: boolean;
    }) => Promise<void>;
    config: {
        changeLanguage(language: 'pt' | 'en' | 'es'): Promise<void>;
    };
    sku: {
        isActive: (sku: string) => Promise<boolean>;
        getData: (sku: string) => Promise<Product>;
    };
    ar: {
        open: (params: {
            element: HTMLElement;
            event: string;
        }) => Promise<void>;
        attach: (params: {
            element: HTMLElement;
            sku: string;
            price?: string;
            eventType?: string;
            resize?: boolean;
            callToAction?: CallToAction;
            showInstructions?: 'once' | 'always' | 'never';
            showFeedback?: boolean;
            fallbackOptions?: {
                alertMessage?: string;
                fallback?: 'viewer' | 'full';
            };
        }) => Promise<SKUHandler>;
        getLink: (sku: string) => Promise<string>;
    };
    viewer: {
        create: (params: {
            element: HTMLElement;
            sku: string;
            name?: string;
            popup?: boolean;
            progressBarPosition?: 'top' | 'middle' | 'bottom';
            poster?: string;
            autoRotate?: boolean;
            viewerProps?: Omit<ViewerProps, 'componentDidMount' | 'onLoad' | 'onSessionTimeCollect' | 'glbSrc'>;
        }) => Promise<ViewerFunctions>;
    };
    analytics: {
        send: (params: {
            event: string;
            data: Record<string, string | number>;
            scope?: 'event' | 'page' | 'session' | 'sku';
        }) => Promise<void>;
    };
    qrCode: {
        create: (params: {
            element: HTMLElement;
            sku: string;
            showInstructions?: 'once' | 'always' | 'never';
        }) => Promise<SKUHandler>;
    };
}
declare global {
    interface Window {
        R2U: R2U;
    }
}
declare const init: (params: {
    customerId: string;
    language?: 'pt' | 'en' | 'es';
    analyticsParams?: {
        dataLayerIntegration?: boolean;
        sessionDurationMinutes?: number;
    };
    refreshCache?: boolean;
}) => Promise<void>;
declare const config: {
    changeLanguage: (language: 'pt' | 'en' | 'es') => Promise<void>;
};
declare const ar: {
    open: (params: {
        element: HTMLElement;
        event: string;
    }) => Promise<void>;
    attach: (params: {
        element: HTMLElement;
        sku: string;
        price?: string;
        eventType?: string;
        resize?: boolean;
        callToAction?: CallToAction;
        showInstructions?: 'once' | 'always' | 'never';
        showFeedback?: boolean;
        fallbackOptions?: {
            alertMessage?: string;
            fallback?: 'viewer' | 'full';
        };
    }) => Promise<SKUHandler>;
    getLink: (sku: string) => Promise<string>;
};
declare const sku: {
    isActive: (sku: string) => Promise<boolean>;
    getData: (sku: string) => Promise<Product>;
};
declare const viewer: {
    create: (params: {
        element: HTMLElement;
        sku: string;
        name?: string;
        popup?: boolean;
        progressBarPosition?: 'top' | 'middle' | 'bottom';
        poster?: string;
        autoRotate?: boolean;
        viewerProps?: Omit<ViewerProps, 'componentDidMount' | 'onLoad' | 'onSessionTimeCollect' | 'glbSrc'>;
    }) => Promise<ViewerFunctions>;
};
declare const analytics: {
    send: (params: {
        event: string;
        data: Record<string, string | number>;
        scope?: 'event' | 'page' | 'session' | 'sku';
    }) => Promise<void>;
};
declare const qrCode: {
    create: (params: {
        element: HTMLElement;
        sku: string;
        showInstructions?: 'once' | 'always' | 'never';
    }) => Promise<SKUHandler>;
};
export { init, sku, ar, viewer, analytics, qrCode, config };
