@atomiqlabs/chain-evm 2.2.0 → 2.3.0
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/dist/evm/chain/modules/EVMTransactions.js +2 -2
- package/dist/evm/swaps/EVMSwapData.d.ts +4 -0
- package/dist/evm/swaps/EVMSwapData.js +7 -0
- package/dist/utils/Utils.d.ts +4 -0
- package/dist/utils/Utils.js +19 -1
- package/package.json +2 -2
- package/src/evm/chain/modules/EVMTransactions.ts +2 -2
- package/src/evm/swaps/EVMSwapData.ts +8 -0
- package/src/utils/Utils.ts +32 -0
|
@@ -335,7 +335,7 @@ class EVMTransactions extends EVMModule_1.EVMModule {
|
|
|
335
335
|
const tx = ethers_1.Transaction.from({
|
|
336
336
|
...unsignedTx,
|
|
337
337
|
to: unsignedTx.to == null ? null : await (0, ethers_1.resolveAddress)(unsignedTx.to),
|
|
338
|
-
from:
|
|
338
|
+
from: null,
|
|
339
339
|
authorizationList: unsignedTx.authorizationList == null ? null : unsignedTx.authorizationList.map(val => ({
|
|
340
340
|
...val,
|
|
341
341
|
nonce: BigInt(val.nonce),
|
|
@@ -343,7 +343,7 @@ class EVMTransactions extends EVMModule_1.EVMModule {
|
|
|
343
343
|
signature: ethers_1.Signature.from(val.signature)
|
|
344
344
|
}))
|
|
345
345
|
});
|
|
346
|
-
return
|
|
346
|
+
return tx.unsignedSerialized;
|
|
347
347
|
}
|
|
348
348
|
/**
|
|
349
349
|
* Serializes the signed EVM transaction
|
|
@@ -178,4 +178,8 @@ export declare class EVMSwapData extends SwapData {
|
|
|
178
178
|
* @param claimHandlerImpl Claim handler implementation used to resolve swap type
|
|
179
179
|
*/
|
|
180
180
|
static deserializeFromStruct(struct: EscrowDataStruct, claimHandlerImpl: IClaimHandler<any, any>): EVMSwapData;
|
|
181
|
+
/**
|
|
182
|
+
* @inheritDoc
|
|
183
|
+
*/
|
|
184
|
+
getEscrowStruct(): any;
|
|
181
185
|
}
|
|
@@ -4,6 +4,7 @@ exports.EVMSwapData = void 0;
|
|
|
4
4
|
const base_1 = require("@atomiqlabs/base");
|
|
5
5
|
const ethers_1 = require("ethers");
|
|
6
6
|
const TimelockRefundHandler_1 = require("./handlers/refund/TimelockRefundHandler");
|
|
7
|
+
const Utils_1 = require("../../utils/Utils");
|
|
7
8
|
const FLAG_PAY_OUT = 0x01n;
|
|
8
9
|
const FLAG_PAY_IN = 0x02n;
|
|
9
10
|
const FLAG_REPUTATION = 0x04n;
|
|
@@ -413,6 +414,12 @@ class EVMSwapData extends base_1.SwapData {
|
|
|
413
414
|
const { payOut, payIn, reputation, sequence } = EVMSwapData.toFlags(BigInt(struct.flags));
|
|
414
415
|
return new EVMSwapData(struct.offerer, struct.claimer, struct.token, struct.refundHandler, struct.claimHandler, payOut, payIn, reputation, sequence, (0, ethers_1.hexlify)(struct.claimData), (0, ethers_1.hexlify)(struct.refundData), BigInt(struct.amount), struct.depositToken, BigInt(struct.securityDeposit), BigInt(struct.claimerBounty), claimHandlerImpl.getType(), undefined, struct.successActionCommitment);
|
|
415
416
|
}
|
|
417
|
+
/**
|
|
418
|
+
* @inheritDoc
|
|
419
|
+
*/
|
|
420
|
+
getEscrowStruct() {
|
|
421
|
+
return (0, Utils_1.replaceBigInts)(this.toEscrowStruct());
|
|
422
|
+
}
|
|
416
423
|
}
|
|
417
424
|
exports.EVMSwapData = EVMSwapData;
|
|
418
425
|
base_1.SwapData.deserializers["evm"] = EVMSwapData;
|
package/dist/utils/Utils.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export type ReplaceBigInt<T> = T extends bigint ? string : T extends (infer U)[] ? ReplaceBigInt<U>[] : T extends readonly (infer U)[] ? readonly ReplaceBigInt<U>[] : T extends object ? {
|
|
2
|
+
[K in keyof T]: ReplaceBigInt<T[K]>;
|
|
3
|
+
} : T;
|
|
1
4
|
/**
|
|
2
5
|
* Logger interface used across EVM modules.
|
|
3
6
|
*
|
|
@@ -67,3 +70,4 @@ export declare const allowedEthersErrorNumbers: Set<number>;
|
|
|
67
70
|
* @category Internal/Utils
|
|
68
71
|
*/
|
|
69
72
|
export declare const allowedEthersErrorMessages: Set<string>;
|
|
73
|
+
export declare function replaceBigInts<T>(obj: T): ReplaceBigInt<T>;
|
package/dist/utils/Utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.allowedEthersErrorMessages = exports.allowedEthersErrorNumbers = exports.allowedEthersErrorCodes = exports.bigIntMax = exports.uint32ReverseEndianness = exports.tryWithRetries = exports.getLogger = exports.onceAsync = exports.timeoutPromise = void 0;
|
|
3
|
+
exports.replaceBigInts = exports.allowedEthersErrorMessages = exports.allowedEthersErrorNumbers = exports.allowedEthersErrorCodes = exports.bigIntMax = exports.uint32ReverseEndianness = exports.tryWithRetries = exports.getLogger = exports.onceAsync = exports.timeoutPromise = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Returns a promise that resolves after `timeoutMillis` unless aborted first.
|
|
6
6
|
*
|
|
@@ -142,3 +142,21 @@ exports.allowedEthersErrorNumbers = new Set([
|
|
|
142
142
|
exports.allowedEthersErrorMessages = new Set([
|
|
143
143
|
"already known"
|
|
144
144
|
]);
|
|
145
|
+
function replaceBigInts(obj) {
|
|
146
|
+
const replace = (value) => {
|
|
147
|
+
if (typeof (value) === "bigint")
|
|
148
|
+
return "0x" + value.toString(16);
|
|
149
|
+
if (value == null || typeof (value) !== "object")
|
|
150
|
+
return value;
|
|
151
|
+
if (Array.isArray(value)) {
|
|
152
|
+
return value.map(replace);
|
|
153
|
+
}
|
|
154
|
+
const mapped = {};
|
|
155
|
+
for (const key of Object.keys(value)) {
|
|
156
|
+
mapped[key] = replace(value[key]);
|
|
157
|
+
}
|
|
158
|
+
return mapped;
|
|
159
|
+
};
|
|
160
|
+
return replace(obj);
|
|
161
|
+
}
|
|
162
|
+
exports.replaceBigInts = replaceBigInts;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atomiqlabs/chain-evm",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "EVM specific base implementation",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types:": "./dist/index.d.ts",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"author": "adambor",
|
|
28
28
|
"license": "Apache-2.0",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@atomiqlabs/base": "^13.
|
|
30
|
+
"@atomiqlabs/base": "^13.3.0",
|
|
31
31
|
"@noble/hashes": "^1.8.0",
|
|
32
32
|
"@scure/btc-signer": "^1.6.0",
|
|
33
33
|
"buffer": "6.0.3",
|
|
@@ -399,7 +399,7 @@ export class EVMTransactions extends EVMModule<any> {
|
|
|
399
399
|
const tx = Transaction.from({
|
|
400
400
|
...unsignedTx,
|
|
401
401
|
to: unsignedTx.to==null ? null : await resolveAddress(unsignedTx.to),
|
|
402
|
-
from:
|
|
402
|
+
from: null, // Unsigned transaction cannot have its `from` field populated
|
|
403
403
|
authorizationList: unsignedTx.authorizationList==null ? null : unsignedTx.authorizationList.map(val => ({
|
|
404
404
|
...val,
|
|
405
405
|
nonce: BigInt(val.nonce),
|
|
@@ -407,7 +407,7 @@ export class EVMTransactions extends EVMModule<any> {
|
|
|
407
407
|
signature: Signature.from(val.signature)
|
|
408
408
|
}))
|
|
409
409
|
});
|
|
410
|
-
return
|
|
410
|
+
return tx.unsignedSerialized;
|
|
411
411
|
}
|
|
412
412
|
|
|
413
413
|
/**
|
|
@@ -3,6 +3,7 @@ import {AbiCoder, hexlify, keccak256, ZeroHash} from "ethers";
|
|
|
3
3
|
import {EscrowDataStruct, EscrowDataStructOutput} from "./EscrowManagerTypechain";
|
|
4
4
|
import {IClaimHandler} from "./handlers/claim/ClaimHandlers";
|
|
5
5
|
import {TimelockRefundHandler} from "./handlers/refund/TimelockRefundHandler";
|
|
6
|
+
import {replaceBigInts} from "../../utils/Utils";
|
|
6
7
|
|
|
7
8
|
const FLAG_PAY_OUT: bigint = 0x01n;
|
|
8
9
|
const FLAG_PAY_IN: bigint = 0x02n;
|
|
@@ -513,6 +514,13 @@ export class EVMSwapData extends SwapData {
|
|
|
513
514
|
);
|
|
514
515
|
}
|
|
515
516
|
|
|
517
|
+
/**
|
|
518
|
+
* @inheritDoc
|
|
519
|
+
*/
|
|
520
|
+
getEscrowStruct(): any {
|
|
521
|
+
return replaceBigInts(this.toEscrowStruct());
|
|
522
|
+
}
|
|
523
|
+
|
|
516
524
|
}
|
|
517
525
|
|
|
518
526
|
SwapData.deserializers["evm"] = EVMSwapData;
|
package/src/utils/Utils.ts
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
|
|
2
|
+
|
|
3
|
+
export type ReplaceBigInt<T> =
|
|
4
|
+
T extends bigint
|
|
5
|
+
? string
|
|
6
|
+
: T extends (infer U)[]
|
|
7
|
+
? ReplaceBigInt<U>[]
|
|
8
|
+
: T extends readonly (infer U)[]
|
|
9
|
+
? readonly ReplaceBigInt<U>[]
|
|
10
|
+
: T extends object
|
|
11
|
+
? { [K in keyof T]: ReplaceBigInt<T[K]> }
|
|
12
|
+
: T;
|
|
13
|
+
|
|
2
14
|
/**
|
|
3
15
|
* Logger interface used across EVM modules.
|
|
4
16
|
*
|
|
@@ -159,3 +171,23 @@ export const allowedEthersErrorNumbers: Set<number> = new Set([
|
|
|
159
171
|
export const allowedEthersErrorMessages: Set<string> = new Set([
|
|
160
172
|
"already known"
|
|
161
173
|
]);
|
|
174
|
+
|
|
175
|
+
export function replaceBigInts<T>(obj: T): ReplaceBigInt<T> {
|
|
176
|
+
const replace = (value: any): any => {
|
|
177
|
+
if(typeof(value)==="bigint") return "0x"+value.toString(16);
|
|
178
|
+
if(value==null || typeof(value)!=="object") return value;
|
|
179
|
+
|
|
180
|
+
if(Array.isArray(value)) {
|
|
181
|
+
return value.map(replace);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const mapped: any = {};
|
|
185
|
+
for(const key of Object.keys(value)) {
|
|
186
|
+
mapped[key] = replace(value[key]);
|
|
187
|
+
}
|
|
188
|
+
return mapped;
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
return replace(obj);
|
|
192
|
+
}
|
|
193
|
+
|