@agoric/orchestration 0.1.1-dev-dc846ed.0.dc846ed → 0.1.1-dev-fe77bfe.0.fe77bfe
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/utils/permit2/signatureTransfer.d.ts +8 -0
- package/src/utils/permit2/signatureTransfer.d.ts.map +1 -1
- package/src/utils/permit2/signatureTransfer.js +22 -2
- package/src/utils/permit2/signatureTransferHelpers.d.ts +53 -13
- package/src/utils/permit2/signatureTransferHelpers.d.ts.map +1 -1
- package/src/utils/permit2/signatureTransferHelpers.js +100 -93
- package/src/utils/viem-utils/hashTypedData.d.ts +4 -0
- package/src/utils/viem-utils/hashTypedData.d.ts.map +1 -1
- package/src/utils/viem-utils/hashTypedData.js +4 -0
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-fe77bfe.0.fe77bfe",
|
|
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-fe77bfe.0.fe77bfe",
|
|
39
|
+
"@agoric/cosmic-proto": "0.4.1-dev-fe77bfe.0.fe77bfe",
|
|
40
|
+
"@agoric/ertp": "0.16.3-dev-fe77bfe.0.fe77bfe",
|
|
41
|
+
"@agoric/internal": "0.3.3-dev-fe77bfe.0.fe77bfe",
|
|
42
|
+
"@agoric/network": "0.1.1-dev-fe77bfe.0.fe77bfe",
|
|
43
|
+
"@agoric/notifier": "0.6.3-dev-fe77bfe.0.fe77bfe",
|
|
44
|
+
"@agoric/store": "0.9.3-dev-fe77bfe.0.fe77bfe",
|
|
45
|
+
"@agoric/time": "0.3.3-dev-fe77bfe.0.fe77bfe",
|
|
46
|
+
"@agoric/vat-data": "0.5.3-dev-fe77bfe.0.fe77bfe",
|
|
47
|
+
"@agoric/vats": "0.15.2-dev-fe77bfe.0.fe77bfe",
|
|
48
|
+
"@agoric/vow": "0.1.1-dev-fe77bfe.0.fe77bfe",
|
|
49
|
+
"@agoric/zoe": "0.26.3-dev-fe77bfe.0.fe77bfe",
|
|
50
|
+
"@agoric/zone": "0.2.3-dev-fe77bfe.0.fe77bfe",
|
|
51
51
|
"@cosmjs/encoding": "^0.36.0",
|
|
52
52
|
"@endo/base64": "^1.0.12",
|
|
53
53
|
"@endo/errors": "^1.2.13",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"bs58": "^6.0.0"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@agoric/swingset-liveslots": "0.10.3-dev-
|
|
63
|
+
"@agoric/swingset-liveslots": "0.10.3-dev-fe77bfe.0.fe77bfe",
|
|
64
64
|
"@chain-registry/client": "^1.53.194",
|
|
65
65
|
"@cosmjs/amino": "^0.36.0",
|
|
66
66
|
"@cosmjs/proto-signing": "^0.36.0",
|
|
@@ -105,5 +105,5 @@
|
|
|
105
105
|
"typeCoverage": {
|
|
106
106
|
"atLeast": 97.65
|
|
107
107
|
},
|
|
108
|
-
"gitHead": "
|
|
108
|
+
"gitHead": "fe77bfe6dd676c5538e17e61cb618750f0f5aac0"
|
|
109
109
|
}
|
|
@@ -132,6 +132,10 @@ export declare const PermitBatchTransferFromTypes: {
|
|
|
132
132
|
readonly type: "uint256";
|
|
133
133
|
}];
|
|
134
134
|
};
|
|
135
|
+
/**
|
|
136
|
+
* Generate an EIP-712 `types` record for a single-token
|
|
137
|
+
* `permitWitnessTransferFrom` call.
|
|
138
|
+
*/
|
|
135
139
|
export declare function permitWitnessTransferFromTypes<T extends TypedData, TD extends TypedDataParameter<string, Extract<keyof T, string>> = TypedDataParameter<'witness', Extract<keyof T, string>>>(witness: WitnessDefinition<T, TD>): {
|
|
136
140
|
readonly EIP712Domain: [{
|
|
137
141
|
readonly name: "name";
|
|
@@ -164,6 +168,10 @@ export declare function permitWitnessTransferFromTypes<T extends TypedData, TD e
|
|
|
164
168
|
readonly type: "uint256";
|
|
165
169
|
}];
|
|
166
170
|
} & T;
|
|
171
|
+
/**
|
|
172
|
+
* Generate an EIP-712 `types` record for a multi-token
|
|
173
|
+
* `permitWitnessTransferFrom` call.
|
|
174
|
+
*/
|
|
167
175
|
export declare function permitBatchWitnessTransferFromTypes<T extends TypedData, TD extends TypedDataParameter<string, Extract<keyof T, string>> = TypedDataParameter<'witness', Extract<keyof T, string>>>(witness: WitnessDefinition<T, TD>): {
|
|
168
176
|
readonly EIP712Domain: [{
|
|
169
177
|
readonly name: "name";
|
|
@@ -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;AAKxD,UAAU,iBAAiB,CACzB,CAAC,SAAS,SAAS,GAAG,SAAS,EAC/B,EAAE,SAAS,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAC7D,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAEzD,YAAY,EAAE,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC,CAAC;CACjB;AAED,MAAM,WAAW,OAAO,CACtB,CAAC,SAAS,SAAS,GAAG,SAAS,EAC/B,EAAE,SAAS,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAC7D,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CACzD,SAAQ,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC;IAChC,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;CACnD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,CAAC,SAAS,SAAS,EACnB,EAAE,SAAS,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,EAE/D,IAAI,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EACvD,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,EAAE,GACZ,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAMhB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAQF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;EAKA,CAAC;AAE1C,eAAO,MAAM,iCAAiC;;;;;;;;;;;;EAKL,CAAC;AAO1C,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIN,CAAC;AAE/B,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIX,CAAC;AAE/B,wBAAgB,8BAA8B,CAC5C,CAAC,SAAS,SAAS,EACnB,EAAE,SAAS,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAC7D,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,EACzD,OAAO,EAAE,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"signatureTransfer.d.ts","sourceRoot":"","sources":["signatureTransfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,6 +116,10 @@ export const PermitBatchTransferFromTypes = {
|
|
|
116
116
|
TokenPermissions: TokenPermissionTypeParams,
|
|
117
117
|
} ;
|
|
118
118
|
|
|
119
|
+
/**
|
|
120
|
+
* Generate an EIP-712 `types` record for a single-token
|
|
121
|
+
* `permitWitnessTransferFrom` call.
|
|
122
|
+
*/
|
|
119
123
|
export function permitWitnessTransferFromTypes(
|
|
120
124
|
|
|
121
125
|
|
|
@@ -125,7 +129,13 @@ export function permitWitnessTransferFromTypes(
|
|
|
125
129
|
EIP712Domain: Permit2DomainTypeParams,
|
|
126
130
|
PermitWitnessTransferFrom: [
|
|
127
131
|
...PermitTransferFromTypeParams,
|
|
128
|
-
//
|
|
132
|
+
// `witness` is required by static typing, but when it is undefined at
|
|
133
|
+
// runtime, this emits types in which PermitWitnessTransferFrom is
|
|
134
|
+
// truncated just before where a witness field belongs.
|
|
135
|
+
// Doing so simplifies the function returned by
|
|
136
|
+
// {@link makeWitnessTypeStringExtractor}, because the EIP-712 string
|
|
137
|
+
// encoding of that type has its first `)` at that position (i.e.,
|
|
138
|
+
// `PermitWitnessTransferFrom(TokenPermissions permitted,...,uint256 deadline)TokenPermissions(...)`).
|
|
129
139
|
...((witness ? [witness.witnessField] : []) ),
|
|
130
140
|
],
|
|
131
141
|
TokenPermissions: TokenPermissionTypeParams,
|
|
@@ -133,6 +143,10 @@ export function permitWitnessTransferFromTypes(
|
|
|
133
143
|
} ;
|
|
134
144
|
}
|
|
135
145
|
|
|
146
|
+
/**
|
|
147
|
+
* Generate an EIP-712 `types` record for a multi-token
|
|
148
|
+
* `permitWitnessTransferFrom` call.
|
|
149
|
+
*/
|
|
136
150
|
export function permitBatchWitnessTransferFromTypes(
|
|
137
151
|
|
|
138
152
|
|
|
@@ -142,7 +156,13 @@ export function permitBatchWitnessTransferFromTypes(
|
|
|
142
156
|
EIP712Domain: Permit2DomainTypeParams,
|
|
143
157
|
PermitBatchWitnessTransferFrom: [
|
|
144
158
|
...PermitBatchTransferFromTypeParams,
|
|
145
|
-
//
|
|
159
|
+
// `witness` is required by static typing, but when it is undefined at
|
|
160
|
+
// runtime, this emits types in which PermitBatchWitnessTransferFrom is
|
|
161
|
+
// truncated just before where a witness field belongs.
|
|
162
|
+
// Doing so simplifies the function returned by
|
|
163
|
+
// {@link makeWitnessTypeStringExtractor}, because the EIP-712 string
|
|
164
|
+
// encoding of that type has its first `)` at that position (i.e.,
|
|
165
|
+
// `PermitBatchWitnessTransferFrom(TokenPermissions[] permitted,...,uint256 deadline)TokenPermissions(...)`).
|
|
146
166
|
...((witness ? [witness.witnessField] : []) ),
|
|
147
167
|
],
|
|
148
168
|
TokenPermissions: TokenPermissionTypeParams,
|
|
@@ -1,23 +1,62 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file Helpers for working with
|
|
2
|
+
* @file Helpers for working with Uniswap Permit2 SignatureTransfer
|
|
3
|
+
* `permitWitnessTransferFrom`.
|
|
4
|
+
* @see {@link https://docs.uniswap.org/contracts/permit2/reference/signature-transfer}
|
|
3
5
|
*
|
|
4
6
|
* This is original code that was adapted for permit2-sdk, unlike @see ./permit2SignatureTransfer.ts
|
|
5
7
|
*/
|
|
6
8
|
import type { AbiParameterToPrimitiveType, TypedData } from 'abitype';
|
|
7
9
|
import type { TypedDataParameter } from '../abitype.js';
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
import type { encodeType } from '../viem-utils/hashTypedData.js';
|
|
11
|
+
declare const PrimaryTypes: import("@agoric/internal/src/keyMirror.js").KeyMirrorResult<{
|
|
12
|
+
PermitBatchWitnessTransferFrom: null;
|
|
13
|
+
PermitWitnessTransferFrom: null;
|
|
14
|
+
}>;
|
|
15
|
+
type PrimaryTypeName = keyof typeof PrimaryTypes;
|
|
16
|
+
export declare const isPermit2MessageType: (type: string) => type is PrimaryTypeName;
|
|
17
|
+
declare const permit2BaseTypeParams: {
|
|
18
|
+
PermitBatchWitnessTransferFrom: [{
|
|
19
|
+
readonly name: "permitted";
|
|
20
|
+
readonly type: "TokenPermissions[]";
|
|
21
|
+
}, {
|
|
22
|
+
readonly name: "spender";
|
|
23
|
+
readonly type: "address";
|
|
24
|
+
}, {
|
|
25
|
+
readonly name: "nonce";
|
|
26
|
+
readonly type: "uint256";
|
|
27
|
+
}, {
|
|
28
|
+
readonly name: "deadline";
|
|
29
|
+
readonly type: "uint256";
|
|
30
|
+
}];
|
|
31
|
+
PermitWitnessTransferFrom: [{
|
|
32
|
+
readonly name: "permitted";
|
|
33
|
+
readonly type: "TokenPermissions";
|
|
34
|
+
}, {
|
|
35
|
+
readonly name: "spender";
|
|
36
|
+
readonly type: "address";
|
|
37
|
+
}, {
|
|
38
|
+
readonly name: "nonce";
|
|
39
|
+
readonly type: "uint256";
|
|
40
|
+
}, {
|
|
41
|
+
readonly name: "deadline";
|
|
42
|
+
readonly type: "uint256";
|
|
43
|
+
}];
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Make a function for returning the `witnessTypeString` argument to use in a
|
|
47
|
+
* `permitWitnessTransferFrom` call.
|
|
48
|
+
*/
|
|
49
|
+
export declare const makeWitnessTypeStringExtractor: (powers: {
|
|
50
|
+
encodeType: typeof encodeType;
|
|
14
51
|
}) => (types: TypedData) => string;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Confirm that the input is a EIP-712 `types` record with a single struct
|
|
54
|
+
* definition for the first argument to a `permitWitnessTransferFrom` call
|
|
55
|
+
* (i.e., named either "PermitWitnessTransferFrom" for a single-token transfer
|
|
56
|
+
* or "PermitBatchWitnessTransferFrom" for a multi-token transfer), and return
|
|
57
|
+
* the TypedDataParameter describing the witness field of that definition.
|
|
58
|
+
*/
|
|
59
|
+
export declare const extractWitnessFieldFromTypes: <T extends Readonly<TypedDataParameter>>(types: { [K in PrimaryTypeName]: Record<K, readonly [...(typeof permit2BaseTypeParams)[K], T]>; }[PrimaryTypeName]) => T;
|
|
21
60
|
export declare const TokenPermissionsComponents: [{
|
|
22
61
|
readonly name: "token";
|
|
23
62
|
readonly type: "address";
|
|
@@ -291,4 +330,5 @@ export declare const BatchPermitWitnessTransferFunctionABIType: {
|
|
|
291
330
|
readonly stateMutability: "nonpayable";
|
|
292
331
|
readonly type: "function";
|
|
293
332
|
};
|
|
333
|
+
export {};
|
|
294
334
|
//# sourceMappingURL=signatureTransferHelpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signatureTransferHelpers.d.ts","sourceRoot":"","sources":["signatureTransferHelpers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"signatureTransferHelpers.d.ts","sourceRoot":"","sources":["signatureTransferHelpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file Helpers for working with
|
|
2
|
+
* @file Helpers for working with Uniswap Permit2 SignatureTransfer
|
|
3
|
+
* `permitWitnessTransferFrom`.
|
|
4
|
+
* @see {@link https://docs.uniswap.org/contracts/permit2/reference/signature-transfer}
|
|
3
5
|
*
|
|
4
6
|
* This is original code that was adapted for permit2-sdk, unlike @see ./permit2SignatureTransfer.ts
|
|
5
7
|
*/
|
|
@@ -10,7 +12,10 @@
|
|
|
10
12
|
|
|
11
13
|
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
import { keyMirror } from '@agoric/internal/src/keyMirror.js';
|
|
16
|
+
import { objectMapMutable } from '@agoric/internal/src/js-utils.js';
|
|
17
|
+
;
|
|
18
|
+
;
|
|
14
19
|
import {
|
|
15
20
|
PermitBatchTransferFromTypeParams,
|
|
16
21
|
permitBatchWitnessTransferFromTypes,
|
|
@@ -18,59 +23,84 @@ import {
|
|
|
18
23
|
permitWitnessTransferFromTypes,
|
|
19
24
|
} from './signatureTransfer.js';
|
|
20
25
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
) => {
|
|
32
|
-
const baseTypeStrings = Object.fromEntries(
|
|
33
|
-
Object.entries({
|
|
34
|
-
PermitBatchWitnessTransferFrom: permitBatchWitnessTransferFromTypes,
|
|
35
|
-
PermitWitnessTransferFrom: permitWitnessTransferFromTypes,
|
|
36
|
-
}).map(([typeName, typeFunc]) => {
|
|
37
|
-
const encoded = encodeType({
|
|
38
|
-
primaryType: typeName,
|
|
39
|
-
// @ts-expect-error undefined is not allowed in types but supported in implementation
|
|
40
|
-
types: typeFunc(undefined),
|
|
41
|
-
});
|
|
26
|
+
const PrimaryTypes = keyMirror({
|
|
27
|
+
PermitBatchWitnessTransferFrom: null,
|
|
28
|
+
PermitWitnessTransferFrom: null,
|
|
29
|
+
});
|
|
30
|
+
;
|
|
42
31
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}),
|
|
46
|
-
);
|
|
32
|
+
export const isPermit2MessageType = (type ) =>
|
|
33
|
+
type in PrimaryTypes;
|
|
47
34
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
35
|
+
const getPrimaryType = (types ) => {
|
|
36
|
+
const found = Object.keys(types).filter(isPermit2MessageType);
|
|
37
|
+
if (found.length !== 1) {
|
|
38
|
+
throw new Error(
|
|
39
|
+
`Exactly one of the following types must be defined: ${Object.keys(PrimaryTypes).join(', ')}`,
|
|
51
40
|
);
|
|
41
|
+
}
|
|
42
|
+
return found[0];
|
|
43
|
+
};
|
|
52
44
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
45
|
+
const permit2BaseTypeParams = {
|
|
46
|
+
PermitBatchWitnessTransferFrom: PermitBatchTransferFromTypeParams,
|
|
47
|
+
PermitWitnessTransferFrom: PermitTransferFromTypeParams,
|
|
48
|
+
} ;
|
|
58
49
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
});
|
|
50
|
+
const typeMakers = {
|
|
51
|
+
PermitBatchWitnessTransferFrom: permitBatchWitnessTransferFromTypes,
|
|
52
|
+
PermitWitnessTransferFrom: permitWitnessTransferFromTypes,
|
|
53
|
+
} ;
|
|
64
54
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Make a function for returning the `witnessTypeString` argument to use in a
|
|
57
|
+
* `permitWitnessTransferFrom` call.
|
|
58
|
+
*/
|
|
59
|
+
export const makeWitnessTypeStringExtractor = (powers
|
|
60
|
+
|
|
61
|
+
) => {
|
|
62
|
+
const { encodeType } = powers;
|
|
63
|
+
const encodedTypePrefixes = objectMapMutable(
|
|
64
|
+
typeMakers,
|
|
65
|
+
(makeTypes, primaryType) => {
|
|
66
|
+
// Each EIP-712 `types` record produced by `makeTypes` differs only in the
|
|
67
|
+
// fields of the struct identified by `primaryType` and any dependencies
|
|
68
|
+
// of its witness field, so the string encoding of any such struct will
|
|
69
|
+
// have a common prefix (e.g.,
|
|
70
|
+
// `PermitWitnessTransferFrom(TokenPermissions permitted,...,uint256 deadline,`,
|
|
71
|
+
// where what follows that last comma is the witness field).
|
|
72
|
+
// We construct that prefix by calling `makeTypes` with *no* witness,
|
|
73
|
+
// which is in violation of its static typing information but implemented
|
|
74
|
+
// to return types in which `primaryType` has no witness field and
|
|
75
|
+
// therefore encodes to a string with a `)` where the witness field
|
|
76
|
+
// belongs.
|
|
77
|
+
// @ts-expect-error undefined witness
|
|
78
|
+
const baseTypes = makeTypes(undefined);
|
|
79
|
+
const encoded = encodeType({ primaryType, types: baseTypes });
|
|
80
|
+
return encoded.substring(0, encoded.indexOf(')'));
|
|
81
|
+
},
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Return the `witnessTypeString` argument for a `permitWitnessTransferFrom`
|
|
86
|
+
* call using the provided EIP-712 `types` record.
|
|
87
|
+
* Note that `types` must define either a valid "PermitWitnessTransferFrom" or
|
|
88
|
+
* a valid "PermitBatchWitnessTransferFrom", but not both.
|
|
89
|
+
* The returned string is the suffix of the EIP-712 encoding of that primary
|
|
90
|
+
* type that starts with its witness field.
|
|
91
|
+
*/
|
|
92
|
+
const getWitnessTypeString = (types ) => {
|
|
93
|
+
const primaryType = getPrimaryType(types);
|
|
94
|
+
const encodedType = encodeType({ primaryType, types });
|
|
95
|
+
|
|
96
|
+
const prefix = encodedTypePrefixes[primaryType];
|
|
97
|
+
if (!encodedType.startsWith(prefix)) {
|
|
98
|
+
throw new Error(`${primaryType} must start with expected base fields`);
|
|
70
99
|
}
|
|
71
100
|
|
|
72
|
-
return encodedType.substring(
|
|
101
|
+
return encodedType.substring(prefix.length);
|
|
73
102
|
};
|
|
103
|
+
return getWitnessTypeString;
|
|
74
104
|
};
|
|
75
105
|
|
|
76
106
|
;
|
|
@@ -81,66 +111,43 @@ export const makeWitnessTypeStringExtractor = ({
|
|
|
81
111
|
|
|
82
112
|
|
|
83
113
|
|
|
114
|
+
/**
|
|
115
|
+
* Confirm that the input is a EIP-712 `types` record with a single struct
|
|
116
|
+
* definition for the first argument to a `permitWitnessTransferFrom` call
|
|
117
|
+
* (i.e., named either "PermitWitnessTransferFrom" for a single-token transfer
|
|
118
|
+
* or "PermitBatchWitnessTransferFrom" for a multi-token transfer), and return
|
|
119
|
+
* the TypedDataParameter describing the witness field of that definition.
|
|
120
|
+
*/
|
|
84
121
|
export const extractWitnessFieldFromTypes = (
|
|
85
122
|
|
|
86
123
|
|
|
87
|
-
types
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
,
|
|
124
|
+
types
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
,
|
|
100
130
|
) => {
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
PermitWitnessTransferFrom: PermitTransferFromTypeParams,
|
|
104
|
-
};
|
|
131
|
+
const primaryTypeName = getPrimaryType(types);
|
|
132
|
+
const fieldDefs = (types )[primaryTypeName];
|
|
105
133
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if (matchingTypes.length !== 1) {
|
|
111
|
-
throw new Error(
|
|
112
|
-
`TypedData must have exactly one of the following types: ${Object.keys(baseTypes).join(', ')}`,
|
|
113
|
-
);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const primaryType = matchingTypes[0];
|
|
117
|
-
const candidateType = (types )[primaryType];
|
|
118
|
-
const referenceType = baseTypes[primaryType];
|
|
119
|
-
if (candidateType.length !== referenceType.length + 1) {
|
|
134
|
+
// `fieldDefs` must match the expected base type with a single extra field for
|
|
135
|
+
// witness data.
|
|
136
|
+
const baseFieldDefs = permit2BaseTypeParams[primaryTypeName];
|
|
137
|
+
if (fieldDefs.length !== baseFieldDefs.length + 1) {
|
|
120
138
|
throw new Error(
|
|
121
|
-
|
|
139
|
+
`${primaryTypeName} must have ${baseFieldDefs.length + 1} fields`,
|
|
122
140
|
);
|
|
123
141
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
if (
|
|
127
|
-
candidateType[i].name !== field.name ||
|
|
128
|
-
candidateType[i].type !== field.type
|
|
129
|
-
) {
|
|
142
|
+
for (const [i, { name, type }] of baseFieldDefs.entries()) {
|
|
143
|
+
if (fieldDefs[i].name !== name || fieldDefs[i].type !== type) {
|
|
130
144
|
throw new Error(
|
|
131
|
-
|
|
145
|
+
`${primaryTypeName} field at index ${i} must be \`${type} ${name}\``,
|
|
132
146
|
);
|
|
133
147
|
}
|
|
134
148
|
}
|
|
135
149
|
|
|
136
|
-
return
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
export const isPermit2MessageType = (type ) => {
|
|
140
|
-
return (
|
|
141
|
-
type === 'PermitBatchWitnessTransferFrom' ||
|
|
142
|
-
type === 'PermitWitnessTransferFrom'
|
|
143
|
-
);
|
|
150
|
+
return fieldDefs[fieldDefs.length - 1] ;
|
|
144
151
|
};
|
|
145
152
|
|
|
146
153
|
export const TokenPermissionsComponents = [
|
|
@@ -9,6 +9,10 @@ type MessageTypeProperty = {
|
|
|
9
9
|
name: string;
|
|
10
10
|
type: string;
|
|
11
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* Serialize an EIP-712 struct definition to a string per
|
|
14
|
+
* https://eips.ethereum.org/EIPS/eip-712#definition-of-encodetype
|
|
15
|
+
*/
|
|
12
16
|
export declare function encodeType({ primaryType, types, }: {
|
|
13
17
|
primaryType: string;
|
|
14
18
|
types: Record<string, readonly MessageTypeProperty[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hashTypedData.d.ts","sourceRoot":"","sources":["hashTypedData.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,KAAK,GACN,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC,CAAC;CACvD,UAaA"}
|
|
1
|
+
{"version":3,"file":"hashTypedData.d.ts","sourceRoot":"","sources":["hashTypedData.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,KAAK,GACN,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC,CAAC;CACvD,UAaA"}
|