UNPKG

@coinbase/agentkit

Version:

Coinbase AgentKit core primitives

57 lines (56 loc) 1.91 kB
"use strict"; /* eslint-disable @typescript-eslint/no-explicit-any */ Object.defineProperty(exports, "__esModule", { value: true }); exports.SvmWalletProvider = void 0; exports.createSignerFromBytes = createSignerFromBytes; const walletProvider_1 = require("./walletProvider"); const kit_1 = require("@solana/kit"); /** * SvmWalletProvider is the abstract base class for all Solana wallet providers (non browsers). * * @abstract */ class SvmWalletProvider extends walletProvider_1.WalletProvider { /** * Convert the wallet provider to a KeyPairSigner. * * @returns The KeyPairSigner instance */ async toSigner() { return this.getKeyPairSigner(); } /** * Check if this wallet's signer is a valid KeyPairSigner. * * @returns True if the signer is a valid KeyPairSigner, false otherwise */ async isKeyPairSigner() { try { const signer = await this.toSigner(); return (0, kit_1.isKeyPairSigner)(signer); } catch { return false; } } } exports.SvmWalletProvider = SvmWalletProvider; /** * Create a KeyPairSigner from raw bytes. * * @param bytes - The raw key bytes (32 bytes for private key only, 64 bytes for private + public key) * @returns A KeyPairSigner instance * @throws Error if the byte length is not 32 or 64 */ async function createSignerFromBytes(bytes) { // generate a keypair signer from the bytes based on the byte-length // 64 bytes represents concatenated private + public key if (bytes.length === 64) { return await (0, kit_1.createKeyPairSignerFromBytes)(bytes); } // 32 bytes represents only the private key if (bytes.length === 32) { return await (0, kit_1.createKeyPairSignerFromPrivateKeyBytes)(bytes); } throw new Error(`Unexpected key length: ${bytes.length}. Expected 32 or 64 bytes.`); }