@coinbase/agentkit
Version:
Coinbase AgentKit core primitives
57 lines (56 loc) • 1.91 kB
JavaScript
;
/* 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.`);
}