@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.
- package/dist/wallet-providers/privyEvmDelegatedEmbeddedWalletProvider.d.ts +2 -0
- package/dist/wallet-providers/privyEvmDelegatedEmbeddedWalletProvider.test.js +1 -0
- package/dist/wallet-providers/privyShared.d.ts +3 -5
- package/dist/wallet-providers/privySvmWalletProvider.d.ts +2 -0
- package/dist/wallet-providers/privySvmWalletProvider.js +4 -1
- package/dist/wallet-providers/privySvmWalletProvider.test.js +1 -0
- package/dist/wallet-providers/privyWalletProvider.d.ts +6 -5
- package/dist/wallet-providers/privyWalletProvider.test.js +30 -0
- package/package.json +2 -1
|
@@ -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
|
|
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)(
|
|
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({
|
|
@@ -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
|
-
|
|
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.
|
|
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",
|