import { SignIntent, WalletProvider, WalletInterface, WalletInterfaceType, SwitchableChain } from "@types";
export interface CrossPlatformWalletConnectorInterface {
    sign(message: string | Uint8Array, walletProvider: WalletProvider, intent: SignIntent): Promise<string>;
}
export declare class CrossPlatformWalletConnector implements CrossPlatformWalletConnectorInterface {
    private readonly wallets;
    /**
     * Constructs a CrossPlatformWalletConnector.
     *
     * - Validates that at least one wallet interface is provided.
     * - Stores the provided mapping of wallet interfaces.
     *
     * @param wallets - A partial mapping of wallet interfaces by type.
     * @throws {Error} If no wallet interfaces are provided.
     */
    constructor(wallets: Partial<Record<WalletInterfaceType, WalletInterface>>);
    /**
     * Connects the wallet account for the given provider.
     *
     * @param provider - The wallet provider to connect.
     * @returns A promise that resolves once the wallet account is connected.
     */
    connectWalletAccount(provider: WalletProvider): Promise<void>;
    /**
     * Disconnects the wallet account for the given provider.
     *
     * @param provider - The wallet provider to disconnect.
     * @returns A promise that resolves once the wallet account is disconnected.
     */
    disconnectWalletAccount(provider: WalletProvider): Promise<void>;
    /**
     * Switches the chain for an EVM-compatible wallet provider (native or WalletConnect).
     *
     * - Only supported for wallet providers on the Ethereum namespace.
     * - Native (extension) wallets:
     *   - If `chainOrId` is a hex string and the wallet doesn't support it, the switch will fail.
     *   - If `chainOrId` is a `SwitchableChain` object, the wallet will attempt to switch; if the chain
     *     is unsupported, it will first add the chain (via `wallet_addEthereumChain`) and then retry switching.
     * - WalletConnect wallets:
     *   - Chain support is negotiated up front via namespaces. If the target chain isn't in the session's
     *     `ethereumNamespaces`, the switch will fail. To support a new chain, you must specify it in the walletConfig.
     *
     * @param provider - The EVM-compatible wallet provider to switch chains for.
     * @param chainOrId - The target chain ID (hex string) or full chain config (`SwitchableChain`).
     * @returns A promise that resolves once the chain switch is complete.
     * @throws {Error} If the provider is not Ethereum-based or doesn't support switching.
     */
    switchChain(provider: WalletProvider, chainOrId: string | SwitchableChain): Promise<void>;
    /**
     * Signs a payload using the appropriate wallet based on the provider.
     *
     * @param payload - The payload to be signed.
     * @param walletProvider - The wallet provider used for signing.
     * @param intent - The signing intent (e.g., message, transaction).
     * @returns A promise that resolves to a hex string (signature or tx hash).
     * @throws {Error} If the wallet is not initialized.
     */
    sign(payload: string, walletProvider: WalletProvider, intent: SignIntent): Promise<string>;
}
//# sourceMappingURL=connector.d.ts.map