import * as react_jsx_runtime from 'react/jsx-runtime';
import React from 'react';
import { ThemeMode, ThemeConfig, FontConfig, ComponentConfig, ChainType, DepositConfirmationMode, AllowedCountryResult } from '@unifold/ui-react';
export { AllowedCountryResult, Button, ButtonProps, ButtonTokens, CardTokens, ComponentConfig, ComponentTokens, ContainerTokens, CustomThemeColors, DepositConfirmationMode, FontConfig, HeaderTokens, InputTokens, ListTokens, SearchTokens, ThemeColors, ThemeConfig, ThemeMode } from '@unifold/ui-react';
export { AutoSwapRequest, AutoSwapResponse, ChainType, CreateDepositAddressRequest, DefaultTokenChain, DefaultTokenMetadata, DefaultTokenResponse, DepositAddressResponse, ExecutionStatus, FeaturedToken, FiatCurrenciesResponse, FiatCurrency, I18nStrings, IconUrl, IpAddressResponse, OnrampQuote, OnrampQuotesRequest, OnrampQuotesResponse, OnrampSessionRequest, OnrampSessionResponse, PaymentNetwork, ProjectConfigResponse, QueryExecutionsRequest, QueryExecutionsResponse, SOLANA_USDC_ADDRESS, SupportedChain, SupportedDepositTokensResponse, SupportedToken, TokenChain, TokenChainIconUrl, TokenChainsResponse, UserIpInfo, Wallet, createDepositAddress, createOnrampSession, getApiBaseUrl, getChainName, getDefaultOnrampToken, getFiatCurrencies, getIconUrl, getIconUrlWithCdn, getIpAddress, getOnrampQuotes, getPreferredIconUrl, getProjectConfig, getSupportedDepositTokens, getTokenChains, getWalletByChainType, i18n, queryExecutions, setApiConfig, useUserIp } from '@unifold/core';

interface UnifoldConnectProviderConfig {
    publishableKey: string;
    config?: {
        modalTitle?: string;
        hideDepositTracker?: boolean;
        /** Show balance in deposit modal header. Defaults to true */
        showBalanceHeader?: boolean;
        /** Theme appearance: 'light', 'dark', or 'auto' (system preference). Defaults to 'dark' */
        appearance?: ThemeMode | 'auto';
        /** Transfer input variant: 'single_input' or 'double_input'. Defaults to 'double_input' */
        transferInputVariant?: 'single_input' | 'double_input';
        /** Enable browser wallet connection option. Defaults to false */
        enableConnectWallet?: boolean;
        /** Enable "Pay with Exchange" option. Overrides dashboard default. Defaults to dashboard value or true. */
        enablePayWithExchange?: boolean;
        /** Simple accent/primary color override (applies to both light and dark modes) */
        accentColor?: string;
        /** Full theme color customization per mode */
        theme?: ThemeConfig;
        /** Single font family for all text (host app must load the font) */
        fontFamily?: string;
        /** Granular font family configuration for different weights */
        fonts?: FontConfig;
        /** Component-specific token overrides */
        components?: ComponentConfig;
    };
}
interface DepositResult {
    message: string;
    transaction?: unknown;
    executionId?: string;
}
interface DepositError {
    message: string;
    error?: unknown;
    code?: string;
}
interface DepositConfig {
    externalUserId: string;
    destinationChainType: ChainType;
    destinationChainId: string;
    destinationTokenAddress: string;
    destinationTokenSymbol: string;
    recipientAddress: string;
    /** How to confirm deposit: 'auto_ui' (default), 'auto_silent', or 'manual' */
    depositConfirmationMode?: DepositConfirmationMode;
    onSuccess?: (data: DepositResult) => void;
    onError?: (error: DepositError) => void;
}
declare function UnifoldProvider({ children, publishableKey, config, }: React.PropsWithChildren<UnifoldConnectProviderConfig>): react_jsx_runtime.JSX.Element;
declare function useUnifold(): {
    publishableKey: string;
    beginDeposit: (config: DepositConfig) => Promise<DepositResult>;
    closeDeposit: () => void;
};
/**
 * Convenience wrapper for useAllowedCountry that automatically passes publishableKey from context
 *
 * This wrapper makes it easy for developers to check geo-restrictions without manually
 * passing the publishableKey.
 *
 * @returns AllowedCountryResult with isAllowed status and location info
 *
 * @example
 * ```tsx
 * import { useAllowedCountry } from '@unifold/connect-react';
 *
 * function MyComponent() {
 *   const { isAllowed, isLoading, error } = useAllowedCountry();
 *
 *   if (isLoading) return <Loading />;
 *   if (!isAllowed) return <GeoBlocked />;
 *
 *   return <YourContent />;
 * }
 * ```
 */
declare function useAllowedCountry(): AllowedCountryResult;

export { type DepositConfig, type DepositError, type DepositResult, type UnifoldConnectProviderConfig, UnifoldProvider, useAllowedCountry, useUnifold };
