@coinbase/agentkit 0.0.0-nightly-20250328174338
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/README.md +827 -0
- package/dist/action-providers/across/acrossActionProvider.d.ts +50 -0
- package/dist/action-providers/across/acrossActionProvider.js +333 -0
- package/dist/action-providers/across/acrossActionProvider.test.d.ts +1 -0
- package/dist/action-providers/across/acrossActionProvider.test.js +391 -0
- package/dist/action-providers/across/constants.d.ts +1 -0
- package/dist/action-providers/across/constants.js +2 -0
- package/dist/action-providers/across/index.d.ts +1 -0
- package/dist/action-providers/across/index.js +17 -0
- package/dist/action-providers/across/schemas.d.ts +36 -0
- package/dist/action-providers/across/schemas.js +46 -0
- package/dist/action-providers/across/utils.d.ts +7 -0
- package/dist/action-providers/across/utils.js +25 -0
- package/dist/action-providers/actionDecorator.d.ts +69 -0
- package/dist/action-providers/actionDecorator.js +96 -0
- package/dist/action-providers/actionProvider.d.ts +48 -0
- package/dist/action-providers/actionProvider.js +62 -0
- package/dist/action-providers/alchemy/alchemyTokenPricesActionProvider.d.ts +55 -0
- package/dist/action-providers/alchemy/alchemyTokenPricesActionProvider.js +173 -0
- package/dist/action-providers/alchemy/alchemyTokenPricesActionProvider.test.d.ts +1 -0
- package/dist/action-providers/alchemy/alchemyTokenPricesActionProvider.test.js +131 -0
- package/dist/action-providers/alchemy/index.d.ts +2 -0
- package/dist/action-providers/alchemy/index.js +18 -0
- package/dist/action-providers/alchemy/schemas.d.ts +41 -0
- package/dist/action-providers/alchemy/schemas.js +34 -0
- package/dist/action-providers/allora/alloraActionProvider.d.ts +44 -0
- package/dist/action-providers/allora/alloraActionProvider.js +195 -0
- package/dist/action-providers/allora/alloraActionProvider.test.d.ts +1 -0
- package/dist/action-providers/allora/alloraActionProvider.test.js +109 -0
- package/dist/action-providers/allora/index.d.ts +2 -0
- package/dist/action-providers/allora/index.js +18 -0
- package/dist/action-providers/allora/schemas.d.ts +28 -0
- package/dist/action-providers/allora/schemas.js +30 -0
- package/dist/action-providers/basename/basenameActionProvider.d.ts +30 -0
- package/dist/action-providers/basename/basenameActionProvider.js +109 -0
- package/dist/action-providers/basename/basenameActionProvider.test.d.ts +1 -0
- package/dist/action-providers/basename/basenameActionProvider.test.js +146 -0
- package/dist/action-providers/basename/constants.d.ts +52 -0
- package/dist/action-providers/basename/constants.js +81 -0
- package/dist/action-providers/basename/index.d.ts +2 -0
- package/dist/action-providers/basename/index.js +18 -0
- package/dist/action-providers/basename/schemas.d.ts +14 -0
- package/dist/action-providers/basename/schemas.js +14 -0
- package/dist/action-providers/cdp/cdpApiActionProvider.d.ts +43 -0
- package/dist/action-providers/cdp/cdpApiActionProvider.js +128 -0
- package/dist/action-providers/cdp/cdpApiActionProvider.test.d.ts +1 -0
- package/dist/action-providers/cdp/cdpApiActionProvider.test.js +146 -0
- package/dist/action-providers/cdp/cdpWalletActionProvider.d.ts +58 -0
- package/dist/action-providers/cdp/cdpWalletActionProvider.js +224 -0
- package/dist/action-providers/cdp/cdpWalletActionProvider.test.d.ts +1 -0
- package/dist/action-providers/cdp/cdpWalletActionProvider.test.js +267 -0
- package/dist/action-providers/cdp/constants.d.ts +31 -0
- package/dist/action-providers/cdp/constants.js +34 -0
- package/dist/action-providers/cdp/index.d.ts +3 -0
- package/dist/action-providers/cdp/index.js +19 -0
- package/dist/action-providers/cdp/schemas.d.ts +91 -0
- package/dist/action-providers/cdp/schemas.js +77 -0
- package/dist/action-providers/compound/compoundActionProvider.d.ts +67 -0
- package/dist/action-providers/compound/compoundActionProvider.js +365 -0
- package/dist/action-providers/compound/compoundActionProvider.test.d.ts +1 -0
- package/dist/action-providers/compound/compoundActionProvider.test.js +353 -0
- package/dist/action-providers/compound/constants.d.ts +180 -0
- package/dist/action-providers/compound/constants.js +129 -0
- package/dist/action-providers/compound/index.d.ts +1 -0
- package/dist/action-providers/compound/index.js +17 -0
- package/dist/action-providers/compound/schemas.d.ts +57 -0
- package/dist/action-providers/compound/schemas.js +58 -0
- package/dist/action-providers/compound/utils.d.ts +95 -0
- package/dist/action-providers/compound/utils.js +353 -0
- package/dist/action-providers/customActionProvider.d.ts +30 -0
- package/dist/action-providers/customActionProvider.js +66 -0
- package/dist/action-providers/defillama/constants.d.ts +8 -0
- package/dist/action-providers/defillama/constants.js +11 -0
- package/dist/action-providers/defillama/defillamaActionProvider.d.ts +54 -0
- package/dist/action-providers/defillama/defillamaActionProvider.js +180 -0
- package/dist/action-providers/defillama/defillamaActionProvider.test.d.ts +1 -0
- package/dist/action-providers/defillama/defillamaActionProvider.test.js +114 -0
- package/dist/action-providers/defillama/index.d.ts +1 -0
- package/dist/action-providers/defillama/index.js +17 -0
- package/dist/action-providers/defillama/schemas.d.ts +34 -0
- package/dist/action-providers/defillama/schemas.js +34 -0
- package/dist/action-providers/defillama/types.d.ts +73 -0
- package/dist/action-providers/defillama/types.js +2 -0
- package/dist/action-providers/defillama/utils.d.ts +10 -0
- package/dist/action-providers/defillama/utils.js +87 -0
- package/dist/action-providers/defillama/utils.test.d.ts +1 -0
- package/dist/action-providers/defillama/utils.test.js +124 -0
- package/dist/action-providers/erc20/constants.d.ts +137 -0
- package/dist/action-providers/erc20/constants.js +202 -0
- package/dist/action-providers/erc20/erc20ActionProvider.d.ts +38 -0
- package/dist/action-providers/erc20/erc20ActionProvider.js +142 -0
- package/dist/action-providers/erc20/erc20ActionProvider.test.d.ts +1 -0
- package/dist/action-providers/erc20/erc20ActionProvider.test.js +131 -0
- package/dist/action-providers/erc20/index.d.ts +1 -0
- package/dist/action-providers/erc20/index.js +17 -0
- package/dist/action-providers/erc20/schemas.d.ts +27 -0
- package/dist/action-providers/erc20/schemas.js +26 -0
- package/dist/action-providers/erc721/constants.d.ts +232 -0
- package/dist/action-providers/erc721/constants.js +298 -0
- package/dist/action-providers/erc721/erc721ActionProvider.d.ts +46 -0
- package/dist/action-providers/erc721/erc721ActionProvider.js +164 -0
- package/dist/action-providers/erc721/erc721ActionProvider.test.d.ts +1 -0
- package/dist/action-providers/erc721/erc721ActionProvider.test.js +137 -0
- package/dist/action-providers/erc721/index.d.ts +1 -0
- package/dist/action-providers/erc721/index.js +17 -0
- package/dist/action-providers/erc721/schemas.d.ts +46 -0
- package/dist/action-providers/erc721/schemas.js +44 -0
- package/dist/action-providers/farcaster/farcasterActionProvider.d.ts +57 -0
- package/dist/action-providers/farcaster/farcasterActionProvider.js +142 -0
- package/dist/action-providers/farcaster/farcasterActionProvider.test.d.ts +1 -0
- package/dist/action-providers/farcaster/farcasterActionProvider.test.js +151 -0
- package/dist/action-providers/farcaster/index.d.ts +2 -0
- package/dist/action-providers/farcaster/index.js +18 -0
- package/dist/action-providers/farcaster/schemas.d.ts +15 -0
- package/dist/action-providers/farcaster/schemas.js +20 -0
- package/dist/action-providers/index.d.ts +24 -0
- package/dist/action-providers/index.js +40 -0
- package/dist/action-providers/jupiter/index.d.ts +1 -0
- package/dist/action-providers/jupiter/index.js +17 -0
- package/dist/action-providers/jupiter/jupiterActionProvider.d.ts +36 -0
- package/dist/action-providers/jupiter/jupiterActionProvider.js +115 -0
- package/dist/action-providers/jupiter/jupiterActionProvider.test.d.ts +1 -0
- package/dist/action-providers/jupiter/jupiterActionProvider.test.js +146 -0
- package/dist/action-providers/jupiter/schemas.d.ts +20 -0
- package/dist/action-providers/jupiter/schemas.js +20 -0
- package/dist/action-providers/messari/constants.d.ts +17 -0
- package/dist/action-providers/messari/constants.js +20 -0
- package/dist/action-providers/messari/index.d.ts +5 -0
- package/dist/action-providers/messari/index.js +21 -0
- package/dist/action-providers/messari/messariActionProvider.d.ts +42 -0
- package/dist/action-providers/messari/messariActionProvider.js +128 -0
- package/dist/action-providers/messari/messariActionProvider.test.d.ts +1 -0
- package/dist/action-providers/messari/messariActionProvider.test.js +152 -0
- package/dist/action-providers/messari/schemas.d.ts +11 -0
- package/dist/action-providers/messari/schemas.js +16 -0
- package/dist/action-providers/messari/types.d.ts +40 -0
- package/dist/action-providers/messari/types.js +2 -0
- package/dist/action-providers/messari/utils.d.ts +22 -0
- package/dist/action-providers/messari/utils.js +65 -0
- package/dist/action-providers/moonwell/constants.d.ts +78 -0
- package/dist/action-providers/moonwell/constants.js +111 -0
- package/dist/action-providers/moonwell/index.d.ts +1 -0
- package/dist/action-providers/moonwell/index.js +5 -0
- package/dist/action-providers/moonwell/moonwellActionProvider.d.ts +39 -0
- package/dist/action-providers/moonwell/moonwellActionProvider.js +249 -0
- package/dist/action-providers/moonwell/moonwellActionProvider.test.d.ts +1 -0
- package/dist/action-providers/moonwell/moonwellActionProvider.test.js +455 -0
- package/dist/action-providers/moonwell/schemas.d.ts +30 -0
- package/dist/action-providers/moonwell/schemas.js +39 -0
- package/dist/action-providers/morpho/constants.d.ts +16 -0
- package/dist/action-providers/morpho/constants.js +27 -0
- package/dist/action-providers/morpho/index.d.ts +2 -0
- package/dist/action-providers/morpho/index.js +18 -0
- package/dist/action-providers/morpho/morphoActionProvider.d.ts +39 -0
- package/dist/action-providers/morpho/morphoActionProvider.js +154 -0
- package/dist/action-providers/morpho/morphoActionProvider.test.d.ts +1 -0
- package/dist/action-providers/morpho/morphoActionProvider.test.js +128 -0
- package/dist/action-providers/morpho/schemas.d.ts +36 -0
- package/dist/action-providers/morpho/schemas.js +47 -0
- package/dist/action-providers/opensea/index.d.ts +1 -0
- package/dist/action-providers/opensea/index.js +17 -0
- package/dist/action-providers/opensea/openseaActionProvider.d.ts +59 -0
- package/dist/action-providers/opensea/openseaActionProvider.js +146 -0
- package/dist/action-providers/opensea/openseaActionProvider.test.d.ts +1 -0
- package/dist/action-providers/opensea/openseaActionProvider.test.js +201 -0
- package/dist/action-providers/opensea/schemas.d.ts +30 -0
- package/dist/action-providers/opensea/schemas.js +33 -0
- package/dist/action-providers/opensea/utils.d.ts +12 -0
- package/dist/action-providers/opensea/utils.js +47 -0
- package/dist/action-providers/pyth/index.d.ts +2 -0
- package/dist/action-providers/pyth/index.js +18 -0
- package/dist/action-providers/pyth/pythActionProvider.d.ts +33 -0
- package/dist/action-providers/pyth/pythActionProvider.js +121 -0
- package/dist/action-providers/pyth/pythActionProvider.test.d.ts +1 -0
- package/dist/action-providers/pyth/pythActionProvider.test.js +113 -0
- package/dist/action-providers/pyth/schemas.d.ts +21 -0
- package/dist/action-providers/pyth/schemas.js +20 -0
- package/dist/action-providers/spl/index.d.ts +1 -0
- package/dist/action-providers/spl/index.js +17 -0
- package/dist/action-providers/spl/schemas.d.ts +30 -0
- package/dist/action-providers/spl/schemas.js +26 -0
- package/dist/action-providers/spl/splActionProvider.d.ts +45 -0
- package/dist/action-providers/spl/splActionProvider.js +173 -0
- package/dist/action-providers/spl/splActionProvider.test.d.ts +1 -0
- package/dist/action-providers/spl/splActionProvider.test.js +300 -0
- package/dist/action-providers/twitter/index.d.ts +2 -0
- package/dist/action-providers/twitter/index.js +18 -0
- package/dist/action-providers/twitter/schemas.d.ts +38 -0
- package/dist/action-providers/twitter/schemas.js +44 -0
- package/dist/action-providers/twitter/twitterActionProvider.d.ts +82 -0
- package/dist/action-providers/twitter/twitterActionProvider.js +204 -0
- package/dist/action-providers/twitter/twitterActionProvider.test.d.ts +1 -0
- package/dist/action-providers/twitter/twitterActionProvider.test.js +185 -0
- package/dist/action-providers/wallet/index.d.ts +1 -0
- package/dist/action-providers/wallet/index.js +17 -0
- package/dist/action-providers/wallet/schemas.d.ts +19 -0
- package/dist/action-providers/wallet/schemas.js +19 -0
- package/dist/action-providers/wallet/walletActionProvider.d.ts +44 -0
- package/dist/action-providers/wallet/walletActionProvider.js +140 -0
- package/dist/action-providers/wallet/walletActionProvider.test.d.ts +1 -0
- package/dist/action-providers/wallet/walletActionProvider.test.js +194 -0
- package/dist/action-providers/weth/constants.d.ts +19 -0
- package/dist/action-providers/weth/constants.js +29 -0
- package/dist/action-providers/weth/index.d.ts +1 -0
- package/dist/action-providers/weth/index.js +17 -0
- package/dist/action-providers/weth/schemas.d.ts +8 -0
- package/dist/action-providers/weth/schemas.js +10 -0
- package/dist/action-providers/weth/wethActionProvider.d.ts +30 -0
- package/dist/action-providers/weth/wethActionProvider.js +89 -0
- package/dist/action-providers/weth/wethActionProvider.test.d.ts +1 -0
- package/dist/action-providers/weth/wethActionProvider.test.js +92 -0
- package/dist/action-providers/wow/constants.d.ts +15 -0
- package/dist/action-providers/wow/constants.js +844 -0
- package/dist/action-providers/wow/index.d.ts +2 -0
- package/dist/action-providers/wow/index.js +18 -0
- package/dist/action-providers/wow/schemas.d.ts +43 -0
- package/dist/action-providers/wow/schemas.js +47 -0
- package/dist/action-providers/wow/uniswap/constants.d.ts +3 -0
- package/dist/action-providers/wow/uniswap/constants.js +100 -0
- package/dist/action-providers/wow/uniswap/utils.d.ts +82 -0
- package/dist/action-providers/wow/uniswap/utils.js +226 -0
- package/dist/action-providers/wow/utils.d.ts +27 -0
- package/dist/action-providers/wow/utils.js +63 -0
- package/dist/action-providers/wow/wowActionProvider.d.ts +46 -0
- package/dist/action-providers/wow/wowActionProvider.js +223 -0
- package/dist/action-providers/wow/wowActionProvider.test.d.ts +1 -0
- package/dist/action-providers/wow/wowActionProvider.test.js +291 -0
- package/dist/agentkit.d.ts +44 -0
- package/dist/agentkit.js +68 -0
- package/dist/analytics/index.d.ts +1 -0
- package/dist/analytics/index.js +17 -0
- package/dist/analytics/sendAnalyticsEvent.d.ts +31 -0
- package/dist/analytics/sendAnalyticsEvent.js +52 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +20 -0
- package/dist/network/index.d.ts +3 -0
- package/dist/network/index.js +19 -0
- package/dist/network/network.d.ts +20 -0
- package/dist/network/network.js +86 -0
- package/dist/network/svm.d.ts +15 -0
- package/dist/network/svm.js +38 -0
- package/dist/network/types.d.ts +17 -0
- package/dist/network/types.js +2 -0
- package/dist/utils.d.ts +22 -0
- package/dist/utils.js +57 -0
- package/dist/utils.test.d.ts +1 -0
- package/dist/utils.test.js +50 -0
- package/dist/wallet-providers/cdpWalletProvider.d.ts +246 -0
- package/dist/wallet-providers/cdpWalletProvider.js +421 -0
- package/dist/wallet-providers/cdpWalletProvider.test.d.ts +1 -0
- package/dist/wallet-providers/cdpWalletProvider.test.js +701 -0
- package/dist/wallet-providers/evmWalletProvider.d.ts +51 -0
- package/dist/wallet-providers/evmWalletProvider.js +14 -0
- package/dist/wallet-providers/evmWalletProvider.test.d.ts +1 -0
- package/dist/wallet-providers/evmWalletProvider.test.js +56 -0
- package/dist/wallet-providers/index.d.ts +10 -0
- package/dist/wallet-providers/index.js +26 -0
- package/dist/wallet-providers/privyEvmWalletProvider.d.ts +55 -0
- package/dist/wallet-providers/privyEvmWalletProvider.js +140 -0
- package/dist/wallet-providers/privyEvmWalletProvider.test.d.ts +1 -0
- package/dist/wallet-providers/privyEvmWalletProvider.test.js +331 -0
- package/dist/wallet-providers/privyShared.d.ts +40 -0
- package/dist/wallet-providers/privyShared.js +49 -0
- package/dist/wallet-providers/privySvmWalletProvider.d.ts +128 -0
- package/dist/wallet-providers/privySvmWalletProvider.js +212 -0
- package/dist/wallet-providers/privySvmWalletProvider.test.d.ts +1 -0
- package/dist/wallet-providers/privySvmWalletProvider.test.js +310 -0
- package/dist/wallet-providers/privyWalletProvider.d.ts +35 -0
- package/dist/wallet-providers/privyWalletProvider.js +39 -0
- package/dist/wallet-providers/privyWalletProvider.test.d.ts +1 -0
- package/dist/wallet-providers/privyWalletProvider.test.js +124 -0
- package/dist/wallet-providers/smartWalletProvider.d.ts +177 -0
- package/dist/wallet-providers/smartWalletProvider.js +303 -0
- package/dist/wallet-providers/smartWalletProvider.test.d.ts +1 -0
- package/dist/wallet-providers/smartWalletProvider.test.js +388 -0
- package/dist/wallet-providers/solanaKeypairWalletProvider.d.ts +143 -0
- package/dist/wallet-providers/solanaKeypairWalletProvider.js +280 -0
- package/dist/wallet-providers/solanaKeypairWalletProvider.test.d.ts +1 -0
- package/dist/wallet-providers/solanaKeypairWalletProvider.test.js +218 -0
- package/dist/wallet-providers/svmWalletProvider.d.ts +56 -0
- package/dist/wallet-providers/svmWalletProvider.js +13 -0
- package/dist/wallet-providers/svmWalletProvider.test.d.ts +1 -0
- package/dist/wallet-providers/svmWalletProvider.test.js +55 -0
- package/dist/wallet-providers/viemWalletProvider.d.ts +103 -0
- package/dist/wallet-providers/viemWalletProvider.js +206 -0
- package/dist/wallet-providers/viemWalletProvider.test.d.ts +1 -0
- package/dist/wallet-providers/viemWalletProvider.test.js +338 -0
- package/dist/wallet-providers/walletProvider.d.ts +48 -0
- package/dist/wallet-providers/walletProvider.js +41 -0
- package/dist/wallet-providers/walletProvider.test.d.ts +1 -0
- package/dist/wallet-providers/walletProvider.test.js +103 -0
- package/package.json +83 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ActionProvider } from "../actionProvider";
|
|
3
|
+
import { Network } from "../../network";
|
|
4
|
+
import { CdpWalletProvider, CdpProviderConfig } from "../../wallet-providers";
|
|
5
|
+
import { DeployContractSchema, DeployNftSchema, DeployTokenSchema, TradeSchema } from "./schemas";
|
|
6
|
+
/**
|
|
7
|
+
* CdpWalletActionProvider is an action provider for Cdp.
|
|
8
|
+
*
|
|
9
|
+
* This provider is used for any action that requires a CDP Wallet.
|
|
10
|
+
*/
|
|
11
|
+
export declare class CdpWalletActionProvider extends ActionProvider<CdpWalletProvider> {
|
|
12
|
+
/**
|
|
13
|
+
* Constructor for the CdpWalletActionProvider class.
|
|
14
|
+
*
|
|
15
|
+
* @param config - The configuration options for the CdpWalletActionProvider.
|
|
16
|
+
*/
|
|
17
|
+
constructor(config?: CdpProviderConfig);
|
|
18
|
+
/**
|
|
19
|
+
* Deploys a contract.
|
|
20
|
+
*
|
|
21
|
+
* @param walletProvider - The wallet provider to deploy the contract from
|
|
22
|
+
* @param args - The input arguments for the action
|
|
23
|
+
* @returns A message containing the deployed contract address and details
|
|
24
|
+
*/
|
|
25
|
+
deployContract(walletProvider: CdpWalletProvider, args: z.infer<typeof DeployContractSchema>): Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* Deploys an NFT (ERC-721) token collection onchain from the wallet.
|
|
28
|
+
*
|
|
29
|
+
* @param walletProvider - The wallet provider to deploy the NFT from.
|
|
30
|
+
* @param args - The input arguments for the action.
|
|
31
|
+
* @returns A message containing the NFT token deployment details.
|
|
32
|
+
*/
|
|
33
|
+
deployNFT(walletProvider: CdpWalletProvider, args: z.infer<typeof DeployNftSchema>): Promise<string>;
|
|
34
|
+
/**
|
|
35
|
+
* Deploys a token.
|
|
36
|
+
*
|
|
37
|
+
* @param walletProvider - The wallet provider to deploy the token.
|
|
38
|
+
* @param args - The arguments for the token deployment.
|
|
39
|
+
* @returns The deployed token.
|
|
40
|
+
*/
|
|
41
|
+
deployToken(walletProvider: CdpWalletProvider, args: z.infer<typeof DeployTokenSchema>): Promise<string>;
|
|
42
|
+
/**
|
|
43
|
+
* Trades a specified amount of a from asset to a to asset for the wallet.
|
|
44
|
+
*
|
|
45
|
+
* @param walletProvider - The wallet provider to trade the asset from.
|
|
46
|
+
* @param args - The input arguments for the action.
|
|
47
|
+
* @returns A message containing the trade details.
|
|
48
|
+
*/
|
|
49
|
+
trade(walletProvider: CdpWalletProvider, args: z.infer<typeof TradeSchema>): Promise<string>;
|
|
50
|
+
/**
|
|
51
|
+
* Checks if the Cdp action provider supports the given network.
|
|
52
|
+
*
|
|
53
|
+
* @param network - The network to check.
|
|
54
|
+
* @returns True if the Cdp action provider supports the network, false otherwise.
|
|
55
|
+
*/
|
|
56
|
+
supportsNetwork: (network: Network) => boolean;
|
|
57
|
+
}
|
|
58
|
+
export declare const cdpWalletActionProvider: (config?: CdpProviderConfig) => CdpWalletActionProvider;
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.cdpWalletActionProvider = exports.CdpWalletActionProvider = void 0;
|
|
13
|
+
const coinbase_sdk_1 = require("@coinbase/coinbase-sdk");
|
|
14
|
+
const zod_1 = require("zod");
|
|
15
|
+
const package_json_1 = require("../../../package.json");
|
|
16
|
+
const actionDecorator_1 = require("../actionDecorator");
|
|
17
|
+
const actionProvider_1 = require("../actionProvider");
|
|
18
|
+
const wallet_providers_1 = require("../../wallet-providers");
|
|
19
|
+
const constants_1 = require("./constants");
|
|
20
|
+
const schemas_1 = require("./schemas");
|
|
21
|
+
/**
|
|
22
|
+
* CdpWalletActionProvider is an action provider for Cdp.
|
|
23
|
+
*
|
|
24
|
+
* This provider is used for any action that requires a CDP Wallet.
|
|
25
|
+
*/
|
|
26
|
+
class CdpWalletActionProvider extends actionProvider_1.ActionProvider {
|
|
27
|
+
/**
|
|
28
|
+
* Constructor for the CdpWalletActionProvider class.
|
|
29
|
+
*
|
|
30
|
+
* @param config - The configuration options for the CdpWalletActionProvider.
|
|
31
|
+
*/
|
|
32
|
+
constructor(config = {}) {
|
|
33
|
+
super("cdp_wallet", []);
|
|
34
|
+
/**
|
|
35
|
+
* Checks if the Cdp action provider supports the given network.
|
|
36
|
+
*
|
|
37
|
+
* @param network - The network to check.
|
|
38
|
+
* @returns True if the Cdp action provider supports the network, false otherwise.
|
|
39
|
+
*/
|
|
40
|
+
this.supportsNetwork = (network) => network.protocolFamily === "evm";
|
|
41
|
+
if (config.apiKeyName && config.apiKeyPrivateKey) {
|
|
42
|
+
coinbase_sdk_1.Coinbase.configure({
|
|
43
|
+
apiKeyName: config.apiKeyName,
|
|
44
|
+
privateKey: config.apiKeyPrivateKey?.replace(/\\n/g, "\n"),
|
|
45
|
+
source: "agentkit",
|
|
46
|
+
sourceVersion: package_json_1.version,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
coinbase_sdk_1.Coinbase.configureFromJson({ source: "agentkit", sourceVersion: package_json_1.version });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Deploys a contract.
|
|
55
|
+
*
|
|
56
|
+
* @param walletProvider - The wallet provider to deploy the contract from
|
|
57
|
+
* @param args - The input arguments for the action
|
|
58
|
+
* @returns A message containing the deployed contract address and details
|
|
59
|
+
*/
|
|
60
|
+
async deployContract(walletProvider, args) {
|
|
61
|
+
try {
|
|
62
|
+
const solidityVersion = constants_1.SolidityVersions[args.solidityVersion];
|
|
63
|
+
const contract = await walletProvider.deployContract({
|
|
64
|
+
solidityVersion: solidityVersion,
|
|
65
|
+
solidityInputJson: args.solidityInputJson,
|
|
66
|
+
contractName: args.contractName,
|
|
67
|
+
constructorArgs: args.constructorArgs ?? {},
|
|
68
|
+
});
|
|
69
|
+
const result = await contract.wait();
|
|
70
|
+
return `Deployed contract ${args.contractName} at address ${result.getContractAddress()}. Transaction link: ${result
|
|
71
|
+
.getTransaction()
|
|
72
|
+
.getTransactionLink()}`;
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
return `Error deploying contract: ${error}`;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Deploys an NFT (ERC-721) token collection onchain from the wallet.
|
|
80
|
+
*
|
|
81
|
+
* @param walletProvider - The wallet provider to deploy the NFT from.
|
|
82
|
+
* @param args - The input arguments for the action.
|
|
83
|
+
* @returns A message containing the NFT token deployment details.
|
|
84
|
+
*/
|
|
85
|
+
async deployNFT(walletProvider, args) {
|
|
86
|
+
try {
|
|
87
|
+
const nftContract = await walletProvider.deployNFT({
|
|
88
|
+
name: args.name,
|
|
89
|
+
symbol: args.symbol,
|
|
90
|
+
baseURI: args.baseURI,
|
|
91
|
+
});
|
|
92
|
+
const result = await nftContract.wait();
|
|
93
|
+
const transaction = result.getTransaction();
|
|
94
|
+
const networkId = walletProvider.getNetwork().networkId;
|
|
95
|
+
const contractAddress = result.getContractAddress();
|
|
96
|
+
return [
|
|
97
|
+
`Deployed NFT Collection ${args.name}:`,
|
|
98
|
+
`- to address ${contractAddress}`,
|
|
99
|
+
`- on network ${networkId}.`,
|
|
100
|
+
`Transaction hash: ${transaction.getTransactionHash()}`,
|
|
101
|
+
`Transaction link: ${transaction.getTransactionLink()}`,
|
|
102
|
+
].join("\n");
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
return `Error deploying NFT: ${error}`;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Deploys a token.
|
|
110
|
+
*
|
|
111
|
+
* @param walletProvider - The wallet provider to deploy the token.
|
|
112
|
+
* @param args - The arguments for the token deployment.
|
|
113
|
+
* @returns The deployed token.
|
|
114
|
+
*/
|
|
115
|
+
async deployToken(walletProvider, args) {
|
|
116
|
+
try {
|
|
117
|
+
const tokenContract = await walletProvider.deployToken({
|
|
118
|
+
name: args.name,
|
|
119
|
+
symbol: args.symbol,
|
|
120
|
+
totalSupply: args.totalSupply,
|
|
121
|
+
});
|
|
122
|
+
const result = await tokenContract.wait();
|
|
123
|
+
return `Deployed ERC20 token contract ${args.name} (${args.symbol}) with total supply of ${args.totalSupply} tokens at address ${result.getContractAddress()}. Transaction link: ${result
|
|
124
|
+
.getTransaction()
|
|
125
|
+
.getTransactionLink()}`;
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
return `Error deploying token: ${error}`;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Trades a specified amount of a from asset to a to asset for the wallet.
|
|
133
|
+
*
|
|
134
|
+
* @param walletProvider - The wallet provider to trade the asset from.
|
|
135
|
+
* @param args - The input arguments for the action.
|
|
136
|
+
* @returns A message containing the trade details.
|
|
137
|
+
*/
|
|
138
|
+
async trade(walletProvider, args) {
|
|
139
|
+
try {
|
|
140
|
+
const tradeResult = await walletProvider.createTrade({
|
|
141
|
+
amount: args.amount,
|
|
142
|
+
fromAssetId: args.fromAssetId,
|
|
143
|
+
toAssetId: args.toAssetId,
|
|
144
|
+
});
|
|
145
|
+
const result = await tradeResult.wait();
|
|
146
|
+
return `Traded ${args.amount} of ${args.fromAssetId} for ${result.getToAmount()} of ${args.toAssetId}.\nTransaction hash for the trade: ${result
|
|
147
|
+
.getTransaction()
|
|
148
|
+
.getTransactionHash()}\nTransaction link for the trade: ${result
|
|
149
|
+
.getTransaction()
|
|
150
|
+
.getTransactionLink()}`;
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
return `Error trading assets: ${error}`;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
exports.CdpWalletActionProvider = CdpWalletActionProvider;
|
|
158
|
+
__decorate([
|
|
159
|
+
(0, actionDecorator_1.CreateAction)({
|
|
160
|
+
name: "deploy_contract",
|
|
161
|
+
description: `
|
|
162
|
+
Deploys smart contract with required args: solidity version (string), solidity input json (string), contract name (string), and optional constructor args (Dict[str, Any])
|
|
163
|
+
|
|
164
|
+
Input json structure:
|
|
165
|
+
{"language":"Solidity","settings":{"remappings":[],"outputSelection":{"*":{"*":["abi","evm.bytecode"]}}},"sources":{}}
|
|
166
|
+
|
|
167
|
+
You must set the outputSelection to {"*":{"*":["abi","evm.bytecode"]}} in the settings. The solidity version must be >= 0.8.0 and <= 0.8.28.
|
|
168
|
+
|
|
169
|
+
Sources should contain one or more contracts with the following structure:
|
|
170
|
+
{"contract_name.sol":{"content":"contract code"}}
|
|
171
|
+
|
|
172
|
+
The contract code should be escaped. Contracts cannot import from external contracts but can import from one another.
|
|
173
|
+
|
|
174
|
+
Constructor args are required if the contract has a constructor. They are a key-value
|
|
175
|
+
map where the key is the arg name and the value is the arg value. Encode uint/int/bytes/string/address values as strings, boolean values as true/false. For arrays/tuples, encode based on contained type.`,
|
|
176
|
+
schema: schemas_1.DeployContractSchema,
|
|
177
|
+
}),
|
|
178
|
+
__metadata("design:type", Function),
|
|
179
|
+
__metadata("design:paramtypes", [wallet_providers_1.CdpWalletProvider, void 0]),
|
|
180
|
+
__metadata("design:returntype", Promise)
|
|
181
|
+
], CdpWalletActionProvider.prototype, "deployContract", null);
|
|
182
|
+
__decorate([
|
|
183
|
+
(0, actionDecorator_1.CreateAction)({
|
|
184
|
+
name: "deploy_nft",
|
|
185
|
+
description: `This tool will deploy an NFT (ERC-721) contract onchain from the wallet.
|
|
186
|
+
It takes the name of the NFT collection, the symbol of the NFT collection, and the base URI for the token metadata as inputs.`,
|
|
187
|
+
schema: schemas_1.DeployNftSchema,
|
|
188
|
+
}),
|
|
189
|
+
__metadata("design:type", Function),
|
|
190
|
+
__metadata("design:paramtypes", [wallet_providers_1.CdpWalletProvider, void 0]),
|
|
191
|
+
__metadata("design:returntype", Promise)
|
|
192
|
+
], CdpWalletActionProvider.prototype, "deployNFT", null);
|
|
193
|
+
__decorate([
|
|
194
|
+
(0, actionDecorator_1.CreateAction)({
|
|
195
|
+
name: "deploy_token",
|
|
196
|
+
description: `This tool will deploy an ERC20 token smart contract. It takes the token name, symbol, and total supply as input.
|
|
197
|
+
The token will be deployed using the wallet's default address as the owner and initial token holder.`,
|
|
198
|
+
schema: schemas_1.DeployTokenSchema,
|
|
199
|
+
}),
|
|
200
|
+
__metadata("design:type", Function),
|
|
201
|
+
__metadata("design:paramtypes", [wallet_providers_1.CdpWalletProvider, void 0]),
|
|
202
|
+
__metadata("design:returntype", Promise)
|
|
203
|
+
], CdpWalletActionProvider.prototype, "deployToken", null);
|
|
204
|
+
__decorate([
|
|
205
|
+
(0, actionDecorator_1.CreateAction)({
|
|
206
|
+
name: "trade",
|
|
207
|
+
description: `This tool will trade a specified amount of a 'from asset' to a 'to asset' for the wallet.
|
|
208
|
+
It takes the following inputs:
|
|
209
|
+
- The amount of the 'from asset' to trade
|
|
210
|
+
- The from asset ID to trade
|
|
211
|
+
- The asset ID to receive from the trade
|
|
212
|
+
|
|
213
|
+
Important notes:
|
|
214
|
+
- Trades are only supported on mainnet networks (ie, 'base-mainnet', 'base', 'ethereum-mainnet', 'ethereum', etc.)
|
|
215
|
+
- Never allow trades on any non-mainnet network (ie, 'base-sepolia', 'ethereum-sepolia', etc.)
|
|
216
|
+
- When selling a native asset (e.g. 'eth' on base-mainnet), ensure there is sufficient balance to pay for the trade AND the gas cost of this trade`,
|
|
217
|
+
schema: schemas_1.TradeSchema,
|
|
218
|
+
}),
|
|
219
|
+
__metadata("design:type", Function),
|
|
220
|
+
__metadata("design:paramtypes", [wallet_providers_1.CdpWalletProvider, void 0]),
|
|
221
|
+
__metadata("design:returntype", Promise)
|
|
222
|
+
], CdpWalletActionProvider.prototype, "trade", null);
|
|
223
|
+
const cdpWalletActionProvider = (config = {}) => new CdpWalletActionProvider(config);
|
|
224
|
+
exports.cdpWalletActionProvider = cdpWalletActionProvider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cdpWalletActionProvider_1 = require("./cdpWalletActionProvider");
|
|
4
|
+
const schemas_1 = require("./schemas");
|
|
5
|
+
// Mock the entire module
|
|
6
|
+
jest.mock("@coinbase/coinbase-sdk");
|
|
7
|
+
// Get the mocked constructor
|
|
8
|
+
const { ExternalAddress } = jest.requireMock("@coinbase/coinbase-sdk");
|
|
9
|
+
describe("CDP Wallet Action Provider Input Schemas", () => {
|
|
10
|
+
describe("Deploy NFT Schema", () => {
|
|
11
|
+
it("should successfully parse valid input", () => {
|
|
12
|
+
const validInput = {
|
|
13
|
+
baseURI: "https://www.test.xyz/metadata/",
|
|
14
|
+
name: "Test Token",
|
|
15
|
+
symbol: "TEST",
|
|
16
|
+
};
|
|
17
|
+
const result = schemas_1.DeployNftSchema.safeParse(validInput);
|
|
18
|
+
expect(result.success).toBe(true);
|
|
19
|
+
expect(result.data).toEqual(validInput);
|
|
20
|
+
});
|
|
21
|
+
it("should fail parsing empty input", () => {
|
|
22
|
+
const emptyInput = {};
|
|
23
|
+
const result = schemas_1.DeployNftSchema.safeParse(emptyInput);
|
|
24
|
+
expect(result.success).toBe(false);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe("Deploy Token Schema", () => {
|
|
28
|
+
it("should successfully parse valid input", () => {
|
|
29
|
+
const validInput = {
|
|
30
|
+
name: "Test Token",
|
|
31
|
+
symbol: "TEST",
|
|
32
|
+
totalSupply: 1000000000000000000n,
|
|
33
|
+
};
|
|
34
|
+
const result = schemas_1.DeployTokenSchema.safeParse(validInput);
|
|
35
|
+
expect(result.success).toBe(true);
|
|
36
|
+
expect(result.data).toEqual(validInput);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe("Deploy Contract Schema", () => {
|
|
40
|
+
it("should successfully parse valid input", () => {
|
|
41
|
+
const validInput = {
|
|
42
|
+
solidityVersion: "0.8.0",
|
|
43
|
+
solidityInputJson: "{}",
|
|
44
|
+
contractName: "Test Contract",
|
|
45
|
+
constructorArgs: {},
|
|
46
|
+
};
|
|
47
|
+
const result = schemas_1.DeployContractSchema.safeParse(validInput);
|
|
48
|
+
expect(result.success).toBe(true);
|
|
49
|
+
expect(result.data).toEqual(validInput);
|
|
50
|
+
});
|
|
51
|
+
it("should fail parsing empty input", () => {
|
|
52
|
+
const emptyInput = {};
|
|
53
|
+
const result = schemas_1.DeployContractSchema.safeParse(emptyInput);
|
|
54
|
+
expect(result.success).toBe(false);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
describe("CDP Wallet Action Provider", () => {
|
|
59
|
+
let actionProvider;
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
61
|
+
let mockExternalAddressInstance;
|
|
62
|
+
let mockWallet;
|
|
63
|
+
beforeEach(() => {
|
|
64
|
+
// Reset all mocks before each test
|
|
65
|
+
jest.clearAllMocks();
|
|
66
|
+
actionProvider = new cdpWalletActionProvider_1.CdpWalletActionProvider();
|
|
67
|
+
mockExternalAddressInstance = {
|
|
68
|
+
reputation: jest.fn(),
|
|
69
|
+
faucet: jest.fn(),
|
|
70
|
+
};
|
|
71
|
+
// Mock the constructor to return our mock instance
|
|
72
|
+
ExternalAddress.mockImplementation(() => mockExternalAddressInstance);
|
|
73
|
+
mockWallet = {
|
|
74
|
+
createTrade: jest.fn(),
|
|
75
|
+
deployToken: jest.fn(),
|
|
76
|
+
deployContract: jest.fn(),
|
|
77
|
+
getAddress: jest.fn().mockReturnValue("0xe6b2af36b3bb8d47206a129ff11d5a2de2a63c83"),
|
|
78
|
+
getNetwork: jest.fn().mockReturnValue({ networkId: "base-sepolia" }),
|
|
79
|
+
};
|
|
80
|
+
});
|
|
81
|
+
describe("deployNft", () => {
|
|
82
|
+
let mockWallet;
|
|
83
|
+
const MOCK_NFT_BASE_URI = "https://www.test.xyz/metadata/";
|
|
84
|
+
const MOCK_NFT_NAME = "Test Token";
|
|
85
|
+
const MOCK_NFT_SYMBOL = "TEST";
|
|
86
|
+
const CONTRACT_ADDRESS = "0x123456789abcdef";
|
|
87
|
+
const NETWORK_ID = "base-sepolia";
|
|
88
|
+
const TRANSACTION_HASH = "0xghijkl987654321";
|
|
89
|
+
const TRANSACTION_LINK = `https://etherscan.io/tx/${TRANSACTION_HASH}`;
|
|
90
|
+
beforeEach(() => {
|
|
91
|
+
mockWallet = {
|
|
92
|
+
deployNFT: jest.fn().mockResolvedValue({
|
|
93
|
+
wait: jest.fn().mockResolvedValue({
|
|
94
|
+
getContractAddress: jest.fn().mockReturnValue(CONTRACT_ADDRESS),
|
|
95
|
+
getTransaction: jest.fn().mockReturnValue({
|
|
96
|
+
getTransactionHash: jest.fn().mockReturnValue(TRANSACTION_HASH),
|
|
97
|
+
getTransactionLink: jest.fn().mockReturnValue(TRANSACTION_LINK),
|
|
98
|
+
}),
|
|
99
|
+
}),
|
|
100
|
+
}),
|
|
101
|
+
getNetwork: jest.fn().mockReturnValue({ networkId: NETWORK_ID }),
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
it("should successfully deploy an NFT", async () => {
|
|
105
|
+
const args = {
|
|
106
|
+
name: MOCK_NFT_NAME,
|
|
107
|
+
symbol: MOCK_NFT_SYMBOL,
|
|
108
|
+
baseURI: MOCK_NFT_BASE_URI,
|
|
109
|
+
};
|
|
110
|
+
const result = await actionProvider.deployNFT(mockWallet, args);
|
|
111
|
+
expect(mockWallet.deployNFT).toHaveBeenCalledWith(args);
|
|
112
|
+
expect(result).toContain(`Deployed NFT Collection ${MOCK_NFT_NAME}:`);
|
|
113
|
+
expect(result).toContain(`- to address ${CONTRACT_ADDRESS}`);
|
|
114
|
+
expect(result).toContain(`- on network ${NETWORK_ID}`);
|
|
115
|
+
expect(result).toContain(`Transaction hash: ${TRANSACTION_HASH}`);
|
|
116
|
+
expect(result).toContain(`Transaction link: ${TRANSACTION_LINK}`);
|
|
117
|
+
});
|
|
118
|
+
it("should handle deployment errors", async () => {
|
|
119
|
+
const args = {
|
|
120
|
+
name: MOCK_NFT_NAME,
|
|
121
|
+
symbol: MOCK_NFT_SYMBOL,
|
|
122
|
+
baseURI: MOCK_NFT_BASE_URI,
|
|
123
|
+
};
|
|
124
|
+
const error = new Error("An error has occurred");
|
|
125
|
+
mockWallet.deployNFT.mockRejectedValue(error);
|
|
126
|
+
const result = await actionProvider.deployNFT(mockWallet, args);
|
|
127
|
+
expect(mockWallet.deployNFT).toHaveBeenCalledWith(args);
|
|
128
|
+
expect(result).toBe(`Error deploying NFT: ${error}`);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
describe("deployToken", () => {
|
|
132
|
+
beforeEach(() => {
|
|
133
|
+
mockWallet = {
|
|
134
|
+
deployToken: jest.fn().mockResolvedValue({
|
|
135
|
+
wait: jest.fn().mockResolvedValue({
|
|
136
|
+
getContractAddress: jest.fn().mockReturnValue("0x123"),
|
|
137
|
+
getTransaction: jest.fn().mockReturnValue({
|
|
138
|
+
getTransactionLink: jest.fn().mockReturnValue("tx-link"),
|
|
139
|
+
}),
|
|
140
|
+
}),
|
|
141
|
+
}),
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
it("should successfully deploy a token", async () => {
|
|
145
|
+
const args = {
|
|
146
|
+
name: "Test Token",
|
|
147
|
+
symbol: "TEST",
|
|
148
|
+
totalSupply: 1000000000000000000n,
|
|
149
|
+
};
|
|
150
|
+
const result = await actionProvider.deployToken(mockWallet, args);
|
|
151
|
+
expect(mockWallet.deployToken).toHaveBeenCalledWith(args);
|
|
152
|
+
expect(mockWallet.deployToken).toHaveBeenCalledTimes(1);
|
|
153
|
+
expect(result).toContain("Deployed ERC20 token contract Test Token (TEST) with total supply of 1000000000000000000 tokens at address 0x123. Transaction link: tx-link");
|
|
154
|
+
});
|
|
155
|
+
it("should handle errors when deploying a token", async () => {
|
|
156
|
+
const args = {
|
|
157
|
+
name: "Test Token",
|
|
158
|
+
symbol: "TEST",
|
|
159
|
+
totalSupply: 1000000000000000000n,
|
|
160
|
+
};
|
|
161
|
+
const error = new Error("Token deployment failed");
|
|
162
|
+
mockWallet.deployToken.mockRejectedValue(error);
|
|
163
|
+
const result = await actionProvider.deployToken(mockWallet, args);
|
|
164
|
+
expect(result).toBe(`Error deploying token: ${error}`);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe("deployContract", () => {
|
|
168
|
+
const CONTRACT_ADDRESS = "0x123456789abcdef";
|
|
169
|
+
const TRANSACTION_LINK = "https://etherscan.io/tx/0xghijkl987654321";
|
|
170
|
+
const MOCK_CONTRACT_NAME = "Test Contract";
|
|
171
|
+
const MOCK_SOLIDITY_VERSION = "0.8.0";
|
|
172
|
+
const MOCK_SOLIDITY_INPUT_JSON = "{}";
|
|
173
|
+
const MOCK_CONSTRUCTOR_ARGS = { arg1: "value1", arg2: "value2" };
|
|
174
|
+
beforeEach(() => {
|
|
175
|
+
mockWallet.deployContract.mockResolvedValue({
|
|
176
|
+
wait: jest.fn().mockResolvedValue({
|
|
177
|
+
getContractAddress: jest.fn().mockReturnValue(CONTRACT_ADDRESS),
|
|
178
|
+
getTransaction: jest.fn().mockReturnValue({
|
|
179
|
+
getTransactionLink: jest.fn().mockReturnValue(TRANSACTION_LINK),
|
|
180
|
+
}),
|
|
181
|
+
}),
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
it("should successfully deploy a contract", async () => {
|
|
185
|
+
const args = {
|
|
186
|
+
solidityVersion: MOCK_SOLIDITY_VERSION,
|
|
187
|
+
solidityInputJson: MOCK_SOLIDITY_INPUT_JSON,
|
|
188
|
+
contractName: MOCK_CONTRACT_NAME,
|
|
189
|
+
constructorArgs: MOCK_CONSTRUCTOR_ARGS,
|
|
190
|
+
};
|
|
191
|
+
const response = await actionProvider.deployContract(mockWallet, args);
|
|
192
|
+
expect(mockWallet.deployContract).toHaveBeenCalledWith({
|
|
193
|
+
solidityVersion: "0.8.0+commit.c7dfd78e",
|
|
194
|
+
solidityInputJson: MOCK_SOLIDITY_INPUT_JSON,
|
|
195
|
+
contractName: MOCK_CONTRACT_NAME,
|
|
196
|
+
constructorArgs: MOCK_CONSTRUCTOR_ARGS,
|
|
197
|
+
});
|
|
198
|
+
expect(response).toContain(`Deployed contract ${MOCK_CONTRACT_NAME} at address ${CONTRACT_ADDRESS}`);
|
|
199
|
+
expect(response).toContain(`Transaction link: ${TRANSACTION_LINK}`);
|
|
200
|
+
});
|
|
201
|
+
it("should handle deployment errors", async () => {
|
|
202
|
+
const args = {
|
|
203
|
+
solidityVersion: MOCK_SOLIDITY_VERSION,
|
|
204
|
+
solidityInputJson: MOCK_SOLIDITY_INPUT_JSON,
|
|
205
|
+
contractName: MOCK_CONTRACT_NAME,
|
|
206
|
+
constructorArgs: MOCK_CONSTRUCTOR_ARGS,
|
|
207
|
+
};
|
|
208
|
+
const error = new Error("An error has occurred");
|
|
209
|
+
mockWallet.deployContract.mockRejectedValue(error);
|
|
210
|
+
const response = await actionProvider.deployContract(mockWallet, args);
|
|
211
|
+
expect(mockWallet.deployContract).toHaveBeenCalledWith({
|
|
212
|
+
solidityVersion: "0.8.0+commit.c7dfd78e",
|
|
213
|
+
solidityInputJson: MOCK_SOLIDITY_INPUT_JSON,
|
|
214
|
+
contractName: MOCK_CONTRACT_NAME,
|
|
215
|
+
constructorArgs: MOCK_CONSTRUCTOR_ARGS,
|
|
216
|
+
});
|
|
217
|
+
expect(response).toBe(`Error deploying contract: ${error}`);
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
describe("trade", () => {
|
|
221
|
+
const TRANSACTION_HASH = "0xghijkl987654321";
|
|
222
|
+
const TRANSACTION_LINK = "https://etherscan.io/tx/0xghijkl987654321";
|
|
223
|
+
const TO_AMOUNT = "100";
|
|
224
|
+
beforeEach(() => {
|
|
225
|
+
mockWallet.createTrade.mockResolvedValue({
|
|
226
|
+
wait: jest.fn().mockResolvedValue({
|
|
227
|
+
getTransaction: jest.fn().mockReturnValue({
|
|
228
|
+
getTransactionHash: jest.fn().mockReturnValue(TRANSACTION_HASH),
|
|
229
|
+
getTransactionLink: jest.fn().mockReturnValue(TRANSACTION_LINK),
|
|
230
|
+
}),
|
|
231
|
+
getToAmount: jest.fn().mockReturnValue(TO_AMOUNT),
|
|
232
|
+
}),
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
it("should successfully trade assets", async () => {
|
|
236
|
+
const args = {
|
|
237
|
+
amount: 1n,
|
|
238
|
+
fromAssetId: "eth",
|
|
239
|
+
toAssetId: "usdc",
|
|
240
|
+
};
|
|
241
|
+
const result = await actionProvider.trade(mockWallet, args);
|
|
242
|
+
expect(mockWallet.createTrade).toHaveBeenCalledWith(args);
|
|
243
|
+
expect(result).toContain(`Traded ${args.amount} of ${args.fromAssetId} for ${TO_AMOUNT} of ${args.toAssetId}`);
|
|
244
|
+
expect(result).toContain(`Transaction hash for the trade: ${TRANSACTION_HASH}`);
|
|
245
|
+
expect(result).toContain(`Transaction link for the trade: ${TRANSACTION_LINK}`);
|
|
246
|
+
});
|
|
247
|
+
it("should handle trade errors", async () => {
|
|
248
|
+
const args = {
|
|
249
|
+
amount: 1000000000000000000n,
|
|
250
|
+
fromAssetId: "eth",
|
|
251
|
+
toAssetId: "usdc",
|
|
252
|
+
};
|
|
253
|
+
const error = new Error("An error has occurred");
|
|
254
|
+
mockWallet.createTrade.mockRejectedValue(error);
|
|
255
|
+
const result = await actionProvider.trade(mockWallet, args);
|
|
256
|
+
expect(result).toBe(`Error trading assets: ${error}`);
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
describe("supportsNetwork", () => {
|
|
260
|
+
it("should return true when protocolFamily is evm", () => {
|
|
261
|
+
expect(actionProvider.supportsNetwork({ protocolFamily: "evm" })).toBe(true);
|
|
262
|
+
});
|
|
263
|
+
it("should return false when protocolFamily is not evm", () => {
|
|
264
|
+
expect(actionProvider.supportsNetwork({ protocolFamily: "solana" })).toBe(false);
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export declare const SolidityVersions: {
|
|
2
|
+
readonly "0.8.28": "0.8.28+commit.7893614a";
|
|
3
|
+
readonly "0.8.27": "0.8.27+commit.40a35a09";
|
|
4
|
+
readonly "0.8.26": "0.8.26+commit.8a97fa7a";
|
|
5
|
+
readonly "0.8.25": "0.8.25+commit.b61c2a91";
|
|
6
|
+
readonly "0.8.24": "0.8.24+commit.e11b9ed9";
|
|
7
|
+
readonly "0.8.23": "0.8.23+commit.f704f362";
|
|
8
|
+
readonly "0.8.22": "0.8.22+commit.4fc1097e";
|
|
9
|
+
readonly "0.8.21": "0.8.21+commit.d9974bed";
|
|
10
|
+
readonly "0.8.20": "0.8.20+commit.a1b79de6";
|
|
11
|
+
readonly "0.8.19": "0.8.19+commit.7dd6d404";
|
|
12
|
+
readonly "0.8.18": "0.8.18+commit.87f61d96";
|
|
13
|
+
readonly "0.8.17": "0.8.17+commit.8df45f5f";
|
|
14
|
+
readonly "0.8.16": "0.8.16+commit.07a7930e";
|
|
15
|
+
readonly "0.8.15": "0.8.15+commit.e14f2714";
|
|
16
|
+
readonly "0.8.14": "0.8.14+commit.80d49f37";
|
|
17
|
+
readonly "0.8.13": "0.8.13+commit.abaa5c0e";
|
|
18
|
+
readonly "0.8.12": "0.8.12+commit.f00d7308";
|
|
19
|
+
readonly "0.8.11": "0.8.11+commit.d7f03943";
|
|
20
|
+
readonly "0.8.10": "0.8.10+commit.fc410830";
|
|
21
|
+
readonly "0.8.9": "0.8.9+commit.e5eed63a";
|
|
22
|
+
readonly "0.8.8": "0.8.8+commit.dddeac2f";
|
|
23
|
+
readonly "0.8.7": "0.8.7+commit.e28d00a7";
|
|
24
|
+
readonly "0.8.6": "0.8.6+commit.11564f7e";
|
|
25
|
+
readonly "0.8.5": "0.8.5+commit.a4f2e591";
|
|
26
|
+
readonly "0.8.4": "0.8.4+commit.c7e474f2";
|
|
27
|
+
readonly "0.8.3": "0.8.3+commit.8d00100c";
|
|
28
|
+
readonly "0.8.2": "0.8.2+commit.661d1103";
|
|
29
|
+
readonly "0.8.1": "0.8.1+commit.df193b15";
|
|
30
|
+
readonly "0.8.0": "0.8.0+commit.c7dfd78e";
|
|
31
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SolidityVersions = void 0;
|
|
4
|
+
exports.SolidityVersions = {
|
|
5
|
+
"0.8.28": "0.8.28+commit.7893614a",
|
|
6
|
+
"0.8.27": "0.8.27+commit.40a35a09",
|
|
7
|
+
"0.8.26": "0.8.26+commit.8a97fa7a",
|
|
8
|
+
"0.8.25": "0.8.25+commit.b61c2a91",
|
|
9
|
+
"0.8.24": "0.8.24+commit.e11b9ed9",
|
|
10
|
+
"0.8.23": "0.8.23+commit.f704f362",
|
|
11
|
+
"0.8.22": "0.8.22+commit.4fc1097e",
|
|
12
|
+
"0.8.21": "0.8.21+commit.d9974bed",
|
|
13
|
+
"0.8.20": "0.8.20+commit.a1b79de6",
|
|
14
|
+
"0.8.19": "0.8.19+commit.7dd6d404",
|
|
15
|
+
"0.8.18": "0.8.18+commit.87f61d96",
|
|
16
|
+
"0.8.17": "0.8.17+commit.8df45f5f",
|
|
17
|
+
"0.8.16": "0.8.16+commit.07a7930e",
|
|
18
|
+
"0.8.15": "0.8.15+commit.e14f2714",
|
|
19
|
+
"0.8.14": "0.8.14+commit.80d49f37",
|
|
20
|
+
"0.8.13": "0.8.13+commit.abaa5c0e",
|
|
21
|
+
"0.8.12": "0.8.12+commit.f00d7308",
|
|
22
|
+
"0.8.11": "0.8.11+commit.d7f03943",
|
|
23
|
+
"0.8.10": "0.8.10+commit.fc410830",
|
|
24
|
+
"0.8.9": "0.8.9+commit.e5eed63a",
|
|
25
|
+
"0.8.8": "0.8.8+commit.dddeac2f",
|
|
26
|
+
"0.8.7": "0.8.7+commit.e28d00a7",
|
|
27
|
+
"0.8.6": "0.8.6+commit.11564f7e",
|
|
28
|
+
"0.8.5": "0.8.5+commit.a4f2e591",
|
|
29
|
+
"0.8.4": "0.8.4+commit.c7e474f2",
|
|
30
|
+
"0.8.3": "0.8.3+commit.8d00100c",
|
|
31
|
+
"0.8.2": "0.8.2+commit.661d1103",
|
|
32
|
+
"0.8.1": "0.8.1+commit.df193b15",
|
|
33
|
+
"0.8.0": "0.8.0+commit.c7dfd78e",
|
|
34
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./schemas"), exports);
|
|
18
|
+
__exportStar(require("./cdpApiActionProvider"), exports);
|
|
19
|
+
__exportStar(require("./cdpWalletActionProvider"), exports);
|