import { Quote, QuoteRequest } from '@defuse-protocol/one-click-sdk-typescript';
import { Chains, ChainsFilters } from './chain';
import { SimpleToken, Token } from './token';
import { FetchQuoteOptions } from './quote';
import { Plugins } from './connectors';
import { Providers } from './providers';
export type WalletAddresses = Partial<Record<Chains | 'default', string | null>>;
export type IntentsAccountType = 'evm' | 'near' | 'sol' | 'stellar';
export type DefaultToken = Pick<Token, 'symbol' | 'blockchain'>;
export type PriorityAssets = ReadonlyArray<string> | ReadonlyArray<readonly [Chains, string]>;
export type WidgetConfig = {
    apiKey?: string;
    referral?: string;
    enableAccountAbstraction?: boolean;
    providers?: Providers;
    plugins?: Plugins;
    walletSupportedChains?: ReadonlyArray<Chains>;
    connectedWallets: WalletAddresses;
    onWalletSignout?: (walletType?: IntentsAccountType) => void;
    onWalletSignin?: () => void;
    sendAddress?: string | null;
    slippageTolerance: number;
    enableAutoTokensSwitching?: boolean;
    refetchQuoteInterval?: number;
    appFees?: {
        recipient: string;
        fee: number;
    }[];
    extraQuoteParameters?: {
        sessionId?: string;
        virtualChainRecipient?: string;
        virtualChainRefundRecipient?: string;
    };
    defaultSourceToken?: DefaultToken | null;
    defaultTargetToken?: DefaultToken | null;
    allowedTokensList?: string[];
    allowedSourceTokensList?: string[];
    allowedTargetTokensList?: string[];
    priorityAssets?: PriorityAssets;
    filterTokens: (token: Token) => boolean;
    disabledInternalBalanceTokens?: string[];
    chainsOrder: Chains[];
    allowedChainsList?: Chains[];
    allowedSourceChainsList?: Chains[];
    allowedTargetChainsList?: Chains[];
    topChainShortcuts?: (intentsAccountType?: IntentsAccountType) => [Chains, Chains, Chains, Chains];
    chainsFilter?: ChainsFilters;
    fetchQuote?: (data: QuoteRequest, options: FetchQuoteOptions) => Promise<Quote>;
    fetchSourceTokens?: () => Promise<SimpleToken[]>;
    fetchTargetTokens?: () => Promise<SimpleToken[]>;
    alchemyApiKey?: string;
    tonCenterApiKey?: string;
    showProfileButton?: boolean;
    hideSendAddress?: boolean;
    hideTokenInputHeadings?: boolean;
    themeParentElementSelector?: string;
    lockSwapDirection?: boolean;
    showTransactionHistory?: boolean;
    showConversionPreview?: boolean;
};
