import { WalletProviderName, NetworkInfo, GetBalanceResult } from '@imtbl/checkout-sdk';
export type WalletConfiguration = {
    showDisconnectButton: boolean;
    showNetworkMenu: boolean;
};
export interface WalletState {
    walletProviderName: WalletProviderName | null;
    network: NetworkInfo | null;
    tokenBalances: GetBalanceResult[];
    supportedTopUps: TopUpFeature | null;
    walletConfig: WalletConfiguration;
}
export interface TopUpFeature {
    isOnRampEnabled?: boolean;
    isSwapEnabled?: boolean;
    isBridgeEnabled?: boolean;
    isSwapAvailable?: boolean;
    isAddTokensEnabled?: boolean;
}
export declare const initialWalletState: WalletState;
export interface WalletContextState {
    walletState: WalletState;
    walletDispatch: React.Dispatch<WalletAction>;
}
export interface WalletAction {
    payload: ActionPayload;
}
type ActionPayload = SetWalletProviderNamePayload | SetSwitchNetworkPayload | SetTokenBalancesPayload | SetSupportedTopUpPayload;
export declare enum WalletActions {
    SET_WALLET_PROVIDER_NAME = "SET_WALLET_PROVIDER_NAME",
    SET_NETWORK = "SET_NETWORK",
    SET_TOKEN_BALANCES = "SET_TOKEN_BALANCES",
    SET_SUPPORTED_TOP_UPS = "SUPPORTED_TOP_UPS"
}
export interface SetWalletProviderNamePayload {
    type: WalletActions.SET_WALLET_PROVIDER_NAME;
    walletProviderName: WalletProviderName;
}
export interface SetSwitchNetworkPayload {
    type: WalletActions.SET_NETWORK;
    network: NetworkInfo;
}
export interface SetTokenBalancesPayload {
    type: WalletActions.SET_TOKEN_BALANCES;
    tokenBalances: GetBalanceResult[];
}
export interface SetSupportedTopUpPayload {
    type: WalletActions.SET_SUPPORTED_TOP_UPS;
    supportedTopUps: TopUpFeature;
}
export declare const WalletContext: import("react").Context<WalletContextState>;
export type Reducer<S, A> = (prevState: S, action: A) => S;
export declare const walletReducer: Reducer<WalletState, WalletAction>;
export {};
