import type { SdkView } from '@dynamic-labs/sdk-api-core';
import type { GenericNetwork } from '@dynamic-labs/types';
import type { ChainDisplayOverrides, Wallet } from '@dynamic-labs/wallet-connector-core';
import type { WalletListViewTabItem } from '../../../shared';
export type WalletListViewSettings = {
    type: 'wallet-list';
    tabs?: {
        style?: 'grid';
        items: WalletListViewTabItem[];
    };
};
export type NetworksOverrides = GenericNetwork[] | ((dashboardNetworks: GenericNetwork[]) => GenericNetwork[]);
export type ViewsOverrides = SdkView | WalletListViewSettings;
export type OnrampOption = {
    /**
     * The name of the onramp provider to be displayed in UI
     * Example: "Coinbase"
     */
    displayName: string;
    /**
     * The icon URL of the onramp provider to be displayed in UI
     * Example: "https://www.coinbase.com/assets/coinbase-logo-2020-09-09-1024x1024.png"
     */
    iconUrl: string;
    /**
     * The id of the onramp provider, ideally based off its name
     * Example: "coinbase"
     */
    id: string;
    /**
     * The URL of the onramp provider
     * For iframe mode, this is displayed directly in the UI
     * For popup mode, this is opened in a new window when the provider is selected
     * Example: "https://widget.coinbase.com/iframe/onramp?apiKey=YOUR_API_KEY&walletAddress=YOUR_WALLET_ADDRESS"
     */
    url?: string;
    /**
     * The display mode for the onramp provider
     * 'iframe' - The provider will be displayed in an iframe within the UI
     * 'popup' - The provider will be opened in a new window when selected
     * @default 'iframe'
     */
    openMode?: 'iframe' | 'popup';
    /**
     * Optional custom onClick handler for when the onramp provider is selected
     * @param wallet - The wallet that will receive the onramp
     */
    onClick?: ({ wallet }: {
        wallet: Wallet;
    }) => void;
    /**
     * (optional) The description of the onramp provider to be displayed in UI
     * Example: "Buy crypto with a credit card"
     */
    description?: string;
    /**
     * (optional) Whether the option is for a specific payment method within the onramp provider
     * If true, the SDK will display the option as a payment method in the UI
     * @default false
     */
    isPaymentMethod?: boolean;
};
export type SettingsOverrides = {
    views?: Array<ViewsOverrides>;
    /**
     * Allows overriding which evm networks the SDK has access to.
     * If an array is provided, it is used instead of whatever is obtained from dashboard configs.
     * If a callback is passed, the callback will be called with the values obtained from dashboard, and
     * it must return the network values that will be used.
     *
     * WARNING: this callback must be memoized as it will be used in a dependency array to ensure
     * the SDK can react to this value changing (for ex, toggling a chain off).
     */
    evmNetworks?: NetworksOverrides;
    /**
     * Allows overriding which sol networks the SDK has access to.
     * If an array is provided, it is used instead of whatever is obtained from dashboard configs.
     * If a callback is passed, the callback will be called with the values obtained from dashboard, and
     * it must return the network values that will be used.
     *
     * WARNING: this callback must be memoized as it will be used in a dependency array to ensure
     * the SDK can react to this value changing (for ex, toggling a chain off).
     */
    solNetworks?: NetworksOverrides;
    cosmosNetworks?: NetworksOverrides;
    /**
     * Allows overriding which tron networks the SDK has access to.
     * If an array is provided, it is used instead of whatever is obtained from dashboard configs.
     * If a callback is passed, the callback will be called with the values obtained from dashboard, and
     * it must return the network values that will be used.
     *
     * WARNING: this callback must be memoized as it will be used in a dependency array to ensure
     * the SDK can react to this value changing (for ex, toggling a chain off).
     */
    tronNetworks?: NetworksOverrides;
    /**
     * Allows overriding which aptos networks the SDK has access to.
     * If an array is provided, it is used instead of whatever is obtained from dashboard configs.
     * If a callback is passed, the callback will be called with the values obtained from dashboard, and
     * it must return the network values that will be used.
     *
     * WARNING: this callback must be memoized as it will be used in a dependency array to ensure
     * the SDK can react to this value changing (for ex, toggling a chain off).
     */
    aptosNetworks?: NetworksOverrides;
    /**
     * Allows overriding the multi-wallet feature from the dashboard.
     */
    multiWallet?: boolean;
    /**
     * Allows overriding the multi-asset and showFiat features from the dashboard.
     */
    multiAsset?: boolean;
    showFiat?: boolean;
    /**
     * Allows overriding the chain info for a specific chain.
     */
    chainDisplayValues?: ChainDisplayOverrides;
    /**
     * Allows overriding or extending the onramp options.
     * If an array is provided, it will be used instead of the dashboard-configured onramps.
     * If a function is provided, it will be called with the existing enabled onramp options from the dashboard,
     * and should return the final array of onramp options to be used.
     */
    onrampOptions?: OnrampOption[] | ((existingOptions: OnrampOption[]) => OnrampOption[]);
};
