@elizaos/plugin-wallet 2.0.0-beta.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/LICENSE +21 -0
- package/README.md +64 -0
- package/auto-enable.ts +76 -0
- package/dist/LpManagementService-BWrQ5-cO.mjs +353 -0
- package/dist/MockLpService-D_Apn4Fd.mjs +99 -0
- package/dist/aerodrome-CfnESC32.mjs +890 -0
- package/dist/chunk-hT5z_Zn9.mjs +35 -0
- package/dist/index.d.mts +34727 -0
- package/dist/index.mjs +21590 -0
- package/dist/lib/server-wallet-trade.d.mts +34 -0
- package/dist/lib/server-wallet-trade.mjs +306 -0
- package/dist/meteora-BPX39hZo.mjs +22640 -0
- package/dist/orca-Bybp1HXO.mjs +249 -0
- package/dist/pancakeswp-CkEXlXti.mjs +604 -0
- package/dist/plugin-ZO_MTyd0.mjs +529 -0
- package/dist/raydium-rfaM9yEf.mjs +539 -0
- package/dist/sdk/index.d.mts +32492 -0
- package/dist/sdk/index.mjs +6415 -0
- package/dist/types-D5252NZk.mjs +487 -0
- package/dist/uniswap-CReXgXVN.mjs +573 -0
- package/dist/wallet-action.d.mts +6 -0
- package/dist/wallet-action.mjs +820 -0
- package/package.json +152 -0
- package/src/actions/failure-codes.ts +79 -0
- package/src/actions/index.ts +1 -0
- package/src/analytics/birdeye/actions/wallet-search-address.ts +9 -0
- package/src/analytics/birdeye/birdeye-task.ts +175 -0
- package/src/analytics/birdeye/birdeye.ts +813 -0
- package/src/analytics/birdeye/constants.ts +74 -0
- package/src/analytics/birdeye/providers/agent-portfolio-provider.ts +18 -0
- package/src/analytics/birdeye/providers/market.ts +227 -0
- package/src/analytics/birdeye/providers/portfolio-factory.test.ts +138 -0
- package/src/analytics/birdeye/providers/portfolio-factory.ts +252 -0
- package/src/analytics/birdeye/providers/trending.ts +365 -0
- package/src/analytics/birdeye/providers/wallet.ts +14 -0
- package/src/analytics/birdeye/search-category.test.ts +207 -0
- package/src/analytics/birdeye/search-category.ts +506 -0
- package/src/analytics/birdeye/service.ts +992 -0
- package/src/analytics/birdeye/tasks/birdeye.ts +232 -0
- package/src/analytics/birdeye/types/api/common.ts +305 -0
- package/src/analytics/birdeye/types/api/defi.ts +220 -0
- package/src/analytics/birdeye/types/api/pair.ts +200 -0
- package/src/analytics/birdeye/types/api/search.ts +86 -0
- package/src/analytics/birdeye/types/api/token.ts +635 -0
- package/src/analytics/birdeye/types/api/trader.ts +76 -0
- package/src/analytics/birdeye/types/api/wallet.ts +181 -0
- package/src/analytics/birdeye/types/shared.ts +106 -0
- package/src/analytics/birdeye/utils.ts +700 -0
- package/src/analytics/dexscreener/errors.ts +28 -0
- package/src/analytics/dexscreener/index.ts +3 -0
- package/src/analytics/dexscreener/search-category.test.ts +49 -0
- package/src/analytics/dexscreener/search-category.ts +42 -0
- package/src/analytics/dexscreener/service.ts +595 -0
- package/src/analytics/dexscreener/types.ts +128 -0
- package/src/analytics/lpinfo/index.d.ts +7 -0
- package/src/analytics/lpinfo/index.ts +52 -0
- package/src/analytics/lpinfo/kamino/README.md +102 -0
- package/src/analytics/lpinfo/kamino/index.ts +24 -0
- package/src/analytics/lpinfo/kamino/providers/kaminoLiquidityProvider.ts +422 -0
- package/src/analytics/lpinfo/kamino/providers/kaminoPoolProvider.ts +365 -0
- package/src/analytics/lpinfo/kamino/providers/kaminoProvider.ts +496 -0
- package/src/analytics/lpinfo/kamino/services/kaminoLiquidityService.ts +1123 -0
- package/src/analytics/lpinfo/kamino/services/kaminoService.ts +758 -0
- package/src/analytics/lpinfo/steer/README.md +169 -0
- package/src/analytics/lpinfo/steer/index.ts +23 -0
- package/src/analytics/lpinfo/steer/providers/steerLiquidityProvider.ts +544 -0
- package/src/analytics/lpinfo/steer/services/steerLiquidityService.ts +1690 -0
- package/src/analytics/lpinfo/steer/steer-display-types.ts +99 -0
- package/src/analytics/news/index.ts +52 -0
- package/src/analytics/news/interfaces/types.ts +222 -0
- package/src/analytics/news/providers/defiNewsProvider.ts +734 -0
- package/src/analytics/news/services/newsDataService.ts +332 -0
- package/src/analytics/news/utils/formatters.ts +151 -0
- package/src/analytics/token-info/action.ts +240 -0
- package/src/analytics/token-info/index.ts +3 -0
- package/src/analytics/token-info/params.ts +215 -0
- package/src/analytics/token-info/providers.ts +681 -0
- package/src/analytics/token-info/service.ts +168 -0
- package/src/analytics/token-info/types.ts +74 -0
- package/src/audit/audit-log.ts +45 -0
- package/src/browser-shim/build-shim.ts +123 -0
- package/src/browser-shim/index.ts +5 -0
- package/src/browser-shim/shim.template.js +563 -0
- package/src/chains/evm/.github/workflows/npm-deploy.yml +112 -0
- package/src/chains/evm/LICENSE +21 -0
- package/src/chains/evm/README.md +106 -0
- package/src/chains/evm/actions/helpers.ts +147 -0
- package/src/chains/evm/actions/swap.ts +839 -0
- package/src/chains/evm/actions/transfer.ts +254 -0
- package/src/chains/evm/biome.json +61 -0
- package/src/chains/evm/bridge-router.ts +660 -0
- package/src/chains/evm/build.ts +89 -0
- package/src/chains/evm/chain-handler.ts +416 -0
- package/src/chains/evm/constants.ts +23 -0
- package/src/chains/evm/contracts/artifacts/OZGovernor.json +1707 -0
- package/src/chains/evm/contracts/artifacts/TimelockController.json +1007 -0
- package/src/chains/evm/contracts/artifacts/VoteToken.json +895 -0
- package/src/chains/evm/dex/aerodrome/index.ts +34 -0
- package/src/chains/evm/dex/aerodrome/services/AerodromeLpService.ts +558 -0
- package/src/chains/evm/dex/aerodrome/types.ts +318 -0
- package/src/chains/evm/dex/pancakeswp/index.ts +35 -0
- package/src/chains/evm/dex/pancakeswp/services/PancakeSwapV3LpService.ts +743 -0
- package/src/chains/evm/dex/pancakeswp/types.ts +65 -0
- package/src/chains/evm/dex/uniswap/index.ts +35 -0
- package/src/chains/evm/dex/uniswap/services/UniswapV3LpService.ts +759 -0
- package/src/chains/evm/dex/uniswap/types.ts +390 -0
- package/src/chains/evm/generated/specs/spec-helpers.ts +73 -0
- package/src/chains/evm/generated/specs/specs.ts +151 -0
- package/src/chains/evm/gov-router.ts +250 -0
- package/src/chains/evm/index.browser.ts +16 -0
- package/src/chains/evm/index.ts +31 -0
- package/src/chains/evm/prompts.ts +193 -0
- package/src/chains/evm/providers/get-balance.ts +123 -0
- package/src/chains/evm/providers/wallet.ts +715 -0
- package/src/chains/evm/routes/sign.ts +333 -0
- package/src/chains/evm/rpc-providers.ts +410 -0
- package/src/chains/evm/service.ts +140 -0
- package/src/chains/evm/templates/index.ts +10 -0
- package/src/chains/evm/types/index.ts +432 -0
- package/src/chains/evm/vitest.config.ts +18 -0
- package/src/chains/registry.ts +668 -0
- package/src/chains/solana/README.md +367 -0
- package/src/chains/wallet-action.ts +533 -0
- package/src/chains/wallet-router.test.ts +296 -0
- package/src/contracts.ts +65 -0
- package/src/core-augmentation.ts +10 -0
- package/src/index.ts +71 -0
- package/src/lib/server-wallet-trade.ts +192 -0
- package/src/lib/wallet-export-guard.ts +330 -0
- package/src/lp/actions/liquidity.ts +827 -0
- package/src/lp/e2e/real-token-tests.ts +428 -0
- package/src/lp/e2e/scenarios.ts +470 -0
- package/src/lp/e2e/test-utils.ts +145 -0
- package/src/lp/lp-manager-entry.ts +303 -0
- package/src/lp/services/ConcentratedLiquidityService.ts +120 -0
- package/src/lp/services/DexInteractionService.ts +226 -0
- package/src/lp/services/LpManagementService.test.ts +148 -0
- package/src/lp/services/LpManagementService.ts +632 -0
- package/src/lp/services/UserLpProfileService.ts +163 -0
- package/src/lp/services/VaultService.ts +153 -0
- package/src/lp/services/YieldOptimizationService.ts +344 -0
- package/src/lp/services/__tests__/MockLpService.ts +146 -0
- package/src/lp/tasks/LpAutoRebalanceTask.ts +117 -0
- package/src/lp/tasks/__tests__/LpAutoRebalanceTask.test.ts +370 -0
- package/src/lp/types.ts +582 -0
- package/src/lp/utils/solanaClient.ts +143 -0
- package/src/plugin.ts +125 -0
- package/src/policy/policy.ts +19 -0
- package/src/providers/canonical-provider.ts +27 -0
- package/src/providers/unified-wallet-provider.ts +79 -0
- package/src/register-routes.ts +11 -0
- package/src/routes/plugin.ts +47 -0
- package/src/routes/wallet-market-overview-route.ts +869 -0
- package/src/sdk/abi.ts +258 -0
- package/src/sdk/bridge/abis.ts +126 -0
- package/src/sdk/bridge/client.ts +518 -0
- package/src/sdk/bridge/index.ts +56 -0
- package/src/sdk/bridge/solana.ts +604 -0
- package/src/sdk/bridge/types.ts +202 -0
- package/src/sdk/convenience.ts +347 -0
- package/src/sdk/escrow/MutualStakeEscrow.ts +480 -0
- package/src/sdk/escrow/types.ts +64 -0
- package/src/sdk/escrow/verifiers.ts +73 -0
- package/src/sdk/identity/erc8004.ts +692 -0
- package/src/sdk/identity/reputation.ts +449 -0
- package/src/sdk/identity/uaid.ts +497 -0
- package/src/sdk/identity/validation.ts +372 -0
- package/src/sdk/index.ts +763 -0
- package/src/sdk/policy/SpendingPolicy.ts +260 -0
- package/src/sdk/policy/UptoBillingPolicy.ts +320 -0
- package/src/sdk/router/PaymentRouter.ts +215 -0
- package/src/sdk/router/index.ts +8 -0
- package/src/sdk/swap/SwapModule.ts +310 -0
- package/src/sdk/swap/abi.ts +117 -0
- package/src/sdk/swap/index.ts +34 -0
- package/src/sdk/swap/types.ts +135 -0
- package/src/sdk/tokens/decimals.ts +140 -0
- package/src/sdk/tokens/registry.ts +911 -0
- package/src/sdk/tokens/solana.ts +419 -0
- package/src/sdk/tokens/transfers.ts +327 -0
- package/src/sdk/types.ts +158 -0
- package/src/sdk/wallet-core.ts +115 -0
- package/src/sdk/x402/budget.ts +168 -0
- package/src/sdk/x402/chains/abstract/index.ts +280 -0
- package/src/sdk/x402/client.ts +320 -0
- package/src/sdk/x402/index.ts +46 -0
- package/src/sdk/x402/middleware.ts +92 -0
- package/src/sdk/x402/multi-asset.ts +144 -0
- package/src/sdk/x402/types.ts +156 -0
- package/src/services/wallet-backend-service.ts +328 -0
- package/src/types/wallet-router.ts +227 -0
- package/src/utils/intent-trajectory.ts +106 -0
- package/src/wallet/backend.ts +62 -0
- package/src/wallet/errors.ts +49 -0
- package/src/wallet/index.ts +27 -0
- package/src/wallet/local-eoa-backend.ts +201 -0
- package/src/wallet/pending.ts +60 -0
- package/src/wallet/select-backend.ts +47 -0
- package/src/wallet/steward-backend.ts +161 -0
- package/src/wallet-action.ts +1 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# @elizaos/plugin-wallet — EVM chain
|
|
2
|
+
|
|
3
|
+
EVM chain implementation inside `@elizaos/plugin-wallet`. Provides token transfers, cross-chain bridging, token swaps via LiFi, and DAO governance helpers across all major EVM-compatible chains.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Multi-chain Support**: Ethereum, Base, Arbitrum, Optimism, Polygon, and 10+ more chains
|
|
8
|
+
- **Native Token Transfers**: Send ETH, MATIC, BNB, and other native gas tokens
|
|
9
|
+
- **ERC20 Token Transfers**: Send any ERC20 token
|
|
10
|
+
- **Cross-chain Bridging**: Bridge tokens between chains via LiFi
|
|
11
|
+
- **Token Swaps**: Exchange tokens on supported DEXs
|
|
12
|
+
- **DAO Governance**: Propose, vote, queue, and execute proposals
|
|
13
|
+
- **Strong Typing**: Branded types with Zod schemas, fail-fast validation
|
|
14
|
+
|
|
15
|
+
## Supported Chains
|
|
16
|
+
|
|
17
|
+
| Chain | ID | Native Token |
|
|
18
|
+
| ----------------- | -------- | ------------ |
|
|
19
|
+
| Ethereum Mainnet | 1 | ETH |
|
|
20
|
+
| Sepolia (testnet) | 11155111 | ETH |
|
|
21
|
+
| Base | 8453 | ETH |
|
|
22
|
+
| Base Sepolia | 84532 | ETH |
|
|
23
|
+
| Arbitrum One | 42161 | ETH |
|
|
24
|
+
| Optimism | 10 | ETH |
|
|
25
|
+
| Polygon | 137 | MATIC |
|
|
26
|
+
| Avalanche C-Chain | 43114 | AVAX |
|
|
27
|
+
| BNB Smart Chain | 56 | BNB |
|
|
28
|
+
| Gnosis | 100 | xDAI |
|
|
29
|
+
| Fantom | 250 | FTM |
|
|
30
|
+
| Linea | 59144 | ETH |
|
|
31
|
+
| Scroll | 534352 | ETH |
|
|
32
|
+
| zkSync Era | 324 | ETH |
|
|
33
|
+
| Radius Network | 723487 | RUSD |
|
|
34
|
+
| Radius Testnet | 72344 | RUSD |
|
|
35
|
+
|
|
36
|
+
## Installation
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
bun add @elizaos/plugin-wallet
|
|
40
|
+
# or
|
|
41
|
+
npm install @elizaos/plugin-wallet
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Quick Start
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { evmPlugin, EvmService } from "@elizaos/plugin-wallet";
|
|
48
|
+
|
|
49
|
+
// Add to your agent
|
|
50
|
+
const agent = createAgent({
|
|
51
|
+
plugins: [evmPlugin],
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// Or use the service directly
|
|
55
|
+
const service = new EvmService();
|
|
56
|
+
await service.initialize(runtime);
|
|
57
|
+
|
|
58
|
+
// Get wallet info
|
|
59
|
+
const address = service.getAddress();
|
|
60
|
+
const balance = await service.getBalance("mainnet");
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Strong Typing (Zod + Branded Types)
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
import { ZAddress, ZTransferParams } from "@elizaos/plugin-wallet";
|
|
67
|
+
|
|
68
|
+
// Validated at runtime
|
|
69
|
+
const address = ZAddress.parse("0x1234..."); // Throws if invalid
|
|
70
|
+
const params = ZTransferParams.parse({
|
|
71
|
+
fromChain: "mainnet",
|
|
72
|
+
toAddress: "0x...",
|
|
73
|
+
amount: "1.0",
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Directory Structure
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
plugins/plugin-wallet/src/chains/evm/
|
|
81
|
+
├── actions/ # Transfer, swap, bridge, governance actions
|
|
82
|
+
├── providers/ # EVM wallet provider
|
|
83
|
+
├── types/ # Branded types and Zod schemas
|
|
84
|
+
├── contracts/ # ABI bindings
|
|
85
|
+
├── prompts/ # Action prompt specs
|
|
86
|
+
├── generated/ # Auto-generated docs
|
|
87
|
+
├── service.ts # EvmService entry
|
|
88
|
+
├── rpc-providers.ts # Provider routing (Alchemy / Infura / Ankr / elizacloud)
|
|
89
|
+
└── index.ts # Module entry
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Configuration
|
|
93
|
+
|
|
94
|
+
| Environment Variable | Required | Description |
|
|
95
|
+
| -------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------- |
|
|
96
|
+
| `EVM_PRIVATE_KEY` | Yes | Private key for the agent's wallet (hex, starting with `0x`) |
|
|
97
|
+
| `EVM_RPC_PROVIDER` | No | Default RPC provider preference: `alchemy` / `infura` / `ankr` / `elizacloud` |
|
|
98
|
+
| `ALCHEMY_API_KEY` / `INFURA_API_KEY` / `ANKR_API_KEY` | No | API keys for the corresponding RPC provider |
|
|
99
|
+
| `ETHEREUM_PROVIDER_<CHAIN>` | No | Custom RPC URL override (e.g. `ETHEREUM_PROVIDER_BASE`, `ETHEREUM_PROVIDER_ARBITRUM`) |
|
|
100
|
+
| `TEE_MODE` | No | Trusted Execution Environment mode (`OFF` / `ON`) |
|
|
101
|
+
| `WALLET_SECRET_SALT` | No | Salt for TEE-derived wallet keypair |
|
|
102
|
+
| `SEPOLIA_RPC_URL` / `BASE_SEPOLIA_RPC_URL` | No | Custom testnet RPC URLs |
|
|
103
|
+
|
|
104
|
+
## License
|
|
105
|
+
|
|
106
|
+
MIT — see [LICENSE](./LICENSE).
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
Action,
|
|
3
|
+
ActionResult,
|
|
4
|
+
HandlerCallback,
|
|
5
|
+
IAgentRuntime,
|
|
6
|
+
Memory,
|
|
7
|
+
State,
|
|
8
|
+
} from "@elizaos/core";
|
|
9
|
+
import type { Address, Chain, Hex, SendTransactionParameters } from "viem";
|
|
10
|
+
import type { Account } from "viem/accounts";
|
|
11
|
+
|
|
12
|
+
type ActionValidate = NonNullable<Action["validate"]>;
|
|
13
|
+
|
|
14
|
+
type ConfirmationValue =
|
|
15
|
+
| string
|
|
16
|
+
| number
|
|
17
|
+
| boolean
|
|
18
|
+
| null
|
|
19
|
+
| ConfirmationValue[]
|
|
20
|
+
| { [key: string]: ConfirmationValue };
|
|
21
|
+
|
|
22
|
+
interface EvmActionValidatorConfig {
|
|
23
|
+
readonly keywords: readonly string[];
|
|
24
|
+
readonly regex: RegExp;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function hasEvmPrivateKey(runtime: IAgentRuntime): boolean {
|
|
28
|
+
const privateKey = runtime.getSetting("EVM_PRIVATE_KEY");
|
|
29
|
+
return typeof privateKey === "string" && privateKey.startsWith("0x");
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function isConfirmed(options?: Record<string, unknown>): boolean {
|
|
33
|
+
return options?.confirmed === true;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function toConfirmationValue(value: unknown): ConfirmationValue {
|
|
37
|
+
if (value === undefined) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
if (typeof value === "bigint") {
|
|
41
|
+
return value.toString();
|
|
42
|
+
}
|
|
43
|
+
if (value === null) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
if (Array.isArray(value)) {
|
|
50
|
+
return value.map((item) => toConfirmationValue(item));
|
|
51
|
+
}
|
|
52
|
+
if (value && typeof value === "object") {
|
|
53
|
+
return Object.fromEntries(
|
|
54
|
+
Object.entries(value).map(([key, item]) => [key, toConfirmationValue(item)])
|
|
55
|
+
) as Record<string, ConfirmationValue>;
|
|
56
|
+
}
|
|
57
|
+
return String(value);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function toConfirmationRecord(record: object): Record<string, ConfirmationValue> {
|
|
61
|
+
return Object.fromEntries(
|
|
62
|
+
Object.entries(record).map(([key, value]) => [key, toConfirmationValue(value)])
|
|
63
|
+
) as Record<string, ConfirmationValue>;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export async function confirmationRequired(params: {
|
|
67
|
+
actionName: string;
|
|
68
|
+
preview: string;
|
|
69
|
+
parameters: object;
|
|
70
|
+
callback?: HandlerCallback;
|
|
71
|
+
}): Promise<ActionResult> {
|
|
72
|
+
const confirmation = {
|
|
73
|
+
actionName: params.actionName,
|
|
74
|
+
confirmed: false,
|
|
75
|
+
parameters: {
|
|
76
|
+
...toConfirmationRecord(params.parameters),
|
|
77
|
+
confirmed: true,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const content = {
|
|
82
|
+
success: false,
|
|
83
|
+
requiresConfirmation: true,
|
|
84
|
+
preview: params.preview,
|
|
85
|
+
confirmation,
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
await params.callback?.({
|
|
89
|
+
text: params.preview,
|
|
90
|
+
content,
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
return {
|
|
94
|
+
success: false,
|
|
95
|
+
text: params.preview,
|
|
96
|
+
data: content,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function createEvmActionValidator(_config: EvmActionValidatorConfig): ActionValidate {
|
|
101
|
+
return async (
|
|
102
|
+
runtime: IAgentRuntime,
|
|
103
|
+
_message: Memory,
|
|
104
|
+
_state?: State,
|
|
105
|
+
_options?: unknown
|
|
106
|
+
): Promise<boolean> => {
|
|
107
|
+
try {
|
|
108
|
+
return hasEvmPrivateKey(runtime);
|
|
109
|
+
} catch {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function buildSendTxParams(params: {
|
|
116
|
+
account: Account;
|
|
117
|
+
to: Address;
|
|
118
|
+
value?: bigint;
|
|
119
|
+
data?: Hex;
|
|
120
|
+
chain?: Chain;
|
|
121
|
+
gas?: bigint;
|
|
122
|
+
gasPrice?: bigint;
|
|
123
|
+
}): SendTransactionParameters {
|
|
124
|
+
const txParams: Partial<SendTransactionParameters> &
|
|
125
|
+
Pick<SendTransactionParameters, "account" | "to"> = {
|
|
126
|
+
account: params.account,
|
|
127
|
+
to: params.to,
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
if (params.value !== undefined) {
|
|
131
|
+
txParams.value = params.value;
|
|
132
|
+
}
|
|
133
|
+
if (params.data !== undefined) {
|
|
134
|
+
txParams.data = params.data;
|
|
135
|
+
}
|
|
136
|
+
if (params.chain !== undefined) {
|
|
137
|
+
txParams.chain = params.chain;
|
|
138
|
+
}
|
|
139
|
+
if (params.gas !== undefined) {
|
|
140
|
+
txParams.gas = params.gas;
|
|
141
|
+
}
|
|
142
|
+
if (params.gasPrice !== undefined) {
|
|
143
|
+
txParams.gasPrice = params.gasPrice;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return txParams as SendTransactionParameters;
|
|
147
|
+
}
|