import type { Wallet } from "@wallet-standard/base"; import type { InjectedSolanaProvider } from "./injected-wallet-types"; export interface StandardWalletChoice { name: string; /** data: URI the wallet advertises, or undefined. */ icon?: string; /** The registered wallet itself. Names are labels anyone can reuse, so * callers that must know WHICH wallet this is (for example whether it is the * Solana Mobile one, which needs a fresh gesture per operation) compare * identity against this. */ wallet: Wallet; /** Adapt the registered wallet to the slim injected-provider shape. */ getProvider: () => InjectedSolanaProvider; } /** * Adapt a Wallet Standard wallet to the slim `InjectedSolanaProvider` the SDK's * wallet-login + signing path consumes. Connect resolves (and caches) the active * account; sign* delegate to the wallet's own Solana features. Nothing is * wallet-name specific. * * DS2-0383: signAndSendTransaction MUST execute on the network the APP configured * (`config.chain`), not whatever chain the wallet happens to advertise first. * Deriving the chain from the wallet's advertised list (with a mainnet fallback) * could hand a devnet/testnet transaction to the wallet labelled mainnet - or the * reverse. `configuredNetwork` is resolved to the exact Wallet-Standard chain id; * an unconfigured network fails closed at sign time rather than defaulting. */ export declare function standardWalletToInjectedProvider(wallet: Wallet, configuredNetwork?: string | null): InjectedSolanaProvider; /** * Enumerate every Solana-capable wallet currently registered with the Wallet * Standard, newest registrations included. Returns login-ready choices (name + * icon + provider factory). Empty array off-browser or when no wallet is present; * the widget then falls back to the legacy injected `window.solana` probe. */ export declare function discoverStandardWallets(configuredNetwork?: string | null): StandardWalletChoice[]; /** * First login-capable Wallet Standard wallet adapted to the injected-provider * shape, or null. The last-resort fallback for wallet login when nothing is * injected - e.g. a Saga/Seeker phone, where the Solana Mobile wallet lives in * the registry (via registerMwa) and never as `window.solana`. */ export declare function firstStandardWalletProvider(configuredNetwork?: string | null): InjectedSolanaProvider | null;