UNPKG

@turnkey/core

Version:

A core JavaScript web and React Native package for interfacing with Turnkey's infrastructure.

72 lines 3.46 kB
import { SignIntent, SolanaWalletInterface, WalletInterfaceType, WalletProvider } from "../../../__types__"; /** * Abstract base class for Solana wallet implementations using Wallet Standard. * * Provides shared logic for: * - Provider discovery via `@wallet-standard/app` (`getWallets()`). * - Connecting via `standard:connect` and disconnecting via `standard:disconnect`. * - Public key retrieval from the wallet's account address (base58 → hex). */ export declare abstract class BaseSolanaWallet implements SolanaWalletInterface { readonly interfaceType = WalletInterfaceType.Solana; abstract sign(message: string | Uint8Array, provider: WalletProvider, intent: SignIntent): Promise<string>; /** * Retrieves the ed25519 public key for the active account as hex (no 0x prefix). * * - Ensures the wallet is connected (calls `standard:connect` if needed). * - Decodes the Wallet Standard account address (base58) to raw bytes. * * @param provider - The wallet provider to use. * @returns Hex-encoded ed25519 public key (no 0x prefix). * @throws {Error} If no account is available. */ getPublicKey: (provider: WalletProvider) => Promise<string>; /** * Discovers Solana-capable Wallet Standard providers. * * - Uses `getWallets().get()` and filters wallets with at least one `chains` entry * starting with `"solana:"`. * - For each wallet, collects branding info and any currently connected addresses. * * @returns A list of discovered Solana `WalletProvider`s (may be empty). */ getProviders: () => Promise<WalletProvider[]>; /** * Connects the wallet account, prompting the user if necessary. * * - Calls `standard:connect` only if no accounts are present. This will prompt the user to connect their wallet. * * @param provider - The wallet provider to connect. * @returns A promise that resolves with the connected wallet's address. * @throws {Error} If the wallet does not implement `standard:connect`. */ connectWalletAccount: (provider: WalletProvider) => Promise<string>; /** * Disconnects the wallet account using Wallet Standard. * * - Calls `standard:disconnect` if implemented. * - Throws if the wallet does not implement `standard:disconnect`. * * @param provider - The wallet provider to disconnect. * @returns A promise that resolves once the wallet disconnects. * @throws {Error} If `standard:disconnect` is not supported by the wallet. */ disconnectWalletAccount: (provider: WalletProvider) => Promise<void>; } /** * Signs a message or transaction with the connected Solana wallet. * * - Ensures the wallet is connected (may prompt via `standard:connect` if its not). * - `SignMessage` → `solana:signMessage` (returns hex signature). * - `SignTransaction` → `solana:signTransaction` (returns hex signature). * * @param payload - UTF-8 string (for message) or hex string (for transaction bytes). * @param provider - The wallet provider to use. * @param intent - The signing intent. * @returns Hex-encoded signature (no 0x prefix). * @throws {Error} If the provider lacks required features or intent is unsupported. */ export declare class SolanaWallet extends BaseSolanaWallet { sign: (payload: string, provider: WalletProvider, intent: SignIntent) => Promise<string>; } //# sourceMappingURL=solana.d.ts.map