import { WalletConnector } from '@dynamic-labs/wallet-connector-core';
import { Wallet } from '../shared/types/wallets';
export type UserWalletsUpdateType = {
    updateType: 'walletAdded';
    addedWallet: Wallet;
} | {
    updateType: 'walletRemoved';
    removedWallet: Wallet;
} | {
    updateType: 'primaryWalletChanged';
} | {
    updateType: 'primaryWalletNetworkChanged';
    newNetwork: string | number;
} | {
    updateType: 'nonPrimaryWalletNetworkChanged';
    newNetwork: string | number;
    affectedWallets: Wallet[];
};
export type UserWalletsChangedParams = {
    userWallets: Wallet[];
    primaryWallet: Wallet | undefined;
} & UserWalletsUpdateType;
export type WalletEvents = {
    /** Triggered when a new wallet is added to user wallets list */
    walletAdded: (wallet: Wallet, userWallets: Wallet[]) => void;
    /** Triggered when a wallet is removed from user wallets list */
    walletRemoved: (wallet: Wallet, userWallets: Wallet[]) => void;
    /** Triggered when the primary wallet changes (a different wallet is selected) */
    primaryWalletChanged: (newPrimaryWallet: Wallet) => void;
    /** Triggered when the network changes in primary wallet */
    primaryWalletNetworkChanged: (newNetwork: string | number) => void;
    /** Triggered when the network changes in non-primary wallet */
    nonPrimaryWalletNetworkChanged: (newNetwork: string | number, connector: WalletConnector) => void;
    /** Triggered when there is a change in user wallets */
    userWalletsChanged: (params: UserWalletsChangedParams) => void;
    /** Triggered when user wallets changes from an empty array to a non-empty array */
    userWalletsPopulated: (userWallets: Wallet[]) => void;
};
