@zerodev/sdk 5.2.0-alpha-0 → 5.2.0-alpha-2
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 +3 -0
- package/_cjs/accounts/index.js +9 -2
- package/_cjs/accounts/index.js.map +1 -1
- package/_cjs/accounts/kernel/abi/EIP1271Abi.js +37 -0
- package/_cjs/accounts/kernel/abi/EIP1271Abi.js.map +1 -0
- package/_cjs/accounts/kernel/abi/SafeCreateCallAbi.js +9 -0
- package/_cjs/accounts/kernel/abi/SafeCreateCallAbi.js.map +1 -0
- package/_cjs/accounts/kernel/createKernelAccount.js +123 -360
- package/_cjs/accounts/kernel/createKernelAccount.js.map +1 -1
- package/_cjs/accounts/kernel/utils/account/ep0_6/encodeCallData.js +26 -0
- package/_cjs/accounts/kernel/utils/account/ep0_6/encodeCallData.js.map +1 -0
- package/_cjs/accounts/kernel/utils/account/ep0_6/encodeDeployCallData.js +16 -0
- package/_cjs/accounts/kernel/utils/account/ep0_6/encodeDeployCallData.js.map +1 -0
- package/_cjs/accounts/kernel/utils/account/ep0_7/encodeCallData.js +30 -0
- package/_cjs/accounts/kernel/utils/account/ep0_7/encodeCallData.js.map +1 -0
- package/_cjs/accounts/kernel/utils/account/ep0_7/encodeDeployCallData.js +18 -0
- package/_cjs/accounts/kernel/utils/account/ep0_7/encodeDeployCallData.js.map +1 -0
- package/_cjs/accounts/kernel/utils/common/accountMetadata.js +46 -0
- package/_cjs/accounts/kernel/utils/common/accountMetadata.js.map +1 -0
- package/_cjs/accounts/kernel/utils/common/eip712WrapHash.js +28 -0
- package/_cjs/accounts/kernel/utils/common/eip712WrapHash.js.map +1 -0
- package/_cjs/accounts/kernel/utils/common/encodeSafeCreateCall.js +14 -0
- package/_cjs/accounts/kernel/utils/common/encodeSafeCreateCall.js.map +1 -0
- package/_cjs/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.js +22 -0
- package/_cjs/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.js.map +1 -0
- package/_cjs/accounts/kernel/utils/ep0_6/encodeExecuteDelegateCall.js +14 -0
- package/_cjs/accounts/kernel/utils/ep0_6/encodeExecuteDelegateCall.js.map +1 -0
- package/_cjs/accounts/kernel/utils/ep0_6/encodeExecuteSingleCall.js +14 -0
- package/_cjs/accounts/kernel/utils/ep0_6/encodeExecuteSingleCall.js.map +1 -0
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.js +42 -0
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.js.map +1 -0
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteCall.js +29 -0
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteCall.js.map +1 -0
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.js +13 -0
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.js.map +1 -0
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.js +13 -0
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.js.map +1 -0
- package/_cjs/accounts/kernel/utils/ep0_7/hashKernelSignatureWrapper.js +9 -0
- package/_cjs/accounts/kernel/utils/ep0_7/hashKernelSignatureWrapper.js.map +1 -0
- package/_cjs/accounts/kernel/utils/types.js +3 -0
- package/_cjs/accounts/kernel/utils/types.js.map +1 -0
- package/_cjs/accounts/kernel/v1/createKernelV1Account.js +1 -2
- package/_cjs/accounts/kernel/v1/createKernelV1Account.js.map +1 -1
- package/_cjs/accounts/kernel/v2/abi/KernelAccountV2Abi.js +377 -0
- package/_cjs/accounts/kernel/v2/abi/KernelAccountV2Abi.js.map +1 -0
- package/_cjs/accounts/kernel/v2/abi/KernelFactoryV2Abi.js +115 -0
- package/_cjs/accounts/kernel/v2/abi/KernelFactoryV2Abi.js.map +1 -0
- package/_cjs/accounts/kernel/v2/createKernelV2Account.js +226 -0
- package/_cjs/accounts/kernel/v2/createKernelV2Account.js.map +1 -0
- package/_cjs/accounts/utils/multisend.js.map +1 -0
- package/_cjs/accounts/utils/toKernelPluginManager.js +4 -4
- package/_cjs/accounts/utils/toKernelPluginManager.js.map +1 -1
- package/_cjs/constants.js +2 -1
- package/_cjs/constants.js.map +1 -1
- package/_cjs/index.js +3 -2
- package/_cjs/index.js.map +1 -1
- package/_cjs/types/kernel.js.map +1 -1
- package/_cjs/utils.js +1 -1
- package/_cjs/utils.js.map +1 -1
- package/_esm/accounts/index.js +5 -1
- package/_esm/accounts/index.js.map +1 -1
- package/_esm/accounts/kernel/abi/EIP1271Abi.js +34 -0
- package/_esm/accounts/kernel/abi/EIP1271Abi.js.map +1 -0
- package/_esm/accounts/kernel/abi/SafeCreateCallAbi.js +6 -0
- package/_esm/accounts/kernel/abi/SafeCreateCallAbi.js.map +1 -0
- package/_esm/accounts/kernel/createKernelAccount.js +136 -380
- package/_esm/accounts/kernel/createKernelAccount.js.map +1 -1
- package/_esm/accounts/kernel/utils/account/ep0_6/encodeCallData.js +23 -0
- package/_esm/accounts/kernel/utils/account/ep0_6/encodeCallData.js.map +1 -0
- package/_esm/accounts/kernel/utils/account/ep0_6/encodeDeployCallData.js +13 -0
- package/_esm/accounts/kernel/utils/account/ep0_6/encodeDeployCallData.js.map +1 -0
- package/_esm/accounts/kernel/utils/account/ep0_7/encodeCallData.js +28 -0
- package/_esm/accounts/kernel/utils/account/ep0_7/encodeCallData.js.map +1 -0
- package/_esm/accounts/kernel/utils/account/ep0_7/encodeDeployCallData.js +15 -0
- package/_esm/accounts/kernel/utils/account/ep0_7/encodeDeployCallData.js.map +1 -0
- package/_esm/accounts/kernel/utils/common/accountMetadata.js +42 -0
- package/_esm/accounts/kernel/utils/common/accountMetadata.js.map +1 -0
- package/_esm/accounts/kernel/utils/common/eip712WrapHash.js +24 -0
- package/_esm/accounts/kernel/utils/common/eip712WrapHash.js.map +1 -0
- package/_esm/accounts/kernel/utils/common/encodeSafeCreateCall.js +10 -0
- package/_esm/accounts/kernel/utils/common/encodeSafeCreateCall.js.map +1 -0
- package/_esm/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.js +18 -0
- package/_esm/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.js.map +1 -0
- package/_esm/accounts/kernel/utils/ep0_6/encodeExecuteDelegateCall.js +10 -0
- package/_esm/accounts/kernel/utils/ep0_6/encodeExecuteDelegateCall.js.map +1 -0
- package/_esm/accounts/kernel/utils/ep0_6/encodeExecuteSingleCall.js +10 -0
- package/_esm/accounts/kernel/utils/ep0_6/encodeExecuteSingleCall.js.map +1 -0
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.js +38 -0
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.js.map +1 -0
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteCall.js +25 -0
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteCall.js.map +1 -0
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.js +9 -0
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.js.map +1 -0
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.js +9 -0
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.js.map +1 -0
- package/_esm/accounts/kernel/utils/ep0_7/hashKernelSignatureWrapper.js +5 -0
- package/_esm/accounts/kernel/utils/ep0_7/hashKernelSignatureWrapper.js.map +1 -0
- package/_esm/accounts/kernel/utils/types.js +2 -0
- package/_esm/accounts/kernel/utils/types.js.map +1 -0
- package/_esm/accounts/kernel/v1/createKernelV1Account.js +1 -2
- package/_esm/accounts/kernel/v1/createKernelV1Account.js.map +1 -1
- package/_esm/accounts/kernel/v2/abi/KernelAccountV2Abi.js +374 -0
- package/_esm/accounts/kernel/v2/abi/KernelAccountV2Abi.js.map +1 -0
- package/_esm/accounts/kernel/v2/abi/KernelFactoryV2Abi.js +112 -0
- package/_esm/accounts/kernel/v2/abi/KernelFactoryV2Abi.js.map +1 -0
- package/_esm/accounts/kernel/v2/createKernelV2Account.js +264 -0
- package/_esm/accounts/kernel/v2/createKernelV2Account.js.map +1 -0
- package/_esm/accounts/{kernel/v1 → utils}/multisend.js +1 -1
- package/_esm/accounts/utils/multisend.js.map +1 -0
- package/_esm/accounts/utils/toKernelPluginManager.js +4 -4
- package/_esm/accounts/utils/toKernelPluginManager.js.map +1 -1
- package/_esm/constants.js +3 -0
- package/_esm/constants.js.map +1 -1
- package/_esm/index.js +1 -1
- package/_esm/index.js.map +1 -1
- package/_esm/types/kernel.js.map +1 -1
- package/_esm/utils.js +1 -1
- package/_esm/utils.js.map +1 -1
- package/_types/accounts/index.d.ts +5 -1
- package/_types/accounts/index.d.ts.map +1 -1
- package/_types/accounts/kernel/abi/EIP1271Abi.d.ts +54 -0
- package/_types/accounts/kernel/abi/EIP1271Abi.d.ts.map +1 -0
- package/_types/accounts/kernel/abi/SafeCreateCallAbi.d.ts +35 -0
- package/_types/accounts/kernel/abi/SafeCreateCallAbi.d.ts.map +1 -0
- package/_types/accounts/kernel/createKernelAccount.d.ts +0 -54
- package/_types/accounts/kernel/createKernelAccount.d.ts.map +1 -1
- package/_types/accounts/kernel/utils/account/ep0_6/encodeCallData.d.ts +4 -0
- package/_types/accounts/kernel/utils/account/ep0_6/encodeCallData.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/account/ep0_6/encodeDeployCallData.d.ts +3 -0
- package/_types/accounts/kernel/utils/account/ep0_6/encodeDeployCallData.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/account/ep0_7/encodeCallData.d.ts +4 -0
- package/_types/accounts/kernel/utils/account/ep0_7/encodeCallData.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/account/ep0_7/encodeDeployCallData.d.ts +3 -0
- package/_types/accounts/kernel/utils/account/ep0_7/encodeDeployCallData.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/common/accountMetadata.d.ts +10 -0
- package/_types/accounts/kernel/utils/common/accountMetadata.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/common/eip712WrapHash.d.ts +4 -0
- package/_types/accounts/kernel/utils/common/eip712WrapHash.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/common/encodeSafeCreateCall.d.ts +2 -0
- package/_types/accounts/kernel/utils/common/encodeSafeCreateCall.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.d.ts +3 -0
- package/_types/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/ep0_6/encodeExecuteDelegateCall.d.ts +3 -0
- package/_types/accounts/kernel/utils/ep0_6/encodeExecuteDelegateCall.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/ep0_6/encodeExecuteSingleCall.d.ts +3 -0
- package/_types/accounts/kernel/utils/ep0_6/encodeExecuteSingleCall.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.d.ts +4 -0
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteCall.d.ts +16 -0
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteCall.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.d.ts +4 -0
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.d.ts +4 -0
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/ep0_7/hashKernelSignatureWrapper.d.ts +3 -0
- package/_types/accounts/kernel/utils/ep0_7/hashKernelSignatureWrapper.d.ts.map +1 -0
- package/_types/accounts/kernel/utils/types.d.ts +8 -0
- package/_types/accounts/kernel/utils/types.d.ts.map +1 -0
- package/_types/accounts/kernel/v1/createKernelV1Account.d.ts.map +1 -1
- package/_types/accounts/kernel/v2/abi/KernelAccountV2Abi.d.ts +447 -0
- package/_types/accounts/kernel/v2/abi/KernelAccountV2Abi.d.ts.map +1 -0
- package/_types/accounts/kernel/v2/abi/KernelFactoryV2Abi.d.ts +109 -0
- package/_types/accounts/kernel/v2/abi/KernelFactoryV2Abi.d.ts.map +1 -0
- package/_types/accounts/kernel/v2/createKernelV2Account.d.ts +33 -0
- package/_types/accounts/kernel/v2/createKernelV2Account.d.ts.map +1 -0
- package/_types/accounts/{kernel/v1 → utils}/multisend.d.ts +1 -1
- package/_types/accounts/utils/multisend.d.ts.map +1 -0
- package/_types/accounts/utils/toKernelPluginManager.d.ts +1 -1
- package/_types/accounts/utils/toKernelPluginManager.d.ts.map +1 -1
- package/_types/constants.d.ts +1 -0
- package/_types/constants.d.ts.map +1 -1
- package/_types/index.d.ts +1 -1
- package/_types/index.d.ts.map +1 -1
- package/_types/types/index.d.ts +1 -0
- package/_types/types/index.d.ts.map +1 -1
- package/_types/types/kernel.d.ts +1 -0
- package/_types/types/kernel.d.ts.map +1 -1
- package/_types/utils.d.ts +4 -1
- package/_types/utils.d.ts.map +1 -1
- package/accounts/index.ts +5 -2
- package/accounts/kernel/abi/EIP1271Abi.ts +33 -0
- package/accounts/kernel/abi/SafeCreateCallAbi.ts +6 -0
- package/accounts/kernel/createKernelAccount.ts +164 -511
- package/accounts/kernel/utils/account/ep0_6/encodeCallData.ts +32 -0
- package/accounts/kernel/utils/account/ep0_6/encodeDeployCallData.ts +18 -0
- package/accounts/kernel/utils/account/ep0_7/encodeCallData.ts +40 -0
- package/accounts/kernel/utils/account/ep0_7/encodeDeployCallData.ts +20 -0
- package/accounts/kernel/utils/common/accountMetadata.ts +62 -0
- package/accounts/kernel/utils/common/eip712WrapHash.ts +48 -0
- package/accounts/kernel/utils/common/encodeSafeCreateCall.ts +14 -0
- package/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.ts +19 -0
- package/accounts/kernel/utils/ep0_6/encodeExecuteDelegateCall.ts +11 -0
- package/accounts/kernel/utils/ep0_6/encodeExecuteSingleCall.ts +11 -0
- package/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.ts +51 -0
- package/accounts/kernel/utils/ep0_7/encodeExecuteCall.ts +38 -0
- package/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.ts +16 -0
- package/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.ts +16 -0
- package/accounts/kernel/utils/ep0_7/hashKernelSignatureWrapper.ts +11 -0
- package/accounts/kernel/utils/types.ts +8 -0
- package/accounts/kernel/v1/createKernelV1Account.ts +2 -3
- package/accounts/kernel/v2/abi/KernelAccountV2Abi.ts +373 -0
- package/accounts/kernel/v2/abi/KernelFactoryV2Abi.ts +111 -0
- package/accounts/kernel/v2/createKernelV2Account.ts +409 -0
- package/accounts/{kernel/v1 → utils}/multisend.ts +1 -1
- package/accounts/utils/toKernelPluginManager.ts +6 -7
- package/constants.ts +5 -0
- package/index.ts +2 -1
- package/package.json +1 -1
- package/types/index.ts +2 -0
- package/types/kernel.ts +1 -0
- package/utils.ts +7 -1
- package/_cjs/accounts/kernel/v1/multisend.js.map +0 -1
- package/_esm/accounts/kernel/v1/multisend.js.map +0 -1
- package/_types/accounts/kernel/v1/multisend.d.ts.map +0 -1
- /package/_cjs/accounts/{kernel/v1 → utils}/multisend.js +0 -0
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ENTRYPOINT_ADDRESS_V06,
|
|
3
|
+
getAccountNonce,
|
|
4
|
+
getSenderAddress,
|
|
5
|
+
isSmartAccountDeployed
|
|
6
|
+
} from "permissionless"
|
|
7
|
+
import {
|
|
8
|
+
SignTransactionNotSupportedBySmartAccount,
|
|
9
|
+
type SmartAccount
|
|
10
|
+
} from "permissionless/accounts"
|
|
11
|
+
import type {
|
|
12
|
+
ENTRYPOINT_ADDRESS_V06_TYPE,
|
|
13
|
+
EntryPoint
|
|
14
|
+
} from "permissionless/types/entrypoint.js"
|
|
15
|
+
import {
|
|
16
|
+
type Address,
|
|
17
|
+
type Chain,
|
|
18
|
+
type Client,
|
|
19
|
+
type EncodeDeployDataParameters,
|
|
20
|
+
type Hash,
|
|
21
|
+
type Hex,
|
|
22
|
+
type Transport,
|
|
23
|
+
type TypedDataDefinition,
|
|
24
|
+
concatHex,
|
|
25
|
+
encodeDeployData,
|
|
26
|
+
encodeFunctionData,
|
|
27
|
+
getTypesForEIP712Domain,
|
|
28
|
+
hashMessage,
|
|
29
|
+
hashTypedData,
|
|
30
|
+
parseAbi,
|
|
31
|
+
validateTypedData
|
|
32
|
+
} from "viem"
|
|
33
|
+
import { toAccount } from "viem/accounts"
|
|
34
|
+
import type {
|
|
35
|
+
KernelEncodeCallDataArgs,
|
|
36
|
+
KernelPluginManager,
|
|
37
|
+
KernelPluginManagerParams
|
|
38
|
+
} from "../../../types/kernel.js"
|
|
39
|
+
import { wrapSignatureWith6492 } from "../../utils/6492.js"
|
|
40
|
+
import { parseFactoryAddressAndCallDataFromAccountInitCode } from "../../utils/index.js"
|
|
41
|
+
import {
|
|
42
|
+
MULTISEND_ADDRESS,
|
|
43
|
+
encodeMultiSend,
|
|
44
|
+
multiSendAbi
|
|
45
|
+
} from "../../utils/multisend.js"
|
|
46
|
+
import {
|
|
47
|
+
isKernelPluginManager,
|
|
48
|
+
toKernelPluginManager
|
|
49
|
+
} from "../../utils/toKernelPluginManager.js"
|
|
50
|
+
import { KernelAccountV2Abi } from "./abi/KernelAccountV2Abi.js"
|
|
51
|
+
import { KernelFactoryV2Abi } from "./abi/KernelFactoryV2Abi.js"
|
|
52
|
+
|
|
53
|
+
export type KernelSmartAccount<
|
|
54
|
+
entryPoint extends EntryPoint,
|
|
55
|
+
transport extends Transport = Transport,
|
|
56
|
+
chain extends Chain | undefined = Chain | undefined
|
|
57
|
+
> = SmartAccount<entryPoint, "kernelSmartAccount", transport, chain> & {
|
|
58
|
+
kernelPluginManager: KernelPluginManager<entryPoint>
|
|
59
|
+
encodeCallData: (args: KernelEncodeCallDataArgs) => Promise<Hex>
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Safe's library for create and create2: https://github.com/safe-global/safe-contracts/blob/0acdd35a203299585438f53885df630f9d486a86/contracts/libraries/CreateCall.sol
|
|
63
|
+
// Address was found here: https://github.com/safe-global/safe-deployments/blob/926ec6bbe2ebcac3aa2c2c6c0aff74aa590cbc6a/src/assets/v1.4.1/create_call.json
|
|
64
|
+
const createCallAddress = "0x9b35Af71d77eaf8d7e40252370304687390A1A52"
|
|
65
|
+
|
|
66
|
+
const createCallAbi = parseAbi([
|
|
67
|
+
"function performCreate(uint256 value, bytes memory deploymentData) public returns (address newContract)",
|
|
68
|
+
"function performCreate2(uint256 value, bytes memory deploymentData, bytes32 salt) public returns (address newContract)"
|
|
69
|
+
])
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Default addresses for kernel smart account
|
|
73
|
+
*/
|
|
74
|
+
export const KERNEL_ADDRESSES: {
|
|
75
|
+
FACTORY_ADDRESS: Address
|
|
76
|
+
ENTRYPOINT_V0_6: Address
|
|
77
|
+
} = {
|
|
78
|
+
FACTORY_ADDRESS: "0xaee9762ce625e0a8f7b184670fb57c37bfe1d0f1",
|
|
79
|
+
ENTRYPOINT_V0_6: "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789"
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Get the account initialization code for a kernel smart account
|
|
84
|
+
* @param index
|
|
85
|
+
* @param factoryAddress
|
|
86
|
+
* @param ecdsaValidatorAddress
|
|
87
|
+
*/
|
|
88
|
+
const getAccountInitCode = async ({
|
|
89
|
+
index,
|
|
90
|
+
factoryAddress,
|
|
91
|
+
validatorAddress,
|
|
92
|
+
enableData
|
|
93
|
+
}: {
|
|
94
|
+
index: bigint
|
|
95
|
+
factoryAddress: Address
|
|
96
|
+
validatorAddress: Address
|
|
97
|
+
enableData: Hex
|
|
98
|
+
}): Promise<Hex> => {
|
|
99
|
+
// Build the account init code
|
|
100
|
+
return concatHex([
|
|
101
|
+
factoryAddress,
|
|
102
|
+
encodeFunctionData({
|
|
103
|
+
abi: KernelFactoryV2Abi,
|
|
104
|
+
functionName: "createAccount",
|
|
105
|
+
args: [validatorAddress, enableData, index]
|
|
106
|
+
}) as Hex
|
|
107
|
+
])
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Check the validity of an existing account address, or fetch the pre-deterministic account address for a kernel smart wallet
|
|
112
|
+
* @param client
|
|
113
|
+
* @param entryPoint
|
|
114
|
+
* @param initCodeProvider
|
|
115
|
+
*/
|
|
116
|
+
const getAccountAddress = async <
|
|
117
|
+
entryPoint extends EntryPoint,
|
|
118
|
+
TTransport extends Transport = Transport,
|
|
119
|
+
TChain extends Chain | undefined = Chain | undefined
|
|
120
|
+
>({
|
|
121
|
+
client,
|
|
122
|
+
entryPoint: entryPointAddress,
|
|
123
|
+
initCodeProvider
|
|
124
|
+
}: {
|
|
125
|
+
client: Client<TTransport, TChain, undefined>
|
|
126
|
+
initCodeProvider: () => Promise<Hex>
|
|
127
|
+
entryPoint: entryPoint
|
|
128
|
+
}): Promise<Address> => {
|
|
129
|
+
// Find the init code for this account
|
|
130
|
+
const initCode = await initCodeProvider()
|
|
131
|
+
|
|
132
|
+
// Get the sender address based on the init code
|
|
133
|
+
return getSenderAddress(client, {
|
|
134
|
+
initCode,
|
|
135
|
+
entryPoint: entryPointAddress as ENTRYPOINT_ADDRESS_V06_TYPE
|
|
136
|
+
})
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Build a kernel smart account from a private key, that use the ECDSA signer behind the scene
|
|
141
|
+
* @param client
|
|
142
|
+
* @param privateKey
|
|
143
|
+
* @param entryPoint
|
|
144
|
+
* @param index
|
|
145
|
+
* @param factoryAddress
|
|
146
|
+
* @param ecdsaValidatorAddress
|
|
147
|
+
* @param deployedAccountAddress
|
|
148
|
+
*/
|
|
149
|
+
export async function createKernelV2Account<
|
|
150
|
+
entryPoint extends EntryPoint,
|
|
151
|
+
TTransport extends Transport = Transport,
|
|
152
|
+
TChain extends Chain | undefined = Chain | undefined
|
|
153
|
+
>(
|
|
154
|
+
client: Client<TTransport, TChain, undefined>,
|
|
155
|
+
{
|
|
156
|
+
plugins,
|
|
157
|
+
entryPoint: entryPointAddress = ENTRYPOINT_ADDRESS_V06 as entryPoint,
|
|
158
|
+
index = 0n,
|
|
159
|
+
factoryAddress = KERNEL_ADDRESSES.FACTORY_ADDRESS,
|
|
160
|
+
deployedAccountAddress
|
|
161
|
+
}: {
|
|
162
|
+
plugins:
|
|
163
|
+
| KernelPluginManagerParams<entryPoint>
|
|
164
|
+
| KernelPluginManager<entryPoint>
|
|
165
|
+
entryPoint?: entryPoint
|
|
166
|
+
index?: bigint
|
|
167
|
+
factoryAddress?: Address
|
|
168
|
+
deployedAccountAddress?: Address
|
|
169
|
+
}
|
|
170
|
+
): Promise<KernelSmartAccount<entryPoint, TTransport, TChain>> {
|
|
171
|
+
const kernelPluginManager = isKernelPluginManager<entryPoint>(plugins)
|
|
172
|
+
? plugins
|
|
173
|
+
: await toKernelPluginManager(client, {
|
|
174
|
+
sudo: plugins.sudo,
|
|
175
|
+
regular: plugins.regular,
|
|
176
|
+
executorData: plugins.executorData,
|
|
177
|
+
pluginEnableSignature: plugins.pluginEnableSignature,
|
|
178
|
+
kernelVersion: "0.0.2" ?? plugins.kernelVersion,
|
|
179
|
+
entryPoint: entryPointAddress
|
|
180
|
+
})
|
|
181
|
+
// Helper to generate the init code for the smart account
|
|
182
|
+
const generateInitCode = async () => {
|
|
183
|
+
const validatorInitData =
|
|
184
|
+
await kernelPluginManager.getValidatorInitData()
|
|
185
|
+
return getAccountInitCode({
|
|
186
|
+
index,
|
|
187
|
+
factoryAddress,
|
|
188
|
+
validatorAddress: validatorInitData.validatorAddress,
|
|
189
|
+
enableData: validatorInitData.enableData
|
|
190
|
+
})
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Fetch account address and chain id
|
|
194
|
+
const accountAddress =
|
|
195
|
+
deployedAccountAddress ??
|
|
196
|
+
(await getAccountAddress<entryPoint, TTransport, TChain>({
|
|
197
|
+
client,
|
|
198
|
+
entryPoint: entryPointAddress,
|
|
199
|
+
initCodeProvider: generateInitCode
|
|
200
|
+
}))
|
|
201
|
+
|
|
202
|
+
if (!accountAddress) throw new Error("Account address not found")
|
|
203
|
+
|
|
204
|
+
// Build the EOA Signer
|
|
205
|
+
const account = toAccount({
|
|
206
|
+
address: accountAddress,
|
|
207
|
+
async signMessage({ message }) {
|
|
208
|
+
const messageHash = hashMessage(message)
|
|
209
|
+
const [isDeployed, signature] = await Promise.all([
|
|
210
|
+
isSmartAccountDeployed(client, accountAddress),
|
|
211
|
+
kernelPluginManager.signMessage({
|
|
212
|
+
message: {
|
|
213
|
+
raw: messageHash
|
|
214
|
+
}
|
|
215
|
+
})
|
|
216
|
+
])
|
|
217
|
+
return create6492Signature(isDeployed, signature)
|
|
218
|
+
},
|
|
219
|
+
async signTransaction(_, __) {
|
|
220
|
+
throw new SignTransactionNotSupportedBySmartAccount()
|
|
221
|
+
},
|
|
222
|
+
async signTypedData(typedData) {
|
|
223
|
+
const types = {
|
|
224
|
+
EIP712Domain: getTypesForEIP712Domain({
|
|
225
|
+
domain: typedData.domain
|
|
226
|
+
}),
|
|
227
|
+
...typedData.types
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// Need to do a runtime validation check on addresses, byte ranges, integer ranges, etc
|
|
231
|
+
// as we can't statically check this with TypeScript.
|
|
232
|
+
validateTypedData({
|
|
233
|
+
domain: typedData.domain,
|
|
234
|
+
message: typedData.message,
|
|
235
|
+
primaryType: typedData.primaryType,
|
|
236
|
+
types: types
|
|
237
|
+
} as TypedDataDefinition)
|
|
238
|
+
|
|
239
|
+
const typedHash = hashTypedData(typedData)
|
|
240
|
+
const [isDeployed, signature] = await Promise.all([
|
|
241
|
+
isSmartAccountDeployed(client, accountAddress),
|
|
242
|
+
kernelPluginManager.signMessage({
|
|
243
|
+
message: {
|
|
244
|
+
raw: typedHash
|
|
245
|
+
}
|
|
246
|
+
})
|
|
247
|
+
])
|
|
248
|
+
return create6492Signature(isDeployed, signature)
|
|
249
|
+
}
|
|
250
|
+
})
|
|
251
|
+
|
|
252
|
+
let smartAccountDeployed = await isSmartAccountDeployed(
|
|
253
|
+
client,
|
|
254
|
+
accountAddress
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
const create6492Signature = async (
|
|
258
|
+
isDeployed: boolean,
|
|
259
|
+
signature: Hash
|
|
260
|
+
): Promise<Hash> => {
|
|
261
|
+
if (isDeployed) {
|
|
262
|
+
return signature
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
const [factoryAddress, factoryCalldata] =
|
|
266
|
+
parseFactoryAddressAndCallDataFromAccountInitCode(
|
|
267
|
+
await generateInitCode()
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
return wrapSignatureWith6492({
|
|
271
|
+
factoryAddress,
|
|
272
|
+
factoryCalldata,
|
|
273
|
+
signature
|
|
274
|
+
})
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
return {
|
|
278
|
+
...account,
|
|
279
|
+
client: client,
|
|
280
|
+
publicKey: accountAddress,
|
|
281
|
+
entryPoint: entryPointAddress,
|
|
282
|
+
source: "kernelSmartAccount",
|
|
283
|
+
kernelPluginManager,
|
|
284
|
+
async getFactory() {
|
|
285
|
+
if (smartAccountDeployed) return undefined
|
|
286
|
+
|
|
287
|
+
smartAccountDeployed = await isSmartAccountDeployed(
|
|
288
|
+
client,
|
|
289
|
+
accountAddress
|
|
290
|
+
)
|
|
291
|
+
|
|
292
|
+
if (smartAccountDeployed) return undefined
|
|
293
|
+
|
|
294
|
+
return factoryAddress
|
|
295
|
+
},
|
|
296
|
+
|
|
297
|
+
async getFactoryData() {
|
|
298
|
+
if (smartAccountDeployed) return undefined
|
|
299
|
+
|
|
300
|
+
smartAccountDeployed = await isSmartAccountDeployed(
|
|
301
|
+
client,
|
|
302
|
+
accountAddress
|
|
303
|
+
)
|
|
304
|
+
|
|
305
|
+
if (smartAccountDeployed) return undefined
|
|
306
|
+
|
|
307
|
+
return parseFactoryAddressAndCallDataFromAccountInitCode(
|
|
308
|
+
await generateInitCode()
|
|
309
|
+
)[1]
|
|
310
|
+
},
|
|
311
|
+
|
|
312
|
+
// Get the nonce of the smart account
|
|
313
|
+
async getNonce() {
|
|
314
|
+
const key = await kernelPluginManager.getNonceKey()
|
|
315
|
+
return getAccountNonce(client, {
|
|
316
|
+
sender: accountAddress,
|
|
317
|
+
entryPoint: entryPointAddress,
|
|
318
|
+
key
|
|
319
|
+
})
|
|
320
|
+
},
|
|
321
|
+
|
|
322
|
+
// Sign a user operation
|
|
323
|
+
async signUserOperation(userOperation) {
|
|
324
|
+
return kernelPluginManager.signUserOperation(userOperation)
|
|
325
|
+
},
|
|
326
|
+
|
|
327
|
+
// Encode the init code
|
|
328
|
+
async getInitCode() {
|
|
329
|
+
if (smartAccountDeployed) return "0x"
|
|
330
|
+
|
|
331
|
+
smartAccountDeployed = await isSmartAccountDeployed(
|
|
332
|
+
client,
|
|
333
|
+
accountAddress
|
|
334
|
+
)
|
|
335
|
+
|
|
336
|
+
if (smartAccountDeployed) return "0x"
|
|
337
|
+
return generateInitCode()
|
|
338
|
+
},
|
|
339
|
+
|
|
340
|
+
// Encode the deploy call data
|
|
341
|
+
async encodeDeployCallData(_tx) {
|
|
342
|
+
return encodeFunctionData({
|
|
343
|
+
abi: KernelAccountV2Abi,
|
|
344
|
+
functionName: "execute",
|
|
345
|
+
args: [
|
|
346
|
+
createCallAddress,
|
|
347
|
+
0n,
|
|
348
|
+
encodeFunctionData({
|
|
349
|
+
abi: createCallAbi,
|
|
350
|
+
functionName: "performCreate",
|
|
351
|
+
args: [
|
|
352
|
+
0n,
|
|
353
|
+
encodeDeployData({
|
|
354
|
+
abi: _tx.abi,
|
|
355
|
+
bytecode: _tx.bytecode,
|
|
356
|
+
args: _tx.args
|
|
357
|
+
} as EncodeDeployDataParameters)
|
|
358
|
+
]
|
|
359
|
+
}),
|
|
360
|
+
1 // Delegate call
|
|
361
|
+
]
|
|
362
|
+
})
|
|
363
|
+
},
|
|
364
|
+
|
|
365
|
+
// Encode a call
|
|
366
|
+
async encodeCallData(_tx) {
|
|
367
|
+
const tx = _tx as KernelEncodeCallDataArgs
|
|
368
|
+
if (Array.isArray(tx)) {
|
|
369
|
+
const multiSendCallData = encodeFunctionData({
|
|
370
|
+
abi: multiSendAbi,
|
|
371
|
+
functionName: "multiSend",
|
|
372
|
+
args: [encodeMultiSend(tx)]
|
|
373
|
+
})
|
|
374
|
+
return encodeFunctionData({
|
|
375
|
+
abi: KernelAccountV2Abi,
|
|
376
|
+
functionName: "execute",
|
|
377
|
+
args: [MULTISEND_ADDRESS, 0n, multiSendCallData, 1]
|
|
378
|
+
})
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// Default to `call`
|
|
382
|
+
if (!tx.callType || tx.callType === "call") {
|
|
383
|
+
if (tx.to.toLowerCase() === accountAddress.toLowerCase()) {
|
|
384
|
+
return tx.data
|
|
385
|
+
}
|
|
386
|
+
return encodeFunctionData({
|
|
387
|
+
abi: KernelAccountV2Abi,
|
|
388
|
+
functionName: "execute",
|
|
389
|
+
args: [tx.to, tx.value, tx.data, 0]
|
|
390
|
+
})
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
if (tx.callType === "delegatecall") {
|
|
394
|
+
return encodeFunctionData({
|
|
395
|
+
abi: KernelAccountV2Abi,
|
|
396
|
+
functionName: "execute",
|
|
397
|
+
args: [tx.to, 0n, tx.data, 1]
|
|
398
|
+
})
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
throw new Error("Invalid call type")
|
|
402
|
+
},
|
|
403
|
+
|
|
404
|
+
// Get simple dummy signature
|
|
405
|
+
async getDummySignature(userOperation) {
|
|
406
|
+
return kernelPluginManager.getDummySignature(userOperation)
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
}
|
|
@@ -2,7 +2,7 @@ import { type Address, type Hex, encodePacked, toBytes } from "viem"
|
|
|
2
2
|
import {
|
|
3
3
|
type CallType,
|
|
4
4
|
type KernelEncodeCallDataArgs
|
|
5
|
-
} from "
|
|
5
|
+
} from "../../types/index.js"
|
|
6
6
|
|
|
7
7
|
export const MULTISEND_ADDRESS = "0x8ae01fcf7c655655ff2c6ef907b8b4718ab4e17c"
|
|
8
8
|
|
|
@@ -54,7 +54,8 @@ export async function toKernelPluginManager<
|
|
|
54
54
|
},
|
|
55
55
|
validAfter = 0,
|
|
56
56
|
validUntil = 0,
|
|
57
|
-
entryPoint: entryPointAddress
|
|
57
|
+
entryPoint: entryPointAddress,
|
|
58
|
+
kernelVersion
|
|
58
59
|
}: KernelPluginManagerParams<entryPoint>
|
|
59
60
|
): Promise<KernelPluginManager<entryPoint>> {
|
|
60
61
|
const entryPointVersion = getEntryPointVersion(entryPointAddress)
|
|
@@ -167,16 +168,14 @@ export async function toKernelPluginManager<
|
|
|
167
168
|
client,
|
|
168
169
|
accountAddress
|
|
169
170
|
)
|
|
170
|
-
const
|
|
171
|
-
entryPointAddress,
|
|
172
|
-
kernelImplAddr
|
|
173
|
-
)
|
|
171
|
+
const _kernelVersion =
|
|
172
|
+
kernelVersion ?? getKernelVersion(entryPointAddress, kernelImplAddr)
|
|
174
173
|
let ownerSig: Hex
|
|
175
174
|
if (entryPointVersion === "v0.6") {
|
|
176
175
|
ownerSig = await sudo.signTypedData({
|
|
177
176
|
domain: {
|
|
178
177
|
name: "Kernel",
|
|
179
|
-
version:
|
|
178
|
+
version: _kernelVersion,
|
|
180
179
|
chainId,
|
|
181
180
|
verifyingContract: accountAddress
|
|
182
181
|
},
|
|
@@ -213,7 +212,7 @@ export async function toKernelPluginManager<
|
|
|
213
212
|
ownerSig = await sudo.signTypedData({
|
|
214
213
|
domain: {
|
|
215
214
|
name: "Kernel",
|
|
216
|
-
version:
|
|
215
|
+
version: _kernelVersion,
|
|
217
216
|
chainId,
|
|
218
217
|
verifyingContract: accountAddress
|
|
219
218
|
},
|
package/constants.ts
CHANGED
|
@@ -36,3 +36,8 @@ export enum EXEC_TYPE {
|
|
|
36
36
|
DEFAULT = "0x00",
|
|
37
37
|
TRY_EXEC = "0x01"
|
|
38
38
|
}
|
|
39
|
+
|
|
40
|
+
// Safe's library for create and create2: https://github.com/safe-global/safe-contracts/blob/0acdd35a203299585438f53885df630f9d486a86/contracts/libraries/CreateCall.sol
|
|
41
|
+
// Address was found here: https://github.com/safe-global/safe-deployments/blob/926ec6bbe2ebcac3aa2c2c6c0aff74aa590cbc6a/src/assets/v1.4.1/create_call.json
|
|
42
|
+
export const safeCreateCallAddress =
|
|
43
|
+
"0x9b35Af71d77eaf8d7e40252370304687390A1A52"
|
package/index.ts
CHANGED
package/package.json
CHANGED
package/types/index.ts
CHANGED
package/types/kernel.ts
CHANGED
|
@@ -145,6 +145,7 @@ export type KernelPluginManagerParams<entryPoint extends EntryPoint> = {
|
|
|
145
145
|
validatorInitData?: ValidatorInitData
|
|
146
146
|
executorData?: ExecutorData
|
|
147
147
|
entryPoint: entryPoint
|
|
148
|
+
kernelVersion?: string
|
|
148
149
|
} & Partial<PluginValidityData>
|
|
149
150
|
|
|
150
151
|
export type ExecutorData = {
|
package/utils.ts
CHANGED
|
@@ -103,7 +103,13 @@ export const fixSignedData = (sig: Hex): Hex => {
|
|
|
103
103
|
return joined
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
export const getExecMode = (
|
|
106
|
+
export const getExecMode = ({
|
|
107
|
+
callType,
|
|
108
|
+
execType
|
|
109
|
+
}: {
|
|
110
|
+
callType: CALL_TYPE
|
|
111
|
+
execType: EXEC_TYPE
|
|
112
|
+
}): Hex => {
|
|
107
113
|
return concatHex([
|
|
108
114
|
callType, // 1 byte
|
|
109
115
|
execType, // 1 byte
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multisend.js","sourceRoot":"","sources":["../../../../accounts/kernel/v1/multisend.ts"],"names":[],"mappings":";;;AAAA,+BAAoE;AAMvD,QAAA,iBAAiB,GAAG,4CAA4C,CAAA;AAEhE,QAAA,YAAY,GAAG;IACxB;QACI,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;KACpD;CACJ,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,IAKnB,EAAU,EAAE;IACT,MAAM,IAAI,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,MAAM,OAAO,GAAG,IAAA,mBAAY,EACxB,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EACnD;QACI,IAAI,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE;QACP,IAAI,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACnB,IAAI,CAAC,IAAI;KACZ,CACJ,CAAA;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC3B,CAAC,CAAA;AAEM,MAAM,eAAe,GAAG,CAAC,KAA+B,EAAO,EAAE;IACpE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC5E,CAAC;IAED,OAAO,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;AAChE,CAAC,CAAA;AANY,QAAA,eAAe,mBAM3B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multisend.js","sourceRoot":"","sources":["../../../../accounts/kernel/v1/multisend.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,YAAY,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACpE,OAAO,EAGN,MAAM,yBAAyB,CAAA;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAAG,4CAA4C,CAAA;AAE7E,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB;QACI,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;KACpD;CACJ,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,IAKnB,EAAU,EAAE;IACT,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,MAAM,OAAO,GAAG,YAAY,CACxB,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EACnD;QACI,IAAI,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE;QACP,IAAI,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACnB,IAAI,CAAC,IAAI;KACZ,CACJ,CAAA;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC3B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAA+B,EAAO,EAAE;IACpE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC5E,CAAC;IAED,OAAO,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;AAChE,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multisend.d.ts","sourceRoot":"","sources":["../../../../accounts/kernel/v1/multisend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,GAAG,EAAyB,MAAM,MAAM,CAAA;AACpE,OAAO,EAEH,KAAK,wBAAwB,EAChC,MAAM,yBAAyB,CAAA;AAEhC,eAAO,MAAM,iBAAiB,+CAA+C,CAAA;AAE7E,eAAO,MAAM,YAAY;;;;;;;GAMxB,CAAA;AAsBD,eAAO,MAAM,eAAe,UAAW,wBAAwB,KAAG,GAMjE,CAAA"}
|
|
File without changes
|