@agoric/portfolio-api 0.1.1-dev-dda9926.0.dda9926 → 0.1.1-dev-b1cc644.0.b1cc644
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 +4 -4
- package/src/evm/types.d.ts +9 -7
- package/src/evm/types.d.ts.map +1 -1
- package/src/evm/types.js +19 -14
- package/src/evm-wallet/eip712-messages.d.ts +49 -3
- package/src/evm-wallet/eip712-messages.d.ts.map +1 -1
- package/src/evm-wallet/eip712-messages.js +21 -2
- package/src/evm-wallet/message-handler-helpers.d.ts +3 -2
- package/src/evm-wallet/message-handler-helpers.d.ts.map +1 -1
- package/src/evm-wallet/message-handler-helpers.js +14 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agoric/portfolio-api",
|
|
3
|
-
"version": "0.1.1-dev-
|
|
3
|
+
"version": "0.1.1-dev-b1cc644.0.b1cc644",
|
|
4
4
|
"description": "API for Portfolio management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"generate:ymax-machine": "npx tsx scripts/gen-ymax-machine.mts"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@agoric/internal": "0.3.3-dev-
|
|
31
|
-
"@agoric/orchestration": "0.1.1-dev-
|
|
30
|
+
"@agoric/internal": "0.3.3-dev-b1cc644.0.b1cc644",
|
|
31
|
+
"@agoric/orchestration": "0.1.1-dev-b1cc644.0.b1cc644",
|
|
32
32
|
"@endo/common": "^1.2.13",
|
|
33
33
|
"@endo/errors": "^1.2.13",
|
|
34
34
|
"@endo/patterns": "^1.7.0"
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"engines": {
|
|
70
70
|
"node": "^20.9 || ^22.11"
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "b1cc64412ba387a7cecc90ad087492829e5ebbd2"
|
|
73
73
|
}
|
package/src/evm/types.d.ts
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
|
+
import type { PureData } from '@endo/pass-style';
|
|
1
2
|
export type PortfolioPath = `published.ymax${0 | 1}.portfolios.portfolio${number}`;
|
|
2
|
-
|
|
3
|
+
type EIPCommonMessageUpdate = {
|
|
3
4
|
updated: 'messageUpdate';
|
|
4
5
|
nonce: bigint;
|
|
6
|
+
deadline: bigint;
|
|
7
|
+
};
|
|
8
|
+
export type EIPMessageUpdate = EIPCommonMessageUpdate & ({
|
|
5
9
|
status: 'pending';
|
|
6
10
|
} | {
|
|
7
|
-
updated: 'messageUpdate';
|
|
8
|
-
nonce: bigint;
|
|
9
|
-
error: string;
|
|
10
11
|
status: 'error';
|
|
12
|
+
error: string;
|
|
11
13
|
} | {
|
|
12
|
-
updated: 'messageUpdate';
|
|
13
|
-
nonce: bigint;
|
|
14
14
|
status: 'ok';
|
|
15
|
-
|
|
15
|
+
result: PureData;
|
|
16
|
+
});
|
|
16
17
|
export type EVMWalletUpdate = EIPMessageUpdate | never;
|
|
18
|
+
export {};
|
|
17
19
|
//# sourceMappingURL=types.d.ts.map
|
package/src/evm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACvB,iBAAiB,CAAC,GAAG,CAAC,wBAAwB,MAAM,EAAE,CAAC;AAEzD,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,MAAM,aAAa,GACvB,iBAAiB,CAAC,GAAG,CAAC,wBAAwB,MAAM,EAAE,CAAC;AAEzD,KAAK,sBAAsB,GAAG;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,GACnD,CACI;IACE,MAAM,EAAE,SAAS,CAAC;CACnB,GACD;IACE,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IACE,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC;CAClB,CACJ,CAAC;AAEJ,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,KAAK,CAAC"}
|
package/src/evm/types.js
CHANGED
|
@@ -32,8 +32,10 @@ declare const YmaxStandaloneDomainBase: {
|
|
|
32
32
|
readonly name: "Ymax";
|
|
33
33
|
readonly version: "1";
|
|
34
34
|
};
|
|
35
|
-
export type
|
|
35
|
+
export type YmaxSharedDomain = typeof YmaxStandaloneDomainBase & {
|
|
36
36
|
chainId: bigint;
|
|
37
|
+
};
|
|
38
|
+
export type YmaxStandaloneDomain = YmaxSharedDomain & {
|
|
37
39
|
verifyingContract: Address;
|
|
38
40
|
};
|
|
39
41
|
declare const SharedPortfolioTypeParams: [];
|
|
@@ -67,6 +69,19 @@ declare const OperationTypes: {
|
|
|
67
69
|
readonly name: "portfolio";
|
|
68
70
|
readonly type: "uint256";
|
|
69
71
|
}];
|
|
72
|
+
/**
|
|
73
|
+
* Withdraw funds from a portfolio to the source EVM account.
|
|
74
|
+
* The signer of the message must match the portfolio's source EVM account
|
|
75
|
+
* The destination chain is determined from the domain info (chainId).
|
|
76
|
+
* - token: ERC-20 token contract address (must be USDC contract on the destination chain)
|
|
77
|
+
*/
|
|
78
|
+
readonly Withdraw: readonly [{
|
|
79
|
+
readonly name: "withdraw";
|
|
80
|
+
readonly type: "Asset";
|
|
81
|
+
}, {
|
|
82
|
+
readonly name: "portfolio";
|
|
83
|
+
readonly type: "uint256";
|
|
84
|
+
}];
|
|
70
85
|
};
|
|
71
86
|
type OperationTypes = typeof OperationTypes;
|
|
72
87
|
export type OperationTypeNames = keyof OperationTypes;
|
|
@@ -78,6 +93,13 @@ declare const OperationSubTypes: {
|
|
|
78
93
|
readonly name: "portion";
|
|
79
94
|
readonly type: "uint256";
|
|
80
95
|
}];
|
|
96
|
+
readonly Asset: [{
|
|
97
|
+
readonly name: "token";
|
|
98
|
+
readonly type: "address";
|
|
99
|
+
}, {
|
|
100
|
+
readonly name: "amount";
|
|
101
|
+
readonly type: "uint256";
|
|
102
|
+
}];
|
|
81
103
|
};
|
|
82
104
|
/**
|
|
83
105
|
* Target allocation for portfolio positions.
|
|
@@ -133,6 +155,19 @@ export declare const getYmaxOperationTypes: <T extends OperationTypeNames>(opera
|
|
|
133
155
|
readonly name: "portfolio";
|
|
134
156
|
readonly type: "uint256";
|
|
135
157
|
}];
|
|
158
|
+
/**
|
|
159
|
+
* Withdraw funds from a portfolio to the source EVM account.
|
|
160
|
+
* The signer of the message must match the portfolio's source EVM account
|
|
161
|
+
* The destination chain is determined from the domain info (chainId).
|
|
162
|
+
* - token: ERC-20 token contract address (must be USDC contract on the destination chain)
|
|
163
|
+
*/
|
|
164
|
+
readonly Withdraw: readonly [{
|
|
165
|
+
readonly name: "withdraw";
|
|
166
|
+
readonly type: "Asset";
|
|
167
|
+
}, {
|
|
168
|
+
readonly name: "portfolio";
|
|
169
|
+
readonly type: "uint256";
|
|
170
|
+
}];
|
|
136
171
|
}[K]; } & {
|
|
137
172
|
readonly Allocation: readonly [{
|
|
138
173
|
readonly name: "instrument";
|
|
@@ -141,6 +176,13 @@ export declare const getYmaxOperationTypes: <T extends OperationTypeNames>(opera
|
|
|
141
176
|
readonly name: "portion";
|
|
142
177
|
readonly type: "uint256";
|
|
143
178
|
}];
|
|
179
|
+
readonly Asset: [{
|
|
180
|
+
readonly name: "token";
|
|
181
|
+
readonly type: "address";
|
|
182
|
+
}, {
|
|
183
|
+
readonly name: "amount";
|
|
184
|
+
readonly type: "uint256";
|
|
185
|
+
}];
|
|
144
186
|
};
|
|
145
187
|
export declare const getYmaxWitness: <T extends OperationTypeNames>(operation: T, data: NoInfer<TypedDataToPrimitiveTypes<YmaxWitnessTypes>[YmaxWitnessTypeName<T>]>) => Witness<YmaxWitnessTypes<T>, YmaxWitnessMappedTypeParam<T>>;
|
|
146
188
|
export declare const getYmaxStandaloneDomain: (chainId: bigint | number, verifyingContract: Address) => YmaxStandaloneDomain;
|
|
@@ -150,10 +192,14 @@ export declare const getYmaxStandaloneOperationData: <T extends OperationTypeNam
|
|
|
150
192
|
export type YmaxStandaloneOperationData<T extends OperationTypeNames = OperationTypeNames> = ReturnType<typeof getYmaxStandaloneOperationData<T>>;
|
|
151
193
|
export type YmaxPermitWitnessTransferFromData<T extends OperationTypeNames = OperationTypeNames> = ReturnType<typeof getPermitWitnessTransferFromData<YmaxWitnessTypes<T>, YmaxWitnessMappedTypeParam<T>>>;
|
|
152
194
|
export type YmaxPermitBatchWitnessTransferFromData<T extends OperationTypeNames = OperationTypeNames> = ReturnType<typeof getPermitBatchWitnessTransferFromData<YmaxWitnessTypes<T>, YmaxWitnessMappedTypeParam<T>>>;
|
|
153
|
-
export declare function validateYmaxDomain(domain: TypedDataDomain, validContractAddresses?:
|
|
195
|
+
export declare function validateYmaxDomain(domain: TypedDataDomain, validContractAddresses?: undefined): asserts domain is typeof YmaxStandaloneDomainBase;
|
|
196
|
+
export declare function validateYmaxDomain(domain: TypedDataDomain, validContractAddresses: Record<number | string, Address>): asserts domain is YmaxStandaloneDomain;
|
|
154
197
|
export declare function validateYmaxOperationTypeName<T extends OperationTypeNames>(typeName: string): asserts typeName is T;
|
|
155
198
|
export declare const splitWitnessFieldType: <T extends OperationTypeNames>(fieldName: `${typeof YMAX_DOMAIN_NAME}V${typeof YMAX_DOMAIN_VERSION}${T}`) => {
|
|
156
|
-
domain:
|
|
199
|
+
domain: {
|
|
200
|
+
readonly name: "Ymax";
|
|
201
|
+
readonly version: "1";
|
|
202
|
+
};
|
|
157
203
|
primaryType: T;
|
|
158
204
|
};
|
|
159
205
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eip712-messages.d.ts","sourceRoot":"","sources":["eip712-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAEhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,gCAAgC,EACrC,KAAK,qCAAqC,
|
|
1
|
+
{"version":3,"file":"eip712-messages.d.ts","sourceRoot":"","sources":["eip712-messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
makeWitness,
|
|
27
|
+
TokenPermissionsComponents,
|
|
27
28
|
} from '@agoric/orchestration/src/utils/permit2.js';
|
|
28
29
|
|
|
29
30
|
const YMAX_DOMAIN_NAME = 'Ymax';
|
|
@@ -42,8 +43,10 @@ const YmaxStandaloneDomainBase = {
|
|
|
42
43
|
name: YMAX_DOMAIN_NAME,
|
|
43
44
|
version: YMAX_DOMAIN_VERSION,
|
|
44
45
|
} ;
|
|
45
|
-
;
|
|
46
|
+
;
|
|
46
47
|
|
|
48
|
+
|
|
49
|
+
;
|
|
47
50
|
|
|
48
51
|
|
|
49
52
|
|
|
@@ -72,6 +75,13 @@ const OperationTypes = {
|
|
|
72
75
|
OpenPortfolio: [{ name: 'allocations', type: 'Allocation[]' }],
|
|
73
76
|
Rebalance: [{ name: 'allocations', type: 'Allocation[]' }, PortfolioIdParam],
|
|
74
77
|
Deposit: [PortfolioIdParam],
|
|
78
|
+
/**
|
|
79
|
+
* Withdraw funds from a portfolio to the source EVM account.
|
|
80
|
+
* The signer of the message must match the portfolio's source EVM account
|
|
81
|
+
* The destination chain is determined from the domain info (chainId).
|
|
82
|
+
* - token: ERC-20 token contract address (must be USDC contract on the destination chain)
|
|
83
|
+
*/
|
|
84
|
+
Withdraw: [{ name: 'withdraw', type: 'Asset' }, PortfolioIdParam],
|
|
75
85
|
} ;
|
|
76
86
|
;
|
|
77
87
|
;
|
|
@@ -81,6 +91,7 @@ const OperationSubTypes = {
|
|
|
81
91
|
{ name: 'instrument', type: 'string' },
|
|
82
92
|
{ name: 'portion', type: 'uint256' },
|
|
83
93
|
],
|
|
94
|
+
Asset: TokenPermissionsComponents,
|
|
84
95
|
} ;
|
|
85
96
|
|
|
86
97
|
/**
|
|
@@ -256,10 +267,18 @@ export const getYmaxStandaloneOperationData = (
|
|
|
256
267
|
|
|
257
268
|
|
|
258
269
|
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
259
278
|
export function validateYmaxDomain(
|
|
260
279
|
domain ,
|
|
261
280
|
validContractAddresses ,
|
|
262
|
-
)
|
|
281
|
+
) {
|
|
263
282
|
if (domain.name !== YMAX_DOMAIN_NAME) {
|
|
264
283
|
throw new Error(
|
|
265
284
|
`Invalid Ymax domain name: ${domain.name} (expected ${YMAX_DOMAIN_NAME})`,
|
|
@@ -9,10 +9,11 @@ import type { AbiParameterToPrimitiveType, Address, TypedDataDomain } from 'abit
|
|
|
9
9
|
import type { hashStruct, isHex, recoverTypedDataAddress, validateTypedData } from 'viem/utils';
|
|
10
10
|
import { encodeType, type WithSignature } from '@agoric/orchestration/src/utils/viem.js';
|
|
11
11
|
import { type PermitWitnessTransferFromInputComponents } from '@agoric/orchestration/src/utils/permit2.js';
|
|
12
|
-
import { type OperationTypeNames, type YmaxStandaloneOperationData, type YmaxPermitWitnessTransferFromData, type YmaxOperationType } from './eip712-messages.ts';
|
|
12
|
+
import { type OperationTypeNames, type YmaxStandaloneOperationData, type YmaxPermitWitnessTransferFromData, type YmaxOperationType, type YmaxSharedDomain } from './eip712-messages.ts';
|
|
13
13
|
export type YmaxOperationDetails<T extends OperationTypeNames = OperationTypeNames> = {
|
|
14
14
|
[P in T]: {
|
|
15
15
|
operation: P;
|
|
16
|
+
domain: YmaxSharedDomain;
|
|
16
17
|
data: YmaxOperationType<P>;
|
|
17
18
|
};
|
|
18
19
|
}[T];
|
|
@@ -48,6 +49,6 @@ export declare const makeEVMHandlerUtils: (viemUtils: {
|
|
|
48
49
|
extractOperationDetailsFromStandaloneData: <T extends OperationTypeNames>(data: YmaxStandaloneOperationData<T>, validContractAddresses?: Record<number | string, Address>) => YmaxOperationDetails<T>;
|
|
49
50
|
extractOperationDetailsFromPermit2WitnessData: <T extends OperationTypeNames>(data: YmaxPermitWitnessTransferFromData<T>) => YmaxOperationDetails<T>;
|
|
50
51
|
extractPermitDetails: <T extends OperationTypeNames>(data: YmaxPermitWitnessTransferFromData<T>, owner: Address, signature: WithSignature<object>["signature"]) => PermitDetails;
|
|
51
|
-
extractOperationDetailsFromSignedData: <T extends OperationTypeNames = "Deposit" | "Rebalance" | "OpenPortfolio">(signedData: WithSignature<YmaxPermitWitnessTransferFromData<T> | YmaxStandaloneOperationData<T>>, validStandaloneContractAddresses?: Record<number | string, Address>) => Promise<FullMessageDetails<T>>;
|
|
52
|
+
extractOperationDetailsFromSignedData: <T extends OperationTypeNames = "Withdraw" | "Deposit" | "Rebalance" | "OpenPortfolio">(signedData: WithSignature<YmaxPermitWitnessTransferFromData<T> | YmaxStandaloneOperationData<T>>, validStandaloneContractAddresses?: Record<number | string, Address>) => Promise<FullMessageDetails<T>>;
|
|
52
53
|
};
|
|
53
54
|
//# sourceMappingURL=message-handler-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-handler-helpers.d.ts","sourceRoot":"","sources":["message-handler-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,2BAA2B,EAC3B,OAAO,EACP,eAAe,EAChB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EACV,UAAU,EACV,KAAK,EACL,uBAAuB,EAEvB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,UAAU,EACV,KAAK,aAAa,EACnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAIL,KAAK,wCAAwC,EAC9C,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAChC,KAAK,iCAAiC,EACtC,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"message-handler-helpers.d.ts","sourceRoot":"","sources":["message-handler-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,2BAA2B,EAC3B,OAAO,EACP,eAAe,EAChB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EACV,UAAU,EACV,KAAK,EACL,uBAAuB,EAEvB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,UAAU,EACV,KAAK,aAAa,EACnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAIL,KAAK,wCAAwC,EAC9C,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAChC,KAAK,iCAAiC,EACtC,KAAK,iBAAiB,EAKtB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,oBAAoB,CAC9B,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,IAC/C;KACD,CAAC,IAAI,CAAC,GAAG;QACR,SAAS,EAAE,CAAC,CAAC;QACb,MAAM,EAAE,gBAAgB,CAAC;QACzB,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;KAC5B;CACF,CAAC,CAAC,CAAC,CAAC;AAEL,MAAM,MAAM,gCAAgC,GAAG,2BAA2B,CAAC;IACzE,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,OAAO,wCAAwC,CAAC;CAC7D,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,IAAI,CAAC,gCAAgC,EAAE,iBAAiB,CAAC,CAAC;CAC3E,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAC5B,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,IAC/C,oBAAoB,CAAC,CAAC,CAAC,GAAG;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,WAAW;IAC7C,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,UAAU,EAAE,OAAO,UAAU,CAAC;CAC/B;gDAeG,CAAC,SAAS,kBAAkB,QAEtB,2BAA2B,CAAC,CAAC,CAAC,2BACX,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,KACxD,oBAAoB,CAAC,CAAC,CAAC;oDAiCxB,CAAC,SAAS,kBAAkB,QAEtB,iCAAiC,CAAC,CAAC,CAAC,KACzC,oBAAoB,CAAC,CAAC,CAAC;2BA8BI,CAAC,SAAS,kBAAkB,QAClD,iCAAiC,CAAC,CAAC,CAAC,SACnC,OAAO,aACH,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,KAC5C,aAAa;4CAoDd,CAAC,SAAS,kBAAkB,uEAEhB,aAAa,CACvB,iCAAiC,CAAC,CAAC,CAAC,GAAG,2BAA2B,CAAC,CAAC,CAAC,CACtE,qCACkC,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,KAClE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;CAoDlC,CAAC"}
|
|
@@ -37,6 +37,7 @@ import {
|
|
|
37
37
|
validateYmaxDomain,
|
|
38
38
|
validateYmaxOperationTypeName,
|
|
39
39
|
getYmaxOperationTypes,
|
|
40
|
+
|
|
40
41
|
} from './eip712-messages.ts';
|
|
41
42
|
|
|
42
43
|
;
|
|
@@ -44,6 +45,7 @@ import {
|
|
|
44
45
|
|
|
45
46
|
|
|
46
47
|
|
|
48
|
+
|
|
47
49
|
|
|
48
50
|
|
|
49
51
|
|
|
@@ -104,7 +106,13 @@ export const makeEVMHandlerUtils = (viemUtils
|
|
|
104
106
|
// @ts-expect-error generic/union type compatibility
|
|
105
107
|
const standaloneData = data;
|
|
106
108
|
|
|
107
|
-
|
|
109
|
+
const { domain } = standaloneData;
|
|
110
|
+
|
|
111
|
+
if (validContractAddresses) {
|
|
112
|
+
validateYmaxDomain(domain, validContractAddresses);
|
|
113
|
+
} else {
|
|
114
|
+
validateYmaxDomain(domain);
|
|
115
|
+
}
|
|
108
116
|
validateYmaxOperationTypeName (standaloneData.primaryType);
|
|
109
117
|
|
|
110
118
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -117,7 +125,7 @@ export const makeEVMHandlerUtils = (viemUtils
|
|
|
117
125
|
message: operationData,
|
|
118
126
|
primaryType: operation,
|
|
119
127
|
});
|
|
120
|
-
return { operation, data: operationData };
|
|
128
|
+
return { operation, domain, data: operationData };
|
|
121
129
|
};
|
|
122
130
|
|
|
123
131
|
/**
|
|
@@ -138,14 +146,16 @@ export const makeEVMHandlerUtils = (viemUtils
|
|
|
138
146
|
const witnessData = permitData.message[
|
|
139
147
|
witnessField.name
|
|
140
148
|
] ;
|
|
141
|
-
const
|
|
149
|
+
const { primaryType, domain } = splitWitnessFieldType(witnessField.type);
|
|
150
|
+
const chainId = BigInt((data.domain ).chainId );
|
|
151
|
+
const operation = primaryType ;
|
|
142
152
|
// @ts-expect-error inference issue
|
|
143
153
|
validateTypedData({
|
|
144
154
|
types: getYmaxOperationTypes(operation),
|
|
145
155
|
message: witnessData,
|
|
146
156
|
primaryType: operation,
|
|
147
157
|
});
|
|
148
|
-
return { operation, data: witnessData };
|
|
158
|
+
return { operation, domain: { ...domain, chainId }, data: witnessData };
|
|
149
159
|
};
|
|
150
160
|
|
|
151
161
|
/**
|