@rocketh/deploy 0.10.1 → 0.10.3
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/CHANGELOG.md +15 -0
- package/dist/index.cjs +6 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @rocketh/deploy
|
|
2
2
|
|
|
3
|
+
## 0.10.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies
|
|
8
|
+
- rocketh@0.10.11
|
|
9
|
+
|
|
10
|
+
## 0.10.2
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- unnamedAccounts
|
|
15
|
+
- Updated dependencies
|
|
16
|
+
- rocketh@0.10.10
|
|
17
|
+
|
|
3
18
|
## 0.10.1
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -29,8 +29,8 @@ rocketh.extendEnvironment((env) => {
|
|
|
29
29
|
if (account.startsWith("0x")) {
|
|
30
30
|
address = account;
|
|
31
31
|
} else {
|
|
32
|
-
if (env.
|
|
33
|
-
address = env.
|
|
32
|
+
if (env.namedAccounts) {
|
|
33
|
+
address = env.namedAccounts[account];
|
|
34
34
|
if (!address) {
|
|
35
35
|
throw new Error(`no address for ${account}`);
|
|
36
36
|
}
|
|
@@ -100,8 +100,8 @@ rocketh.extendEnvironment((env) => {
|
|
|
100
100
|
if (account.startsWith("0x")) {
|
|
101
101
|
address = account;
|
|
102
102
|
} else {
|
|
103
|
-
if (env.
|
|
104
|
-
address = env.
|
|
103
|
+
if (env.namedAccounts) {
|
|
104
|
+
address = env.namedAccounts[account];
|
|
105
105
|
if (!address) {
|
|
106
106
|
throw new Error(`no address for ${account}`);
|
|
107
107
|
}
|
|
@@ -161,8 +161,8 @@ rocketh.extendEnvironment((env) => {
|
|
|
161
161
|
if (account.startsWith("0x")) {
|
|
162
162
|
address = account;
|
|
163
163
|
} else {
|
|
164
|
-
if (env.
|
|
165
|
-
address = env.
|
|
164
|
+
if (env.namedAccounts) {
|
|
165
|
+
address = env.namedAccounts[account];
|
|
166
166
|
if (!address) {
|
|
167
167
|
throw new Error(`no address for ${account}`);
|
|
168
168
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import {Abi} from 'abitype';\nimport {EIP1193DATA, EIP1193TransactionData} from 'eip-1193';\nimport type {\n\tArtifact,\n\tDeploymentConstruction,\n\tDeployment,\n\tEnvironment,\n\tPendingDeployment,\n\tPartialDeployment,\n\tPendingExecution,\n\tNamedSigner,\n} from 'rocketh';\nimport {extendEnvironment} from 'rocketh';\nimport {\n\tChain,\n\tContractFunctionArgs,\n\tContractFunctionName,\n\tDecodeFunctionResultReturnType,\n\tEncodeDeployDataParameters,\n\tReadContractParameters,\n\tWriteContractParameters,\n\tdecodeFunctionResult,\n\tencodeFunctionData,\n\tkeccak256,\n} from 'viem';\nimport {DeployContractParameters, encodeDeployData} from 'viem';\nimport {logs} from 'named-logs';\n\nconst logger = logs('rocketh-deploy');\n\ndeclare module 'rocketh' {\n\tinterface Environment {\n\t\tdeploy: DeployFunction;\n\t\texecute: ExecuteFunction;\n\t\tread: ReadFunction;\n\t\texecuteByName: ExecuteFunctionByName;\n\t\treadByName: ReadFunctionByName;\n\t}\n}\n\nexport type DeployFunction = <TAbi extends Abi, TChain extends Chain = Chain>(\n\tname: string,\n\targs: DeploymentConstruction<TAbi>,\n\toptions?: DeployOptions\n) => Promise<Deployment<TAbi> & {updated: boolean}>;\n\nexport type ExecuteFunction = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'nonpayable' | 'payable',\n\t\tTFunctionName\n\t>\n>(\n\tdeployment: Deployment<TAbi>,\n\targs: ExecutionArgs<TAbi, TFunctionName, TArgs>\n) => Promise<EIP1193DATA>;\n\nexport type ExecuteFunctionByName = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'nonpayable' | 'payable',\n\t\tTFunctionName\n\t>\n>(\n\tname: string,\n\targs: ExecutionArgs<TAbi, TFunctionName, TArgs>\n) => Promise<EIP1193DATA>;\n\nexport type ReadFunction = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'pure' | 'view',\n\t\tTFunctionName\n\t>\n>(\n\tdeployment: Deployment<TAbi>,\n\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n) => Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>>;\n\nexport type ReadFunctionByName = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'pure' | 'view',\n\t\tTFunctionName\n\t>\n>(\n\tname: string,\n\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n) => Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>>;\n\nexport type ExecutionArgs<\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'nonpayable' | 'payable',\n\t\tTFunctionName\n\t>\n> = Omit<WriteContractParameters<TAbi, TFunctionName, TArgs>, 'address' | 'abi' | 'account' | 'nonce' | 'chain'> & {\n\taccount: string;\n};\n\nexport type ReadingArgs<\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'pure' | 'view',\n\t\tTFunctionName\n\t>\n> = Omit<ReadContractParameters<TAbi, TFunctionName, TArgs>, 'address' | 'abi' | 'account' | 'nonce'> & {\n\taccount?: string;\n};\n\nexport type DeployOptions = {linkedData?: any; deterministic?: boolean | `0x${string}`} & (\n\t| {\n\t\t\tskipIfAlreadyDeployed?: boolean;\n\t }\n\t| {\n\t\t\talwaysOverride?: boolean;\n\t }\n);\n\nasync function broadcastTransaction(\n\tenv: Environment,\n\tsigner: NamedSigner,\n\tparams: [EIP1193TransactionData]\n): Promise<`0x${string}`> {\n\tif (signer.type === 'wallet' || signer.type === 'remote') {\n\t\treturn signer.signer.request({\n\t\t\tmethod: 'eth_sendTransaction',\n\t\t\tparams,\n\t\t});\n\t} else {\n\t\tconst rawTx = await signer.signer.request({\n\t\t\tmethod: 'eth_signTransaction',\n\t\t\tparams,\n\t\t});\n\n\t\treturn env.network.provider.request({\n\t\t\tmethod: 'eth_sendRawTransaction',\n\t\t\tparams: [rawTx],\n\t\t});\n\t}\n}\n\nextendEnvironment((env: Environment) => {\n\tasync function execute<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'nonpayable' | 'payable',\n\t\t\tTFunctionName\n\t\t>\n\t>(deployment: Deployment<TAbi>, args: ExecutionArgs<TAbi, TFunctionName, TArgs>) {\n\t\tconst {account, ...viemArgs} = args;\n\t\tlet address: `0x${string}`;\n\t\tif (account.startsWith('0x')) {\n\t\t\taddress = account as `0x${string}`;\n\t\t} else {\n\t\t\tif (env.accounts) {\n\t\t\t\taddress = env.accounts[account];\n\t\t\t\tif (!address) {\n\t\t\t\t\tthrow new Error(`no address for ${account}`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error(`no accounts setup, cannot get address for ${account}`);\n\t\t\t}\n\t\t}\n\n\t\tconst artifactToUse = deployment as unknown as Artifact<TAbi>;\n\t\tconst abi = artifactToUse.abi;\n\t\tconst calldata = encodeFunctionData<TAbi, TFunctionName>({\n\t\t\tabi,\n\t\t\tfunctionName: viemArgs.functionName,\n\t\t\targs: viemArgs.args,\n\t\t} as any);\n\n\t\tconst signer = env.addressSigners[address];\n\n\t\tconst txParam: EIP1193TransactionData = {\n\t\t\tto: deployment.address,\n\t\t\ttype: '0x2',\n\t\t\tfrom: address,\n\t\t\tchainId: `0x${env.network.chain.id.toString(16)}` as `0x${string}`,\n\t\t\tdata: calldata,\n\t\t\tgas: viemArgs.gas && (`0x${viemArgs.gas.toString(16)}` as `0x${string}`),\n\t\t\t// gasPrice: viemArgs.gasPrice && `0x${viemArgs.gasPrice.toString(16)}` as `0x${string}`,\n\t\t\tmaxFeePerGas: viemArgs.maxFeePerGas && (`0x${viemArgs.maxFeePerGas.toString(16)}` as `0x${string}`),\n\t\t\tmaxPriorityFeePerGas:\n\t\t\t\tviemArgs.maxPriorityFeePerGas && (`0x${viemArgs.maxPriorityFeePerGas.toString(16)}` as `0x${string}`),\n\t\t\t// nonce: viemArgs.nonce && (`0x${viemArgs.nonce.toString(16)}` as `0x${string}`),\n\t\t};\n\t\tif (viemArgs.value) {\n\t\t\ttxParam.value = `0x${viemArgs.value?.toString(16)}` as `0x${string}`;\n\t\t}\n\n\t\tlet txHash: `0x${string}`;\n\t\tif (signer.type === 'wallet' || signer.type === 'remote') {\n\t\t\ttxHash = await signer.signer.request({\n\t\t\t\tmethod: 'eth_sendTransaction',\n\t\t\t\tparams: [txParam],\n\t\t\t});\n\t\t} else {\n\t\t\tconst rawTx = await signer.signer.request({\n\t\t\t\tmethod: 'eth_signTransaction',\n\t\t\t\tparams: [txParam],\n\t\t\t});\n\n\t\t\ttxHash = await env.network.provider.request({\n\t\t\t\tmethod: 'eth_sendRawTransaction',\n\t\t\t\tparams: [rawTx],\n\t\t\t});\n\t\t}\n\n\t\tconst pendingExecution: PendingExecution = {\n\t\t\ttype: 'execution',\n\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\t// description, // TODO\n\t\t\t// TODO we should have the nonce, except for wallet like metamask where it is not usre you get the nonce you start with\n\t\t};\n\t\tawait env.savePendingExecution(pendingExecution);\n\t\treturn txHash;\n\t}\n\n\tasync function executeByName<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'nonpayable' | 'payable',\n\t\t\tTFunctionName\n\t\t>\n\t>(name: string, args: ExecutionArgs<TAbi, TFunctionName, TArgs>) {\n\t\tconst deployment = env.getOrNull<TAbi>(name);\n\t\tif (!deployment) {\n\t\t\tthrow new Error(`no deployment named ${name}`);\n\t\t}\n\n\t\treturn execute(deployment, args);\n\t}\n\n\tasync function read<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'pure' | 'view',\n\t\t\tTFunctionName\n\t\t>\n\t>(\n\t\tdeployment: Deployment<TAbi>,\n\t\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n\t): Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>> {\n\t\tconst {account, ...viemArgs} = args;\n\t\tlet address: `0x${string}` | undefined;\n\t\tif (account) {\n\t\t\tif (account.startsWith('0x')) {\n\t\t\t\taddress = account as `0x${string}`;\n\t\t\t} else {\n\t\t\t\tif (env.accounts) {\n\t\t\t\t\taddress = env.accounts[account];\n\t\t\t\t\tif (!address) {\n\t\t\t\t\t\tthrow new Error(`no address for ${account}`);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`no accounts setup, cannot get address for ${account}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst artifactToUse = deployment as unknown as Artifact<TAbi>;\n\t\tconst abi = artifactToUse.abi;\n\t\tconst calldata = encodeFunctionData<TAbi, TFunctionName>({\n\t\t\tabi,\n\t\t\tfunctionName: viemArgs.functionName,\n\t\t\targs: viemArgs.args,\n\t\t} as any);\n\n\t\tconst result: `0x${string}` = (await env.network.provider.request({\n\t\t\tmethod: 'eth_call',\n\t\t\tparams: [\n\t\t\t\t{\n\t\t\t\t\tto: deployment.address,\n\t\t\t\t\ttype: '0x2',\n\t\t\t\t\tfrom: address,\n\t\t\t\t\tchainId: `0x${env.network.chain.id.toString(16)}` as `0x${string}`,\n\t\t\t\t\tdata: calldata,\n\t\t\t\t\t// value: `0x${viemArgs.value?.toString(16)}` as `0x${string}`,\n\t\t\t\t},\n\t\t\t],\n\t\t})) as `0x${string}`;\n\n\t\tconst parsed = decodeFunctionResult<TAbi, TFunctionName>({\n\t\t\tabi,\n\t\t\tfunctionName: viemArgs.functionName,\n\t\t\tdata: result,\n\t\t\targs: viemArgs.args,\n\t\t} as any);\n\n\t\treturn parsed as DecodeFunctionResultReturnType<TAbi, TFunctionName>;\n\t}\n\n\tasync function readByName<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'pure' | 'view',\n\t\t\tTFunctionName\n\t\t>\n\t>(\n\t\tname: string,\n\t\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n\t): Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>> {\n\t\tconst deployment = env.getOrNull<TAbi>(name);\n\t\tif (!deployment) {\n\t\t\tthrow new Error(`no deployment named ${name}`);\n\t\t}\n\n\t\treturn read(deployment, args);\n\t}\n\tasync function deploy<TAbi extends Abi>(\n\t\tname: string,\n\t\targs: DeploymentConstruction<TAbi>,\n\t\toptions?: DeployOptions\n\t): Promise<Deployment<TAbi> & {updated: boolean}> {\n\t\tconst skipIfAlreadyDeployed = options && 'skipIfAlreadyDeployed' in options && options.skipIfAlreadyDeployed;\n\t\tconst allwaysOverride = options && 'allwaysOverride' in options && options.allwaysOverride;\n\n\t\tif (allwaysOverride && skipIfAlreadyDeployed) {\n\t\t\tthrow new Error(`conflicting options: \"allwaysOverride\" and \"skipIfAlreadyDeployed\"`);\n\t\t}\n\n\t\tconst existingDeployment = env.getOrNull(name);\n\t\tif (existingDeployment && skipIfAlreadyDeployed) {\n\t\t\tlogger.info(`deployment for ${name} at ${existingDeployment.address}, skipIfAlreadyDeployed: true => we skip`);\n\t\t\treturn {...(existingDeployment as Deployment<TAbi>), updated: false};\n\t\t}\n\n\t\tconst {account, artifact, ...viemArgs} = args;\n\t\tlet address: `0x${string}`;\n\t\tif (account.startsWith('0x')) {\n\t\t\taddress = account as `0x${string}`;\n\t\t} else {\n\t\t\tif (env.accounts) {\n\t\t\t\taddress = env.accounts[account];\n\t\t\t\tif (!address) {\n\t\t\t\t\tthrow new Error(`no address for ${account}`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error(`no accounts setup, cannot get address for ${account}`);\n\t\t\t}\n\t\t}\n\n\t\t// TODO throw specific error if artifact not found\n\t\tconst artifactToUse = (typeof artifact === 'string' ? env.artifacts[artifact] : artifact) as Artifact<TAbi>;\n\n\t\tconst bytecode = artifactToUse.bytecode;\n\t\tconst abi = artifactToUse.abi;\n\n\t\tconst argsToUse = {\n\t\t\t...viemArgs,\n\t\t\taccount,\n\t\t\tabi,\n\t\t\tbytecode,\n\t\t};\n\n\t\tconst calldata = encodeDeployData(argsToUse as any); // TODO any\n\t\tconst argsData = `0x${calldata.replace(bytecode, '')}` as `0x${string}`;\n\n\t\tif (existingDeployment) {\n\t\t\tlogger.info(`existing deployment for ${name} at ${existingDeployment.address}`);\n\t\t}\n\n\t\tif (existingDeployment && !allwaysOverride) {\n\t\t\tconst previousBytecode = existingDeployment.bytecode;\n\t\t\tconst previousArgsData = existingDeployment.argsData;\n\t\t\t// we assume cbor encoding of hash at the end\n\t\t\t// TODO option to remove it, can parse metadata but would rather avoid this here\n\t\t\tconst last2Bytes = previousBytecode.slice(-4);\n\t\t\tconst cborLength = parseInt(last2Bytes, 16);\n\t\t\tconst previousBytecodeWithoutCBOR = previousBytecode.slice(0, -cborLength * 2);\n\t\t\tconst newBytecodeWithoutCBOR = bytecode.slice(0, -cborLength * 2);\n\t\t\tif (previousBytecodeWithoutCBOR === newBytecodeWithoutCBOR && previousArgsData === argsData) {\n\t\t\t\treturn {...(existingDeployment as Deployment<TAbi>), updated: false};\n\t\t\t} else {\n\t\t\t\t// logger.info(`-------------- WITHOUT CBOR---------------------`);\n\t\t\t\t// logger.info(previousBytecodeWithoutCBOR);\n\t\t\t\t// logger.info(newBytecodeWithoutCBOR);\n\t\t\t\t// logger.info(`-----------------------------------`);\n\t\t\t\t// logger.info(`-------------- ARGS DATA ---------------------`);\n\t\t\t\t// logger.info(previousArgsData);\n\t\t\t\t// logger.info(argsData);\n\t\t\t\t// logger.info(`-----------------------------------`);\n\t\t\t}\n\t\t}\n\n\t\tconst partialDeployment: PartialDeployment<TAbi> = {\n\t\t\t...artifactToUse,\n\t\t\targsData,\n\t\t\tlinkedData: options?.linkedData,\n\t\t};\n\n\t\tconst signer = env.addressSigners[address];\n\n\t\tconst chainId = `0x${env.network.chain.id.toString(16)}` as `0x${string}`;\n\t\tconst maxFeePerGas = viemArgs.maxFeePerGas && (`0x${viemArgs.maxFeePerGas.toString(16)}` as `0x${string}`);\n\t\tconst maxPriorityFeePerGas =\n\t\t\tviemArgs.maxPriorityFeePerGas && (`0x${viemArgs.maxPriorityFeePerGas.toString(16)}` as `0x${string}`);\n\n\t\tconst params: [EIP1193TransactionData] = [\n\t\t\t{\n\t\t\t\ttype: '0x2',\n\t\t\t\tfrom: address,\n\t\t\t\tchainId,\n\t\t\t\tdata: calldata,\n\t\t\t\tgas: viemArgs.gas && (`0x${viemArgs.gas.toString(16)}` as `0x${string}`),\n\t\t\t\tmaxFeePerGas,\n\t\t\t\tmaxPriorityFeePerGas,\n\t\t\t\t// gasPrice: viemArgs.gasPrice && `0x${viemArgs.gasPrice.toString(16)}` as `0x${string}`,\n\t\t\t\t// value: `0x${viemArgs.value?.toString(16)}` as `0x${string}`,\n\t\t\t\t// nonce: viemArgs.nonce && (`0x${viemArgs.nonce.toString(16)}` as `0x${string}`),\n\t\t\t},\n\t\t];\n\n\t\tlet expectedAddress: `0x${string}` | undefined = undefined;\n\t\tif (options?.deterministic) {\n\t\t\t// TODO make these configurable\n\t\t\tconst deterministicFactoryAddress = `0x4e59b44847b379578588920ca78fbf26c0b4956c`;\n\t\t\tconst deterministicFactoryDeployerAddress = `0x3fab184622dc19b6109349b94811493bf2a45362`;\n\t\t\tconst factoryDeploymentData = `0xf8a58085174876e800830186a08080b853604580600e600039806000f350fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf31ba02222222222222222222222222222222222222222222222222222222222222222a02222222222222222222222222222222222222222222222222222222222222222`;\n\n\t\t\tconst code = await env.network.provider.request({\n\t\t\t\tmethod: 'eth_getCode',\n\t\t\t\tparams: [deterministicFactoryAddress, 'latest'],\n\t\t\t});\n\t\t\tif (code === '0x') {\n\t\t\t\tconst balanceHexString = await env.network.provider.request({\n\t\t\t\t\tmethod: 'eth_getBalance',\n\t\t\t\t\tparams: [deterministicFactoryDeployerAddress, 'latest'],\n\t\t\t\t});\n\t\t\t\tconst balance = BigInt(balanceHexString);\n\t\t\t\tif (balance < 10000000000000000n) {\n\t\t\t\t\tconst need = 10000000000000000n - balance;\n\t\t\t\t\tconst balanceToSend = `0x${need.toString(16)}` as `0x${string}`;\n\t\t\t\t\tconst txHash = await broadcastTransaction(env, signer, [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: '0x2',\n\t\t\t\t\t\t\tchainId,\n\t\t\t\t\t\t\tfrom: address,\n\t\t\t\t\t\t\tto: deterministicFactoryDeployerAddress,\n\t\t\t\t\t\t\tvalue: balanceToSend,\n\t\t\t\t\t\t\tgas: `0x${BigInt(21000).toString(16)}`,\n\t\t\t\t\t\t\tmaxFeePerGas,\n\t\t\t\t\t\t\tmaxPriorityFeePerGas,\n\t\t\t\t\t\t},\n\t\t\t\t\t]);\n\t\t\t\t\tawait env.savePendingExecution({\n\t\t\t\t\t\ttype: 'execution', // TODO different type ?\n\t\t\t\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst txHash = await env.network.provider.request({\n\t\t\t\t\tmethod: 'eth_sendRawTransaction',\n\t\t\t\t\tparams: [factoryDeploymentData],\n\t\t\t\t});\n\t\t\t\tawait env.savePendingExecution({\n\t\t\t\t\ttype: 'execution', // TODO different type ?\n\t\t\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// prepending the salt\n\t\t\tconst salt = (\n\t\t\t\ttypeof options.deterministic === 'string'\n\t\t\t\t\t? `0x${options.deterministic.slice(2).padStart(64, '0')}`\n\t\t\t\t\t: '0x0000000000000000000000000000000000000000000000000000000000000000'\n\t\t\t) as `0x${string}`;\n\n\t\t\tconst bytecode = params[0].data || '0x';\n\n\t\t\texpectedAddress = ('0x' +\n\t\t\t\tkeccak256(`0xff${deterministicFactoryAddress.slice(2)}${salt.slice(2)}${keccak256(bytecode).slice(2)}`).slice(\n\t\t\t\t\t-40\n\t\t\t\t)) as `0x${string}`;\n\n\t\t\tconst codeAlreadyDeployed = await env.network.provider.request({\n\t\t\t\tmethod: 'eth_getCode',\n\t\t\t\tparams: [expectedAddress, 'latest'],\n\t\t\t});\n\n\t\t\tif (codeAlreadyDeployed !== '0x') {\n\t\t\t\tenv.showMessage(`contract was already deterministically deployed at ${expectedAddress}`);\n\t\t\t\tconst deployment = await env.save(name, {\n\t\t\t\t\taddress: expectedAddress,\n\t\t\t\t\t...partialDeployment,\n\t\t\t\t});\n\t\t\t\treturn {...(deployment as Deployment<TAbi>), updated: true};\n\t\t\t}\n\n\t\t\tparams[0].data = (salt + (bytecode.slice(2) || '')) as `0x${string}`;\n\t\t\tparams[0].to = deterministicFactoryAddress;\n\t\t}\n\n\t\tconst txHash = await broadcastTransaction(env, signer, params);\n\n\t\tconst pendingDeployment: PendingDeployment<TAbi> = {\n\t\t\ttype: 'deployment',\n\t\t\texpectedAddress,\n\t\t\tpartialDeployment,\n\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\tname,\n\t\t\t// TODO we should have the nonce, except for wallet like metamask where it is not usre you get the nonce you start with\n\t\t};\n\t\tconst deployment = await env.savePendingDeployment(pendingDeployment);\n\t\treturn {...(deployment as Deployment<TAbi>), updated: true};\n\t}\n\n\tenv.deploy = deploy;\n\tenv.execute = execute;\n\tenv.executeByName = executeByName;\n\tenv.read = read;\n\tenv.readByName = readByName;\n\treturn env;\n});\n"],"names":["logs","extendEnvironment","encodeFunctionData","decodeFunctionResult","encodeDeployData","keccak256"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import {Abi} from 'abitype';\nimport {EIP1193DATA, EIP1193TransactionData} from 'eip-1193';\nimport type {\n\tArtifact,\n\tDeploymentConstruction,\n\tDeployment,\n\tEnvironment,\n\tPendingDeployment,\n\tPartialDeployment,\n\tPendingExecution,\n\tSigner,\n} from 'rocketh';\nimport {extendEnvironment} from 'rocketh';\nimport {\n\tChain,\n\tContractFunctionArgs,\n\tContractFunctionName,\n\tDecodeFunctionResultReturnType,\n\tEncodeDeployDataParameters,\n\tReadContractParameters,\n\tWriteContractParameters,\n\tdecodeFunctionResult,\n\tencodeFunctionData,\n\tkeccak256,\n} from 'viem';\nimport {DeployContractParameters, encodeDeployData} from 'viem';\nimport {logs} from 'named-logs';\n\nconst logger = logs('rocketh-deploy');\n\ndeclare module 'rocketh' {\n\tinterface Environment {\n\t\tdeploy: DeployFunction;\n\t\texecute: ExecuteFunction;\n\t\tread: ReadFunction;\n\t\texecuteByName: ExecuteFunctionByName;\n\t\treadByName: ReadFunctionByName;\n\t}\n}\n\nexport type DeployFunction = <TAbi extends Abi, TChain extends Chain = Chain>(\n\tname: string,\n\targs: DeploymentConstruction<TAbi>,\n\toptions?: DeployOptions\n) => Promise<Deployment<TAbi> & {updated: boolean}>;\n\nexport type ExecuteFunction = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'nonpayable' | 'payable',\n\t\tTFunctionName\n\t>\n>(\n\tdeployment: Deployment<TAbi>,\n\targs: ExecutionArgs<TAbi, TFunctionName, TArgs>\n) => Promise<EIP1193DATA>;\n\nexport type ExecuteFunctionByName = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'nonpayable' | 'payable',\n\t\tTFunctionName\n\t>\n>(\n\tname: string,\n\targs: ExecutionArgs<TAbi, TFunctionName, TArgs>\n) => Promise<EIP1193DATA>;\n\nexport type ReadFunction = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'pure' | 'view',\n\t\tTFunctionName\n\t>\n>(\n\tdeployment: Deployment<TAbi>,\n\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n) => Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>>;\n\nexport type ReadFunctionByName = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'pure' | 'view',\n\t\tTFunctionName\n\t>\n>(\n\tname: string,\n\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n) => Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>>;\n\nexport type ExecutionArgs<\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'nonpayable' | 'payable',\n\t\tTFunctionName\n\t>\n> = Omit<WriteContractParameters<TAbi, TFunctionName, TArgs>, 'address' | 'abi' | 'account' | 'nonce' | 'chain'> & {\n\taccount: string;\n};\n\nexport type ReadingArgs<\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'pure' | 'view',\n\t\tTFunctionName\n\t>\n> = Omit<ReadContractParameters<TAbi, TFunctionName, TArgs>, 'address' | 'abi' | 'account' | 'nonce'> & {\n\taccount?: string;\n};\n\nexport type DeployOptions = {linkedData?: any; deterministic?: boolean | `0x${string}`} & (\n\t| {\n\t\t\tskipIfAlreadyDeployed?: boolean;\n\t }\n\t| {\n\t\t\talwaysOverride?: boolean;\n\t }\n);\n\nasync function broadcastTransaction(\n\tenv: Environment,\n\tsigner: Signer,\n\tparams: [EIP1193TransactionData]\n): Promise<`0x${string}`> {\n\tif (signer.type === 'wallet' || signer.type === 'remote') {\n\t\treturn signer.signer.request({\n\t\t\tmethod: 'eth_sendTransaction',\n\t\t\tparams,\n\t\t});\n\t} else {\n\t\tconst rawTx = await signer.signer.request({\n\t\t\tmethod: 'eth_signTransaction',\n\t\t\tparams,\n\t\t});\n\n\t\treturn env.network.provider.request({\n\t\t\tmethod: 'eth_sendRawTransaction',\n\t\t\tparams: [rawTx],\n\t\t});\n\t}\n}\n\nextendEnvironment((env: Environment) => {\n\tasync function execute<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'nonpayable' | 'payable',\n\t\t\tTFunctionName\n\t\t>\n\t>(deployment: Deployment<TAbi>, args: ExecutionArgs<TAbi, TFunctionName, TArgs>) {\n\t\tconst {account, ...viemArgs} = args;\n\t\tlet address: `0x${string}`;\n\t\tif (account.startsWith('0x')) {\n\t\t\taddress = account as `0x${string}`;\n\t\t} else {\n\t\t\tif (env.namedAccounts) {\n\t\t\t\taddress = env.namedAccounts[account];\n\t\t\t\tif (!address) {\n\t\t\t\t\tthrow new Error(`no address for ${account}`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error(`no accounts setup, cannot get address for ${account}`);\n\t\t\t}\n\t\t}\n\n\t\tconst artifactToUse = deployment as unknown as Artifact<TAbi>;\n\t\tconst abi = artifactToUse.abi;\n\t\tconst calldata = encodeFunctionData<TAbi, TFunctionName>({\n\t\t\tabi,\n\t\t\tfunctionName: viemArgs.functionName,\n\t\t\targs: viemArgs.args,\n\t\t} as any);\n\n\t\tconst signer = env.addressSigners[address];\n\n\t\tconst txParam: EIP1193TransactionData = {\n\t\t\tto: deployment.address,\n\t\t\ttype: '0x2',\n\t\t\tfrom: address,\n\t\t\tchainId: `0x${env.network.chain.id.toString(16)}` as `0x${string}`,\n\t\t\tdata: calldata,\n\t\t\tgas: viemArgs.gas && (`0x${viemArgs.gas.toString(16)}` as `0x${string}`),\n\t\t\t// gasPrice: viemArgs.gasPrice && `0x${viemArgs.gasPrice.toString(16)}` as `0x${string}`,\n\t\t\tmaxFeePerGas: viemArgs.maxFeePerGas && (`0x${viemArgs.maxFeePerGas.toString(16)}` as `0x${string}`),\n\t\t\tmaxPriorityFeePerGas:\n\t\t\t\tviemArgs.maxPriorityFeePerGas && (`0x${viemArgs.maxPriorityFeePerGas.toString(16)}` as `0x${string}`),\n\t\t\t// nonce: viemArgs.nonce && (`0x${viemArgs.nonce.toString(16)}` as `0x${string}`),\n\t\t};\n\t\tif (viemArgs.value) {\n\t\t\ttxParam.value = `0x${viemArgs.value?.toString(16)}` as `0x${string}`;\n\t\t}\n\n\t\tlet txHash: `0x${string}`;\n\t\tif (signer.type === 'wallet' || signer.type === 'remote') {\n\t\t\ttxHash = await signer.signer.request({\n\t\t\t\tmethod: 'eth_sendTransaction',\n\t\t\t\tparams: [txParam],\n\t\t\t});\n\t\t} else {\n\t\t\tconst rawTx = await signer.signer.request({\n\t\t\t\tmethod: 'eth_signTransaction',\n\t\t\t\tparams: [txParam],\n\t\t\t});\n\n\t\t\ttxHash = await env.network.provider.request({\n\t\t\t\tmethod: 'eth_sendRawTransaction',\n\t\t\t\tparams: [rawTx],\n\t\t\t});\n\t\t}\n\n\t\tconst pendingExecution: PendingExecution = {\n\t\t\ttype: 'execution',\n\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\t// description, // TODO\n\t\t\t// TODO we should have the nonce, except for wallet like metamask where it is not usre you get the nonce you start with\n\t\t};\n\t\tawait env.savePendingExecution(pendingExecution);\n\t\treturn txHash;\n\t}\n\n\tasync function executeByName<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'nonpayable' | 'payable',\n\t\t\tTFunctionName\n\t\t>\n\t>(name: string, args: ExecutionArgs<TAbi, TFunctionName, TArgs>) {\n\t\tconst deployment = env.getOrNull<TAbi>(name);\n\t\tif (!deployment) {\n\t\t\tthrow new Error(`no deployment named ${name}`);\n\t\t}\n\n\t\treturn execute(deployment, args);\n\t}\n\n\tasync function read<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'pure' | 'view',\n\t\t\tTFunctionName\n\t\t>\n\t>(\n\t\tdeployment: Deployment<TAbi>,\n\t\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n\t): Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>> {\n\t\tconst {account, ...viemArgs} = args;\n\t\tlet address: `0x${string}` | undefined;\n\t\tif (account) {\n\t\t\tif (account.startsWith('0x')) {\n\t\t\t\taddress = account as `0x${string}`;\n\t\t\t} else {\n\t\t\t\tif (env.namedAccounts) {\n\t\t\t\t\taddress = env.namedAccounts[account];\n\t\t\t\t\tif (!address) {\n\t\t\t\t\t\tthrow new Error(`no address for ${account}`);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`no accounts setup, cannot get address for ${account}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst artifactToUse = deployment as unknown as Artifact<TAbi>;\n\t\tconst abi = artifactToUse.abi;\n\t\tconst calldata = encodeFunctionData<TAbi, TFunctionName>({\n\t\t\tabi,\n\t\t\tfunctionName: viemArgs.functionName,\n\t\t\targs: viemArgs.args,\n\t\t} as any);\n\n\t\tconst result: `0x${string}` = (await env.network.provider.request({\n\t\t\tmethod: 'eth_call',\n\t\t\tparams: [\n\t\t\t\t{\n\t\t\t\t\tto: deployment.address,\n\t\t\t\t\ttype: '0x2',\n\t\t\t\t\tfrom: address,\n\t\t\t\t\tchainId: `0x${env.network.chain.id.toString(16)}` as `0x${string}`,\n\t\t\t\t\tdata: calldata,\n\t\t\t\t\t// value: `0x${viemArgs.value?.toString(16)}` as `0x${string}`,\n\t\t\t\t},\n\t\t\t],\n\t\t})) as `0x${string}`;\n\n\t\tconst parsed = decodeFunctionResult<TAbi, TFunctionName>({\n\t\t\tabi,\n\t\t\tfunctionName: viemArgs.functionName,\n\t\t\tdata: result,\n\t\t\targs: viemArgs.args,\n\t\t} as any);\n\n\t\treturn parsed as DecodeFunctionResultReturnType<TAbi, TFunctionName>;\n\t}\n\n\tasync function readByName<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'pure' | 'view',\n\t\t\tTFunctionName\n\t\t>\n\t>(\n\t\tname: string,\n\t\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n\t): Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>> {\n\t\tconst deployment = env.getOrNull<TAbi>(name);\n\t\tif (!deployment) {\n\t\t\tthrow new Error(`no deployment named ${name}`);\n\t\t}\n\n\t\treturn read(deployment, args);\n\t}\n\tasync function deploy<TAbi extends Abi>(\n\t\tname: string,\n\t\targs: DeploymentConstruction<TAbi>,\n\t\toptions?: DeployOptions\n\t): Promise<Deployment<TAbi> & {updated: boolean}> {\n\t\tconst skipIfAlreadyDeployed = options && 'skipIfAlreadyDeployed' in options && options.skipIfAlreadyDeployed;\n\t\tconst allwaysOverride = options && 'allwaysOverride' in options && options.allwaysOverride;\n\n\t\tif (allwaysOverride && skipIfAlreadyDeployed) {\n\t\t\tthrow new Error(`conflicting options: \"allwaysOverride\" and \"skipIfAlreadyDeployed\"`);\n\t\t}\n\n\t\tconst existingDeployment = env.getOrNull(name);\n\t\tif (existingDeployment && skipIfAlreadyDeployed) {\n\t\t\tlogger.info(`deployment for ${name} at ${existingDeployment.address}, skipIfAlreadyDeployed: true => we skip`);\n\t\t\treturn {...(existingDeployment as Deployment<TAbi>), updated: false};\n\t\t}\n\n\t\tconst {account, artifact, ...viemArgs} = args;\n\t\tlet address: `0x${string}`;\n\t\tif (account.startsWith('0x')) {\n\t\t\taddress = account as `0x${string}`;\n\t\t} else {\n\t\t\tif (env.namedAccounts) {\n\t\t\t\taddress = env.namedAccounts[account];\n\t\t\t\tif (!address) {\n\t\t\t\t\tthrow new Error(`no address for ${account}`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error(`no accounts setup, cannot get address for ${account}`);\n\t\t\t}\n\t\t}\n\n\t\t// TODO throw specific error if artifact not found\n\t\tconst artifactToUse = (typeof artifact === 'string' ? env.artifacts[artifact] : artifact) as Artifact<TAbi>;\n\n\t\tconst bytecode = artifactToUse.bytecode;\n\t\tconst abi = artifactToUse.abi;\n\n\t\tconst argsToUse = {\n\t\t\t...viemArgs,\n\t\t\taccount,\n\t\t\tabi,\n\t\t\tbytecode,\n\t\t};\n\n\t\tconst calldata = encodeDeployData(argsToUse as any); // TODO any\n\t\tconst argsData = `0x${calldata.replace(bytecode, '')}` as `0x${string}`;\n\n\t\tif (existingDeployment) {\n\t\t\tlogger.info(`existing deployment for ${name} at ${existingDeployment.address}`);\n\t\t}\n\n\t\tif (existingDeployment && !allwaysOverride) {\n\t\t\tconst previousBytecode = existingDeployment.bytecode;\n\t\t\tconst previousArgsData = existingDeployment.argsData;\n\t\t\t// we assume cbor encoding of hash at the end\n\t\t\t// TODO option to remove it, can parse metadata but would rather avoid this here\n\t\t\tconst last2Bytes = previousBytecode.slice(-4);\n\t\t\tconst cborLength = parseInt(last2Bytes, 16);\n\t\t\tconst previousBytecodeWithoutCBOR = previousBytecode.slice(0, -cborLength * 2);\n\t\t\tconst newBytecodeWithoutCBOR = bytecode.slice(0, -cborLength * 2);\n\t\t\tif (previousBytecodeWithoutCBOR === newBytecodeWithoutCBOR && previousArgsData === argsData) {\n\t\t\t\treturn {...(existingDeployment as Deployment<TAbi>), updated: false};\n\t\t\t} else {\n\t\t\t\t// logger.info(`-------------- WITHOUT CBOR---------------------`);\n\t\t\t\t// logger.info(previousBytecodeWithoutCBOR);\n\t\t\t\t// logger.info(newBytecodeWithoutCBOR);\n\t\t\t\t// logger.info(`-----------------------------------`);\n\t\t\t\t// logger.info(`-------------- ARGS DATA ---------------------`);\n\t\t\t\t// logger.info(previousArgsData);\n\t\t\t\t// logger.info(argsData);\n\t\t\t\t// logger.info(`-----------------------------------`);\n\t\t\t}\n\t\t}\n\n\t\tconst partialDeployment: PartialDeployment<TAbi> = {\n\t\t\t...artifactToUse,\n\t\t\targsData,\n\t\t\tlinkedData: options?.linkedData,\n\t\t};\n\n\t\tconst signer = env.addressSigners[address];\n\n\t\tconst chainId = `0x${env.network.chain.id.toString(16)}` as `0x${string}`;\n\t\tconst maxFeePerGas = viemArgs.maxFeePerGas && (`0x${viemArgs.maxFeePerGas.toString(16)}` as `0x${string}`);\n\t\tconst maxPriorityFeePerGas =\n\t\t\tviemArgs.maxPriorityFeePerGas && (`0x${viemArgs.maxPriorityFeePerGas.toString(16)}` as `0x${string}`);\n\n\t\tconst params: [EIP1193TransactionData] = [\n\t\t\t{\n\t\t\t\ttype: '0x2',\n\t\t\t\tfrom: address,\n\t\t\t\tchainId,\n\t\t\t\tdata: calldata,\n\t\t\t\tgas: viemArgs.gas && (`0x${viemArgs.gas.toString(16)}` as `0x${string}`),\n\t\t\t\tmaxFeePerGas,\n\t\t\t\tmaxPriorityFeePerGas,\n\t\t\t\t// gasPrice: viemArgs.gasPrice && `0x${viemArgs.gasPrice.toString(16)}` as `0x${string}`,\n\t\t\t\t// value: `0x${viemArgs.value?.toString(16)}` as `0x${string}`,\n\t\t\t\t// nonce: viemArgs.nonce && (`0x${viemArgs.nonce.toString(16)}` as `0x${string}`),\n\t\t\t},\n\t\t];\n\n\t\tlet expectedAddress: `0x${string}` | undefined = undefined;\n\t\tif (options?.deterministic) {\n\t\t\t// TODO make these configurable\n\t\t\tconst deterministicFactoryAddress = `0x4e59b44847b379578588920ca78fbf26c0b4956c`;\n\t\t\tconst deterministicFactoryDeployerAddress = `0x3fab184622dc19b6109349b94811493bf2a45362`;\n\t\t\tconst factoryDeploymentData = `0xf8a58085174876e800830186a08080b853604580600e600039806000f350fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf31ba02222222222222222222222222222222222222222222222222222222222222222a02222222222222222222222222222222222222222222222222222222222222222`;\n\n\t\t\tconst code = await env.network.provider.request({\n\t\t\t\tmethod: 'eth_getCode',\n\t\t\t\tparams: [deterministicFactoryAddress, 'latest'],\n\t\t\t});\n\t\t\tif (code === '0x') {\n\t\t\t\tconst balanceHexString = await env.network.provider.request({\n\t\t\t\t\tmethod: 'eth_getBalance',\n\t\t\t\t\tparams: [deterministicFactoryDeployerAddress, 'latest'],\n\t\t\t\t});\n\t\t\t\tconst balance = BigInt(balanceHexString);\n\t\t\t\tif (balance < 10000000000000000n) {\n\t\t\t\t\tconst need = 10000000000000000n - balance;\n\t\t\t\t\tconst balanceToSend = `0x${need.toString(16)}` as `0x${string}`;\n\t\t\t\t\tconst txHash = await broadcastTransaction(env, signer, [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: '0x2',\n\t\t\t\t\t\t\tchainId,\n\t\t\t\t\t\t\tfrom: address,\n\t\t\t\t\t\t\tto: deterministicFactoryDeployerAddress,\n\t\t\t\t\t\t\tvalue: balanceToSend,\n\t\t\t\t\t\t\tgas: `0x${BigInt(21000).toString(16)}`,\n\t\t\t\t\t\t\tmaxFeePerGas,\n\t\t\t\t\t\t\tmaxPriorityFeePerGas,\n\t\t\t\t\t\t},\n\t\t\t\t\t]);\n\t\t\t\t\tawait env.savePendingExecution({\n\t\t\t\t\t\ttype: 'execution', // TODO different type ?\n\t\t\t\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst txHash = await env.network.provider.request({\n\t\t\t\t\tmethod: 'eth_sendRawTransaction',\n\t\t\t\t\tparams: [factoryDeploymentData],\n\t\t\t\t});\n\t\t\t\tawait env.savePendingExecution({\n\t\t\t\t\ttype: 'execution', // TODO different type ?\n\t\t\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// prepending the salt\n\t\t\tconst salt = (\n\t\t\t\ttypeof options.deterministic === 'string'\n\t\t\t\t\t? `0x${options.deterministic.slice(2).padStart(64, '0')}`\n\t\t\t\t\t: '0x0000000000000000000000000000000000000000000000000000000000000000'\n\t\t\t) as `0x${string}`;\n\n\t\t\tconst bytecode = params[0].data || '0x';\n\n\t\t\texpectedAddress = ('0x' +\n\t\t\t\tkeccak256(`0xff${deterministicFactoryAddress.slice(2)}${salt.slice(2)}${keccak256(bytecode).slice(2)}`).slice(\n\t\t\t\t\t-40\n\t\t\t\t)) as `0x${string}`;\n\n\t\t\tconst codeAlreadyDeployed = await env.network.provider.request({\n\t\t\t\tmethod: 'eth_getCode',\n\t\t\t\tparams: [expectedAddress, 'latest'],\n\t\t\t});\n\n\t\t\tif (codeAlreadyDeployed !== '0x') {\n\t\t\t\tenv.showMessage(`contract was already deterministically deployed at ${expectedAddress}`);\n\t\t\t\tconst deployment = await env.save(name, {\n\t\t\t\t\taddress: expectedAddress,\n\t\t\t\t\t...partialDeployment,\n\t\t\t\t});\n\t\t\t\treturn {...(deployment as Deployment<TAbi>), updated: true};\n\t\t\t}\n\n\t\t\tparams[0].data = (salt + (bytecode.slice(2) || '')) as `0x${string}`;\n\t\t\tparams[0].to = deterministicFactoryAddress;\n\t\t}\n\n\t\tconst txHash = await broadcastTransaction(env, signer, params);\n\n\t\tconst pendingDeployment: PendingDeployment<TAbi> = {\n\t\t\ttype: 'deployment',\n\t\t\texpectedAddress,\n\t\t\tpartialDeployment,\n\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\tname,\n\t\t\t// TODO we should have the nonce, except for wallet like metamask where it is not usre you get the nonce you start with\n\t\t};\n\t\tconst deployment = await env.savePendingDeployment(pendingDeployment);\n\t\treturn {...(deployment as Deployment<TAbi>), updated: true};\n\t}\n\n\tenv.deploy = deploy;\n\tenv.execute = execute;\n\tenv.executeByName = executeByName;\n\tenv.read = read;\n\tenv.readByName = readByName;\n\treturn env;\n});\n"],"names":["logs","extendEnvironment","encodeFunctionData","decodeFunctionResult","encodeDeployData","keccak256"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -27,8 +27,8 @@ extendEnvironment((env) => {
|
|
|
27
27
|
if (account.startsWith("0x")) {
|
|
28
28
|
address = account;
|
|
29
29
|
} else {
|
|
30
|
-
if (env.
|
|
31
|
-
address = env.
|
|
30
|
+
if (env.namedAccounts) {
|
|
31
|
+
address = env.namedAccounts[account];
|
|
32
32
|
if (!address) {
|
|
33
33
|
throw new Error(`no address for ${account}`);
|
|
34
34
|
}
|
|
@@ -98,8 +98,8 @@ extendEnvironment((env) => {
|
|
|
98
98
|
if (account.startsWith("0x")) {
|
|
99
99
|
address = account;
|
|
100
100
|
} else {
|
|
101
|
-
if (env.
|
|
102
|
-
address = env.
|
|
101
|
+
if (env.namedAccounts) {
|
|
102
|
+
address = env.namedAccounts[account];
|
|
103
103
|
if (!address) {
|
|
104
104
|
throw new Error(`no address for ${account}`);
|
|
105
105
|
}
|
|
@@ -159,8 +159,8 @@ extendEnvironment((env) => {
|
|
|
159
159
|
if (account.startsWith("0x")) {
|
|
160
160
|
address = account;
|
|
161
161
|
} else {
|
|
162
|
-
if (env.
|
|
163
|
-
address = env.
|
|
162
|
+
if (env.namedAccounts) {
|
|
163
|
+
address = env.namedAccounts[account];
|
|
164
164
|
if (!address) {
|
|
165
165
|
throw new Error(`no address for ${account}`);
|
|
166
166
|
}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import {Abi} from 'abitype';\nimport {EIP1193DATA, EIP1193TransactionData} from 'eip-1193';\nimport type {\n\tArtifact,\n\tDeploymentConstruction,\n\tDeployment,\n\tEnvironment,\n\tPendingDeployment,\n\tPartialDeployment,\n\tPendingExecution,\n\tNamedSigner,\n} from 'rocketh';\nimport {extendEnvironment} from 'rocketh';\nimport {\n\tChain,\n\tContractFunctionArgs,\n\tContractFunctionName,\n\tDecodeFunctionResultReturnType,\n\tEncodeDeployDataParameters,\n\tReadContractParameters,\n\tWriteContractParameters,\n\tdecodeFunctionResult,\n\tencodeFunctionData,\n\tkeccak256,\n} from 'viem';\nimport {DeployContractParameters, encodeDeployData} from 'viem';\nimport {logs} from 'named-logs';\n\nconst logger = logs('rocketh-deploy');\n\ndeclare module 'rocketh' {\n\tinterface Environment {\n\t\tdeploy: DeployFunction;\n\t\texecute: ExecuteFunction;\n\t\tread: ReadFunction;\n\t\texecuteByName: ExecuteFunctionByName;\n\t\treadByName: ReadFunctionByName;\n\t}\n}\n\nexport type DeployFunction = <TAbi extends Abi, TChain extends Chain = Chain>(\n\tname: string,\n\targs: DeploymentConstruction<TAbi>,\n\toptions?: DeployOptions\n) => Promise<Deployment<TAbi> & {updated: boolean}>;\n\nexport type ExecuteFunction = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'nonpayable' | 'payable',\n\t\tTFunctionName\n\t>\n>(\n\tdeployment: Deployment<TAbi>,\n\targs: ExecutionArgs<TAbi, TFunctionName, TArgs>\n) => Promise<EIP1193DATA>;\n\nexport type ExecuteFunctionByName = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'nonpayable' | 'payable',\n\t\tTFunctionName\n\t>\n>(\n\tname: string,\n\targs: ExecutionArgs<TAbi, TFunctionName, TArgs>\n) => Promise<EIP1193DATA>;\n\nexport type ReadFunction = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'pure' | 'view',\n\t\tTFunctionName\n\t>\n>(\n\tdeployment: Deployment<TAbi>,\n\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n) => Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>>;\n\nexport type ReadFunctionByName = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'pure' | 'view',\n\t\tTFunctionName\n\t>\n>(\n\tname: string,\n\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n) => Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>>;\n\nexport type ExecutionArgs<\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'nonpayable' | 'payable',\n\t\tTFunctionName\n\t>\n> = Omit<WriteContractParameters<TAbi, TFunctionName, TArgs>, 'address' | 'abi' | 'account' | 'nonce' | 'chain'> & {\n\taccount: string;\n};\n\nexport type ReadingArgs<\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'pure' | 'view',\n\t\tTFunctionName\n\t>\n> = Omit<ReadContractParameters<TAbi, TFunctionName, TArgs>, 'address' | 'abi' | 'account' | 'nonce'> & {\n\taccount?: string;\n};\n\nexport type DeployOptions = {linkedData?: any; deterministic?: boolean | `0x${string}`} & (\n\t| {\n\t\t\tskipIfAlreadyDeployed?: boolean;\n\t }\n\t| {\n\t\t\talwaysOverride?: boolean;\n\t }\n);\n\nasync function broadcastTransaction(\n\tenv: Environment,\n\tsigner: NamedSigner,\n\tparams: [EIP1193TransactionData]\n): Promise<`0x${string}`> {\n\tif (signer.type === 'wallet' || signer.type === 'remote') {\n\t\treturn signer.signer.request({\n\t\t\tmethod: 'eth_sendTransaction',\n\t\t\tparams,\n\t\t});\n\t} else {\n\t\tconst rawTx = await signer.signer.request({\n\t\t\tmethod: 'eth_signTransaction',\n\t\t\tparams,\n\t\t});\n\n\t\treturn env.network.provider.request({\n\t\t\tmethod: 'eth_sendRawTransaction',\n\t\t\tparams: [rawTx],\n\t\t});\n\t}\n}\n\nextendEnvironment((env: Environment) => {\n\tasync function execute<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'nonpayable' | 'payable',\n\t\t\tTFunctionName\n\t\t>\n\t>(deployment: Deployment<TAbi>, args: ExecutionArgs<TAbi, TFunctionName, TArgs>) {\n\t\tconst {account, ...viemArgs} = args;\n\t\tlet address: `0x${string}`;\n\t\tif (account.startsWith('0x')) {\n\t\t\taddress = account as `0x${string}`;\n\t\t} else {\n\t\t\tif (env.accounts) {\n\t\t\t\taddress = env.accounts[account];\n\t\t\t\tif (!address) {\n\t\t\t\t\tthrow new Error(`no address for ${account}`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error(`no accounts setup, cannot get address for ${account}`);\n\t\t\t}\n\t\t}\n\n\t\tconst artifactToUse = deployment as unknown as Artifact<TAbi>;\n\t\tconst abi = artifactToUse.abi;\n\t\tconst calldata = encodeFunctionData<TAbi, TFunctionName>({\n\t\t\tabi,\n\t\t\tfunctionName: viemArgs.functionName,\n\t\t\targs: viemArgs.args,\n\t\t} as any);\n\n\t\tconst signer = env.addressSigners[address];\n\n\t\tconst txParam: EIP1193TransactionData = {\n\t\t\tto: deployment.address,\n\t\t\ttype: '0x2',\n\t\t\tfrom: address,\n\t\t\tchainId: `0x${env.network.chain.id.toString(16)}` as `0x${string}`,\n\t\t\tdata: calldata,\n\t\t\tgas: viemArgs.gas && (`0x${viemArgs.gas.toString(16)}` as `0x${string}`),\n\t\t\t// gasPrice: viemArgs.gasPrice && `0x${viemArgs.gasPrice.toString(16)}` as `0x${string}`,\n\t\t\tmaxFeePerGas: viemArgs.maxFeePerGas && (`0x${viemArgs.maxFeePerGas.toString(16)}` as `0x${string}`),\n\t\t\tmaxPriorityFeePerGas:\n\t\t\t\tviemArgs.maxPriorityFeePerGas && (`0x${viemArgs.maxPriorityFeePerGas.toString(16)}` as `0x${string}`),\n\t\t\t// nonce: viemArgs.nonce && (`0x${viemArgs.nonce.toString(16)}` as `0x${string}`),\n\t\t};\n\t\tif (viemArgs.value) {\n\t\t\ttxParam.value = `0x${viemArgs.value?.toString(16)}` as `0x${string}`;\n\t\t}\n\n\t\tlet txHash: `0x${string}`;\n\t\tif (signer.type === 'wallet' || signer.type === 'remote') {\n\t\t\ttxHash = await signer.signer.request({\n\t\t\t\tmethod: 'eth_sendTransaction',\n\t\t\t\tparams: [txParam],\n\t\t\t});\n\t\t} else {\n\t\t\tconst rawTx = await signer.signer.request({\n\t\t\t\tmethod: 'eth_signTransaction',\n\t\t\t\tparams: [txParam],\n\t\t\t});\n\n\t\t\ttxHash = await env.network.provider.request({\n\t\t\t\tmethod: 'eth_sendRawTransaction',\n\t\t\t\tparams: [rawTx],\n\t\t\t});\n\t\t}\n\n\t\tconst pendingExecution: PendingExecution = {\n\t\t\ttype: 'execution',\n\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\t// description, // TODO\n\t\t\t// TODO we should have the nonce, except for wallet like metamask where it is not usre you get the nonce you start with\n\t\t};\n\t\tawait env.savePendingExecution(pendingExecution);\n\t\treturn txHash;\n\t}\n\n\tasync function executeByName<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'nonpayable' | 'payable',\n\t\t\tTFunctionName\n\t\t>\n\t>(name: string, args: ExecutionArgs<TAbi, TFunctionName, TArgs>) {\n\t\tconst deployment = env.getOrNull<TAbi>(name);\n\t\tif (!deployment) {\n\t\t\tthrow new Error(`no deployment named ${name}`);\n\t\t}\n\n\t\treturn execute(deployment, args);\n\t}\n\n\tasync function read<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'pure' | 'view',\n\t\t\tTFunctionName\n\t\t>\n\t>(\n\t\tdeployment: Deployment<TAbi>,\n\t\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n\t): Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>> {\n\t\tconst {account, ...viemArgs} = args;\n\t\tlet address: `0x${string}` | undefined;\n\t\tif (account) {\n\t\t\tif (account.startsWith('0x')) {\n\t\t\t\taddress = account as `0x${string}`;\n\t\t\t} else {\n\t\t\t\tif (env.accounts) {\n\t\t\t\t\taddress = env.accounts[account];\n\t\t\t\t\tif (!address) {\n\t\t\t\t\t\tthrow new Error(`no address for ${account}`);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`no accounts setup, cannot get address for ${account}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst artifactToUse = deployment as unknown as Artifact<TAbi>;\n\t\tconst abi = artifactToUse.abi;\n\t\tconst calldata = encodeFunctionData<TAbi, TFunctionName>({\n\t\t\tabi,\n\t\t\tfunctionName: viemArgs.functionName,\n\t\t\targs: viemArgs.args,\n\t\t} as any);\n\n\t\tconst result: `0x${string}` = (await env.network.provider.request({\n\t\t\tmethod: 'eth_call',\n\t\t\tparams: [\n\t\t\t\t{\n\t\t\t\t\tto: deployment.address,\n\t\t\t\t\ttype: '0x2',\n\t\t\t\t\tfrom: address,\n\t\t\t\t\tchainId: `0x${env.network.chain.id.toString(16)}` as `0x${string}`,\n\t\t\t\t\tdata: calldata,\n\t\t\t\t\t// value: `0x${viemArgs.value?.toString(16)}` as `0x${string}`,\n\t\t\t\t},\n\t\t\t],\n\t\t})) as `0x${string}`;\n\n\t\tconst parsed = decodeFunctionResult<TAbi, TFunctionName>({\n\t\t\tabi,\n\t\t\tfunctionName: viemArgs.functionName,\n\t\t\tdata: result,\n\t\t\targs: viemArgs.args,\n\t\t} as any);\n\n\t\treturn parsed as DecodeFunctionResultReturnType<TAbi, TFunctionName>;\n\t}\n\n\tasync function readByName<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'pure' | 'view',\n\t\t\tTFunctionName\n\t\t>\n\t>(\n\t\tname: string,\n\t\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n\t): Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>> {\n\t\tconst deployment = env.getOrNull<TAbi>(name);\n\t\tif (!deployment) {\n\t\t\tthrow new Error(`no deployment named ${name}`);\n\t\t}\n\n\t\treturn read(deployment, args);\n\t}\n\tasync function deploy<TAbi extends Abi>(\n\t\tname: string,\n\t\targs: DeploymentConstruction<TAbi>,\n\t\toptions?: DeployOptions\n\t): Promise<Deployment<TAbi> & {updated: boolean}> {\n\t\tconst skipIfAlreadyDeployed = options && 'skipIfAlreadyDeployed' in options && options.skipIfAlreadyDeployed;\n\t\tconst allwaysOverride = options && 'allwaysOverride' in options && options.allwaysOverride;\n\n\t\tif (allwaysOverride && skipIfAlreadyDeployed) {\n\t\t\tthrow new Error(`conflicting options: \"allwaysOverride\" and \"skipIfAlreadyDeployed\"`);\n\t\t}\n\n\t\tconst existingDeployment = env.getOrNull(name);\n\t\tif (existingDeployment && skipIfAlreadyDeployed) {\n\t\t\tlogger.info(`deployment for ${name} at ${existingDeployment.address}, skipIfAlreadyDeployed: true => we skip`);\n\t\t\treturn {...(existingDeployment as Deployment<TAbi>), updated: false};\n\t\t}\n\n\t\tconst {account, artifact, ...viemArgs} = args;\n\t\tlet address: `0x${string}`;\n\t\tif (account.startsWith('0x')) {\n\t\t\taddress = account as `0x${string}`;\n\t\t} else {\n\t\t\tif (env.accounts) {\n\t\t\t\taddress = env.accounts[account];\n\t\t\t\tif (!address) {\n\t\t\t\t\tthrow new Error(`no address for ${account}`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error(`no accounts setup, cannot get address for ${account}`);\n\t\t\t}\n\t\t}\n\n\t\t// TODO throw specific error if artifact not found\n\t\tconst artifactToUse = (typeof artifact === 'string' ? env.artifacts[artifact] : artifact) as Artifact<TAbi>;\n\n\t\tconst bytecode = artifactToUse.bytecode;\n\t\tconst abi = artifactToUse.abi;\n\n\t\tconst argsToUse = {\n\t\t\t...viemArgs,\n\t\t\taccount,\n\t\t\tabi,\n\t\t\tbytecode,\n\t\t};\n\n\t\tconst calldata = encodeDeployData(argsToUse as any); // TODO any\n\t\tconst argsData = `0x${calldata.replace(bytecode, '')}` as `0x${string}`;\n\n\t\tif (existingDeployment) {\n\t\t\tlogger.info(`existing deployment for ${name} at ${existingDeployment.address}`);\n\t\t}\n\n\t\tif (existingDeployment && !allwaysOverride) {\n\t\t\tconst previousBytecode = existingDeployment.bytecode;\n\t\t\tconst previousArgsData = existingDeployment.argsData;\n\t\t\t// we assume cbor encoding of hash at the end\n\t\t\t// TODO option to remove it, can parse metadata but would rather avoid this here\n\t\t\tconst last2Bytes = previousBytecode.slice(-4);\n\t\t\tconst cborLength = parseInt(last2Bytes, 16);\n\t\t\tconst previousBytecodeWithoutCBOR = previousBytecode.slice(0, -cborLength * 2);\n\t\t\tconst newBytecodeWithoutCBOR = bytecode.slice(0, -cborLength * 2);\n\t\t\tif (previousBytecodeWithoutCBOR === newBytecodeWithoutCBOR && previousArgsData === argsData) {\n\t\t\t\treturn {...(existingDeployment as Deployment<TAbi>), updated: false};\n\t\t\t} else {\n\t\t\t\t// logger.info(`-------------- WITHOUT CBOR---------------------`);\n\t\t\t\t// logger.info(previousBytecodeWithoutCBOR);\n\t\t\t\t// logger.info(newBytecodeWithoutCBOR);\n\t\t\t\t// logger.info(`-----------------------------------`);\n\t\t\t\t// logger.info(`-------------- ARGS DATA ---------------------`);\n\t\t\t\t// logger.info(previousArgsData);\n\t\t\t\t// logger.info(argsData);\n\t\t\t\t// logger.info(`-----------------------------------`);\n\t\t\t}\n\t\t}\n\n\t\tconst partialDeployment: PartialDeployment<TAbi> = {\n\t\t\t...artifactToUse,\n\t\t\targsData,\n\t\t\tlinkedData: options?.linkedData,\n\t\t};\n\n\t\tconst signer = env.addressSigners[address];\n\n\t\tconst chainId = `0x${env.network.chain.id.toString(16)}` as `0x${string}`;\n\t\tconst maxFeePerGas = viemArgs.maxFeePerGas && (`0x${viemArgs.maxFeePerGas.toString(16)}` as `0x${string}`);\n\t\tconst maxPriorityFeePerGas =\n\t\t\tviemArgs.maxPriorityFeePerGas && (`0x${viemArgs.maxPriorityFeePerGas.toString(16)}` as `0x${string}`);\n\n\t\tconst params: [EIP1193TransactionData] = [\n\t\t\t{\n\t\t\t\ttype: '0x2',\n\t\t\t\tfrom: address,\n\t\t\t\tchainId,\n\t\t\t\tdata: calldata,\n\t\t\t\tgas: viemArgs.gas && (`0x${viemArgs.gas.toString(16)}` as `0x${string}`),\n\t\t\t\tmaxFeePerGas,\n\t\t\t\tmaxPriorityFeePerGas,\n\t\t\t\t// gasPrice: viemArgs.gasPrice && `0x${viemArgs.gasPrice.toString(16)}` as `0x${string}`,\n\t\t\t\t// value: `0x${viemArgs.value?.toString(16)}` as `0x${string}`,\n\t\t\t\t// nonce: viemArgs.nonce && (`0x${viemArgs.nonce.toString(16)}` as `0x${string}`),\n\t\t\t},\n\t\t];\n\n\t\tlet expectedAddress: `0x${string}` | undefined = undefined;\n\t\tif (options?.deterministic) {\n\t\t\t// TODO make these configurable\n\t\t\tconst deterministicFactoryAddress = `0x4e59b44847b379578588920ca78fbf26c0b4956c`;\n\t\t\tconst deterministicFactoryDeployerAddress = `0x3fab184622dc19b6109349b94811493bf2a45362`;\n\t\t\tconst factoryDeploymentData = `0xf8a58085174876e800830186a08080b853604580600e600039806000f350fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf31ba02222222222222222222222222222222222222222222222222222222222222222a02222222222222222222222222222222222222222222222222222222222222222`;\n\n\t\t\tconst code = await env.network.provider.request({\n\t\t\t\tmethod: 'eth_getCode',\n\t\t\t\tparams: [deterministicFactoryAddress, 'latest'],\n\t\t\t});\n\t\t\tif (code === '0x') {\n\t\t\t\tconst balanceHexString = await env.network.provider.request({\n\t\t\t\t\tmethod: 'eth_getBalance',\n\t\t\t\t\tparams: [deterministicFactoryDeployerAddress, 'latest'],\n\t\t\t\t});\n\t\t\t\tconst balance = BigInt(balanceHexString);\n\t\t\t\tif (balance < 10000000000000000n) {\n\t\t\t\t\tconst need = 10000000000000000n - balance;\n\t\t\t\t\tconst balanceToSend = `0x${need.toString(16)}` as `0x${string}`;\n\t\t\t\t\tconst txHash = await broadcastTransaction(env, signer, [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: '0x2',\n\t\t\t\t\t\t\tchainId,\n\t\t\t\t\t\t\tfrom: address,\n\t\t\t\t\t\t\tto: deterministicFactoryDeployerAddress,\n\t\t\t\t\t\t\tvalue: balanceToSend,\n\t\t\t\t\t\t\tgas: `0x${BigInt(21000).toString(16)}`,\n\t\t\t\t\t\t\tmaxFeePerGas,\n\t\t\t\t\t\t\tmaxPriorityFeePerGas,\n\t\t\t\t\t\t},\n\t\t\t\t\t]);\n\t\t\t\t\tawait env.savePendingExecution({\n\t\t\t\t\t\ttype: 'execution', // TODO different type ?\n\t\t\t\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst txHash = await env.network.provider.request({\n\t\t\t\t\tmethod: 'eth_sendRawTransaction',\n\t\t\t\t\tparams: [factoryDeploymentData],\n\t\t\t\t});\n\t\t\t\tawait env.savePendingExecution({\n\t\t\t\t\ttype: 'execution', // TODO different type ?\n\t\t\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// prepending the salt\n\t\t\tconst salt = (\n\t\t\t\ttypeof options.deterministic === 'string'\n\t\t\t\t\t? `0x${options.deterministic.slice(2).padStart(64, '0')}`\n\t\t\t\t\t: '0x0000000000000000000000000000000000000000000000000000000000000000'\n\t\t\t) as `0x${string}`;\n\n\t\t\tconst bytecode = params[0].data || '0x';\n\n\t\t\texpectedAddress = ('0x' +\n\t\t\t\tkeccak256(`0xff${deterministicFactoryAddress.slice(2)}${salt.slice(2)}${keccak256(bytecode).slice(2)}`).slice(\n\t\t\t\t\t-40\n\t\t\t\t)) as `0x${string}`;\n\n\t\t\tconst codeAlreadyDeployed = await env.network.provider.request({\n\t\t\t\tmethod: 'eth_getCode',\n\t\t\t\tparams: [expectedAddress, 'latest'],\n\t\t\t});\n\n\t\t\tif (codeAlreadyDeployed !== '0x') {\n\t\t\t\tenv.showMessage(`contract was already deterministically deployed at ${expectedAddress}`);\n\t\t\t\tconst deployment = await env.save(name, {\n\t\t\t\t\taddress: expectedAddress,\n\t\t\t\t\t...partialDeployment,\n\t\t\t\t});\n\t\t\t\treturn {...(deployment as Deployment<TAbi>), updated: true};\n\t\t\t}\n\n\t\t\tparams[0].data = (salt + (bytecode.slice(2) || '')) as `0x${string}`;\n\t\t\tparams[0].to = deterministicFactoryAddress;\n\t\t}\n\n\t\tconst txHash = await broadcastTransaction(env, signer, params);\n\n\t\tconst pendingDeployment: PendingDeployment<TAbi> = {\n\t\t\ttype: 'deployment',\n\t\t\texpectedAddress,\n\t\t\tpartialDeployment,\n\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\tname,\n\t\t\t// TODO we should have the nonce, except for wallet like metamask where it is not usre you get the nonce you start with\n\t\t};\n\t\tconst deployment = await env.savePendingDeployment(pendingDeployment);\n\t\treturn {...(deployment as Deployment<TAbi>), updated: true};\n\t}\n\n\tenv.deploy = deploy;\n\tenv.execute = execute;\n\tenv.executeByName = executeByName;\n\tenv.read = read;\n\tenv.readByName = readByName;\n\treturn env;\n});\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import {Abi} from 'abitype';\nimport {EIP1193DATA, EIP1193TransactionData} from 'eip-1193';\nimport type {\n\tArtifact,\n\tDeploymentConstruction,\n\tDeployment,\n\tEnvironment,\n\tPendingDeployment,\n\tPartialDeployment,\n\tPendingExecution,\n\tSigner,\n} from 'rocketh';\nimport {extendEnvironment} from 'rocketh';\nimport {\n\tChain,\n\tContractFunctionArgs,\n\tContractFunctionName,\n\tDecodeFunctionResultReturnType,\n\tEncodeDeployDataParameters,\n\tReadContractParameters,\n\tWriteContractParameters,\n\tdecodeFunctionResult,\n\tencodeFunctionData,\n\tkeccak256,\n} from 'viem';\nimport {DeployContractParameters, encodeDeployData} from 'viem';\nimport {logs} from 'named-logs';\n\nconst logger = logs('rocketh-deploy');\n\ndeclare module 'rocketh' {\n\tinterface Environment {\n\t\tdeploy: DeployFunction;\n\t\texecute: ExecuteFunction;\n\t\tread: ReadFunction;\n\t\texecuteByName: ExecuteFunctionByName;\n\t\treadByName: ReadFunctionByName;\n\t}\n}\n\nexport type DeployFunction = <TAbi extends Abi, TChain extends Chain = Chain>(\n\tname: string,\n\targs: DeploymentConstruction<TAbi>,\n\toptions?: DeployOptions\n) => Promise<Deployment<TAbi> & {updated: boolean}>;\n\nexport type ExecuteFunction = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'nonpayable' | 'payable',\n\t\tTFunctionName\n\t>\n>(\n\tdeployment: Deployment<TAbi>,\n\targs: ExecutionArgs<TAbi, TFunctionName, TArgs>\n) => Promise<EIP1193DATA>;\n\nexport type ExecuteFunctionByName = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'nonpayable' | 'payable',\n\t\tTFunctionName\n\t>\n>(\n\tname: string,\n\targs: ExecutionArgs<TAbi, TFunctionName, TArgs>\n) => Promise<EIP1193DATA>;\n\nexport type ReadFunction = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'pure' | 'view',\n\t\tTFunctionName\n\t>\n>(\n\tdeployment: Deployment<TAbi>,\n\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n) => Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>>;\n\nexport type ReadFunctionByName = <\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'pure' | 'view',\n\t\tTFunctionName\n\t>\n>(\n\tname: string,\n\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n) => Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>>;\n\nexport type ExecutionArgs<\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'nonpayable' | 'payable',\n\t\tTFunctionName\n\t>\n> = Omit<WriteContractParameters<TAbi, TFunctionName, TArgs>, 'address' | 'abi' | 'account' | 'nonce' | 'chain'> & {\n\taccount: string;\n};\n\nexport type ReadingArgs<\n\tTAbi extends Abi,\n\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\tTAbi,\n\t\t'pure' | 'view',\n\t\tTFunctionName\n\t>\n> = Omit<ReadContractParameters<TAbi, TFunctionName, TArgs>, 'address' | 'abi' | 'account' | 'nonce'> & {\n\taccount?: string;\n};\n\nexport type DeployOptions = {linkedData?: any; deterministic?: boolean | `0x${string}`} & (\n\t| {\n\t\t\tskipIfAlreadyDeployed?: boolean;\n\t }\n\t| {\n\t\t\talwaysOverride?: boolean;\n\t }\n);\n\nasync function broadcastTransaction(\n\tenv: Environment,\n\tsigner: Signer,\n\tparams: [EIP1193TransactionData]\n): Promise<`0x${string}`> {\n\tif (signer.type === 'wallet' || signer.type === 'remote') {\n\t\treturn signer.signer.request({\n\t\t\tmethod: 'eth_sendTransaction',\n\t\t\tparams,\n\t\t});\n\t} else {\n\t\tconst rawTx = await signer.signer.request({\n\t\t\tmethod: 'eth_signTransaction',\n\t\t\tparams,\n\t\t});\n\n\t\treturn env.network.provider.request({\n\t\t\tmethod: 'eth_sendRawTransaction',\n\t\t\tparams: [rawTx],\n\t\t});\n\t}\n}\n\nextendEnvironment((env: Environment) => {\n\tasync function execute<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'nonpayable' | 'payable',\n\t\t\tTFunctionName\n\t\t>\n\t>(deployment: Deployment<TAbi>, args: ExecutionArgs<TAbi, TFunctionName, TArgs>) {\n\t\tconst {account, ...viemArgs} = args;\n\t\tlet address: `0x${string}`;\n\t\tif (account.startsWith('0x')) {\n\t\t\taddress = account as `0x${string}`;\n\t\t} else {\n\t\t\tif (env.namedAccounts) {\n\t\t\t\taddress = env.namedAccounts[account];\n\t\t\t\tif (!address) {\n\t\t\t\t\tthrow new Error(`no address for ${account}`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error(`no accounts setup, cannot get address for ${account}`);\n\t\t\t}\n\t\t}\n\n\t\tconst artifactToUse = deployment as unknown as Artifact<TAbi>;\n\t\tconst abi = artifactToUse.abi;\n\t\tconst calldata = encodeFunctionData<TAbi, TFunctionName>({\n\t\t\tabi,\n\t\t\tfunctionName: viemArgs.functionName,\n\t\t\targs: viemArgs.args,\n\t\t} as any);\n\n\t\tconst signer = env.addressSigners[address];\n\n\t\tconst txParam: EIP1193TransactionData = {\n\t\t\tto: deployment.address,\n\t\t\ttype: '0x2',\n\t\t\tfrom: address,\n\t\t\tchainId: `0x${env.network.chain.id.toString(16)}` as `0x${string}`,\n\t\t\tdata: calldata,\n\t\t\tgas: viemArgs.gas && (`0x${viemArgs.gas.toString(16)}` as `0x${string}`),\n\t\t\t// gasPrice: viemArgs.gasPrice && `0x${viemArgs.gasPrice.toString(16)}` as `0x${string}`,\n\t\t\tmaxFeePerGas: viemArgs.maxFeePerGas && (`0x${viemArgs.maxFeePerGas.toString(16)}` as `0x${string}`),\n\t\t\tmaxPriorityFeePerGas:\n\t\t\t\tviemArgs.maxPriorityFeePerGas && (`0x${viemArgs.maxPriorityFeePerGas.toString(16)}` as `0x${string}`),\n\t\t\t// nonce: viemArgs.nonce && (`0x${viemArgs.nonce.toString(16)}` as `0x${string}`),\n\t\t};\n\t\tif (viemArgs.value) {\n\t\t\ttxParam.value = `0x${viemArgs.value?.toString(16)}` as `0x${string}`;\n\t\t}\n\n\t\tlet txHash: `0x${string}`;\n\t\tif (signer.type === 'wallet' || signer.type === 'remote') {\n\t\t\ttxHash = await signer.signer.request({\n\t\t\t\tmethod: 'eth_sendTransaction',\n\t\t\t\tparams: [txParam],\n\t\t\t});\n\t\t} else {\n\t\t\tconst rawTx = await signer.signer.request({\n\t\t\t\tmethod: 'eth_signTransaction',\n\t\t\t\tparams: [txParam],\n\t\t\t});\n\n\t\t\ttxHash = await env.network.provider.request({\n\t\t\t\tmethod: 'eth_sendRawTransaction',\n\t\t\t\tparams: [rawTx],\n\t\t\t});\n\t\t}\n\n\t\tconst pendingExecution: PendingExecution = {\n\t\t\ttype: 'execution',\n\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\t// description, // TODO\n\t\t\t// TODO we should have the nonce, except for wallet like metamask where it is not usre you get the nonce you start with\n\t\t};\n\t\tawait env.savePendingExecution(pendingExecution);\n\t\treturn txHash;\n\t}\n\n\tasync function executeByName<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'nonpayable' | 'payable',\n\t\t\tTFunctionName\n\t\t>\n\t>(name: string, args: ExecutionArgs<TAbi, TFunctionName, TArgs>) {\n\t\tconst deployment = env.getOrNull<TAbi>(name);\n\t\tif (!deployment) {\n\t\t\tthrow new Error(`no deployment named ${name}`);\n\t\t}\n\n\t\treturn execute(deployment, args);\n\t}\n\n\tasync function read<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'pure' | 'view',\n\t\t\tTFunctionName\n\t\t>\n\t>(\n\t\tdeployment: Deployment<TAbi>,\n\t\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n\t): Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>> {\n\t\tconst {account, ...viemArgs} = args;\n\t\tlet address: `0x${string}` | undefined;\n\t\tif (account) {\n\t\t\tif (account.startsWith('0x')) {\n\t\t\t\taddress = account as `0x${string}`;\n\t\t\t} else {\n\t\t\t\tif (env.namedAccounts) {\n\t\t\t\t\taddress = env.namedAccounts[account];\n\t\t\t\t\tif (!address) {\n\t\t\t\t\t\tthrow new Error(`no address for ${account}`);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`no accounts setup, cannot get address for ${account}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst artifactToUse = deployment as unknown as Artifact<TAbi>;\n\t\tconst abi = artifactToUse.abi;\n\t\tconst calldata = encodeFunctionData<TAbi, TFunctionName>({\n\t\t\tabi,\n\t\t\tfunctionName: viemArgs.functionName,\n\t\t\targs: viemArgs.args,\n\t\t} as any);\n\n\t\tconst result: `0x${string}` = (await env.network.provider.request({\n\t\t\tmethod: 'eth_call',\n\t\t\tparams: [\n\t\t\t\t{\n\t\t\t\t\tto: deployment.address,\n\t\t\t\t\ttype: '0x2',\n\t\t\t\t\tfrom: address,\n\t\t\t\t\tchainId: `0x${env.network.chain.id.toString(16)}` as `0x${string}`,\n\t\t\t\t\tdata: calldata,\n\t\t\t\t\t// value: `0x${viemArgs.value?.toString(16)}` as `0x${string}`,\n\t\t\t\t},\n\t\t\t],\n\t\t})) as `0x${string}`;\n\n\t\tconst parsed = decodeFunctionResult<TAbi, TFunctionName>({\n\t\t\tabi,\n\t\t\tfunctionName: viemArgs.functionName,\n\t\t\tdata: result,\n\t\t\targs: viemArgs.args,\n\t\t} as any);\n\n\t\treturn parsed as DecodeFunctionResultReturnType<TAbi, TFunctionName>;\n\t}\n\n\tasync function readByName<\n\t\tTAbi extends Abi,\n\t\tTFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>,\n\t\tTArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<\n\t\t\tTAbi,\n\t\t\t'pure' | 'view',\n\t\t\tTFunctionName\n\t\t>\n\t>(\n\t\tname: string,\n\t\targs: ReadingArgs<TAbi, TFunctionName, TArgs>\n\t): Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>> {\n\t\tconst deployment = env.getOrNull<TAbi>(name);\n\t\tif (!deployment) {\n\t\t\tthrow new Error(`no deployment named ${name}`);\n\t\t}\n\n\t\treturn read(deployment, args);\n\t}\n\tasync function deploy<TAbi extends Abi>(\n\t\tname: string,\n\t\targs: DeploymentConstruction<TAbi>,\n\t\toptions?: DeployOptions\n\t): Promise<Deployment<TAbi> & {updated: boolean}> {\n\t\tconst skipIfAlreadyDeployed = options && 'skipIfAlreadyDeployed' in options && options.skipIfAlreadyDeployed;\n\t\tconst allwaysOverride = options && 'allwaysOverride' in options && options.allwaysOverride;\n\n\t\tif (allwaysOverride && skipIfAlreadyDeployed) {\n\t\t\tthrow new Error(`conflicting options: \"allwaysOverride\" and \"skipIfAlreadyDeployed\"`);\n\t\t}\n\n\t\tconst existingDeployment = env.getOrNull(name);\n\t\tif (existingDeployment && skipIfAlreadyDeployed) {\n\t\t\tlogger.info(`deployment for ${name} at ${existingDeployment.address}, skipIfAlreadyDeployed: true => we skip`);\n\t\t\treturn {...(existingDeployment as Deployment<TAbi>), updated: false};\n\t\t}\n\n\t\tconst {account, artifact, ...viemArgs} = args;\n\t\tlet address: `0x${string}`;\n\t\tif (account.startsWith('0x')) {\n\t\t\taddress = account as `0x${string}`;\n\t\t} else {\n\t\t\tif (env.namedAccounts) {\n\t\t\t\taddress = env.namedAccounts[account];\n\t\t\t\tif (!address) {\n\t\t\t\t\tthrow new Error(`no address for ${account}`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error(`no accounts setup, cannot get address for ${account}`);\n\t\t\t}\n\t\t}\n\n\t\t// TODO throw specific error if artifact not found\n\t\tconst artifactToUse = (typeof artifact === 'string' ? env.artifacts[artifact] : artifact) as Artifact<TAbi>;\n\n\t\tconst bytecode = artifactToUse.bytecode;\n\t\tconst abi = artifactToUse.abi;\n\n\t\tconst argsToUse = {\n\t\t\t...viemArgs,\n\t\t\taccount,\n\t\t\tabi,\n\t\t\tbytecode,\n\t\t};\n\n\t\tconst calldata = encodeDeployData(argsToUse as any); // TODO any\n\t\tconst argsData = `0x${calldata.replace(bytecode, '')}` as `0x${string}`;\n\n\t\tif (existingDeployment) {\n\t\t\tlogger.info(`existing deployment for ${name} at ${existingDeployment.address}`);\n\t\t}\n\n\t\tif (existingDeployment && !allwaysOverride) {\n\t\t\tconst previousBytecode = existingDeployment.bytecode;\n\t\t\tconst previousArgsData = existingDeployment.argsData;\n\t\t\t// we assume cbor encoding of hash at the end\n\t\t\t// TODO option to remove it, can parse metadata but would rather avoid this here\n\t\t\tconst last2Bytes = previousBytecode.slice(-4);\n\t\t\tconst cborLength = parseInt(last2Bytes, 16);\n\t\t\tconst previousBytecodeWithoutCBOR = previousBytecode.slice(0, -cborLength * 2);\n\t\t\tconst newBytecodeWithoutCBOR = bytecode.slice(0, -cborLength * 2);\n\t\t\tif (previousBytecodeWithoutCBOR === newBytecodeWithoutCBOR && previousArgsData === argsData) {\n\t\t\t\treturn {...(existingDeployment as Deployment<TAbi>), updated: false};\n\t\t\t} else {\n\t\t\t\t// logger.info(`-------------- WITHOUT CBOR---------------------`);\n\t\t\t\t// logger.info(previousBytecodeWithoutCBOR);\n\t\t\t\t// logger.info(newBytecodeWithoutCBOR);\n\t\t\t\t// logger.info(`-----------------------------------`);\n\t\t\t\t// logger.info(`-------------- ARGS DATA ---------------------`);\n\t\t\t\t// logger.info(previousArgsData);\n\t\t\t\t// logger.info(argsData);\n\t\t\t\t// logger.info(`-----------------------------------`);\n\t\t\t}\n\t\t}\n\n\t\tconst partialDeployment: PartialDeployment<TAbi> = {\n\t\t\t...artifactToUse,\n\t\t\targsData,\n\t\t\tlinkedData: options?.linkedData,\n\t\t};\n\n\t\tconst signer = env.addressSigners[address];\n\n\t\tconst chainId = `0x${env.network.chain.id.toString(16)}` as `0x${string}`;\n\t\tconst maxFeePerGas = viemArgs.maxFeePerGas && (`0x${viemArgs.maxFeePerGas.toString(16)}` as `0x${string}`);\n\t\tconst maxPriorityFeePerGas =\n\t\t\tviemArgs.maxPriorityFeePerGas && (`0x${viemArgs.maxPriorityFeePerGas.toString(16)}` as `0x${string}`);\n\n\t\tconst params: [EIP1193TransactionData] = [\n\t\t\t{\n\t\t\t\ttype: '0x2',\n\t\t\t\tfrom: address,\n\t\t\t\tchainId,\n\t\t\t\tdata: calldata,\n\t\t\t\tgas: viemArgs.gas && (`0x${viemArgs.gas.toString(16)}` as `0x${string}`),\n\t\t\t\tmaxFeePerGas,\n\t\t\t\tmaxPriorityFeePerGas,\n\t\t\t\t// gasPrice: viemArgs.gasPrice && `0x${viemArgs.gasPrice.toString(16)}` as `0x${string}`,\n\t\t\t\t// value: `0x${viemArgs.value?.toString(16)}` as `0x${string}`,\n\t\t\t\t// nonce: viemArgs.nonce && (`0x${viemArgs.nonce.toString(16)}` as `0x${string}`),\n\t\t\t},\n\t\t];\n\n\t\tlet expectedAddress: `0x${string}` | undefined = undefined;\n\t\tif (options?.deterministic) {\n\t\t\t// TODO make these configurable\n\t\t\tconst deterministicFactoryAddress = `0x4e59b44847b379578588920ca78fbf26c0b4956c`;\n\t\t\tconst deterministicFactoryDeployerAddress = `0x3fab184622dc19b6109349b94811493bf2a45362`;\n\t\t\tconst factoryDeploymentData = `0xf8a58085174876e800830186a08080b853604580600e600039806000f350fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf31ba02222222222222222222222222222222222222222222222222222222222222222a02222222222222222222222222222222222222222222222222222222222222222`;\n\n\t\t\tconst code = await env.network.provider.request({\n\t\t\t\tmethod: 'eth_getCode',\n\t\t\t\tparams: [deterministicFactoryAddress, 'latest'],\n\t\t\t});\n\t\t\tif (code === '0x') {\n\t\t\t\tconst balanceHexString = await env.network.provider.request({\n\t\t\t\t\tmethod: 'eth_getBalance',\n\t\t\t\t\tparams: [deterministicFactoryDeployerAddress, 'latest'],\n\t\t\t\t});\n\t\t\t\tconst balance = BigInt(balanceHexString);\n\t\t\t\tif (balance < 10000000000000000n) {\n\t\t\t\t\tconst need = 10000000000000000n - balance;\n\t\t\t\t\tconst balanceToSend = `0x${need.toString(16)}` as `0x${string}`;\n\t\t\t\t\tconst txHash = await broadcastTransaction(env, signer, [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: '0x2',\n\t\t\t\t\t\t\tchainId,\n\t\t\t\t\t\t\tfrom: address,\n\t\t\t\t\t\t\tto: deterministicFactoryDeployerAddress,\n\t\t\t\t\t\t\tvalue: balanceToSend,\n\t\t\t\t\t\t\tgas: `0x${BigInt(21000).toString(16)}`,\n\t\t\t\t\t\t\tmaxFeePerGas,\n\t\t\t\t\t\t\tmaxPriorityFeePerGas,\n\t\t\t\t\t\t},\n\t\t\t\t\t]);\n\t\t\t\t\tawait env.savePendingExecution({\n\t\t\t\t\t\ttype: 'execution', // TODO different type ?\n\t\t\t\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst txHash = await env.network.provider.request({\n\t\t\t\t\tmethod: 'eth_sendRawTransaction',\n\t\t\t\t\tparams: [factoryDeploymentData],\n\t\t\t\t});\n\t\t\t\tawait env.savePendingExecution({\n\t\t\t\t\ttype: 'execution', // TODO different type ?\n\t\t\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// prepending the salt\n\t\t\tconst salt = (\n\t\t\t\ttypeof options.deterministic === 'string'\n\t\t\t\t\t? `0x${options.deterministic.slice(2).padStart(64, '0')}`\n\t\t\t\t\t: '0x0000000000000000000000000000000000000000000000000000000000000000'\n\t\t\t) as `0x${string}`;\n\n\t\t\tconst bytecode = params[0].data || '0x';\n\n\t\t\texpectedAddress = ('0x' +\n\t\t\t\tkeccak256(`0xff${deterministicFactoryAddress.slice(2)}${salt.slice(2)}${keccak256(bytecode).slice(2)}`).slice(\n\t\t\t\t\t-40\n\t\t\t\t)) as `0x${string}`;\n\n\t\t\tconst codeAlreadyDeployed = await env.network.provider.request({\n\t\t\t\tmethod: 'eth_getCode',\n\t\t\t\tparams: [expectedAddress, 'latest'],\n\t\t\t});\n\n\t\t\tif (codeAlreadyDeployed !== '0x') {\n\t\t\t\tenv.showMessage(`contract was already deterministically deployed at ${expectedAddress}`);\n\t\t\t\tconst deployment = await env.save(name, {\n\t\t\t\t\taddress: expectedAddress,\n\t\t\t\t\t...partialDeployment,\n\t\t\t\t});\n\t\t\t\treturn {...(deployment as Deployment<TAbi>), updated: true};\n\t\t\t}\n\n\t\t\tparams[0].data = (salt + (bytecode.slice(2) || '')) as `0x${string}`;\n\t\t\tparams[0].to = deterministicFactoryAddress;\n\t\t}\n\n\t\tconst txHash = await broadcastTransaction(env, signer, params);\n\n\t\tconst pendingDeployment: PendingDeployment<TAbi> = {\n\t\t\ttype: 'deployment',\n\t\t\texpectedAddress,\n\t\t\tpartialDeployment,\n\t\t\ttransaction: {hash: txHash, origin: address},\n\t\t\tname,\n\t\t\t// TODO we should have the nonce, except for wallet like metamask where it is not usre you get the nonce you start with\n\t\t};\n\t\tconst deployment = await env.savePendingDeployment(pendingDeployment);\n\t\treturn {...(deployment as Deployment<TAbi>), updated: true};\n\t}\n\n\tenv.deploy = deploy;\n\tenv.execute = execute;\n\tenv.executeByName = executeByName;\n\tenv.read = read;\n\tenv.readByName = readByName;\n\treturn env;\n});\n"],"names":[],"mappings":";;;;AASA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACtC,eAAe,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;AACzD,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC5D,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,MAAM,MAAM,EAAE,qBAAqB;AACnC,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,GAAG,MAAM;AACT,IAAI,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AAC9C,MAAM,MAAM,EAAE,qBAAqB;AACnC,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACxC,MAAM,MAAM,EAAE,wBAAwB;AACtC,MAAM,MAAM,EAAE,CAAC,KAAK,CAAC;AACrB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,CAAC;AACD,iBAAiB,CAAC,CAAC,GAAG,KAAK;AAC3B,EAAE,eAAe,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE;AAC3C,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;AAC1C,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAClC,MAAM,OAAO,GAAG,OAAO,CAAC;AACxB,KAAK,MAAM;AACX,MAAM,IAAI,GAAG,CAAC,aAAa,EAAE;AAC7B,QAAQ,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACvD,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,0CAA0C,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAChF,OAAO;AACP,KAAK;AACL,IAAI,MAAM,aAAa,GAAG,UAAU,CAAC;AACrC,IAAI,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;AAClC,IAAI,MAAM,QAAQ,GAAG,kBAAkB,CAAC;AACxC,MAAM,GAAG;AACT,MAAM,YAAY,EAAE,QAAQ,CAAC,YAAY;AACzC,MAAM,IAAI,EAAE,QAAQ,CAAC,IAAI;AACzB,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC/C,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,EAAE,EAAE,UAAU,CAAC,OAAO;AAC5B,MAAM,IAAI,EAAE,KAAK;AACjB,MAAM,IAAI,EAAE,OAAO;AACnB,MAAM,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D;AACA,MAAM,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACtF,MAAM,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9G;AACA,KAAK,CAAC;AACN,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;AACxB,MAAM,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AAC3C,QAAQ,MAAM,EAAE,qBAAqB;AACrC,QAAQ,MAAM,EAAE,CAAC,OAAO,CAAC;AACzB,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AAChD,QAAQ,MAAM,EAAE,qBAAqB;AACrC,QAAQ,MAAM,EAAE,CAAC,OAAO,CAAC;AACzB,OAAO,CAAC,CAAC;AACT,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AAClD,QAAQ,MAAM,EAAE,wBAAwB;AACxC,QAAQ,MAAM,EAAE,CAAC,KAAK,CAAC;AACvB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,MAAM,gBAAgB,GAAG;AAC7B,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpD;AACA;AACA,KAAK,CAAC;AACN,IAAI,MAAM,GAAG,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AACrD,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,eAAe,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE;AAC3C,IAAI,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,OAAO,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,eAAe,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;AACxC,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;AAC1C,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACpC,QAAQ,OAAO,GAAG,OAAO,CAAC;AAC1B,OAAO,MAAM;AACb,QAAQ,IAAI,GAAG,CAAC,aAAa,EAAE;AAC/B,UAAU,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC/C,UAAU,IAAI,CAAC,OAAO,EAAE;AACxB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACzD,WAAW;AACX,SAAS,MAAM;AACf,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,0CAA0C,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAClF,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,MAAM,aAAa,GAAG,UAAU,CAAC;AACrC,IAAI,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;AAClC,IAAI,MAAM,QAAQ,GAAG,kBAAkB,CAAC;AACxC,MAAM,GAAG;AACT,MAAM,YAAY,EAAE,QAAQ,CAAC,YAAY;AACzC,MAAM,IAAI,EAAE,QAAQ,CAAC,IAAI;AACzB,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACtD,MAAM,MAAM,EAAE,UAAU;AACxB,MAAM,MAAM,EAAE;AACd,QAAQ;AACR,UAAU,EAAE,EAAE,UAAU,CAAC,OAAO;AAChC,UAAU,IAAI,EAAE,KAAK;AACrB,UAAU,IAAI,EAAE,OAAO;AACvB,UAAU,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,UAAU,IAAI,EAAE,QAAQ;AACxB;AACA,SAAS;AACT,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,MAAM,GAAG,oBAAoB,CAAC;AACxC,MAAM,GAAG;AACT,MAAM,YAAY,EAAE,QAAQ,CAAC,YAAY;AACzC,MAAM,IAAI,EAAE,MAAM;AAClB,MAAM,IAAI,EAAE,QAAQ,CAAC,IAAI;AACzB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,eAAe,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE;AACxC,IAAI,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAClC,GAAG;AACH,EAAE,eAAe,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;AAC7C,IAAI,MAAM,qBAAqB,GAAG,OAAO,IAAI,uBAAuB,IAAI,OAAO,IAAI,OAAO,CAAC,qBAAqB,CAAC;AACjH,IAAI,MAAM,eAAe,GAAG,OAAO,IAAI,iBAAiB,IAAI,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;AAC/F,IAAI,IAAI,eAAe,IAAI,qBAAqB,EAAE;AAClD,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC;AAC5F,KAAK;AACL,IAAI,MAAM,kBAAkB,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACnD,IAAI,IAAI,kBAAkB,IAAI,qBAAqB,EAAE;AACrD,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,CAAC;AACrH,MAAM,OAAO,EAAE,GAAG,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACvD,KAAK;AACL,IAAI,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;AACpD,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAClC,MAAM,OAAO,GAAG,OAAO,CAAC;AACxB,KAAK,MAAM;AACX,MAAM,IAAI,GAAG,CAAC,aAAa,EAAE;AAC7B,QAAQ,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACvD,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,0CAA0C,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAChF,OAAO;AACP,KAAK;AACL,IAAI,MAAM,aAAa,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAC5F,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;AAC5C,IAAI,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;AAClC,IAAI,MAAM,SAAS,GAAG;AACtB,MAAM,GAAG,QAAQ;AACjB,MAAM,OAAO;AACb,MAAM,GAAG;AACT,MAAM,QAAQ;AACd,KAAK,CAAC;AACN,IAAI,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACjD,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,IAAI,IAAI,kBAAkB,EAAE;AAC5B,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,wBAAwB,EAAE,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtF,KAAK;AACL,IAAI,IAAI,kBAAkB,IAAI,CAAC,eAAe,EAAE;AAChD,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC3D,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAClD,MAAM,MAAM,2BAA2B,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;AACrF,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;AACxE,MAAM,IAAI,2BAA2B,KAAK,sBAAsB,IAAI,gBAAgB,KAAK,QAAQ,EAAE;AACnG,QAAQ,OAAO,EAAE,GAAG,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACzD,OACO;AACP,KAAK;AACL,IAAI,MAAM,iBAAiB,GAAG;AAC9B,MAAM,GAAG,aAAa;AACtB,MAAM,QAAQ;AACd,MAAM,UAAU,EAAE,OAAO,EAAE,UAAU;AACrC,KAAK,CAAC;AACN,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC/C,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,IAAI,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5F,IAAI,MAAM,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpH,IAAI,MAAM,MAAM,GAAG;AACnB,MAAM;AACN,QAAQ,IAAI,EAAE,KAAK;AACnB,QAAQ,IAAI,EAAE,OAAO;AACrB,QAAQ,OAAO;AACf,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,QAAQ,YAAY;AACpB,QAAQ,oBAAoB;AAC5B;AACA;AACA;AACA,OAAO;AACP,KAAK,CAAC;AACN,IAAI,IAAI,eAAe,GAAG,KAAK,CAAC,CAAC;AACjC,IAAI,IAAI,OAAO,EAAE,aAAa,EAAE;AAChC,MAAM,MAAM,2BAA2B,GAAG,CAAC,0CAA0C,CAAC,CAAC;AACvF,MAAM,MAAM,mCAAmC,GAAG,CAAC,0CAA0C,CAAC,CAAC;AAC/F,MAAM,MAAM,qBAAqB,GAAG,CAAC,gVAAgV,CAAC,CAAC;AACvX,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACtD,QAAQ,MAAM,EAAE,aAAa;AAC7B,QAAQ,MAAM,EAAE,CAAC,2BAA2B,EAAE,QAAQ,CAAC;AACvD,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE;AACzB,QAAQ,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACpE,UAAU,MAAM,EAAE,gBAAgB;AAClC,UAAU,MAAM,EAAE,CAAC,mCAAmC,EAAE,QAAQ,CAAC;AACjE,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACjD,QAAQ,IAAI,OAAO,GAAG,kBAAkB,EAAE;AAC1C,UAAU,MAAM,IAAI,GAAG,kBAAkB,GAAG,OAAO,CAAC;AACpD,UAAU,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,UAAU,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE;AAClE,YAAY;AACZ,cAAc,IAAI,EAAE,KAAK;AACzB,cAAc,OAAO;AACrB,cAAc,IAAI,EAAE,OAAO;AAC3B,cAAc,EAAE,EAAE,mCAAmC;AACrD,cAAc,KAAK,EAAE,aAAa;AAClC,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,cAAc,YAAY;AAC1B,cAAc,oBAAoB;AAClC,aAAa;AACb,WAAW,CAAC,CAAC;AACb,UAAU,MAAM,GAAG,CAAC,oBAAoB,CAAC;AACzC,YAAY,IAAI,EAAE,WAAW;AAC7B;AACA,YAAY,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AAC3D,WAAW,CAAC,CAAC;AACb,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC3D,UAAU,MAAM,EAAE,wBAAwB;AAC1C,UAAU,MAAM,EAAE,CAAC,qBAAqB,CAAC;AACzC,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,GAAG,CAAC,oBAAoB,CAAC;AACvC,UAAU,IAAI,EAAE,WAAW;AAC3B;AACA,UAAU,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACzD,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,aAAa,KAAK,QAAQ,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,oEAAoE,CAAC;AAC9L,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;AAC/C,MAAM,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;AAC7I,QAAQ,CAAC,EAAE;AACX,OAAO,CAAC;AACR,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACrE,QAAQ,MAAM,EAAE,aAAa;AAC7B,QAAQ,MAAM,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC;AAC3C,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,mBAAmB,KAAK,IAAI,EAAE;AACxC,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,mDAAmD,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;AACjG,QAAQ,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;AACjD,UAAU,OAAO,EAAE,eAAe;AAClC,UAAU,GAAG,iBAAiB;AAC9B,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACjD,OAAO;AACP,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACzD,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,2BAA2B,CAAC;AACjD,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACnE,IAAI,MAAM,iBAAiB,GAAG;AAC9B,MAAM,IAAI,EAAE,YAAY;AACxB,MAAM,eAAe;AACrB,MAAM,iBAAiB;AACvB,MAAM,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpD,MAAM,IAAI;AACV;AACA,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;AAC1E,IAAI,OAAO,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC5C,GAAG;AACH,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;AACtB,EAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;AACxB,EAAE,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC;AACpC,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;AAClB,EAAE,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9B,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rocketh/deploy",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.3",
|
|
4
4
|
"description": "provide deploy function for rocketh",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
"pkgroll": "^2.0.2",
|
|
26
26
|
"rimraf": "^5.0.5",
|
|
27
27
|
"typescript": "^5.4.5",
|
|
28
|
-
"rocketh": "0.10.
|
|
28
|
+
"rocketh": "0.10.11"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
|
-
"rocketh": "0.10.
|
|
31
|
+
"rocketh": "0.10.11"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"named-logs": "^0.2.4",
|
package/src/index.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type {
|
|
|
8
8
|
PendingDeployment,
|
|
9
9
|
PartialDeployment,
|
|
10
10
|
PendingExecution,
|
|
11
|
-
|
|
11
|
+
Signer,
|
|
12
12
|
} from 'rocketh';
|
|
13
13
|
import {extendEnvironment} from 'rocketh';
|
|
14
14
|
import {
|
|
@@ -131,7 +131,7 @@ export type DeployOptions = {linkedData?: any; deterministic?: boolean | `0x${st
|
|
|
131
131
|
|
|
132
132
|
async function broadcastTransaction(
|
|
133
133
|
env: Environment,
|
|
134
|
-
signer:
|
|
134
|
+
signer: Signer,
|
|
135
135
|
params: [EIP1193TransactionData]
|
|
136
136
|
): Promise<`0x${string}`> {
|
|
137
137
|
if (signer.type === 'wallet' || signer.type === 'remote') {
|
|
@@ -167,8 +167,8 @@ extendEnvironment((env: Environment) => {
|
|
|
167
167
|
if (account.startsWith('0x')) {
|
|
168
168
|
address = account as `0x${string}`;
|
|
169
169
|
} else {
|
|
170
|
-
if (env.
|
|
171
|
-
address = env.
|
|
170
|
+
if (env.namedAccounts) {
|
|
171
|
+
address = env.namedAccounts[account];
|
|
172
172
|
if (!address) {
|
|
173
173
|
throw new Error(`no address for ${account}`);
|
|
174
174
|
}
|
|
@@ -267,8 +267,8 @@ extendEnvironment((env: Environment) => {
|
|
|
267
267
|
if (account.startsWith('0x')) {
|
|
268
268
|
address = account as `0x${string}`;
|
|
269
269
|
} else {
|
|
270
|
-
if (env.
|
|
271
|
-
address = env.
|
|
270
|
+
if (env.namedAccounts) {
|
|
271
|
+
address = env.namedAccounts[account];
|
|
272
272
|
if (!address) {
|
|
273
273
|
throw new Error(`no address for ${account}`);
|
|
274
274
|
}
|
|
@@ -352,8 +352,8 @@ extendEnvironment((env: Environment) => {
|
|
|
352
352
|
if (account.startsWith('0x')) {
|
|
353
353
|
address = account as `0x${string}`;
|
|
354
354
|
} else {
|
|
355
|
-
if (env.
|
|
356
|
-
address = env.
|
|
355
|
+
if (env.namedAccounts) {
|
|
356
|
+
address = env.namedAccounts[account];
|
|
357
357
|
if (!address) {
|
|
358
358
|
throw new Error(`no address for ${account}`);
|
|
359
359
|
}
|