@turnkey/core
Version:
A core JavaScript web and React Native package for interfacing with Turnkey's infrastructure.
72 lines • 3.46 kB
TypeScript
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