@agoric/orchestration 0.1.1-dev-d1bb9cd.0.d1bb9cd → 0.1.1-dev-304c8cb.0.304c8cb
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/package.json +16 -16
- package/src/stubs/viem-address.js +9 -0
- package/src/stubs/viem-typedData.js +1 -0
- package/src/utils/permit2/signatureTransfer.d.ts +10 -1
- package/src/utils/permit2/signatureTransfer.d.ts.map +1 -1
- package/src/utils/permit2/signatureTransfer.js +4 -3
- package/src/utils/permit2/signatureTransferHelpers.d.ts +13 -2
- package/src/utils/permit2/signatureTransferHelpers.d.ts.map +1 -1
- package/src/utils/permit2/signatureTransferHelpers.js +62 -1
- package/src/vendor/viem/{_esm-OKAICHVC.js → _esm-MGOEZCKB.js} +7 -4
- package/src/vendor/viem/{ccip-34BSSMV5.js → ccip-OD5ST5U4.js} +1 -1
- package/src/vendor/viem/{chunk-GCI53Z2G.js → chunk-25QYMKH4.js} +139 -90
- package/src/vendor/viem/{chunk-ZKSIP2AM.js → chunk-5422ZTQA.js} +95 -97
- package/src/vendor/viem/viem-abi.js +2 -2
- package/src/vendor/viem/viem-address.d.ts +1 -0
- package/src/vendor/viem/viem-address.js +12 -0
- package/src/vendor/viem/viem-typedData.d.ts +5 -0
- package/src/vendor/viem/viem-typedData.js +4 -2
- package/tsup.config.ts +6 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agoric/orchestration",
|
|
3
|
-
"version": "0.1.1-dev-
|
|
3
|
+
"version": "0.1.1-dev-304c8cb.0.304c8cb",
|
|
4
4
|
"description": "Chain abstraction for Agoric's orchestration clients",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -35,19 +35,19 @@
|
|
|
35
35
|
},
|
|
36
36
|
"homepage": "https://github.com/Agoric/agoric-sdk#readme",
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@agoric/async-flow": "0.1.1-dev-
|
|
39
|
-
"@agoric/cosmic-proto": "0.4.1-dev-
|
|
40
|
-
"@agoric/ertp": "0.16.3-dev-
|
|
41
|
-
"@agoric/internal": "0.3.3-dev-
|
|
42
|
-
"@agoric/network": "0.1.1-dev-
|
|
43
|
-
"@agoric/notifier": "0.6.3-dev-
|
|
44
|
-
"@agoric/store": "0.9.3-dev-
|
|
45
|
-
"@agoric/time": "0.3.3-dev-
|
|
46
|
-
"@agoric/vat-data": "0.5.3-dev-
|
|
47
|
-
"@agoric/vats": "0.15.2-dev-
|
|
48
|
-
"@agoric/vow": "0.1.1-dev-
|
|
49
|
-
"@agoric/zoe": "0.26.3-dev-
|
|
50
|
-
"@agoric/zone": "0.2.3-dev-
|
|
38
|
+
"@agoric/async-flow": "0.1.1-dev-304c8cb.0.304c8cb",
|
|
39
|
+
"@agoric/cosmic-proto": "0.4.1-dev-304c8cb.0.304c8cb",
|
|
40
|
+
"@agoric/ertp": "0.16.3-dev-304c8cb.0.304c8cb",
|
|
41
|
+
"@agoric/internal": "0.3.3-dev-304c8cb.0.304c8cb",
|
|
42
|
+
"@agoric/network": "0.1.1-dev-304c8cb.0.304c8cb",
|
|
43
|
+
"@agoric/notifier": "0.6.3-dev-304c8cb.0.304c8cb",
|
|
44
|
+
"@agoric/store": "0.9.3-dev-304c8cb.0.304c8cb",
|
|
45
|
+
"@agoric/time": "0.3.3-dev-304c8cb.0.304c8cb",
|
|
46
|
+
"@agoric/vat-data": "0.5.3-dev-304c8cb.0.304c8cb",
|
|
47
|
+
"@agoric/vats": "0.15.2-dev-304c8cb.0.304c8cb",
|
|
48
|
+
"@agoric/vow": "0.1.1-dev-304c8cb.0.304c8cb",
|
|
49
|
+
"@agoric/zoe": "0.26.3-dev-304c8cb.0.304c8cb",
|
|
50
|
+
"@agoric/zone": "0.2.3-dev-304c8cb.0.304c8cb",
|
|
51
51
|
"@cosmjs/encoding": "^0.36.0",
|
|
52
52
|
"@endo/base64": "^1.0.12",
|
|
53
53
|
"@endo/errors": "^1.2.13",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"bs58": "^6.0.0"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
|
-
"@agoric/swingset-liveslots": "0.10.3-dev-
|
|
64
|
+
"@agoric/swingset-liveslots": "0.10.3-dev-304c8cb.0.304c8cb",
|
|
65
65
|
"@chain-registry/client": "^1.53.194",
|
|
66
66
|
"@cosmjs/amino": "^0.36.0",
|
|
67
67
|
"@cosmjs/proto-signing": "^0.36.0",
|
|
@@ -105,5 +105,5 @@
|
|
|
105
105
|
"typeCoverage": {
|
|
106
106
|
"atLeast": 97.65
|
|
107
107
|
},
|
|
108
|
-
"gitHead": "
|
|
108
|
+
"gitHead": "304c8cbe29fa2aa182050d213d7e489b91d126e2"
|
|
109
109
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file bundling these functions results in something that
|
|
3
|
+
* depends on node APIs such as stream and crypto (viem/utils
|
|
4
|
+
* includes an http client etc.)
|
|
5
|
+
*
|
|
6
|
+
* So we use tsup to do dead code elimination, aka tree-shaking,
|
|
7
|
+
* while preserving type info.
|
|
8
|
+
*/
|
|
9
|
+
export { isAddress, isAddressEqual, getAddress } from 'viem/utils';
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
import type { TypedDataToPrimitiveTypes } from 'abitype';
|
|
14
14
|
import type { Address, TypedData, TypedDataDefinition } from 'viem';
|
|
15
15
|
import type { TypedDataParameter } from '../abitype.js';
|
|
16
|
+
export declare const PERMIT2_DOMAIN_NAME = "Permit2";
|
|
16
17
|
interface WitnessDefinition<T extends TypedData = TypedData, TD extends TypedDataParameter<string, Extract<keyof T, string>> = TypedDataParameter<'witness', Extract<keyof T, string>>> {
|
|
17
18
|
witnessField: TD;
|
|
18
19
|
witnessTypes: T;
|
|
@@ -68,6 +69,13 @@ export declare const PermitBatchTransferFromTypeParams: [{
|
|
|
68
69
|
readonly name: "deadline";
|
|
69
70
|
readonly type: "uint256";
|
|
70
71
|
}];
|
|
72
|
+
export declare const TokenPermissionTypeParams: [{
|
|
73
|
+
readonly name: "token";
|
|
74
|
+
readonly type: "address";
|
|
75
|
+
}, {
|
|
76
|
+
readonly name: "amount";
|
|
77
|
+
readonly type: "uint256";
|
|
78
|
+
}];
|
|
71
79
|
export declare const PermitTransferFromTypes: {
|
|
72
80
|
readonly EIP712Domain: [{
|
|
73
81
|
readonly name: "name";
|
|
@@ -212,9 +220,10 @@ export type PermitBatchWitnessTransferFrom<T extends Record<string, unknown>, TN
|
|
|
212
220
|
};
|
|
213
221
|
export declare function permit2Domain(permit2Address: Address, chainId: number | bigint): {
|
|
214
222
|
readonly name: "Permit2";
|
|
215
|
-
readonly chainId:
|
|
223
|
+
readonly chainId: bigint;
|
|
216
224
|
readonly verifyingContract: `0x${string}`;
|
|
217
225
|
};
|
|
226
|
+
export type Permit2Domain = ReturnType<typeof permit2Domain>;
|
|
218
227
|
export declare function getPermitWitnessTransferFromData<T extends TypedData, TD extends TypedDataParameter<string, Extract<keyof T, string>> = TypedDataParameter<'witness', Extract<keyof T, string>>>(permit: PermitTransferFrom, permit2Address: Address, chainId: number | bigint, witness: Witness<T, TD>): TypedDataDefinition<ReturnType<typeof permitWitnessTransferFromTypes<T, TD>>, 'PermitWitnessTransferFrom', 'PermitWitnessTransferFrom'>;
|
|
219
228
|
export declare function getPermitBatchWitnessTransferFromData<T extends TypedData, TD extends TypedDataParameter<string, Extract<keyof T, string>> = TypedDataParameter<'witness', Extract<keyof T, string>>>(permit: PermitBatchTransferFrom, permit2Address: Address, chainId: number | bigint, witness: Witness<T, TD>): TypedDataDefinition<ReturnType<typeof permitBatchWitnessTransferFromTypes<T, TD>>, 'PermitBatchWitnessTransferFrom', 'PermitBatchWitnessTransferFrom'>;
|
|
220
229
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signatureTransfer.d.ts","sourceRoot":"","sources":["signatureTransfer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,mBAAmB,EAEpB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"signatureTransfer.d.ts","sourceRoot":"","sources":["signatureTransfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
const PERMIT2_DOMAIN_NAME = 'Permit2';
|
|
23
|
+
export const PERMIT2_DOMAIN_NAME = 'Permit2';
|
|
24
24
|
|
|
25
25
|
// TODO: disallow witness type field being another Permit field name
|
|
26
26
|
;
|
|
@@ -99,7 +99,7 @@ export const PermitBatchTransferFromTypeParams = [
|
|
|
99
99
|
{ name: 'deadline', type: 'uint256' },
|
|
100
100
|
] ;
|
|
101
101
|
|
|
102
|
-
const TokenPermissionTypeParams = [
|
|
102
|
+
export const TokenPermissionTypeParams = [
|
|
103
103
|
{ name: 'token', type: 'address' },
|
|
104
104
|
{ name: 'amount', type: 'uint256' },
|
|
105
105
|
] ;
|
|
@@ -186,10 +186,11 @@ export function permit2Domain(
|
|
|
186
186
|
) {
|
|
187
187
|
return {
|
|
188
188
|
name: PERMIT2_DOMAIN_NAME,
|
|
189
|
-
chainId,
|
|
189
|
+
chainId: BigInt(chainId),
|
|
190
190
|
verifyingContract: permit2Address,
|
|
191
191
|
} ;
|
|
192
192
|
}
|
|
193
|
+
;
|
|
193
194
|
|
|
194
195
|
// XXX: restore permit to be either PermitTransferFrom or PermitBatchTransferFrom
|
|
195
196
|
// and remove duplication between the two functions below
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
* `permitWitnessTransferFrom`.
|
|
4
4
|
* @see {@link https://docs.uniswap.org/contracts/permit2/reference/signature-transfer}
|
|
5
5
|
*
|
|
6
|
-
* This is original code that was adapted for permit2-sdk, unlike @
|
|
6
|
+
* This is original code that was adapted for permit2-sdk, unlike {@link ./permit2SignatureTransfer.ts}
|
|
7
7
|
*/
|
|
8
|
-
import type { AbiParameterToPrimitiveType, TypedData } from 'abitype';
|
|
8
|
+
import type { AbiParameterToPrimitiveType, Address, TypedData, TypedDataDomain } from 'abitype';
|
|
9
9
|
import type { TypedDataParameter } from '../abitype.js';
|
|
10
10
|
import type { encodeType } from '../viem-utils/hashTypedData.js';
|
|
11
|
+
import { type Permit2Domain, TokenPermissionTypeParams } from './signatureTransfer.js';
|
|
11
12
|
declare const PrimaryTypes: import("@agoric/internal/src/keyMirror.js").KeyMirrorResult<{
|
|
12
13
|
PermitBatchWitnessTransferFrom: null;
|
|
13
14
|
PermitWitnessTransferFrom: null;
|
|
@@ -49,6 +50,16 @@ declare const permit2BaseTypeParams: {
|
|
|
49
50
|
export declare const makeWitnessTypeStringExtractor: (powers: {
|
|
50
51
|
encodeType: typeof encodeType;
|
|
51
52
|
}) => (types: TypedData) => string;
|
|
53
|
+
/**
|
|
54
|
+
* Validate that the TokenPermissions subtype is as expected for a
|
|
55
|
+
* `permitWitnessTransferFrom` call.
|
|
56
|
+
*
|
|
57
|
+
* @param types the types of the permit2 message
|
|
58
|
+
*/
|
|
59
|
+
export declare const validateTokenPermissionsType: ({ TokenPermissions, }: {
|
|
60
|
+
TokenPermissions: typeof TokenPermissionTypeParams;
|
|
61
|
+
}) => void;
|
|
62
|
+
export declare function validatePermit2Domain(domain: TypedDataDomain, permit2Addresses?: Partial<Record<number | string, Address>>): asserts domain is Permit2Domain;
|
|
52
63
|
/**
|
|
53
64
|
* Confirm that the input is a EIP-712 `types` record with a single struct
|
|
54
65
|
* definition for the first argument to a `permitWitnessTransferFrom` call
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signatureTransferHelpers.d.ts","sourceRoot":"","sources":["signatureTransferHelpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAGV,2BAA2B,EAC3B,SAAS,
|
|
1
|
+
{"version":3,"file":"signatureTransferHelpers.d.ts","sourceRoot":"","sources":["signatureTransferHelpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,25 +3,31 @@
|
|
|
3
3
|
* `permitWitnessTransferFrom`.
|
|
4
4
|
* @see {@link https://docs.uniswap.org/contracts/permit2/reference/signature-transfer}
|
|
5
5
|
*
|
|
6
|
-
* This is original code that was adapted for permit2-sdk, unlike @
|
|
6
|
+
* This is original code that was adapted for permit2-sdk, unlike {@link ./permit2SignatureTransfer.ts}
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
+
|
|
13
14
|
|
|
15
|
+
|
|
14
16
|
|
|
15
17
|
import { keyMirror } from '@agoric/internal/src/keyMirror.js';
|
|
16
18
|
import { objectMapMutable } from '@agoric/internal/src/js-utils.js';
|
|
17
19
|
;
|
|
18
20
|
;
|
|
19
21
|
import {
|
|
22
|
+
PERMIT2_DOMAIN_NAME,
|
|
23
|
+
|
|
20
24
|
PermitBatchTransferFromTypeParams,
|
|
21
25
|
permitBatchWitnessTransferFromTypes,
|
|
22
26
|
PermitTransferFromTypeParams,
|
|
23
27
|
permitWitnessTransferFromTypes,
|
|
28
|
+
TokenPermissionTypeParams,
|
|
24
29
|
} from './signatureTransfer.js';
|
|
30
|
+
import { sameEvmAddress } from '../address.js';
|
|
25
31
|
|
|
26
32
|
const PrimaryTypes = keyMirror({
|
|
27
33
|
PermitBatchWitnessTransferFrom: null,
|
|
@@ -112,6 +118,61 @@ export const makeWitnessTypeStringExtractor = (powers
|
|
|
112
118
|
|
|
113
119
|
|
|
114
120
|
|
|
121
|
+
/**
|
|
122
|
+
* Validate that the TokenPermissions subtype is as expected for a
|
|
123
|
+
* `permitWitnessTransferFrom` call.
|
|
124
|
+
*
|
|
125
|
+
* @param types the types of the permit2 message
|
|
126
|
+
*/
|
|
127
|
+
export const validateTokenPermissionsType = ({
|
|
128
|
+
TokenPermissions,
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
) => {
|
|
132
|
+
for (const [i, { name, type }] of TokenPermissionTypeParams.entries()) {
|
|
133
|
+
if (
|
|
134
|
+
TokenPermissions[i].name !== name ||
|
|
135
|
+
TokenPermissions[i].type !== type
|
|
136
|
+
) {
|
|
137
|
+
throw new Error(
|
|
138
|
+
`TokenPermissions field at index ${i} must be \`${type} ${name}\``,
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
export function validatePermit2Domain(
|
|
145
|
+
domain ,
|
|
146
|
+
permit2Addresses ,
|
|
147
|
+
) {
|
|
148
|
+
if (!domain) {
|
|
149
|
+
throw new Error(`Missing domain in permit2 data`);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const { chainId, verifyingContract, name } = domain;
|
|
153
|
+
if (name !== PERMIT2_DOMAIN_NAME) {
|
|
154
|
+
throw new Error(`Invalid permit2 domain name: ${name}`);
|
|
155
|
+
}
|
|
156
|
+
if (typeof chainId !== 'bigint' || !verifyingContract) {
|
|
157
|
+
throw new Error(
|
|
158
|
+
`Permit2 domain must include chainId and verifyingContract`,
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (permit2Addresses) {
|
|
163
|
+
const chainIdStr = String(chainId);
|
|
164
|
+
|
|
165
|
+
const expectedAddress = permit2Addresses[chainIdStr];
|
|
166
|
+
if (!sameEvmAddress(verifyingContract, expectedAddress)) {
|
|
167
|
+
throw new Error(
|
|
168
|
+
`Invalid verifying contract for chain ID ${chainId}: ${verifyingContract} (expected ${expectedAddress})`,
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// XXX: check no extra fields?
|
|
174
|
+
}
|
|
175
|
+
|
|
115
176
|
/**
|
|
116
177
|
* Confirm that the input is a EIP-712 `types` record with a single struct
|
|
117
178
|
* definition for the first argument to a `permitWitnessTransferFrom` call
|
|
@@ -1008,6 +1008,7 @@ var require_base64_js = __commonJS({
|
|
|
1008
1008
|
// ../../node_modules/ieee754/index.js
|
|
1009
1009
|
var require_ieee754 = __commonJS({
|
|
1010
1010
|
"../../node_modules/ieee754/index.js"(exports) {
|
|
1011
|
+
"use strict";
|
|
1011
1012
|
exports.read = function(buffer, offset, isLE, mLen, nBytes) {
|
|
1012
1013
|
var e, m;
|
|
1013
1014
|
var eLen = nBytes * 8 - mLen - 1;
|
|
@@ -5583,9 +5584,11 @@ var require_websocket_server = __commonJS({
|
|
|
5583
5584
|
abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
|
|
5584
5585
|
return;
|
|
5585
5586
|
}
|
|
5586
|
-
if (version !==
|
|
5587
|
+
if (version !== 13 && version !== 8) {
|
|
5587
5588
|
const message = "Missing or invalid Sec-WebSocket-Version header";
|
|
5588
|
-
abortHandshakeOrEmitwsClientError(this, req, socket, 400, message
|
|
5589
|
+
abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {
|
|
5590
|
+
"Sec-WebSocket-Version": "13, 8"
|
|
5591
|
+
});
|
|
5589
5592
|
return;
|
|
5590
5593
|
}
|
|
5591
5594
|
if (!this.shouldHandle(req)) {
|
|
@@ -5744,13 +5747,13 @@ var require_websocket_server = __commonJS({
|
|
|
5744
5747
|
` + Object.keys(headers).map((h) => `${h}: ${headers[h]}`).join("\r\n") + "\r\n\r\n" + message
|
|
5745
5748
|
);
|
|
5746
5749
|
}
|
|
5747
|
-
function abortHandshakeOrEmitwsClientError(server, req, socket, code, message) {
|
|
5750
|
+
function abortHandshakeOrEmitwsClientError(server, req, socket, code, message, headers) {
|
|
5748
5751
|
if (server.listenerCount("wsClientError")) {
|
|
5749
5752
|
const err = new Error(message);
|
|
5750
5753
|
Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);
|
|
5751
5754
|
server.emit("wsClientError", err, socket, req);
|
|
5752
5755
|
} else {
|
|
5753
|
-
abortHandshake(socket, code, message);
|
|
5756
|
+
abortHandshake(socket, code, message, headers);
|
|
5754
5757
|
}
|
|
5755
5758
|
}
|
|
5756
5759
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// ../../node_modules/abitype/dist/esm/version.js
|
|
2
|
-
var version = "1.0
|
|
2
|
+
var version = "1.1.0";
|
|
3
3
|
|
|
4
4
|
// ../../node_modules/abitype/dist/esm/errors.js
|
|
5
5
|
var BaseError = class _BaseError extends Error {
|
|
@@ -530,7 +530,7 @@ function parseFallbackSignature(signature) {
|
|
|
530
530
|
stateMutability: match.stateMutability ?? "nonpayable"
|
|
531
531
|
};
|
|
532
532
|
}
|
|
533
|
-
var abiParameterWithoutTupleRegex = /^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*)(?<array>(?:\[\d*?\])+?)?(?:\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/;
|
|
533
|
+
var abiParameterWithoutTupleRegex = /^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*(?:\spayable)?)(?<array>(?:\[\d*?\])+?)?(?:\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/;
|
|
534
534
|
var abiParameterWithTupleRegex = /^\((?<type>.+?)\)(?<array>(?:\[\d*?\])+?)?(?:\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/;
|
|
535
535
|
var dynamicIntegerRegex = /^u?int$/;
|
|
536
536
|
function parseAbiParameter(param, options) {
|
|
@@ -562,6 +562,8 @@ function parseAbiParameter(param, options) {
|
|
|
562
562
|
components = { components: structs[match.type] };
|
|
563
563
|
} else if (dynamicIntegerRegex.test(match.type)) {
|
|
564
564
|
type = `${match.type}256`;
|
|
565
|
+
} else if (match.type === "address payable") {
|
|
566
|
+
type = "address";
|
|
565
567
|
} else {
|
|
566
568
|
type = match.type;
|
|
567
569
|
if (!(options?.type === "struct") && !isSolidityType(type))
|
|
@@ -972,6 +974,19 @@ var multicall3Abi = [
|
|
|
972
974
|
],
|
|
973
975
|
stateMutability: "view",
|
|
974
976
|
type: "function"
|
|
977
|
+
},
|
|
978
|
+
{
|
|
979
|
+
inputs: [],
|
|
980
|
+
name: "getCurrentBlockTimestamp",
|
|
981
|
+
outputs: [
|
|
982
|
+
{
|
|
983
|
+
internalType: "uint256",
|
|
984
|
+
name: "timestamp",
|
|
985
|
+
type: "uint256"
|
|
986
|
+
}
|
|
987
|
+
],
|
|
988
|
+
stateMutability: "view",
|
|
989
|
+
type: "function"
|
|
975
990
|
}
|
|
976
991
|
];
|
|
977
992
|
var batchGatewayAbi = [
|
|
@@ -1027,24 +1042,53 @@ var batchGatewayAbi = [
|
|
|
1027
1042
|
];
|
|
1028
1043
|
var universalResolverErrors = [
|
|
1029
1044
|
{
|
|
1030
|
-
inputs: [
|
|
1031
|
-
|
|
1045
|
+
inputs: [
|
|
1046
|
+
{
|
|
1047
|
+
name: "dns",
|
|
1048
|
+
type: "bytes"
|
|
1049
|
+
}
|
|
1050
|
+
],
|
|
1051
|
+
name: "DNSDecodingFailed",
|
|
1052
|
+
type: "error"
|
|
1053
|
+
},
|
|
1054
|
+
{
|
|
1055
|
+
inputs: [
|
|
1056
|
+
{
|
|
1057
|
+
name: "ens",
|
|
1058
|
+
type: "string"
|
|
1059
|
+
}
|
|
1060
|
+
],
|
|
1061
|
+
name: "DNSEncodingFailed",
|
|
1032
1062
|
type: "error"
|
|
1033
1063
|
},
|
|
1034
1064
|
{
|
|
1035
1065
|
inputs: [],
|
|
1036
|
-
name: "
|
|
1066
|
+
name: "EmptyAddress",
|
|
1067
|
+
type: "error"
|
|
1068
|
+
},
|
|
1069
|
+
{
|
|
1070
|
+
inputs: [
|
|
1071
|
+
{
|
|
1072
|
+
name: "status",
|
|
1073
|
+
type: "uint16"
|
|
1074
|
+
},
|
|
1075
|
+
{
|
|
1076
|
+
name: "message",
|
|
1077
|
+
type: "string"
|
|
1078
|
+
}
|
|
1079
|
+
],
|
|
1080
|
+
name: "HttpError",
|
|
1037
1081
|
type: "error"
|
|
1038
1082
|
},
|
|
1039
1083
|
{
|
|
1040
1084
|
inputs: [],
|
|
1041
|
-
name: "
|
|
1085
|
+
name: "InvalidBatchGatewayResponse",
|
|
1042
1086
|
type: "error"
|
|
1043
1087
|
},
|
|
1044
1088
|
{
|
|
1045
1089
|
inputs: [
|
|
1046
1090
|
{
|
|
1047
|
-
name: "
|
|
1091
|
+
name: "errorData",
|
|
1048
1092
|
type: "bytes"
|
|
1049
1093
|
}
|
|
1050
1094
|
],
|
|
@@ -1054,41 +1098,57 @@ var universalResolverErrors = [
|
|
|
1054
1098
|
{
|
|
1055
1099
|
inputs: [
|
|
1056
1100
|
{
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
name: "message",
|
|
1064
|
-
type: "string"
|
|
1065
|
-
}
|
|
1066
|
-
],
|
|
1067
|
-
name: "errors",
|
|
1068
|
-
type: "tuple[]"
|
|
1101
|
+
name: "name",
|
|
1102
|
+
type: "bytes"
|
|
1103
|
+
},
|
|
1104
|
+
{
|
|
1105
|
+
name: "resolver",
|
|
1106
|
+
type: "address"
|
|
1069
1107
|
}
|
|
1070
1108
|
],
|
|
1071
|
-
name: "
|
|
1109
|
+
name: "ResolverNotContract",
|
|
1072
1110
|
type: "error"
|
|
1073
|
-
}
|
|
1074
|
-
];
|
|
1075
|
-
var universalResolverResolveAbi = [
|
|
1076
|
-
...universalResolverErrors,
|
|
1111
|
+
},
|
|
1077
1112
|
{
|
|
1078
|
-
name: "resolve",
|
|
1079
|
-
type: "function",
|
|
1080
|
-
stateMutability: "view",
|
|
1081
1113
|
inputs: [
|
|
1082
|
-
{
|
|
1083
|
-
|
|
1114
|
+
{
|
|
1115
|
+
name: "name",
|
|
1116
|
+
type: "bytes"
|
|
1117
|
+
}
|
|
1084
1118
|
],
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1119
|
+
name: "ResolverNotFound",
|
|
1120
|
+
type: "error"
|
|
1121
|
+
},
|
|
1122
|
+
{
|
|
1123
|
+
inputs: [
|
|
1124
|
+
{
|
|
1125
|
+
name: "primary",
|
|
1126
|
+
type: "string"
|
|
1127
|
+
},
|
|
1128
|
+
{
|
|
1129
|
+
name: "primaryAddress",
|
|
1130
|
+
type: "bytes"
|
|
1131
|
+
}
|
|
1132
|
+
],
|
|
1133
|
+
name: "ReverseAddressMismatch",
|
|
1134
|
+
type: "error"
|
|
1089
1135
|
},
|
|
1090
1136
|
{
|
|
1091
|
-
|
|
1137
|
+
inputs: [
|
|
1138
|
+
{
|
|
1139
|
+
internalType: "bytes4",
|
|
1140
|
+
name: "selector",
|
|
1141
|
+
type: "bytes4"
|
|
1142
|
+
}
|
|
1143
|
+
],
|
|
1144
|
+
name: "UnsupportedResolverProfile",
|
|
1145
|
+
type: "error"
|
|
1146
|
+
}
|
|
1147
|
+
];
|
|
1148
|
+
var universalResolverResolveAbi = [
|
|
1149
|
+
...universalResolverErrors,
|
|
1150
|
+
{
|
|
1151
|
+
name: "resolveWithGateways",
|
|
1092
1152
|
type: "function",
|
|
1093
1153
|
stateMutability: "view",
|
|
1094
1154
|
inputs: [
|
|
@@ -1105,30 +1165,18 @@ var universalResolverResolveAbi = [
|
|
|
1105
1165
|
var universalResolverReverseAbi = [
|
|
1106
1166
|
...universalResolverErrors,
|
|
1107
1167
|
{
|
|
1108
|
-
name: "
|
|
1109
|
-
type: "function",
|
|
1110
|
-
stateMutability: "view",
|
|
1111
|
-
inputs: [{ type: "bytes", name: "reverseName" }],
|
|
1112
|
-
outputs: [
|
|
1113
|
-
{ type: "string", name: "resolvedName" },
|
|
1114
|
-
{ type: "address", name: "resolvedAddress" },
|
|
1115
|
-
{ type: "address", name: "reverseResolver" },
|
|
1116
|
-
{ type: "address", name: "resolver" }
|
|
1117
|
-
]
|
|
1118
|
-
},
|
|
1119
|
-
{
|
|
1120
|
-
name: "reverse",
|
|
1168
|
+
name: "reverseWithGateways",
|
|
1121
1169
|
type: "function",
|
|
1122
1170
|
stateMutability: "view",
|
|
1123
1171
|
inputs: [
|
|
1124
1172
|
{ type: "bytes", name: "reverseName" },
|
|
1173
|
+
{ type: "uint256", name: "coinType" },
|
|
1125
1174
|
{ type: "string[]", name: "gateways" }
|
|
1126
1175
|
],
|
|
1127
1176
|
outputs: [
|
|
1128
1177
|
{ type: "string", name: "resolvedName" },
|
|
1129
|
-
{ type: "address", name: "
|
|
1130
|
-
{ type: "address", name: "reverseResolver" }
|
|
1131
|
-
{ type: "address", name: "resolver" }
|
|
1178
|
+
{ type: "address", name: "resolver" },
|
|
1179
|
+
{ type: "address", name: "reverseResolver" }
|
|
1132
1180
|
]
|
|
1133
1181
|
}
|
|
1134
1182
|
];
|
|
@@ -1139,9 +1187,10 @@ var aggregate3Signature = "0x82ad56cb";
|
|
|
1139
1187
|
// ../../node_modules/viem/_esm/constants/contracts.js
|
|
1140
1188
|
var deploylessCallViaBytecodeBytecode = "0x608060405234801561001057600080fd5b5060405161018e38038061018e83398101604081905261002f91610124565b6000808351602085016000f59050803b61004857600080fd5b6000808351602085016000855af16040513d6000823e81610067573d81fd5b3d81f35b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009257600080fd5b81516001600160401b038111156100ab576100ab61006b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d9576100d961006b565b6040528181528382016020018510156100f157600080fd5b60005b82811015610110576020818601810151838301820152016100f4565b506000918101602001919091529392505050565b6000806040838503121561013757600080fd5b82516001600160401b0381111561014d57600080fd5b61015985828601610081565b602085015190935090506001600160401b0381111561017757600080fd5b61018385828601610081565b915050925092905056fe";
|
|
1141
1189
|
var deploylessCallViaFactoryBytecode = "0x608060405234801561001057600080fd5b506040516102c03803806102c083398101604081905261002f916101e6565b836001600160a01b03163b6000036100e457600080836001600160a01b03168360405161005c9190610270565b6000604051808303816000865af19150503d8060008114610099576040519150601f19603f3d011682016040523d82523d6000602084013e61009e565b606091505b50915091508115806100b857506001600160a01b0386163b155b156100e1578060405163101bb98d60e01b81526004016100d8919061028c565b60405180910390fd5b50505b6000808451602086016000885af16040513d6000823e81610103573d81fd5b3d81f35b80516001600160a01b038116811461011e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561015457818101518382015260200161013c565b50506000910152565b600082601f83011261016e57600080fd5b81516001600160401b0381111561018757610187610123565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101b5576101b5610123565b6040528181528382016020018510156101cd57600080fd5b6101de826020830160208701610139565b949350505050565b600080600080608085870312156101fc57600080fd5b61020585610107565b60208601519094506001600160401b0381111561022157600080fd5b61022d8782880161015d565b93505061023c60408601610107565b60608601519092506001600160401b0381111561025857600080fd5b6102648782880161015d565b91505092959194509250565b60008251610282818460208701610139565b9190910192915050565b60208152600082518060208401526102ab816040850160208701610139565b601f01601f1916919091016040019291505056fe";
|
|
1190
|
+
var multicall3Bytecode = "0x608060405234801561001057600080fd5b506115b9806100206000396000f3fe6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e14610325578063bce38bd714610350578063c3077fa914610380578063ee82ac5e146103b2576100f3565b80634d2301cc1461026257806372425d9d1461029f57806382ad56cb146102ca57806386d516e8146102fa576100f3565b80633408e470116100c65780633408e470146101af578063399542e9146101da5780633e64a6961461020c57806342cbb15c14610237576100f3565b80630f28c97d146100f8578063174dea7114610123578063252dba421461015357806327e86d6e14610184575b600080fd5b34801561010457600080fd5b5061010d6103ef565b60405161011a9190610c0a565b60405180910390f35b61013d60048036038101906101389190610c94565b6103f7565b60405161014a9190610e94565b60405180910390f35b61016d60048036038101906101689190610f0c565b610615565b60405161017b92919061101b565b60405180910390f35b34801561019057600080fd5b506101996107ab565b6040516101a69190611064565b60405180910390f35b3480156101bb57600080fd5b506101c46107b7565b6040516101d19190610c0a565b60405180910390f35b6101f460048036038101906101ef91906110ab565b6107bf565b6040516102039392919061110b565b60405180910390f35b34801561021857600080fd5b506102216107e1565b60405161022e9190610c0a565b60405180910390f35b34801561024357600080fd5b5061024c6107e9565b6040516102599190610c0a565b60405180910390f35b34801561026e57600080fd5b50610289600480360381019061028491906111a7565b6107f1565b6040516102969190610c0a565b60405180910390f35b3480156102ab57600080fd5b506102b4610812565b6040516102c19190610c0a565b60405180910390f35b6102e460048036038101906102df919061122a565b61081a565b6040516102f19190610e94565b60405180910390f35b34801561030657600080fd5b5061030f6109e4565b60405161031c9190610c0a565b60405180910390f35b34801561033157600080fd5b5061033a6109ec565b6040516103479190611286565b60405180910390f35b61036a600480360381019061036591906110ab565b6109f4565b6040516103779190610e94565b60405180910390f35b61039a60048036038101906103959190610f0c565b610ba6565b6040516103a99392919061110b565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d491906112cd565b610bca565b6040516103e69190611064565b60405180910390f35b600042905090565b60606000808484905090508067ffffffffffffffff81111561041c5761041b6112fa565b5b60405190808252806020026020018201604052801561045557816020015b610442610bd5565b81526020019060019003908161043a5790505b5092503660005b828110156105c957600085828151811061047957610478611329565b5b6020026020010151905087878381811061049657610495611329565b5b90506020028101906104a89190611367565b925060008360400135905080860195508360000160208101906104cb91906111a7565b73ffffffffffffffffffffffffffffffffffffffff16818580606001906104f2919061138f565b604051610500929190611431565b60006040518083038185875af1925050503d806000811461053d576040519150601f19603f3d011682016040523d82523d6000602084013e610542565b606091505b5083600001846020018290528215151515815250505081516020850135176105bc577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b826001019250505061045c565b5082341461060c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610603906114a7565b60405180910390fd5b50505092915050565b6000606043915060008484905090508067ffffffffffffffff81111561063e5761063d6112fa565b5b60405190808252806020026020018201604052801561067157816020015b606081526020019060019003908161065c5790505b5091503660005b828110156107a157600087878381811061069557610694611329565b5b90506020028101906106a791906114c7565b92508260000160208101906106bc91906111a7565b73ffffffffffffffffffffffffffffffffffffffff168380602001906106e2919061138f565b6040516106f0929190611431565b6000604051808303816000865af19150503d806000811461072d576040519150601f19603f3d011682016040523d82523d6000602084013e610732565b606091505b5086848151811061074657610745611329565b5b60200260200101819052819250505080610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c9061153b565b60405180910390fd5b81600101915050610678565b5050509250929050565b60006001430340905090565b600046905090565b6000806060439250434091506107d68686866109f4565b905093509350939050565b600048905090565b600043905090565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b600044905090565b606060008383905090508067ffffffffffffffff81111561083e5761083d6112fa565b5b60405190808252806020026020018201604052801561087757816020015b610864610bd5565b81526020019060019003908161085c5790505b5091503660005b828110156109db57600084828151811061089b5761089a611329565b5b602002602001015190508686838181106108b8576108b7611329565b5b90506020028101906108ca919061155b565b92508260000160208101906108df91906111a7565b73ffffffffffffffffffffffffffffffffffffffff16838060400190610905919061138f565b604051610913929190611431565b6000604051808303816000865af19150503d8060008114610950576040519150601f19603f3d011682016040523d82523d6000602084013e610955565b606091505b5082600001836020018290528215151515815250505080516020840135176109cf577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b8160010191505061087e565b50505092915050565b600045905090565b600041905090565b606060008383905090508067ffffffffffffffff811115610a1857610a176112fa565b5b604051908082528060200260200182016040528015610a5157816020015b610a3e610bd5565b815260200190600190039081610a365790505b5091503660005b82811015610b9c576000848281518110610a7557610a74611329565b5b60200260200101519050868683818110610a9257610a91611329565b5b9050602002810190610aa491906114c7565b9250826000016020810190610ab991906111a7565b73ffffffffffffffffffffffffffffffffffffffff16838060200190610adf919061138f565b604051610aed929190611431565b6000604051808303816000865af19150503d8060008114610b2a576040519150601f19603f3d011682016040523d82523d6000602084013e610b2f565b606091505b508260000183602001829052821515151581525050508715610b90578060000151610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b869061153b565b60405180910390fd5b5b81600101915050610a58565b5050509392505050565b6000806060610bb7600186866107bf565b8093508194508295505050509250925092565b600081409050919050565b6040518060400160405280600015158152602001606081525090565b6000819050919050565b610c0481610bf1565b82525050565b6000602082019050610c1f6000830184610bfb565b92915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610c5457610c53610c2f565b5b8235905067ffffffffffffffff811115610c7157610c70610c34565b5b602083019150836020820283011115610c8d57610c8c610c39565b5b9250929050565b60008060208385031215610cab57610caa610c25565b5b600083013567ffffffffffffffff811115610cc957610cc8610c2a565b5b610cd585828601610c3e565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60008115159050919050565b610d2281610d0d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d62578082015181840152602081019050610d47565b83811115610d71576000848401525b50505050565b6000601f19601f8301169050919050565b6000610d9382610d28565b610d9d8185610d33565b9350610dad818560208601610d44565b610db681610d77565b840191505092915050565b6000604083016000830151610dd96000860182610d19565b5060208301518482036020860152610df18282610d88565b9150508091505092915050565b6000610e0a8383610dc1565b905092915050565b6000602082019050919050565b6000610e2a82610ce1565b610e348185610cec565b935083602082028501610e4685610cfd565b8060005b85811015610e825784840389528151610e638582610dfe565b9450610e6e83610e12565b925060208a01995050600181019050610e4a565b50829750879550505050505092915050565b60006020820190508181036000830152610eae8184610e1f565b905092915050565b60008083601f840112610ecc57610ecb610c2f565b5b8235905067ffffffffffffffff811115610ee957610ee8610c34565b5b602083019150836020820283011115610f0557610f04610c39565b5b9250929050565b60008060208385031215610f2357610f22610c25565b5b600083013567ffffffffffffffff811115610f4157610f40610c2a565b5b610f4d85828601610eb6565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000610f918383610d88565b905092915050565b6000602082019050919050565b6000610fb182610f59565b610fbb8185610f64565b935083602082028501610fcd85610f75565b8060005b858110156110095784840389528151610fea8582610f85565b9450610ff583610f99565b925060208a01995050600181019050610fd1565b50829750879550505050505092915050565b60006040820190506110306000830185610bfb565b81810360208301526110428184610fa6565b90509392505050565b6000819050919050565b61105e8161104b565b82525050565b60006020820190506110796000830184611055565b92915050565b61108881610d0d565b811461109357600080fd5b50565b6000813590506110a58161107f565b92915050565b6000806000604084860312156110c4576110c3610c25565b5b60006110d286828701611096565b935050602084013567ffffffffffffffff8111156110f3576110f2610c2a565b5b6110ff86828701610eb6565b92509250509250925092565b60006060820190506111206000830186610bfb565b61112d6020830185611055565b818103604083015261113f8184610e1f565b9050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061117482611149565b9050919050565b61118481611169565b811461118f57600080fd5b50565b6000813590506111a18161117b565b92915050565b6000602082840312156111bd576111bc610c25565b5b60006111cb84828501611192565b91505092915050565b60008083601f8401126111ea576111e9610c2f565b5b8235905067ffffffffffffffff81111561120757611206610c34565b5b60208301915083602082028301111561122357611222610c39565b5b9250929050565b6000806020838503121561124157611240610c25565b5b600083013567ffffffffffffffff81111561125f5761125e610c2a565b5b61126b858286016111d4565b92509250509250929050565b61128081611169565b82525050565b600060208201905061129b6000830184611277565b92915050565b6112aa81610bf1565b81146112b557600080fd5b50565b6000813590506112c7816112a1565b92915050565b6000602082840312156112e3576112e2610c25565b5b60006112f1848285016112b8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b60008235600160800383360303811261138357611382611358565b5b80830191505092915050565b600080833560016020038436030381126113ac576113ab611358565b5b80840192508235915067ffffffffffffffff8211156113ce576113cd61135d565b5b6020830192506001820236038313156113ea576113e9611362565b5b509250929050565b600081905092915050565b82818337600083830152505050565b600061141883856113f2565b93506114258385846113fd565b82840190509392505050565b600061143e82848661140c565b91508190509392505050565b600082825260208201905092915050565b7f4d756c746963616c6c333a2076616c7565206d69736d61746368000000000000600082015250565b6000611491601a8361144a565b915061149c8261145b565b602082019050919050565b600060208201905081810360008301526114c081611484565b9050919050565b6000823560016040038336030381126114e3576114e2611358565b5b80830191505092915050565b7f4d756c746963616c6c333a2063616c6c206661696c6564000000000000000000600082015250565b600061152560178361144a565b9150611530826114ef565b602082019050919050565b6000602082019050818103600083015261155481611518565b9050919050565b60008235600160600383360303811261157757611576611358565b5b8083019150509291505056fea264697066735822122020c1bc9aacf8e4a6507193432a895a8e77094f45a1395583f07b24e860ef06cd64736f6c634300080c0033";
|
|
1142
1191
|
|
|
1143
1192
|
// ../../node_modules/viem/_esm/errors/version.js
|
|
1144
|
-
var version3 = "2.
|
|
1193
|
+
var version3 = "2.41.2";
|
|
1145
1194
|
|
|
1146
1195
|
// ../../node_modules/viem/_esm/errors/base.js
|
|
1147
1196
|
var errorConfig = {
|
|
@@ -2369,9 +2418,9 @@ function encodeBytes(value, { param }) {
|
|
|
2369
2418
|
encoded: concat([padHex(numberToHex(bytesSize, { size: 32 })), value_])
|
|
2370
2419
|
};
|
|
2371
2420
|
}
|
|
2372
|
-
if (bytesSize !== Number.parseInt(paramSize))
|
|
2421
|
+
if (bytesSize !== Number.parseInt(paramSize, 10))
|
|
2373
2422
|
throw new AbiEncodingBytesSizeMismatchError({
|
|
2374
|
-
expectedSize: Number.parseInt(paramSize),
|
|
2423
|
+
expectedSize: Number.parseInt(paramSize, 10),
|
|
2375
2424
|
value
|
|
2376
2425
|
});
|
|
2377
2426
|
return { dynamic: false, encoded: padHex(value, { dir: "right" }) };
|
|
@@ -2562,12 +2611,12 @@ function decodeBytes(cursor, param, { staticPosition }) {
|
|
|
2562
2611
|
cursor.setPosition(staticPosition + 32);
|
|
2563
2612
|
return [bytesToHex(data), 32];
|
|
2564
2613
|
}
|
|
2565
|
-
const value = bytesToHex(cursor.readBytes(Number.parseInt(size3), 32));
|
|
2614
|
+
const value = bytesToHex(cursor.readBytes(Number.parseInt(size3, 10), 32));
|
|
2566
2615
|
return [value, 32];
|
|
2567
2616
|
}
|
|
2568
2617
|
function decodeNumber(cursor, param) {
|
|
2569
2618
|
const signed = param.type.startsWith("int");
|
|
2570
|
-
const size3 = Number.parseInt(param.type.split("int")[1] || "256");
|
|
2619
|
+
const size3 = Number.parseInt(param.type.split("int")[1] || "256", 10);
|
|
2571
2620
|
const value = cursor.readBytes(32);
|
|
2572
2621
|
return [
|
|
2573
2622
|
size3 > 48 ? bytesToBigInt(value, { signed }) : bytesToNumber(value, { signed }),
|
|
@@ -2679,7 +2728,7 @@ function getAbiItem(parameters) {
|
|
|
2679
2728
|
return void 0;
|
|
2680
2729
|
if (abiItems.length === 1)
|
|
2681
2730
|
return abiItems[0];
|
|
2682
|
-
let matchedAbiItem
|
|
2731
|
+
let matchedAbiItem;
|
|
2683
2732
|
for (const abiItem of abiItems) {
|
|
2684
2733
|
if (!("inputs" in abiItem))
|
|
2685
2734
|
continue;
|
|
@@ -2864,14 +2913,6 @@ function prettyPrint(args) {
|
|
|
2864
2913
|
const maxLength = entries.reduce((acc, [key]) => Math.max(acc, key.length), 0);
|
|
2865
2914
|
return entries.map(([key, value]) => ` ${`${key}:`.padEnd(maxLength + 1)} ${value}`).join("\n");
|
|
2866
2915
|
}
|
|
2867
|
-
var FeeConflictError = class extends BaseError3 {
|
|
2868
|
-
constructor() {
|
|
2869
|
-
super([
|
|
2870
|
-
"Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.",
|
|
2871
|
-
"Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others."
|
|
2872
|
-
].join("\n"), { name: "FeeConflictError" });
|
|
2873
|
-
}
|
|
2874
|
-
};
|
|
2875
2916
|
|
|
2876
2917
|
// ../../node_modules/viem/_esm/errors/utils.js
|
|
2877
2918
|
var getUrl = (url) => url;
|
|
@@ -3355,7 +3396,7 @@ var rpcTransactionType = {
|
|
|
3355
3396
|
eip4844: "0x3",
|
|
3356
3397
|
eip7702: "0x4"
|
|
3357
3398
|
};
|
|
3358
|
-
function formatTransactionRequest(request) {
|
|
3399
|
+
function formatTransactionRequest(request, _) {
|
|
3359
3400
|
const rpcRequest = {};
|
|
3360
3401
|
if (typeof request.authorizationList !== "undefined")
|
|
3361
3402
|
rpcRequest.authorizationList = formatAuthorizationList(request.authorizationList);
|
|
@@ -3371,6 +3412,8 @@ function formatTransactionRequest(request) {
|
|
|
3371
3412
|
}
|
|
3372
3413
|
if (typeof request.data !== "undefined")
|
|
3373
3414
|
rpcRequest.data = request.data;
|
|
3415
|
+
if (request.account)
|
|
3416
|
+
rpcRequest.from = request.account.address;
|
|
3374
3417
|
if (typeof request.from !== "undefined")
|
|
3375
3418
|
rpcRequest.from = request.from;
|
|
3376
3419
|
if (typeof request.gas !== "undefined")
|
|
@@ -3615,14 +3658,12 @@ var maxUint256 = 2n ** 256n - 1n;
|
|
|
3615
3658
|
|
|
3616
3659
|
// ../../node_modules/viem/_esm/utils/transaction/assertRequest.js
|
|
3617
3660
|
function assertRequest(args) {
|
|
3618
|
-
const { account: account_,
|
|
3661
|
+
const { account: account_, maxFeePerGas, maxPriorityFeePerGas, to } = args;
|
|
3619
3662
|
const account = account_ ? parseAccount(account_) : void 0;
|
|
3620
3663
|
if (account && !isAddress(account.address))
|
|
3621
3664
|
throw new InvalidAddressError({ address: account.address });
|
|
3622
3665
|
if (to && !isAddress(to))
|
|
3623
3666
|
throw new InvalidAddressError({ address: to });
|
|
3624
|
-
if (typeof gasPrice !== "undefined" && (typeof maxFeePerGas !== "undefined" || typeof maxPriorityFeePerGas !== "undefined"))
|
|
3625
|
-
throw new FeeConflictError();
|
|
3626
3667
|
if (maxFeePerGas && maxFeePerGas > maxUint256)
|
|
3627
3668
|
throw new FeeCapTooHighError({ maxFeePerGas });
|
|
3628
3669
|
if (maxPriorityFeePerGas && maxFeePerGas && maxPriorityFeePerGas > maxFeePerGas)
|
|
@@ -3631,7 +3672,7 @@ function assertRequest(args) {
|
|
|
3631
3672
|
|
|
3632
3673
|
// ../../node_modules/viem/_esm/actions/public/call.js
|
|
3633
3674
|
async function call(client, args) {
|
|
3634
|
-
const { account: account_ = client.account, authorizationList, batch = Boolean(client.batch?.multicall), blockNumber, blockTag = "latest", accessList, blobs, blockOverrides, code, data: data_, factory, factoryData, gas, gasPrice, maxFeePerBlobGas, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, stateOverride, ...rest } = args;
|
|
3675
|
+
const { account: account_ = client.account, authorizationList, batch = Boolean(client.batch?.multicall), blockNumber, blockTag = client.experimental_blockTag ?? "latest", accessList, blobs, blockOverrides, code, data: data_, factory, factoryData, gas, gasPrice, maxFeePerBlobGas, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, stateOverride, ...rest } = args;
|
|
3635
3676
|
const account = account_ ? parseAccount(account_) : void 0;
|
|
3636
3677
|
if (code && (factory || factoryData))
|
|
3637
3678
|
throw new BaseError3("Cannot provide both `code` & `factory`/`factoryData` as parameters.");
|
|
@@ -3666,8 +3707,8 @@ async function call(client, args) {
|
|
|
3666
3707
|
const request = format({
|
|
3667
3708
|
// Pick out extra data that might exist on the chain's transaction request type.
|
|
3668
3709
|
...extract(rest, { format: chainFormat }),
|
|
3669
|
-
from: account?.address,
|
|
3670
3710
|
accessList,
|
|
3711
|
+
account,
|
|
3671
3712
|
authorizationList,
|
|
3672
3713
|
blobs,
|
|
3673
3714
|
data,
|
|
@@ -3679,7 +3720,7 @@ async function call(client, args) {
|
|
|
3679
3720
|
nonce,
|
|
3680
3721
|
to: deploylessCall ? void 0 : to,
|
|
3681
3722
|
value
|
|
3682
|
-
});
|
|
3723
|
+
}, "call");
|
|
3683
3724
|
if (batch && shouldPerformMulticall({ request }) && !rpcStateOverride && !rpcBlockOverrides) {
|
|
3684
3725
|
try {
|
|
3685
3726
|
return await scheduleMulticall(client, {
|
|
@@ -3714,7 +3755,7 @@ async function call(client, args) {
|
|
|
3714
3755
|
return { data: response };
|
|
3715
3756
|
} catch (err) {
|
|
3716
3757
|
const data2 = getRevertErrorData(err);
|
|
3717
|
-
const { offchainLookup: offchainLookup2, offchainLookupSignature: offchainLookupSignature2 } = await import("./ccip-
|
|
3758
|
+
const { offchainLookup: offchainLookup2, offchainLookupSignature: offchainLookupSignature2 } = await import("./ccip-OD5ST5U4.js");
|
|
3718
3759
|
if (client.ccipRead !== false && data2?.slice(0, 10) === offchainLookupSignature2 && to)
|
|
3719
3760
|
return { data: await offchainLookup2(client, { data: data2, to }) };
|
|
3720
3761
|
if (deploylessCall && data2?.slice(0, 10) === "0x101bb98d")
|
|
@@ -3739,18 +3780,22 @@ function shouldPerformMulticall({ request }) {
|
|
|
3739
3780
|
return true;
|
|
3740
3781
|
}
|
|
3741
3782
|
async function scheduleMulticall(client, args) {
|
|
3742
|
-
const { batchSize = 1024, wait = 0 } = typeof client.batch?.multicall === "object" ? client.batch.multicall : {};
|
|
3743
|
-
const { blockNumber, blockTag = "latest", data,
|
|
3744
|
-
|
|
3745
|
-
|
|
3746
|
-
|
|
3747
|
-
|
|
3748
|
-
|
|
3749
|
-
|
|
3750
|
-
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
|
|
3783
|
+
const { batchSize = 1024, deployless = false, wait = 0 } = typeof client.batch?.multicall === "object" ? client.batch.multicall : {};
|
|
3784
|
+
const { blockNumber, blockTag = client.experimental_blockTag ?? "latest", data, to } = args;
|
|
3785
|
+
const multicallAddress = (() => {
|
|
3786
|
+
if (deployless)
|
|
3787
|
+
return null;
|
|
3788
|
+
if (args.multicallAddress)
|
|
3789
|
+
return args.multicallAddress;
|
|
3790
|
+
if (client.chain) {
|
|
3791
|
+
return getChainContractAddress({
|
|
3792
|
+
blockNumber,
|
|
3793
|
+
chain: client.chain,
|
|
3794
|
+
contract: "multicall3"
|
|
3795
|
+
});
|
|
3796
|
+
}
|
|
3797
|
+
throw new ClientChainNotConfiguredError();
|
|
3798
|
+
})();
|
|
3754
3799
|
const blockNumberHex = typeof blockNumber === "bigint" ? numberToHex(blockNumber) : void 0;
|
|
3755
3800
|
const block = blockNumberHex || blockTag;
|
|
3756
3801
|
const { schedule } = createBatchScheduler({
|
|
@@ -3775,8 +3820,12 @@ async function scheduleMulticall(client, args) {
|
|
|
3775
3820
|
method: "eth_call",
|
|
3776
3821
|
params: [
|
|
3777
3822
|
{
|
|
3778
|
-
|
|
3779
|
-
|
|
3823
|
+
...multicallAddress === null ? {
|
|
3824
|
+
data: toDeploylessCallViaBytecodeData({
|
|
3825
|
+
code: multicall3Bytecode,
|
|
3826
|
+
data: calldata
|
|
3827
|
+
})
|
|
3828
|
+
} : { to: multicallAddress, data: calldata }
|
|
3780
3829
|
},
|
|
3781
3830
|
block
|
|
3782
3831
|
]
|
|
@@ -3948,7 +3997,7 @@ async function localBatchGatewayRequest(parameters) {
|
|
|
3948
3997
|
const responses = [];
|
|
3949
3998
|
await Promise.all(queries.map(async (query, i) => {
|
|
3950
3999
|
try {
|
|
3951
|
-
responses[i] = await ccipRequest2(query);
|
|
4000
|
+
responses[i] = query.urls.includes(localBatchGatewayUrl) ? await localBatchGatewayRequest({ data: query.data, ccipRequest: ccipRequest2 }) : await ccipRequest2(query);
|
|
3952
4001
|
failures[i] = false;
|
|
3953
4002
|
} catch (err) {
|
|
3954
4003
|
failures[i] = true;
|
|
@@ -4089,25 +4138,25 @@ async function ccipRequest({ data, sender, urls }) {
|
|
|
4089
4138
|
|
|
4090
4139
|
export {
|
|
4091
4140
|
BaseError3 as BaseError,
|
|
4092
|
-
|
|
4141
|
+
InvalidAddressError,
|
|
4093
4142
|
isHex,
|
|
4094
4143
|
size2 as size,
|
|
4095
4144
|
hexToBigInt,
|
|
4096
4145
|
hexToNumber,
|
|
4097
4146
|
toHex,
|
|
4098
4147
|
numberToHex,
|
|
4099
|
-
BytesSizeMismatchError,
|
|
4100
4148
|
keccak256,
|
|
4101
|
-
InvalidAddressError,
|
|
4102
4149
|
isAddress,
|
|
4103
4150
|
checksumAddress,
|
|
4104
4151
|
getAddress,
|
|
4152
|
+
BytesSizeMismatchError,
|
|
4105
4153
|
concat,
|
|
4106
4154
|
bytesRegex2 as bytesRegex,
|
|
4107
4155
|
integerRegex2 as integerRegex,
|
|
4108
4156
|
encodeAbiParameters,
|
|
4109
4157
|
decodeAbiParameters,
|
|
4110
4158
|
encodeFunctionData,
|
|
4159
|
+
stringify,
|
|
4111
4160
|
isAddressEqual,
|
|
4112
4161
|
offchainLookupSignature,
|
|
4113
4162
|
offchainLookupAbiItem,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
size,
|
|
19
19
|
stringify,
|
|
20
20
|
toHex
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-25QYMKH4.js";
|
|
22
22
|
|
|
23
23
|
// ../../node_modules/viem/_esm/errors/typedData.js
|
|
24
24
|
var InvalidDomainError = class extends BaseError {
|
|
@@ -45,96 +45,6 @@ var InvalidStructTypeError = class extends BaseError {
|
|
|
45
45
|
}
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
// ../../node_modules/viem/_esm/utils/typedData.js
|
|
49
|
-
function serializeTypedData(parameters) {
|
|
50
|
-
const { domain: domain_, message: message_, primaryType, types } = parameters;
|
|
51
|
-
const normalizeData = (struct, data_) => {
|
|
52
|
-
const data = { ...data_ };
|
|
53
|
-
for (const param of struct) {
|
|
54
|
-
const { name, type } = param;
|
|
55
|
-
if (type === "address")
|
|
56
|
-
data[name] = data[name].toLowerCase();
|
|
57
|
-
}
|
|
58
|
-
return data;
|
|
59
|
-
};
|
|
60
|
-
const domain = (() => {
|
|
61
|
-
if (!types.EIP712Domain)
|
|
62
|
-
return {};
|
|
63
|
-
if (!domain_)
|
|
64
|
-
return {};
|
|
65
|
-
return normalizeData(types.EIP712Domain, domain_);
|
|
66
|
-
})();
|
|
67
|
-
const message = (() => {
|
|
68
|
-
if (primaryType === "EIP712Domain")
|
|
69
|
-
return void 0;
|
|
70
|
-
return normalizeData(types[primaryType], message_);
|
|
71
|
-
})();
|
|
72
|
-
return stringify({ domain, message, primaryType, types });
|
|
73
|
-
}
|
|
74
|
-
function validateTypedData(parameters) {
|
|
75
|
-
const { domain, message, primaryType, types } = parameters;
|
|
76
|
-
const validateData = (struct, data) => {
|
|
77
|
-
for (const param of struct) {
|
|
78
|
-
const { name, type } = param;
|
|
79
|
-
const value = data[name];
|
|
80
|
-
const integerMatch = type.match(integerRegex);
|
|
81
|
-
if (integerMatch && (typeof value === "number" || typeof value === "bigint")) {
|
|
82
|
-
const [_type, base, size_] = integerMatch;
|
|
83
|
-
numberToHex(value, {
|
|
84
|
-
signed: base === "int",
|
|
85
|
-
size: Number.parseInt(size_) / 8
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
if (type === "address" && typeof value === "string" && !isAddress(value))
|
|
89
|
-
throw new InvalidAddressError({ address: value });
|
|
90
|
-
const bytesMatch = type.match(bytesRegex);
|
|
91
|
-
if (bytesMatch) {
|
|
92
|
-
const [_type, size_] = bytesMatch;
|
|
93
|
-
if (size_ && size(value) !== Number.parseInt(size_))
|
|
94
|
-
throw new BytesSizeMismatchError({
|
|
95
|
-
expectedSize: Number.parseInt(size_),
|
|
96
|
-
givenSize: size(value)
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
const struct2 = types[type];
|
|
100
|
-
if (struct2) {
|
|
101
|
-
validateReference(type);
|
|
102
|
-
validateData(struct2, value);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
if (types.EIP712Domain && domain) {
|
|
107
|
-
if (typeof domain !== "object")
|
|
108
|
-
throw new InvalidDomainError({ domain });
|
|
109
|
-
validateData(types.EIP712Domain, domain);
|
|
110
|
-
}
|
|
111
|
-
if (primaryType !== "EIP712Domain") {
|
|
112
|
-
if (types[primaryType])
|
|
113
|
-
validateData(types[primaryType], message);
|
|
114
|
-
else
|
|
115
|
-
throw new InvalidPrimaryTypeError({ primaryType, types });
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
function getTypesForEIP712Domain({ domain }) {
|
|
119
|
-
return [
|
|
120
|
-
typeof domain?.name === "string" && { name: "name", type: "string" },
|
|
121
|
-
domain?.version && { name: "version", type: "string" },
|
|
122
|
-
(typeof domain?.chainId === "number" || typeof domain?.chainId === "bigint") && {
|
|
123
|
-
name: "chainId",
|
|
124
|
-
type: "uint256"
|
|
125
|
-
},
|
|
126
|
-
domain?.verifyingContract && {
|
|
127
|
-
name: "verifyingContract",
|
|
128
|
-
type: "address"
|
|
129
|
-
},
|
|
130
|
-
domain?.salt && { name: "salt", type: "bytes32" }
|
|
131
|
-
].filter(Boolean);
|
|
132
|
-
}
|
|
133
|
-
function validateReference(type) {
|
|
134
|
-
if (type === "address" || type === "bool" || type === "string" || type.startsWith("bytes") || type.startsWith("uint") || type.startsWith("int"))
|
|
135
|
-
throw new InvalidStructTypeError({ type });
|
|
136
|
-
}
|
|
137
|
-
|
|
138
48
|
// ../../node_modules/viem/_esm/utils/signature/hashTypedData.js
|
|
139
49
|
function hashTypedData(parameters) {
|
|
140
50
|
const { domain = {}, message, primaryType } = parameters;
|
|
@@ -225,11 +135,8 @@ function encodeField({ types, name, type, value }) {
|
|
|
225
135
|
keccak256(encodeData({ data: value, primaryType: type, types }))
|
|
226
136
|
];
|
|
227
137
|
}
|
|
228
|
-
if (type === "bytes")
|
|
229
|
-
const prepend = value.length % 2 ? "0" : "";
|
|
230
|
-
value = `0x${prepend + value.slice(2)}`;
|
|
138
|
+
if (type === "bytes")
|
|
231
139
|
return [{ type: "bytes32" }, keccak256(value)];
|
|
232
|
-
}
|
|
233
140
|
if (type === "string")
|
|
234
141
|
return [{ type: "bytes32" }, keccak256(toHex(value))];
|
|
235
142
|
if (type.lastIndexOf("]") === type.length - 1) {
|
|
@@ -248,6 +155,96 @@ function encodeField({ types, name, type, value }) {
|
|
|
248
155
|
return [{ type }, value];
|
|
249
156
|
}
|
|
250
157
|
|
|
158
|
+
// ../../node_modules/viem/_esm/utils/typedData.js
|
|
159
|
+
function serializeTypedData(parameters) {
|
|
160
|
+
const { domain: domain_, message: message_, primaryType, types } = parameters;
|
|
161
|
+
const normalizeData = (struct, data_) => {
|
|
162
|
+
const data = { ...data_ };
|
|
163
|
+
for (const param of struct) {
|
|
164
|
+
const { name, type } = param;
|
|
165
|
+
if (type === "address")
|
|
166
|
+
data[name] = data[name].toLowerCase();
|
|
167
|
+
}
|
|
168
|
+
return data;
|
|
169
|
+
};
|
|
170
|
+
const domain = (() => {
|
|
171
|
+
if (!types.EIP712Domain)
|
|
172
|
+
return {};
|
|
173
|
+
if (!domain_)
|
|
174
|
+
return {};
|
|
175
|
+
return normalizeData(types.EIP712Domain, domain_);
|
|
176
|
+
})();
|
|
177
|
+
const message = (() => {
|
|
178
|
+
if (primaryType === "EIP712Domain")
|
|
179
|
+
return void 0;
|
|
180
|
+
return normalizeData(types[primaryType], message_);
|
|
181
|
+
})();
|
|
182
|
+
return stringify({ domain, message, primaryType, types });
|
|
183
|
+
}
|
|
184
|
+
function validateTypedData(parameters) {
|
|
185
|
+
const { domain, message, primaryType, types } = parameters;
|
|
186
|
+
const validateData = (struct, data) => {
|
|
187
|
+
for (const param of struct) {
|
|
188
|
+
const { name, type } = param;
|
|
189
|
+
const value = data[name];
|
|
190
|
+
const integerMatch = type.match(integerRegex);
|
|
191
|
+
if (integerMatch && (typeof value === "number" || typeof value === "bigint")) {
|
|
192
|
+
const [_type, base, size_] = integerMatch;
|
|
193
|
+
numberToHex(value, {
|
|
194
|
+
signed: base === "int",
|
|
195
|
+
size: Number.parseInt(size_, 10) / 8
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
if (type === "address" && typeof value === "string" && !isAddress(value))
|
|
199
|
+
throw new InvalidAddressError({ address: value });
|
|
200
|
+
const bytesMatch = type.match(bytesRegex);
|
|
201
|
+
if (bytesMatch) {
|
|
202
|
+
const [_type, size_] = bytesMatch;
|
|
203
|
+
if (size_ && size(value) !== Number.parseInt(size_, 10))
|
|
204
|
+
throw new BytesSizeMismatchError({
|
|
205
|
+
expectedSize: Number.parseInt(size_, 10),
|
|
206
|
+
givenSize: size(value)
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
const struct2 = types[type];
|
|
210
|
+
if (struct2) {
|
|
211
|
+
validateReference(type);
|
|
212
|
+
validateData(struct2, value);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
if (types.EIP712Domain && domain) {
|
|
217
|
+
if (typeof domain !== "object")
|
|
218
|
+
throw new InvalidDomainError({ domain });
|
|
219
|
+
validateData(types.EIP712Domain, domain);
|
|
220
|
+
}
|
|
221
|
+
if (primaryType !== "EIP712Domain") {
|
|
222
|
+
if (types[primaryType])
|
|
223
|
+
validateData(types[primaryType], message);
|
|
224
|
+
else
|
|
225
|
+
throw new InvalidPrimaryTypeError({ primaryType, types });
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
function getTypesForEIP712Domain({ domain }) {
|
|
229
|
+
return [
|
|
230
|
+
typeof domain?.name === "string" && { name: "name", type: "string" },
|
|
231
|
+
domain?.version && { name: "version", type: "string" },
|
|
232
|
+
(typeof domain?.chainId === "number" || typeof domain?.chainId === "bigint") && {
|
|
233
|
+
name: "chainId",
|
|
234
|
+
type: "uint256"
|
|
235
|
+
},
|
|
236
|
+
domain?.verifyingContract && {
|
|
237
|
+
name: "verifyingContract",
|
|
238
|
+
type: "address"
|
|
239
|
+
},
|
|
240
|
+
domain?.salt && { name: "salt", type: "bytes32" }
|
|
241
|
+
].filter(Boolean);
|
|
242
|
+
}
|
|
243
|
+
function validateReference(type) {
|
|
244
|
+
if (type === "address" || type === "bool" || type === "string" || type.startsWith("bytes") || type.startsWith("uint") || type.startsWith("int"))
|
|
245
|
+
throw new InvalidStructTypeError({ type });
|
|
246
|
+
}
|
|
247
|
+
|
|
251
248
|
// ../../node_modules/viem/_esm/accounts/utils/publicKeyToAddress.js
|
|
252
249
|
function publicKeyToAddress(publicKey) {
|
|
253
250
|
const address = keccak256(`0x${publicKey.substring(4)}`).substring(26);
|
|
@@ -317,10 +314,11 @@ async function verifyTypedData(parameters) {
|
|
|
317
314
|
}
|
|
318
315
|
|
|
319
316
|
export {
|
|
320
|
-
hashTypedData,
|
|
321
|
-
hashStruct,
|
|
322
317
|
serializeTypedData,
|
|
323
318
|
validateTypedData,
|
|
319
|
+
getTypesForEIP712Domain,
|
|
320
|
+
hashTypedData,
|
|
321
|
+
hashStruct,
|
|
324
322
|
recoverTypedDataAddress,
|
|
325
323
|
verifyTypedData
|
|
326
324
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./chunk-
|
|
1
|
+
import "./chunk-5422ZTQA.js";
|
|
2
2
|
import {
|
|
3
3
|
decodeAbiParameters,
|
|
4
4
|
encodeAbiParameters,
|
|
5
5
|
encodeFunctionData
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-25QYMKH4.js";
|
|
7
7
|
import "./chunk-4VNS5WPM.js";
|
|
8
8
|
export {
|
|
9
9
|
decodeAbiParameters,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getAddress, isAddress, isAddressEqual } from 'viem/utils';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { hashStruct, hashTypedData, isHex, recoverTypedDataAddress, serializeTypedData, validateTypedData, verifyTypedData } from 'viem/utils';
|
|
2
|
+
export { getTypesForEIP712Domain } from 'viem';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* @file viem internal typedData utils exported for direct usage
|
|
@@ -11,6 +12,10 @@ type MessageTypeProperty = {
|
|
|
11
12
|
name: string;
|
|
12
13
|
type: string;
|
|
13
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* Serialize an EIP-712 struct definition to a string per
|
|
17
|
+
* https://eips.ethereum.org/EIPS/eip-712#definition-of-encodetype
|
|
18
|
+
*/
|
|
14
19
|
declare function encodeType({ primaryType, types, }: {
|
|
15
20
|
primaryType: string;
|
|
16
21
|
types: Record<string, readonly MessageTypeProperty[]>;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
|
+
getTypesForEIP712Domain,
|
|
2
3
|
hashStruct,
|
|
3
4
|
hashTypedData,
|
|
4
5
|
recoverTypedDataAddress,
|
|
5
6
|
serializeTypedData,
|
|
6
7
|
validateTypedData,
|
|
7
8
|
verifyTypedData
|
|
8
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-5422ZTQA.js";
|
|
9
10
|
import {
|
|
10
11
|
isHex
|
|
11
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-25QYMKH4.js";
|
|
12
13
|
import "./chunk-4VNS5WPM.js";
|
|
13
14
|
|
|
14
15
|
// src/utils/viem-utils/hashTypedData.ts
|
|
@@ -42,6 +43,7 @@ function findTypeDependencies({
|
|
|
42
43
|
}
|
|
43
44
|
export {
|
|
44
45
|
encodeType,
|
|
46
|
+
getTypesForEIP712Domain,
|
|
45
47
|
hashStruct,
|
|
46
48
|
hashTypedData,
|
|
47
49
|
isHex,
|
package/tsup.config.ts
CHANGED
|
@@ -5,10 +5,15 @@
|
|
|
5
5
|
import { defineConfig } from 'tsup';
|
|
6
6
|
|
|
7
7
|
export default defineConfig({
|
|
8
|
-
entry: [
|
|
8
|
+
entry: [
|
|
9
|
+
'src/stubs/viem-abi.ts',
|
|
10
|
+
'src/stubs/viem-typedData.ts',
|
|
11
|
+
'src/stubs/viem-address.ts',
|
|
12
|
+
],
|
|
9
13
|
format: ['esm'],
|
|
10
14
|
outDir: 'src/vendor/viem',
|
|
11
15
|
target: 'es2020',
|
|
16
|
+
tsconfig: 'tsconfig.tsup.build.json',
|
|
12
17
|
clean: true,
|
|
13
18
|
dts: true,
|
|
14
19
|
bundle: true,
|