@coinbase/agentkit 0.1.0

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.
Files changed (148) hide show
  1. package/README.md +305 -0
  2. package/dist/action-providers/actionDecorator.d.ts +69 -0
  3. package/dist/action-providers/actionDecorator.js +96 -0
  4. package/dist/action-providers/actionProvider.d.ts +48 -0
  5. package/dist/action-providers/actionProvider.js +62 -0
  6. package/dist/action-providers/basename/basenameActionProvider.d.ts +30 -0
  7. package/dist/action-providers/basename/basenameActionProvider.js +109 -0
  8. package/dist/action-providers/basename/basenameActionProvider.test.d.ts +1 -0
  9. package/dist/action-providers/basename/basenameActionProvider.test.js +146 -0
  10. package/dist/action-providers/basename/constants.d.ts +52 -0
  11. package/dist/action-providers/basename/constants.js +81 -0
  12. package/dist/action-providers/basename/index.d.ts +2 -0
  13. package/dist/action-providers/basename/index.js +18 -0
  14. package/dist/action-providers/basename/schemas.d.ts +14 -0
  15. package/dist/action-providers/basename/schemas.js +14 -0
  16. package/dist/action-providers/cdp/cdpApiActionProvider.d.ts +41 -0
  17. package/dist/action-providers/cdp/cdpApiActionProvider.js +111 -0
  18. package/dist/action-providers/cdp/cdpApiActionProvider.test.d.ts +1 -0
  19. package/dist/action-providers/cdp/cdpApiActionProvider.test.js +134 -0
  20. package/dist/action-providers/cdp/cdpWalletActionProvider.d.ts +58 -0
  21. package/dist/action-providers/cdp/cdpWalletActionProvider.js +218 -0
  22. package/dist/action-providers/cdp/cdpWalletActionProvider.test.d.ts +1 -0
  23. package/dist/action-providers/cdp/cdpWalletActionProvider.test.js +259 -0
  24. package/dist/action-providers/cdp/constants.d.ts +31 -0
  25. package/dist/action-providers/cdp/constants.js +34 -0
  26. package/dist/action-providers/cdp/index.d.ts +3 -0
  27. package/dist/action-providers/cdp/index.js +19 -0
  28. package/dist/action-providers/cdp/schemas.d.ts +91 -0
  29. package/dist/action-providers/cdp/schemas.js +77 -0
  30. package/dist/action-providers/customActionProvider.d.ts +30 -0
  31. package/dist/action-providers/customActionProvider.js +66 -0
  32. package/dist/action-providers/erc20/constants.d.ts +135 -0
  33. package/dist/action-providers/erc20/constants.js +191 -0
  34. package/dist/action-providers/erc20/erc20ActionProvider.d.ts +38 -0
  35. package/dist/action-providers/erc20/erc20ActionProvider.js +118 -0
  36. package/dist/action-providers/erc20/erc20ActionProvider.test.d.ts +1 -0
  37. package/dist/action-providers/erc20/erc20ActionProvider.test.js +117 -0
  38. package/dist/action-providers/erc20/index.d.ts +1 -0
  39. package/dist/action-providers/erc20/index.js +17 -0
  40. package/dist/action-providers/erc20/schemas.d.ts +27 -0
  41. package/dist/action-providers/erc20/schemas.js +26 -0
  42. package/dist/action-providers/erc721/constants.d.ts +236 -0
  43. package/dist/action-providers/erc721/constants.js +301 -0
  44. package/dist/action-providers/erc721/erc721ActionProvider.d.ts +46 -0
  45. package/dist/action-providers/erc721/erc721ActionProvider.js +164 -0
  46. package/dist/action-providers/erc721/erc721ActionProvider.test.d.ts +1 -0
  47. package/dist/action-providers/erc721/erc721ActionProvider.test.js +137 -0
  48. package/dist/action-providers/erc721/index.d.ts +1 -0
  49. package/dist/action-providers/erc721/index.js +17 -0
  50. package/dist/action-providers/erc721/schemas.d.ts +46 -0
  51. package/dist/action-providers/erc721/schemas.js +44 -0
  52. package/dist/action-providers/farcaster/farcasterActionProvider.d.ts +57 -0
  53. package/dist/action-providers/farcaster/farcasterActionProvider.js +142 -0
  54. package/dist/action-providers/farcaster/farcasterActionProvider.test.d.ts +1 -0
  55. package/dist/action-providers/farcaster/farcasterActionProvider.test.js +143 -0
  56. package/dist/action-providers/farcaster/index.d.ts +2 -0
  57. package/dist/action-providers/farcaster/index.js +18 -0
  58. package/dist/action-providers/farcaster/schemas.d.ts +15 -0
  59. package/dist/action-providers/farcaster/schemas.js +20 -0
  60. package/dist/action-providers/index.d.ts +13 -0
  61. package/dist/action-providers/index.js +29 -0
  62. package/dist/action-providers/morpho/constants.d.ts +16 -0
  63. package/dist/action-providers/morpho/constants.js +27 -0
  64. package/dist/action-providers/morpho/index.d.ts +2 -0
  65. package/dist/action-providers/morpho/index.js +18 -0
  66. package/dist/action-providers/morpho/morphoActionProvider.d.ts +39 -0
  67. package/dist/action-providers/morpho/morphoActionProvider.js +147 -0
  68. package/dist/action-providers/morpho/morphoActionProvider.test.d.ts +1 -0
  69. package/dist/action-providers/morpho/morphoActionProvider.test.js +126 -0
  70. package/dist/action-providers/morpho/schemas.d.ts +36 -0
  71. package/dist/action-providers/morpho/schemas.js +47 -0
  72. package/dist/action-providers/pyth/index.d.ts +2 -0
  73. package/dist/action-providers/pyth/index.js +18 -0
  74. package/dist/action-providers/pyth/pythActionProvider.d.ts +33 -0
  75. package/dist/action-providers/pyth/pythActionProvider.js +121 -0
  76. package/dist/action-providers/pyth/schemas.d.ts +21 -0
  77. package/dist/action-providers/pyth/schemas.js +20 -0
  78. package/dist/action-providers/twitter/index.d.ts +2 -0
  79. package/dist/action-providers/twitter/index.js +18 -0
  80. package/dist/action-providers/twitter/schemas.d.ts +38 -0
  81. package/dist/action-providers/twitter/schemas.js +44 -0
  82. package/dist/action-providers/twitter/twitterActionProvider.d.ts +82 -0
  83. package/dist/action-providers/twitter/twitterActionProvider.js +204 -0
  84. package/dist/action-providers/twitter/twitterActionProvider.test.d.ts +1 -0
  85. package/dist/action-providers/twitter/twitterActionProvider.test.js +185 -0
  86. package/dist/action-providers/wallet/index.d.ts +1 -0
  87. package/dist/action-providers/wallet/index.js +17 -0
  88. package/dist/action-providers/wallet/schemas.d.ts +19 -0
  89. package/dist/action-providers/wallet/schemas.js +19 -0
  90. package/dist/action-providers/wallet/walletActionProvider.d.ts +44 -0
  91. package/dist/action-providers/wallet/walletActionProvider.js +127 -0
  92. package/dist/action-providers/wallet/walletActionProvider.test.d.ts +1 -0
  93. package/dist/action-providers/wallet/walletActionProvider.test.js +116 -0
  94. package/dist/action-providers/weth/constants.d.ts +19 -0
  95. package/dist/action-providers/weth/constants.js +29 -0
  96. package/dist/action-providers/weth/index.d.ts +1 -0
  97. package/dist/action-providers/weth/index.js +17 -0
  98. package/dist/action-providers/weth/schemas.d.ts +8 -0
  99. package/dist/action-providers/weth/schemas.js +10 -0
  100. package/dist/action-providers/weth/wethActionProvider.d.ts +30 -0
  101. package/dist/action-providers/weth/wethActionProvider.js +89 -0
  102. package/dist/action-providers/weth/wethActionProvider.test.d.ts +1 -0
  103. package/dist/action-providers/weth/wethActionProvider.test.js +92 -0
  104. package/dist/action-providers/wow/constants.d.ts +15 -0
  105. package/dist/action-providers/wow/constants.js +844 -0
  106. package/dist/action-providers/wow/index.d.ts +2 -0
  107. package/dist/action-providers/wow/index.js +18 -0
  108. package/dist/action-providers/wow/schemas.d.ts +43 -0
  109. package/dist/action-providers/wow/schemas.js +47 -0
  110. package/dist/action-providers/wow/uniswap/constants.d.ts +3 -0
  111. package/dist/action-providers/wow/uniswap/constants.js +100 -0
  112. package/dist/action-providers/wow/uniswap/utils.d.ts +82 -0
  113. package/dist/action-providers/wow/uniswap/utils.js +226 -0
  114. package/dist/action-providers/wow/utils.d.ts +27 -0
  115. package/dist/action-providers/wow/utils.js +63 -0
  116. package/dist/action-providers/wow/wowActionProvider.d.ts +46 -0
  117. package/dist/action-providers/wow/wowActionProvider.js +223 -0
  118. package/dist/action-providers/wow/wowActionProvider.test.d.ts +1 -0
  119. package/dist/action-providers/wow/wowActionProvider.test.js +287 -0
  120. package/dist/agentkit.d.ts +45 -0
  121. package/dist/agentkit.js +60 -0
  122. package/dist/analytics/index.d.ts +1 -0
  123. package/dist/analytics/index.js +17 -0
  124. package/dist/analytics/sendAnalyticsEvent.d.ts +31 -0
  125. package/dist/analytics/sendAnalyticsEvent.js +51 -0
  126. package/dist/index.d.ts +3 -0
  127. package/dist/index.js +22 -0
  128. package/dist/network/index.d.ts +1 -0
  129. package/dist/network/index.js +17 -0
  130. package/dist/network/network.d.ts +13 -0
  131. package/dist/network/network.js +41 -0
  132. package/dist/network/types.d.ts +17 -0
  133. package/dist/network/types.js +2 -0
  134. package/dist/utils.d.ts +11 -0
  135. package/dist/utils.js +43 -0
  136. package/dist/utils.test.d.ts +1 -0
  137. package/dist/utils.test.js +50 -0
  138. package/dist/wallet-providers/cdpWalletProvider.d.ts +218 -0
  139. package/dist/wallet-providers/cdpWalletProvider.js +362 -0
  140. package/dist/wallet-providers/evmWalletProvider.d.ts +51 -0
  141. package/dist/wallet-providers/evmWalletProvider.js +14 -0
  142. package/dist/wallet-providers/index.d.ts +4 -0
  143. package/dist/wallet-providers/index.js +20 -0
  144. package/dist/wallet-providers/viemWalletProvider.d.ts +89 -0
  145. package/dist/wallet-providers/viemWalletProvider.js +187 -0
  146. package/dist/wallet-providers/walletProvider.d.ts +48 -0
  147. package/dist/wallet-providers/walletProvider.js +41 -0
  148. package/package.json +65 -0
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ // TODO: Improve type safety
3
+ /* eslint-disable @typescript-eslint/no-explicit-any */
4
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
5
+ if (kind === "m") throw new TypeError("Private method is not writable");
6
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
7
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
8
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
9
+ };
10
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
11
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
12
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
13
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
14
+ };
15
+ var _ViemWalletProvider_walletClient, _ViemWalletProvider_publicClient;
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ViemWalletProvider = void 0;
18
+ const viem_1 = require("viem");
19
+ const evmWalletProvider_1 = require("./evmWalletProvider");
20
+ const network_1 = require("../network/network");
21
+ /**
22
+ * A wallet provider that uses the Viem library.
23
+ */
24
+ class ViemWalletProvider extends evmWalletProvider_1.EvmWalletProvider {
25
+ /**
26
+ * Constructs a new ViemWalletProvider.
27
+ *
28
+ * @param walletClient - The wallet client.
29
+ */
30
+ constructor(walletClient) {
31
+ super();
32
+ _ViemWalletProvider_walletClient.set(this, void 0);
33
+ _ViemWalletProvider_publicClient.set(this, void 0);
34
+ __classPrivateFieldSet(this, _ViemWalletProvider_walletClient, walletClient, "f");
35
+ __classPrivateFieldSet(this, _ViemWalletProvider_publicClient, (0, viem_1.createPublicClient)({
36
+ chain: walletClient.chain,
37
+ transport: (0, viem_1.http)(),
38
+ }), "f");
39
+ }
40
+ /**
41
+ * Signs a message.
42
+ *
43
+ * @param message - The message to sign.
44
+ * @returns The signed message.
45
+ */
46
+ async signMessage(message) {
47
+ const account = __classPrivateFieldGet(this, _ViemWalletProvider_walletClient, "f").account;
48
+ if (!account) {
49
+ throw new Error("Account not found");
50
+ }
51
+ return __classPrivateFieldGet(this, _ViemWalletProvider_walletClient, "f").signMessage({ account, message });
52
+ }
53
+ /**
54
+ * Signs a typed data object.
55
+ *
56
+ * @param typedData - The typed data object to sign.
57
+ * @returns The signed typed data object.
58
+ */
59
+ async signTypedData(typedData) {
60
+ return __classPrivateFieldGet(this, _ViemWalletProvider_walletClient, "f").signTypedData({
61
+ account: __classPrivateFieldGet(this, _ViemWalletProvider_walletClient, "f").account,
62
+ domain: typedData.domain,
63
+ types: typedData.types,
64
+ primaryType: typedData.primaryType,
65
+ message: typedData.message,
66
+ });
67
+ }
68
+ /**
69
+ * Signs a transaction.
70
+ *
71
+ * @param transaction - The transaction to sign.
72
+ * @returns The signed transaction.
73
+ */
74
+ async signTransaction(transaction) {
75
+ const txParams = {
76
+ account: __classPrivateFieldGet(this, _ViemWalletProvider_walletClient, "f").account,
77
+ to: transaction.to,
78
+ value: transaction.value,
79
+ data: transaction.data,
80
+ chain: __classPrivateFieldGet(this, _ViemWalletProvider_walletClient, "f").chain,
81
+ };
82
+ return __classPrivateFieldGet(this, _ViemWalletProvider_walletClient, "f").signTransaction(txParams);
83
+ }
84
+ /**
85
+ * Sends a transaction.
86
+ *
87
+ * @param transaction - The transaction to send.
88
+ * @returns The hash of the transaction.
89
+ */
90
+ async sendTransaction(transaction) {
91
+ const account = __classPrivateFieldGet(this, _ViemWalletProvider_walletClient, "f").account;
92
+ if (!account) {
93
+ throw new Error("Account not found");
94
+ }
95
+ const chain = __classPrivateFieldGet(this, _ViemWalletProvider_walletClient, "f").chain;
96
+ if (!chain) {
97
+ throw new Error("Chain not found");
98
+ }
99
+ const txParams = {
100
+ account: account,
101
+ chain: chain,
102
+ data: transaction.data,
103
+ to: transaction.to,
104
+ value: transaction.value,
105
+ };
106
+ return __classPrivateFieldGet(this, _ViemWalletProvider_walletClient, "f").sendTransaction(txParams);
107
+ }
108
+ /**
109
+ * Gets the address of the wallet.
110
+ *
111
+ * @returns The address of the wallet.
112
+ */
113
+ getAddress() {
114
+ return __classPrivateFieldGet(this, _ViemWalletProvider_walletClient, "f").account?.address ?? "";
115
+ }
116
+ /**
117
+ * Gets the network of the wallet.
118
+ *
119
+ * @returns The network of the wallet.
120
+ */
121
+ getNetwork() {
122
+ return {
123
+ protocolFamily: "evm",
124
+ chainId: __classPrivateFieldGet(this, _ViemWalletProvider_walletClient, "f").chain.id,
125
+ networkId: network_1.CHAIN_ID_TO_NETWORK_ID[__classPrivateFieldGet(this, _ViemWalletProvider_walletClient, "f").chain.id],
126
+ };
127
+ }
128
+ /**
129
+ * Gets the name of the wallet provider.
130
+ *
131
+ * @returns The name of the wallet provider.
132
+ */
133
+ getName() {
134
+ return "viem_wallet_provider";
135
+ }
136
+ /**
137
+ * Gets the balance of the wallet.
138
+ *
139
+ * @returns The balance of the wallet.
140
+ */
141
+ async getBalance() {
142
+ const account = __classPrivateFieldGet(this, _ViemWalletProvider_walletClient, "f").account;
143
+ if (!account) {
144
+ throw new Error("Account not found");
145
+ }
146
+ return __classPrivateFieldGet(this, _ViemWalletProvider_publicClient, "f").getBalance({ address: account.address });
147
+ }
148
+ /**
149
+ * Waits for a transaction receipt.
150
+ *
151
+ * @param txHash - The hash of the transaction to wait for.
152
+ * @returns The transaction receipt.
153
+ */
154
+ async waitForTransactionReceipt(txHash) {
155
+ return await __classPrivateFieldGet(this, _ViemWalletProvider_publicClient, "f").waitForTransactionReceipt({ hash: txHash });
156
+ }
157
+ /**
158
+ * Reads a contract.
159
+ *
160
+ * @param params - The parameters to read the contract.
161
+ * @returns The response from the contract.
162
+ */
163
+ async readContract(params) {
164
+ return __classPrivateFieldGet(this, _ViemWalletProvider_publicClient, "f").readContract(params);
165
+ }
166
+ /**
167
+ * Transfer the native asset of the network.
168
+ *
169
+ * @param to - The destination address.
170
+ * @param value - The amount to transfer in whole units (e.g. ETH)
171
+ * @returns The transaction hash.
172
+ */
173
+ async nativeTransfer(to, value) {
174
+ const atomicAmount = (0, viem_1.parseEther)(value);
175
+ const tx = await this.sendTransaction({
176
+ to: to,
177
+ value: atomicAmount,
178
+ });
179
+ const receipt = await this.waitForTransactionReceipt(tx);
180
+ if (!receipt) {
181
+ throw new Error("Transaction failed");
182
+ }
183
+ return receipt.transactionHash;
184
+ }
185
+ }
186
+ exports.ViemWalletProvider = ViemWalletProvider;
187
+ _ViemWalletProvider_walletClient = new WeakMap(), _ViemWalletProvider_publicClient = new WeakMap();
@@ -0,0 +1,48 @@
1
+ import { Network } from "../network";
2
+ /**
3
+ * WalletProvider is the abstract base class for all wallet providers.
4
+ *
5
+ * @abstract
6
+ */
7
+ export declare abstract class WalletProvider {
8
+ /**
9
+ * Initializes the wallet provider.
10
+ */
11
+ constructor();
12
+ /**
13
+ * Tracks the initialization of the wallet provider.
14
+ */
15
+ private trackInitialization;
16
+ /**
17
+ * Get the address of the wallet provider.
18
+ *
19
+ * @returns The address of the wallet provider.
20
+ */
21
+ abstract getAddress(): string;
22
+ /**
23
+ * Get the network of the wallet provider.
24
+ *
25
+ * @returns The network of the wallet provider.
26
+ */
27
+ abstract getNetwork(): Network;
28
+ /**
29
+ * Get the name of the wallet provider.
30
+ *
31
+ * @returns The name of the wallet provider.
32
+ */
33
+ abstract getName(): string;
34
+ /**
35
+ * Get the balance of the native asset of the network.
36
+ *
37
+ * @returns The balance of the native asset of the network.
38
+ */
39
+ abstract getBalance(): Promise<bigint>;
40
+ /**
41
+ * Transfer the native asset of the network.
42
+ *
43
+ * @param to - The destination address.
44
+ * @param value - The amount to transfer in whole units (e.g. ETH)
45
+ * @returns The transaction hash.
46
+ */
47
+ abstract nativeTransfer(to: `0x${string}`, value: string): Promise<`0x${string}`>;
48
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WalletProvider = void 0;
4
+ const analytics_1 = require("../analytics");
5
+ /**
6
+ * WalletProvider is the abstract base class for all wallet providers.
7
+ *
8
+ * @abstract
9
+ */
10
+ class WalletProvider {
11
+ /**
12
+ * Initializes the wallet provider.
13
+ */
14
+ constructor() {
15
+ // Wait for the next tick to ensure child class is initialized
16
+ Promise.resolve().then(() => {
17
+ this.trackInitialization();
18
+ });
19
+ }
20
+ /**
21
+ * Tracks the initialization of the wallet provider.
22
+ */
23
+ trackInitialization() {
24
+ try {
25
+ (0, analytics_1.sendAnalyticsEvent)({
26
+ name: "agent_initialization",
27
+ action: "initialize_wallet_provider",
28
+ component: "wallet_provider",
29
+ wallet_provider: this.getName(),
30
+ wallet_address: this.getAddress(),
31
+ network_id: this.getNetwork().networkId,
32
+ chain_id: this.getNetwork().chainId,
33
+ protocol_family: this.getNetwork().protocolFamily,
34
+ });
35
+ }
36
+ catch (error) {
37
+ console.warn("Failed to track wallet provider initialization:", error);
38
+ }
39
+ }
40
+ }
41
+ exports.WalletProvider = WalletProvider;
package/package.json ADDED
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "@coinbase/agentkit",
3
+ "description": "Coinbase AgentKit core primitives",
4
+ "repository": "https://github.com/coinbase/agentkit",
5
+ "version": "0.1.0",
6
+ "author": "Coinbase Inc.",
7
+ "license": "Apache-2.0",
8
+ "main": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "lint": "eslint -c .eslintrc.json \"src/**/*.ts\"",
16
+ "lint:fix": "eslint -c .eslintrc.json \"src/**/*.ts\" --fix",
17
+ "format": "prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"",
18
+ "format:check": "prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\"",
19
+ "check": "tsc --noEmit",
20
+ "test": "npx jest --no-cache --testMatch='**/*.test.ts'",
21
+ "test:dry-run": "npm install && npm ci && npm publish --dry-run",
22
+ "test:e2e": "npx jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
23
+ "test:types": "tsd --files src/tests/types.test-d.ts",
24
+ "clean": "rm -rf dist/*",
25
+ "prepack": "tsc",
26
+ "docs": "typedoc --entryPoints ./src --entryPointStrategy expand --exclude ./src/tests/**/*.ts",
27
+ "docs:serve": "http-server ./docs",
28
+ "dev": "tsc --watch"
29
+ },
30
+ "keywords": [
31
+ "coinbase",
32
+ "sdk",
33
+ "crypto",
34
+ "cdp",
35
+ "agentkit",
36
+ "ai",
37
+ "agent",
38
+ "nodejs",
39
+ "typescript"
40
+ ],
41
+ "dependencies": {
42
+ "@coinbase/coinbase-sdk": "^0.17.0",
43
+ "md5": "^2.3.0",
44
+ "reflect-metadata": "^0.2.2",
45
+ "twitter-api-v2": "^1.18.2",
46
+ "viem": "^2.22.16",
47
+ "zod": "^3.23.8"
48
+ },
49
+ "devDependencies": {
50
+ "@types/jest": "^29.5.14",
51
+ "@types/secp256k1": "^4.0.6",
52
+ "http-server": "^14.1.1",
53
+ "jest": "^29.7.0",
54
+ "mock-fs": "^5.2.0",
55
+ "ts-jest": "^29.2.5",
56
+ "tsd": "^0.31.2",
57
+ "typescript": "^5.7.2"
58
+ },
59
+ "exports": {
60
+ ".": {
61
+ "types": "./dist/index.d.ts",
62
+ "default": "./dist/index.js"
63
+ }
64
+ }
65
+ }