UNPKG

@coinbase/agentkit

Version:

Coinbase AgentKit core primitives

72 lines (71 loc) 2.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PrivyWalletProvider = void 0; const privyEvmWalletProvider_1 = require("./privyEvmWalletProvider"); const privySvmWalletProvider_1 = require("./privySvmWalletProvider"); const privyEvmDelegatedEmbeddedWalletProvider_1 = require("./privyEvmDelegatedEmbeddedWalletProvider"); /** * Factory class for creating chain-specific Privy wallet providers */ class PrivyWalletProvider { /** * Creates and configures a new wallet provider instance based on the chain type and wallet type. * * @param config - The configuration options for the Privy wallet * @returns A configured WalletProvider instance for the specified chain and wallet type * * @example * ```typescript * // For EVM server wallets (default) * const evmWallet = await PrivyWalletProvider.configureWithWallet({ * appId: "your-app-id", * appSecret: "your-app-secret" * }); * * // For Solana server wallets * const solanaWallet = await PrivyWalletProvider.configureWithWallet({ * appId: "your-app-id", * appSecret: "your-app-secret", * chainType: "solana" * }); * * // For Ethereum embedded wallets * const embeddedWallet = await PrivyWalletProvider.configureWithWallet({ * appId: "your-app-id", * appSecret: "your-app-secret", * walletId: "delegated-wallet-id", * walletType: "embedded" * }); * ``` */ static async configureWithWallet(config) { const chainType = config.chainType || "ethereum"; const walletType = config.walletType || "server"; switch (chainType) { case "ethereum": { switch (walletType) { case "server": return (await privyEvmWalletProvider_1.PrivyEvmWalletProvider.configureWithWallet(config)); case "embedded": return (await privyEvmDelegatedEmbeddedWalletProvider_1.PrivyEvmDelegatedEmbeddedWalletProvider.configureWithWallet(config)); default: throw new Error("Invalid wallet type"); } } case "solana": { switch (walletType) { case "server": return (await privySvmWalletProvider_1.PrivySvmWalletProvider.configureWithWallet(config)); case "embedded": throw new Error("Embedded wallets are not supported for Solana"); default: throw new Error("Invalid wallet type"); } } default: { throw new Error("Invalid chain type"); } } } } exports.PrivyWalletProvider = PrivyWalletProvider;