import * as react_jsx_runtime from 'react/jsx-runtime';
import { Theme, ThemeType, DeepPartial } from '@0xsquid/ui';
import { AppConfig as AppConfig$1, WidgetEvents } from '@0xsquid/react-hooks';

type Routes = "swap" | "settings" | "wallets" | "connectWalletQr" | "history" | "transaction" | "signSwapTransactionQr" | "signSendTransactionQr" | "signTrustLineTransactionQr" | "trustLineDetails" | "allTokens" | "destination" | "swapDetails" | "stops" | "paymentMethod" | "depositAddress" | "fiatOnRamp" | "fiatOnRampProgress" | "fiatOnRampProviders" | "fiatOnRampCountry" | "fiatOnRampCurrency" | "fiatOnRampPaymentMethod" | "send" | "sendInProgress" | "tokenAssociationDetails";

declare enum WidgetTransactionType {
    Swap = "swap",
    Buy = "buy",
    Send = "send"
}
interface TabConfig extends Record<WidgetTransactionType, boolean> {
    defaultTab?: WidgetTransactionType;
}
interface AppConfig extends AppConfig$1 {
    theme?: Theme;
    themeType?: ThemeType;
    hideAnimations?: boolean;
    hideCustomDestination?: boolean;
    tabs?: TabConfig;
}

interface AdvancedUILabels {
    titles: {
        [K in Routes]?: string;
    };
    tabs: {
        [K in WidgetTransactionType]: string;
    };
    submitSwapButton: {
        swap: string;
        swapAnyway: string;
    };
}
interface AppProps {
    config: AppConfig;
    className?: string;
    useExternalSquidProvider?: boolean;
    advancedUi?: {
        headerPaddingRight?: number;
        labels?: DeepPartial<AdvancedUILabels>;
        hideChainSelector?: boolean;
    };
}

/**
 * Listens to the widget route change event and returns the current route id
 * @returns {string | undefined} the current route id
 */
declare const useWidgetRouteListener: () => {
    currentRouteId: string | undefined;
};

declare const SquidAppContainer: ({ children, config, className, }: {
    children: React.ReactNode;
    config: AppConfig;
    className?: string;
}) => react_jsx_runtime.JSX.Element;
declare const SquidAppSkeleton: ({ config, advancedUi, }: {
    config: AppConfig;
    advancedUi: AppProps["advancedUi"];
}) => react_jsx_runtime.JSX.Element;

declare const SquidWidget: ({ config, className, useExternalSquidProvider, advancedUi, }: AppProps) => react_jsx_runtime.JSX.Element;
declare const squidWidgetEvents: WidgetEvents;

export { SquidAppContainer, SquidAppSkeleton, SquidWidget, squidWidgetEvents, useWidgetRouteListener };
