import type { AppManifest } from "../types";
/**
 * This signature is to be compatible with track method of `segment.js` file in LLM and LLD
 * `track(event: string, properties: ?Object, mandatory: ?boolean)` in jsflow
 * {@link @ledger-desktop/renderer/analytics/segment#track}
 */
type TrackExchange = (event: string, properties: Record<string, string> | null, mandatory: boolean | null) => void;
interface TrackEventPayload {
    exchangeType: "SELL" | "FUND" | "SWAP";
    provider: string;
    isEmbeddedSwap?: boolean;
}
/**
 * Wrap call to underlying trackCall function.
 * @param trackCall
 * @returns a dictionary of event to trigger.
 */
export default function trackingWrapper(trackCall: TrackExchange): {
    readonly startExchangeRequested: ({ provider, exchangeType, isEmbeddedSwap }: TrackEventPayload) => void;
    readonly startExchangeSuccess: ({ provider, exchangeType, isEmbeddedSwap }: TrackEventPayload) => void;
    readonly startExchangeFail: ({ provider, exchangeType, isEmbeddedSwap }: TrackEventPayload) => void;
    readonly startExchangeNoParams: (manifest: AppManifest) => void;
    readonly completeExchangeRequested: ({ provider, exchangeType, isEmbeddedSwap }: TrackEventPayload) => void;
    readonly completeExchangeSuccess: ({ provider, exchangeType, currency, isEmbeddedSwap, }: TrackEventPayload & {
        currency: string;
    }) => void;
    readonly completeExchangeFail: ({ provider, exchangeType, isEmbeddedSwap }: TrackEventPayload) => void;
    readonly completeExchangeNoParams: (manifest: AppManifest) => void;
    readonly swapPayloadRequested: ({ provider, transactionId, fromAccountAddress, toAccountAddress, fromCurrencyId, toCurrencyId, fromAmount, quoteId, }: {
        provider: string;
        transactionId: string;
        fromAccountAddress: string;
        toAccountAddress: string;
        fromCurrencyId: string;
        toCurrencyId?: string;
        fromAmount: string | number;
        quoteId?: string;
    }) => void;
    readonly swapResponseRetrieved: ({ binaryPayload, signature, payinAddress, swapId, payinExtraId, extraTransactionParameters, }: {
        binaryPayload: string;
        signature: string;
        payinAddress: string;
        swapId: string;
        payinExtraId?: string;
        extraTransactionParameters?: string;
    }) => void;
};
export type TrackingAPI = ReturnType<typeof trackingWrapper>;
export {};
//# sourceMappingURL=tracking.d.ts.map