@coinbase/agentkit 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,6 +12,8 @@ export interface PrivyEvmDelegatedEmbeddedWalletConfig extends PrivyWalletConfig
12
12
  networkId?: string;
13
13
  /** The chain ID to connect to */
14
14
  chainId?: string;
15
+ /** The wallet type to use */
16
+ walletType: "embedded";
15
17
  }
16
18
  /**
17
19
  * A wallet provider that uses Privy's embedded wallets with delegation.
@@ -123,6 +123,7 @@ describe("PrivyEvmDelegatedEmbeddedWalletProvider", () => {
123
123
  authorizationPrivateKey: "wallet-auth:test-auth-key",
124
124
  walletId: MOCK_WALLET_ID,
125
125
  networkId: "base-sepolia",
126
+ walletType: "embedded",
126
127
  };
127
128
  beforeEach(() => {
128
129
  jest.clearAllMocks();
@@ -15,10 +15,6 @@ export interface PrivyWalletConfig {
15
15
  authorizationPrivateKey?: string;
16
16
  /** Optional authorization key ID for creating new wallets */
17
17
  authorizationKeyId?: string;
18
- /** The chain type to create the wallet on */
19
- chainType?: "ethereum" | "solana";
20
- /** The type of wallet to use */
21
- walletType?: "server" | "embedded";
22
18
  }
23
19
  export type PrivyWalletExport = {
24
20
  walletId: string;
@@ -45,5 +41,7 @@ export declare const createPrivyClient: (config: PrivyWalletConfig) => PrivyClie
45
41
  * @param config - The configuration options for the Privy wallet
46
42
  * @returns The created Privy wallet
47
43
  */
48
- export declare function createPrivyWallet(config: PrivyWalletConfig): Promise<CreatePrivyWalletReturnType>;
44
+ export declare function createPrivyWallet(config: PrivyWalletConfig & {
45
+ chainType: "ethereum" | "solana";
46
+ }): Promise<CreatePrivyWalletReturnType>;
49
47
  export {};
@@ -10,6 +10,8 @@ export interface PrivySvmWalletConfig extends PrivyWalletConfig {
10
10
  networkId?: string;
11
11
  /** The connection to use for the wallet */
12
12
  connection?: Connection;
13
+ /** The wallet type to use */
14
+ walletType: "server";
13
15
  }
14
16
  /**
15
17
  * A wallet provider that uses Privy's server wallet API.
@@ -59,7 +59,10 @@ class PrivySvmWalletProvider extends svmWalletProvider_1.SvmWalletProvider {
59
59
  * ```
60
60
  */
61
61
  static async configureWithWallet(config) {
62
- const { wallet, privy } = await (0, privyShared_1.createPrivyWallet)(config);
62
+ const { wallet, privy } = await (0, privyShared_1.createPrivyWallet)({
63
+ ...config,
64
+ chainType: "solana",
65
+ });
63
66
  const connection = config.connection ??
64
67
  new web3_js_1.Connection((0, web3_js_1.clusterApiUrl)(svm_1.SOLANA_CLUSTER_ID_BY_NETWORK_ID[config.networkId ?? ""]));
65
68
  return new PrivySvmWalletProvider({
@@ -148,6 +148,7 @@ describe("PrivySvmWalletProvider", () => {
148
148
  const MOCK_CONFIG = {
149
149
  appId: "test-app-id",
150
150
  appSecret: "test-app-secret",
151
+ walletType: "server",
151
152
  };
152
153
  const MOCK_CONFIG_WITH_WALLET_ID = {
153
154
  ...MOCK_CONFIG,
@@ -1,7 +1,10 @@
1
1
  import { PrivyEvmWalletProvider, PrivyEvmWalletConfig } from "./privyEvmWalletProvider";
2
2
  import { PrivySvmWalletProvider, PrivySvmWalletConfig } from "./privySvmWalletProvider";
3
3
  import { PrivyEvmDelegatedEmbeddedWalletProvider, PrivyEvmDelegatedEmbeddedWalletConfig } from "./privyEvmDelegatedEmbeddedWalletProvider";
4
- export type PrivyWalletConfig = PrivyEvmWalletConfig | PrivySvmWalletConfig | PrivyEvmDelegatedEmbeddedWalletConfig;
4
+ type PrivyWalletConfig = (PrivyEvmWalletConfig | PrivySvmWalletConfig | PrivyEvmDelegatedEmbeddedWalletConfig) & {
5
+ chainType?: "ethereum" | "solana";
6
+ walletType?: "server" | "embedded";
7
+ };
5
8
  export type PrivyWalletProviderVariant<T> = T extends {
6
9
  walletType: "embedded";
7
10
  } ? PrivyEvmDelegatedEmbeddedWalletProvider : T extends {
@@ -41,8 +44,6 @@ export declare class PrivyWalletProvider {
41
44
  * });
42
45
  * ```
43
46
  */
44
- static configureWithWallet<T extends PrivyWalletConfig>(config: T & {
45
- chainType?: "ethereum" | "solana";
46
- walletType?: "server" | "embedded";
47
- }): Promise<PrivyWalletProviderVariant<T>>;
47
+ static configureWithWallet<T extends PrivyWalletConfig>(config: T): Promise<PrivyWalletProviderVariant<T>>;
48
48
  }
49
+ export {};
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const privyWalletProvider_1 = require("./privyWalletProvider");
4
4
  const privyEvmWalletProvider_1 = require("./privyEvmWalletProvider");
5
5
  const privySvmWalletProvider_1 = require("./privySvmWalletProvider");
6
+ const privyEvmDelegatedEmbeddedWalletProvider_1 = require("./privyEvmDelegatedEmbeddedWalletProvider");
6
7
  global.fetch = jest.fn(() => Promise.resolve({
7
8
  ok: true,
8
9
  json: () => Promise.resolve({}),
@@ -34,6 +35,18 @@ jest.mock("./privySvmWalletProvider", () => ({
34
35
  }),
35
36
  },
36
37
  }));
38
+ jest.mock("./privyEvmDelegatedEmbeddedWalletProvider", () => ({
39
+ PrivyEvmDelegatedEmbeddedWalletProvider: {
40
+ configureWithWallet: jest.fn().mockResolvedValue({
41
+ getAddress: jest.fn().mockReturnValue("0x324335Cc6634C0532925a3b844Bc454e4438d22g"),
42
+ getNetwork: jest.fn().mockReturnValue({
43
+ protocolFamily: "evm",
44
+ chainId: "1",
45
+ networkId: "mainnet",
46
+ }),
47
+ }),
48
+ },
49
+ }));
37
50
  describe("PrivyWalletProvider", () => {
38
51
  const MOCK_EVM_CONFIG = {
39
52
  appId: "test-app-id",
@@ -44,6 +57,12 @@ describe("PrivyWalletProvider", () => {
44
57
  appSecret: "test-app-secret",
45
58
  chainType: "solana",
46
59
  };
60
+ const MOCK_EVM_EMBEDDED_WALLET_CONFIG = {
61
+ ...MOCK_EVM_CONFIG,
62
+ authorizationPrivateKey: "test-auth-key",
63
+ walletId: "test-wallet-id",
64
+ walletType: "embedded",
65
+ };
47
66
  beforeEach(() => {
48
67
  jest.clearAllMocks();
49
68
  });
@@ -51,6 +70,7 @@ describe("PrivyWalletProvider", () => {
51
70
  const provider = await privyWalletProvider_1.PrivyWalletProvider.configureWithWallet(MOCK_EVM_CONFIG);
52
71
  expect(privyEvmWalletProvider_1.PrivyEvmWalletProvider.configureWithWallet).toHaveBeenCalledWith(MOCK_EVM_CONFIG);
53
72
  expect(privySvmWalletProvider_1.PrivySvmWalletProvider.configureWithWallet).not.toHaveBeenCalled();
73
+ expect(privyEvmDelegatedEmbeddedWalletProvider_1.PrivyEvmDelegatedEmbeddedWalletProvider.configureWithWallet).not.toHaveBeenCalled();
54
74
  expect(provider.getAddress()).toBe("0x742d35Cc6634C0532925a3b844Bc454e4438f44e");
55
75
  expect(provider.getNetwork().protocolFamily).toBe("evm");
56
76
  });
@@ -62,6 +82,7 @@ describe("PrivyWalletProvider", () => {
62
82
  const provider = await privyWalletProvider_1.PrivyWalletProvider.configureWithWallet(config);
63
83
  expect(privyEvmWalletProvider_1.PrivyEvmWalletProvider.configureWithWallet).toHaveBeenCalledWith(config);
64
84
  expect(privySvmWalletProvider_1.PrivySvmWalletProvider.configureWithWallet).not.toHaveBeenCalled();
85
+ expect(privyEvmDelegatedEmbeddedWalletProvider_1.PrivyEvmDelegatedEmbeddedWalletProvider.configureWithWallet).not.toHaveBeenCalled();
65
86
  expect(provider.getAddress()).toBe("0x742d35Cc6634C0532925a3b844Bc454e4438f44e");
66
87
  expect(provider.getNetwork().protocolFamily).toBe("evm");
67
88
  });
@@ -69,9 +90,18 @@ describe("PrivyWalletProvider", () => {
69
90
  const provider = await privyWalletProvider_1.PrivyWalletProvider.configureWithWallet(MOCK_SVM_CONFIG);
70
91
  expect(privySvmWalletProvider_1.PrivySvmWalletProvider.configureWithWallet).toHaveBeenCalledWith(MOCK_SVM_CONFIG);
71
92
  expect(privyEvmWalletProvider_1.PrivyEvmWalletProvider.configureWithWallet).not.toHaveBeenCalled();
93
+ expect(privyEvmDelegatedEmbeddedWalletProvider_1.PrivyEvmDelegatedEmbeddedWalletProvider.configureWithWallet).not.toHaveBeenCalled();
72
94
  expect(provider.getAddress()).toBe("AQoKYV7tYpTrFZN6P5oUufbQKAUr9mNYGe1TTJC9wajM");
73
95
  expect(provider.getNetwork().protocolFamily).toBe("solana");
74
96
  });
97
+ it("should create an EVM embedded wallet provider when embedded is specified", async () => {
98
+ const provider = await privyWalletProvider_1.PrivyWalletProvider.configureWithWallet(MOCK_EVM_EMBEDDED_WALLET_CONFIG);
99
+ expect(privyEvmDelegatedEmbeddedWalletProvider_1.PrivyEvmDelegatedEmbeddedWalletProvider.configureWithWallet).toHaveBeenCalledWith(MOCK_EVM_EMBEDDED_WALLET_CONFIG);
100
+ expect(privyEvmWalletProvider_1.PrivyEvmWalletProvider.configureWithWallet).not.toHaveBeenCalled();
101
+ expect(privySvmWalletProvider_1.PrivySvmWalletProvider.configureWithWallet).not.toHaveBeenCalled();
102
+ expect(provider.getAddress()).toBe("0x324335Cc6634C0532925a3b844Bc454e4438d22g");
103
+ expect(provider.getNetwork().protocolFamily).toBe("evm");
104
+ });
75
105
  it("should pass through all config properties", async () => {
76
106
  const fullConfig = {
77
107
  ...MOCK_EVM_CONFIG,
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@coinbase/agentkit",
3
3
  "description": "Coinbase AgentKit core primitives",
4
4
  "repository": "https://github.com/coinbase/agentkit",
5
- "version": "0.6.0",
5
+ "version": "0.6.1",
6
6
  "author": "Coinbase Inc.",
7
7
  "license": "Apache-2.0",
8
8
  "main": "dist/index.js",
@@ -26,6 +26,7 @@
26
26
  "@alloralabs/allora-sdk": "^0.1.0",
27
27
  "@coinbase/coinbase-sdk": "^0.20.0",
28
28
  "@jup-ag/api": "^6.0.39",
29
+ "@privy-io/public-api": "^2.18.5",
29
30
  "@privy-io/server-auth": "^1.18.4",
30
31
  "@solana/spl-token": "^0.4.12",
31
32
  "@solana/web3.js": "^1.98.0",