@coinbase/agentkit
Version:
Coinbase AgentKit core primitives
72 lines (71 loc) • 2.87 kB
JavaScript
;
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;