@bitgo/abstract-eth 25.2.0 → 25.3.1

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.
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runFinalizeUnwrapERC7984Tests = runFinalizeUnwrapERC7984Tests;
7
+ /**
8
+ * TransactionBuilder tests for FinalizeUnwrapERC7984 transaction type.
9
+ */
10
+ const sdk_core_1 = require("@bitgo/sdk-core");
11
+ const should_1 = __importDefault(require("should"));
12
+ const src_1 = require("../../../src");
13
+ const zamaUtils_1 = require("../../../src/lib/zamaUtils");
14
+ const utils_1 = require("../../../src/lib/utils");
15
+ const WRAPPER_ADDRESS = '0x2debbe0487ef921df4457f9e36ed05be2df1ac75'; // hteth:cusdt
16
+ const REQUEST_ID = '0x' + '11'.repeat(32);
17
+ const CLEARTEXT_AMOUNT = '1000000';
18
+ const DECRYPTION_PROOF = '0x' + 'ee'.repeat(64);
19
+ const TEST_PRV_KEY = 'FAC4D04AA0025ECF200D74BC9B5E4616E4B8338B69B61362AAAD49F76E68EF28';
20
+ function runFinalizeUnwrapERC7984Tests(coinName, getBuilder) {
21
+ describe(`${coinName} transaction builder — FinalizeUnwrapERC7984`, () => {
22
+ let txBuilder;
23
+ beforeEach(() => {
24
+ txBuilder = getBuilder(coinName);
25
+ txBuilder.fee({ fee: '1000000000', gasLimit: '200000' });
26
+ txBuilder.counter(1);
27
+ });
28
+ describe('classifyTransaction', () => {
29
+ it('should classify finalizeUnwrap(...) as FinalizeUnwrapERC7984', () => {
30
+ const calldata = (0, zamaUtils_1.buildFinalizeUnwrapCalldata)(REQUEST_ID, CLEARTEXT_AMOUNT, DECRYPTION_PROOF);
31
+ should_1.default.equal((0, utils_1.classifyTransaction)(calldata), sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
32
+ });
33
+ it('should NOT classify approve as FinalizeUnwrapERC7984', () => {
34
+ should_1.default.equal((0, utils_1.classifyTransaction)('0x095ea7b3' + '00'.repeat(64)), sdk_core_1.TransactionType.ContractCall);
35
+ });
36
+ });
37
+ describe('build from scratch', () => {
38
+ it('should build a FinalizeUnwrapERC7984 transaction', async () => {
39
+ txBuilder.type(sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
40
+ txBuilder.contract(WRAPPER_ADDRESS);
41
+ txBuilder.finalizeUnwrapRequestId(REQUEST_ID);
42
+ txBuilder.finalizeUnwrapCleartextAmount(CLEARTEXT_AMOUNT);
43
+ txBuilder.finalizeUnwrapDecryptionProof(DECRYPTION_PROOF);
44
+ const tx = await txBuilder.build();
45
+ const json = tx.toJson();
46
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
47
+ json.to.toLowerCase().should.equal(WRAPPER_ADDRESS.toLowerCase());
48
+ json.data.should.startWith(zamaUtils_1.finalizeUnwrapMethodId);
49
+ json.value.should.equal('0');
50
+ const decoded = (0, zamaUtils_1.decodeFinalizeUnwrapCalldata)(json.data);
51
+ decoded.requestId.should.equal(REQUEST_ID);
52
+ decoded.cleartextAmount.should.equal(CLEARTEXT_AMOUNT);
53
+ decoded.decryptionProof.should.equal(DECRYPTION_PROOF);
54
+ });
55
+ it('should build with EIP-1559 fee model', async () => {
56
+ const builder = getBuilder(coinName);
57
+ builder.fee({
58
+ fee: '30000000000',
59
+ eip1559: {
60
+ maxFeePerGas: '30000000000',
61
+ maxPriorityFeePerGas: '1000000000',
62
+ },
63
+ gasLimit: '200000',
64
+ });
65
+ builder.counter(1);
66
+ builder.type(sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
67
+ builder.contract(WRAPPER_ADDRESS);
68
+ builder.finalizeUnwrapRequestId(REQUEST_ID);
69
+ builder.finalizeUnwrapCleartextAmount(CLEARTEXT_AMOUNT);
70
+ builder.finalizeUnwrapDecryptionProof(DECRYPTION_PROOF);
71
+ const tx = await builder.build();
72
+ const json = tx.toJson();
73
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
74
+ json._type.should.equal(src_1.ETHTransactionType.EIP1559);
75
+ json.data.should.startWith(zamaUtils_1.finalizeUnwrapMethodId);
76
+ });
77
+ });
78
+ describe('signing and round-trip', () => {
79
+ it('should produce a signed transaction with v, r, s and from fields', async () => {
80
+ txBuilder.type(sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
81
+ txBuilder.contract(WRAPPER_ADDRESS);
82
+ txBuilder.finalizeUnwrapRequestId(REQUEST_ID);
83
+ txBuilder.finalizeUnwrapCleartextAmount(CLEARTEXT_AMOUNT);
84
+ txBuilder.finalizeUnwrapDecryptionProof(DECRYPTION_PROOF);
85
+ txBuilder.sign({ key: TEST_PRV_KEY });
86
+ const tx = await txBuilder.build();
87
+ const json = tx.toJson();
88
+ should_1.default.exist(json.v);
89
+ should_1.default.exist(json.r);
90
+ should_1.default.exist(json.s);
91
+ should_1.default.exist(json.from);
92
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
93
+ });
94
+ it('should serialize and deserialize to the same transaction', async () => {
95
+ txBuilder.type(sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
96
+ txBuilder.contract(WRAPPER_ADDRESS);
97
+ txBuilder.finalizeUnwrapRequestId(REQUEST_ID);
98
+ txBuilder.finalizeUnwrapCleartextAmount(CLEARTEXT_AMOUNT);
99
+ txBuilder.finalizeUnwrapDecryptionProof(DECRYPTION_PROOF);
100
+ const originalTx = await txBuilder.build();
101
+ const rawHex = originalTx.toBroadcastFormat();
102
+ const rebuiltBuilder = getBuilder(coinName);
103
+ rebuiltBuilder.from(rawHex);
104
+ const rebuiltTx = await rebuiltBuilder.build();
105
+ rebuiltTx.toBroadcastFormat().should.equal(rawHex);
106
+ should_1.default.equal(rebuiltTx.type, sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
107
+ });
108
+ });
109
+ describe('validation', () => {
110
+ it('should reject missing finalizeUnwrapRequestId', async () => {
111
+ txBuilder.type(sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
112
+ txBuilder.contract(WRAPPER_ADDRESS);
113
+ txBuilder.finalizeUnwrapCleartextAmount(CLEARTEXT_AMOUNT);
114
+ txBuilder.finalizeUnwrapDecryptionProof(DECRYPTION_PROOF);
115
+ await txBuilder.build().should.be.rejectedWith(/missing finalizeUnwrapRequestId/);
116
+ });
117
+ it('should reject missing finalizeUnwrapCleartextAmount', async () => {
118
+ txBuilder.type(sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
119
+ txBuilder.contract(WRAPPER_ADDRESS);
120
+ txBuilder.finalizeUnwrapRequestId(REQUEST_ID);
121
+ txBuilder.finalizeUnwrapDecryptionProof(DECRYPTION_PROOF);
122
+ await txBuilder.build().should.be.rejectedWith(/missing finalizeUnwrapCleartextAmount/);
123
+ });
124
+ });
125
+ });
126
+ }
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYWxpemVVbndyYXBFUkM3OTg0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9maW5hbGl6ZVVud3JhcEVSQzc5ODQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFtQkEsc0VBZ0lDO0FBbkpEOztHQUVHO0FBQ0gsOENBQWtEO0FBQ2xELG9EQUE0QjtBQUM1QixzQ0FBc0U7QUFDdEUsMERBSW9DO0FBQ3BDLGtEQUE2RDtBQUU3RCxNQUFNLGVBQWUsR0FBRyw0Q0FBNEMsQ0FBQyxDQUFDLGNBQWM7QUFDcEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7QUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRCxNQUFNLFlBQVksR0FBRyxrRUFBa0UsQ0FBQztBQUV4RixTQUFnQiw2QkFBNkIsQ0FDM0MsUUFBZ0IsRUFDaEIsVUFBZ0Q7SUFFaEQsUUFBUSxDQUFDLEdBQUcsUUFBUSw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7UUFDdkUsSUFBSSxTQUE2QixDQUFDO1FBRWxDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxTQUFTLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1lBQ25DLEVBQUUsQ0FBQyw4REFBOEQsRUFBRSxHQUFHLEVBQUU7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Ii8qKlxuICogVHJhbnNhY3Rpb25CdWlsZGVyIHRlc3RzIGZvciBGaW5hbGl6ZVVud3JhcEVSQzc5ODQgdHJhbnNhY3Rpb24gdHlwZS5cbiAqL1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IEVUSFRyYW5zYWN0aW9uVHlwZSwgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7XG4gIGJ1aWxkRmluYWxpemVVbndyYXBDYWxsZGF0YSxcbiAgZGVjb2RlRmluYWxpemVVbndyYXBDYWxsZGF0YSxcbiAgZmluYWxpemVVbndyYXBNZXRob2RJZCxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi96YW1hVXRpbHMnO1xuaW1wb3J0IHsgY2xhc3NpZnlUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuXG5jb25zdCBXUkFQUEVSX0FERFJFU1MgPSAnMHgyZGViYmUwNDg3ZWY5MjFkZjQ0NTdmOWUzNmVkMDViZTJkZjFhYzc1JzsgLy8gaHRldGg6Y3VzZHRcbmNvbnN0IFJFUVVFU1RfSUQgPSAnMHgnICsgJzExJy5yZXBlYXQoMzIpO1xuY29uc3QgQ0xFQVJURVhUX0FNT1VOVCA9ICcxMDAwMDAwJztcbmNvbnN0IERFQ1JZUFRJT05fUFJPT0YgPSAnMHgnICsgJ2VlJy5yZXBlYXQoNjQpO1xuY29uc3QgVEVTVF9QUlZfS0VZID0gJ0ZBQzREMDRBQTAwMjVFQ0YyMDBENzRCQzlCNUU0NjE2RTRCODMzOEI2OUI2MTM2MkFBQUQ0OUY3NkU2OEVGMjgnO1xuXG5leHBvcnQgZnVuY3Rpb24gcnVuRmluYWxpemVVbndyYXBFUkM3OTg0VGVzdHMoXG4gIGNvaW5OYW1lOiBzdHJpbmcsXG4gIGdldEJ1aWxkZXI6IChjb2luOiBzdHJpbmcpID0+IFRyYW5zYWN0aW9uQnVpbGRlclxuKTogdm9pZCB7XG4gIGRlc2NyaWJlKGAke2NvaW5OYW1lfSB0cmFuc2FjdGlvbiBidWlsZGVyIOKAlCBGaW5hbGl6ZVVud3JhcEVSQzc5ODRgLCAoKSA9PiB7XG4gICAgbGV0IHR4QnVpbGRlcjogVHJhbnNhY3Rpb25CdWlsZGVyO1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICB0eEJ1aWxkZXIgPSBnZXRCdWlsZGVyKGNvaW5OYW1lKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoeyBmZWU6ICcxMDAwMDAwMDAwJywgZ2FzTGltaXQ6ICcyMDAwMDAnIH0pO1xuICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoMSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnY2xhc3NpZnlUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgY2xhc3NpZnkgZmluYWxpemVVbndyYXAoLi4uKSBhcyBGaW5hbGl6ZVVud3JhcEVSQzc5ODQnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRGaW5hbGl6ZVVud3JhcENhbGxkYXRhKFJFUVVFU1RfSUQsIENMRUFSVEVYVF9BTU9VTlQsIERFQ1JZUFRJT05fUFJPT0YpO1xuICAgICAgICBzaG91bGQuZXF1YWwoY2xhc3NpZnlUcmFuc2FjdGlvbihjYWxsZGF0YSksIFRyYW5zYWN0aW9uVHlwZS5GaW5hbGl6ZVVud3JhcEVSQzc5ODQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgTk9UIGNsYXNzaWZ5IGFwcHJvdmUgYXMgRmluYWxpemVVbndyYXBFUkM3OTg0JywgKCkgPT4ge1xuICAgICAgICBzaG91bGQuZXF1YWwoY2xhc3NpZnlUcmFuc2FjdGlvbignMHgwOTVlYTdiMycgKyAnMDAnLnJlcGVhdCg2NCkpLCBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2J1aWxkIGZyb20gc2NyYXRjaCcsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgYnVpbGQgYSBGaW5hbGl6ZVVud3JhcEVSQzc5ODQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5GaW5hbGl6ZVVud3JhcEVSQzc5ODQpO1xuICAgICAgICB0eEJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLmZpbmFsaXplVW53cmFwUmVxdWVzdElkKFJFUVVFU1RfSUQpO1xuICAgICAgICB0eEJ1aWxkZXIuZmluYWxpemVVbndyYXBDbGVhcnRleHRBbW91bnQoQ0xFQVJURVhUX0FNT1VOVCk7XG4gICAgICAgIHR4QnVpbGRlci5maW5hbGl6ZVVud3JhcERlY3J5cHRpb25Qcm9vZihERUNSWVBUSU9OX1BST09GKTtcblxuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5GaW5hbGl6ZVVud3JhcEVSQzc5ODQpO1xuICAgICAgICBqc29uLnRvLnRvTG93ZXJDYXNlKCkuc2hvdWxkLmVxdWFsKFdSQVBQRVJfQUREUkVTUy50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAganNvbi5kYXRhLnNob3VsZC5zdGFydFdpdGgoZmluYWxpemVVbndyYXBNZXRob2RJZCk7XG4gICAgICAgIGpzb24udmFsdWUuc2hvdWxkLmVxdWFsKCcwJyk7XG5cbiAgICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZUZpbmFsaXplVW53cmFwQ2FsbGRhdGEoanNvbi5kYXRhKTtcbiAgICAgICAgZGVjb2RlZC5yZXF1ZXN0SWQuc2hvdWxkLmVxdWFsKFJFUVVFU1RfSUQpO1xuICAgICAgICBkZWNvZGVkLmNsZWFydGV4dEFtb3VudC5zaG91bGQuZXF1YWwoQ0xFQVJURVhUX0FNT1VOVCk7XG4gICAgICAgIGRlY29kZWQuZGVjcnlwdGlvblByb29mLnNob3VsZC5lcXVhbChERUNSWVBUSU9OX1BST09GKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGJ1aWxkIHdpdGggRUlQLTE1NTkgZmVlIG1vZGVsJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gZ2V0QnVpbGRlcihjb2luTmFtZSk7XG4gICAgICAgIGJ1aWxkZXIuZmVlKHtcbiAgICAgICAgICBmZWU6ICczMDAwMDAwMDAwMCcsXG4gICAgICAgICAgZWlwMTU1OToge1xuICAgICAgICAgICAgbWF4RmVlUGVyR2FzOiAnMzAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXM6ICcxMDAwMDAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdhc0xpbWl0OiAnMjAwMDAwJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGJ1aWxkZXIuY291bnRlcigxKTtcbiAgICAgICAgYnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5GaW5hbGl6ZVVud3JhcEVSQzc5ODQpO1xuICAgICAgICBidWlsZGVyLmNvbnRyYWN0KFdSQVBQRVJfQUREUkVTUyk7XG4gICAgICAgIGJ1aWxkZXIuZmluYWxpemVVbndyYXBSZXF1ZXN0SWQoUkVRVUVTVF9JRCk7XG4gICAgICAgIGJ1aWxkZXIuZmluYWxpemVVbndyYXBDbGVhcnRleHRBbW91bnQoQ0xFQVJURVhUX0FNT1VOVCk7XG4gICAgICAgIGJ1aWxkZXIuZmluYWxpemVVbndyYXBEZWNyeXB0aW9uUHJvb2YoREVDUllQVElPTl9QUk9PRik7XG5cbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IGpzb24gPSB0eC50b0pzb24oKTtcblxuICAgICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLkZpbmFsaXplVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIGpzb24uX3R5cGUuc2hvdWxkLmVxdWFsKEVUSFRyYW5zYWN0aW9uVHlwZS5FSVAxNTU5KTtcbiAgICAgICAganNvbi5kYXRhLnNob3VsZC5zdGFydFdpdGgoZmluYWxpemVVbndyYXBNZXRob2RJZCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdzaWduaW5nIGFuZCByb3VuZC10cmlwJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBwcm9kdWNlIGEgc2lnbmVkIHRyYW5zYWN0aW9uIHdpdGggdiwgciwgcyBhbmQgZnJvbSBmaWVsZHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5GaW5hbGl6ZVVud3JhcEVSQzc5ODQpO1xuICAgICAgICB0eEJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLmZpbmFsaXplVW53cmFwUmVxdWVzdElkKFJFUVVFU1RfSUQpO1xuICAgICAgICB0eEJ1aWxkZXIuZmluYWxpemVVbndyYXBDbGVhcnRleHRBbW91bnQoQ0xFQVJURVhUX0FNT1VOVCk7XG4gICAgICAgIHR4QnVpbGRlci5maW5hbGl6ZVVud3JhcERlY3J5cHRpb25Qcm9vZihERUNSWVBUSU9OX1BST09GKTtcbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IFRFU1RfUFJWX0tFWSB9KTtcblxuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICAgICAgc2hvdWxkLmV4aXN0KGpzb24udik7XG4gICAgICAgIHNob3VsZC5leGlzdChqc29uLnIpO1xuICAgICAgICBzaG91bGQuZXhpc3QoanNvbi5zKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGpzb24uZnJvbSk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuRmluYWxpemVVbndyYXBFUkM3OTg0KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHNlcmlhbGl6ZSBhbmQgZGVzZXJpYWxpemUgdG8gdGhlIHNhbWUgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5GaW5hbGl6ZVVud3JhcEVSQzc5ODQpO1xuICAgICAgICB0eEJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLmZpbmFsaXplVW53cmFwUmVxdWVzdElkKFJFUVVFU1RfSUQpO1xuICAgICAgICB0eEJ1aWxkZXIuZmluYWxpemVVbndyYXBDbGVhcnRleHRBbW91bnQoQ0xFQVJURVhUX0FNT1VOVCk7XG4gICAgICAgIHR4QnVpbGRlci5maW5hbGl6ZVVud3JhcERlY3J5cHRpb25Qcm9vZihERUNSWVBUSU9OX1BST09GKTtcblxuICAgICAgICBjb25zdCBvcmlnaW5hbFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IHJhd0hleCA9IG9yaWdpbmFsVHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgICBjb25zdCByZWJ1aWx0QnVpbGRlciA9IGdldEJ1aWxkZXIoY29pbk5hbWUpO1xuICAgICAgICByZWJ1aWx0QnVpbGRlci5mcm9tKHJhd0hleCk7XG4gICAgICAgIGNvbnN0IHJlYnVpbHRUeCA9IGF3YWl0IHJlYnVpbHRCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgICAgcmVidWlsdFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKHJhd0hleCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLkZpbmFsaXplVW53cmFwRVJDNzk4NCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd2YWxpZGF0aW9uJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgbWlzc2luZyBmaW5hbGl6ZVVud3JhcFJlcXVlc3RJZCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkZpbmFsaXplVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIHR4QnVpbGRlci5jb250cmFjdChXUkFQUEVSX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIuZmluYWxpemVVbndyYXBDbGVhcnRleHRBbW91bnQoQ0xFQVJURVhUX0FNT1VOVCk7XG4gICAgICAgIHR4QnVpbGRlci5maW5hbGl6ZVVud3JhcERlY3J5cHRpb25Qcm9vZihERUNSWVBUSU9OX1BST09GKTtcbiAgICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvbWlzc2luZyBmaW5hbGl6ZVVud3JhcFJlcXVlc3RJZC8pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmVqZWN0IG1pc3NpbmcgZmluYWxpemVVbndyYXBDbGVhcnRleHRBbW91bnQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5GaW5hbGl6ZVVud3JhcEVSQzc5ODQpO1xuICAgICAgICB0eEJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLmZpbmFsaXplVW53cmFwUmVxdWVzdElkKFJFUVVFU1RfSUQpO1xuICAgICAgICB0eEJ1aWxkZXIuZmluYWxpemVVbndyYXBEZWNyeXB0aW9uUHJvb2YoREVDUllQVElPTl9QUk9PRik7XG4gICAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL21pc3NpbmcgZmluYWxpemVVbndyYXBDbGVhcnRleHRBbW91bnQvKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==
@@ -4,4 +4,7 @@ export * from './walletInitialization';
4
4
  export * from './flushNft';
5
5
  export * from './decryptionDelegation';
6
6
  export * from './flushERC7984';
7
+ export * from './wrapERC7984';
8
+ export * from './unwrapERC7984';
9
+ export * from './finalizeUnwrapERC7984';
7
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC"}
@@ -20,4 +20,7 @@ __exportStar(require("./walletInitialization"), exports);
20
20
  __exportStar(require("./flushNft"), exports);
21
21
  __exportStar(require("./decryptionDelegation"), exports);
22
22
  __exportStar(require("./flushERC7984"), exports);
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwREFBd0M7QUFDeEMseUNBQXVCO0FBQ3ZCLHlEQUF1QztBQUN2Qyw2Q0FBMkI7QUFDM0IseURBQXVDO0FBQ3ZDLGlEQUErQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWRkcmVzc0luaXRpYWxpemF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vc2VuZCc7XG5leHBvcnQgKiBmcm9tICcuL3dhbGxldEluaXRpYWxpemF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vZmx1c2hOZnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNyeXB0aW9uRGVsZWdhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2ZsdXNoRVJDNzk4NCc7XG4iXX0=
23
+ __exportStar(require("./wrapERC7984"), exports);
24
+ __exportStar(require("./unwrapERC7984"), exports);
25
+ __exportStar(require("./finalizeUnwrapERC7984"), exports);
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwREFBd0M7QUFDeEMseUNBQXVCO0FBQ3ZCLHlEQUF1QztBQUN2Qyw2Q0FBMkI7QUFDM0IseURBQXVDO0FBQ3ZDLGlEQUErQjtBQUMvQixnREFBOEI7QUFDOUIsa0RBQWdDO0FBQ2hDLDBEQUF3QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWRkcmVzc0luaXRpYWxpemF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vc2VuZCc7XG5leHBvcnQgKiBmcm9tICcuL3dhbGxldEluaXRpYWxpemF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vZmx1c2hOZnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNyeXB0aW9uRGVsZWdhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2ZsdXNoRVJDNzk4NCc7XG5leHBvcnQgKiBmcm9tICcuL3dyYXBFUkM3OTg0JztcbmV4cG9ydCAqIGZyb20gJy4vdW53cmFwRVJDNzk4NCc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbmFsaXplVW53cmFwRVJDNzk4NCc7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ import { TransactionBuilder } from '../../../src';
2
+ export declare function runUnwrapERC7984Tests(coinName: string, getBuilder: (coin: string) => TransactionBuilder): void;
3
+ //# sourceMappingURL=unwrapERC7984.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unwrapERC7984.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/unwrapERC7984.ts"],"names":[],"mappings":"AAKA,OAAO,EAAsB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUtE,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,kBAAkB,GAAG,IAAI,CAoI9G"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runUnwrapERC7984Tests = runUnwrapERC7984Tests;
7
+ /**
8
+ * TransactionBuilder tests for UnwrapERC7984 transaction type.
9
+ */
10
+ const sdk_core_1 = require("@bitgo/sdk-core");
11
+ const should_1 = __importDefault(require("should"));
12
+ const src_1 = require("../../../src");
13
+ const zamaUtils_1 = require("../../../src/lib/zamaUtils");
14
+ const utils_1 = require("../../../src/lib/utils");
15
+ const WRAPPER_ADDRESS = '0x2debbe0487ef921df4457f9e36ed05be2df1ac75'; // hteth:cusdt
16
+ const BASE_ADDRESS = '0x1111111111111111111111111111111111111111';
17
+ const ENCRYPTED_AMOUNT = '0x' + 'ab'.repeat(32);
18
+ const INPUT_PROOF = '0x' + 'cd'.repeat(64);
19
+ const TEST_PRV_KEY = 'FAC4D04AA0025ECF200D74BC9B5E4616E4B8338B69B61362AAAD49F76E68EF28';
20
+ function runUnwrapERC7984Tests(coinName, getBuilder) {
21
+ describe(`${coinName} transaction builder — UnwrapERC7984`, () => {
22
+ let txBuilder;
23
+ beforeEach(() => {
24
+ txBuilder = getBuilder(coinName);
25
+ txBuilder.fee({ fee: '1000000000', gasLimit: '200000' });
26
+ txBuilder.counter(1);
27
+ });
28
+ describe('classifyTransaction', () => {
29
+ it('should classify unwrap(...) as UnwrapERC7984', () => {
30
+ const calldata = (0, zamaUtils_1.buildUnwrapCalldata)(BASE_ADDRESS, BASE_ADDRESS, ENCRYPTED_AMOUNT, INPUT_PROOF);
31
+ should_1.default.equal((0, utils_1.classifyTransaction)(calldata), sdk_core_1.TransactionType.UnwrapERC7984);
32
+ });
33
+ it('should NOT classify approve as UnwrapERC7984', () => {
34
+ should_1.default.equal((0, utils_1.classifyTransaction)('0x095ea7b3' + '00'.repeat(64)), sdk_core_1.TransactionType.ContractCall);
35
+ });
36
+ });
37
+ describe('build from scratch', () => {
38
+ it('should build an UnwrapERC7984 transaction', async () => {
39
+ txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
40
+ txBuilder.contract(WRAPPER_ADDRESS);
41
+ txBuilder.unwrapFrom(BASE_ADDRESS);
42
+ txBuilder.unwrapTo(BASE_ADDRESS);
43
+ txBuilder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
44
+ txBuilder.unwrapInputProof(INPUT_PROOF);
45
+ const tx = await txBuilder.build();
46
+ const json = tx.toJson();
47
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.UnwrapERC7984);
48
+ json.to.toLowerCase().should.equal(WRAPPER_ADDRESS.toLowerCase());
49
+ json.data.should.startWith(zamaUtils_1.unwrapMethodId);
50
+ json.value.should.equal('0');
51
+ const decoded = (0, zamaUtils_1.decodeUnwrapCalldata)(json.data);
52
+ decoded.from.toLowerCase().should.equal(BASE_ADDRESS.toLowerCase());
53
+ decoded.to.toLowerCase().should.equal(BASE_ADDRESS.toLowerCase());
54
+ decoded.encryptedAmount.should.equal(ENCRYPTED_AMOUNT);
55
+ decoded.inputProof.should.equal(INPUT_PROOF);
56
+ });
57
+ it('should build with EIP-1559 fee model', async () => {
58
+ const builder = getBuilder(coinName);
59
+ builder.fee({
60
+ fee: '30000000000',
61
+ eip1559: {
62
+ maxFeePerGas: '30000000000',
63
+ maxPriorityFeePerGas: '1000000000',
64
+ },
65
+ gasLimit: '200000',
66
+ });
67
+ builder.counter(1);
68
+ builder.type(sdk_core_1.TransactionType.UnwrapERC7984);
69
+ builder.contract(WRAPPER_ADDRESS);
70
+ builder.unwrapFrom(BASE_ADDRESS);
71
+ builder.unwrapTo(BASE_ADDRESS);
72
+ builder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
73
+ builder.unwrapInputProof(INPUT_PROOF);
74
+ const tx = await builder.build();
75
+ const json = tx.toJson();
76
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.UnwrapERC7984);
77
+ json._type.should.equal(src_1.ETHTransactionType.EIP1559);
78
+ json.data.should.startWith(zamaUtils_1.unwrapMethodId);
79
+ });
80
+ });
81
+ describe('signing and round-trip', () => {
82
+ it('should produce a signed transaction with v, r, s and from fields', async () => {
83
+ txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
84
+ txBuilder.contract(WRAPPER_ADDRESS);
85
+ txBuilder.unwrapFrom(BASE_ADDRESS);
86
+ txBuilder.unwrapTo(BASE_ADDRESS);
87
+ txBuilder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
88
+ txBuilder.unwrapInputProof(INPUT_PROOF);
89
+ txBuilder.sign({ key: TEST_PRV_KEY });
90
+ const tx = await txBuilder.build();
91
+ const json = tx.toJson();
92
+ should_1.default.exist(json.v);
93
+ should_1.default.exist(json.r);
94
+ should_1.default.exist(json.s);
95
+ should_1.default.exist(json.from);
96
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.UnwrapERC7984);
97
+ });
98
+ it('should serialize and deserialize to the same transaction', async () => {
99
+ txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
100
+ txBuilder.contract(WRAPPER_ADDRESS);
101
+ txBuilder.unwrapFrom(BASE_ADDRESS);
102
+ txBuilder.unwrapTo(BASE_ADDRESS);
103
+ txBuilder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
104
+ txBuilder.unwrapInputProof(INPUT_PROOF);
105
+ const originalTx = await txBuilder.build();
106
+ const rawHex = originalTx.toBroadcastFormat();
107
+ const rebuiltBuilder = getBuilder(coinName);
108
+ rebuiltBuilder.from(rawHex);
109
+ const rebuiltTx = await rebuiltBuilder.build();
110
+ rebuiltTx.toBroadcastFormat().should.equal(rawHex);
111
+ should_1.default.equal(rebuiltTx.type, sdk_core_1.TransactionType.UnwrapERC7984);
112
+ });
113
+ });
114
+ describe('validation', () => {
115
+ it('should reject missing unwrapFrom', async () => {
116
+ txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
117
+ txBuilder.contract(WRAPPER_ADDRESS);
118
+ txBuilder.unwrapTo(BASE_ADDRESS);
119
+ txBuilder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
120
+ txBuilder.unwrapInputProof(INPUT_PROOF);
121
+ await txBuilder.build().should.be.rejectedWith(/missing unwrapFrom/);
122
+ });
123
+ it('should reject missing unwrapEncryptedAmount', async () => {
124
+ txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
125
+ txBuilder.contract(WRAPPER_ADDRESS);
126
+ txBuilder.unwrapFrom(BASE_ADDRESS);
127
+ txBuilder.unwrapTo(BASE_ADDRESS);
128
+ txBuilder.unwrapInputProof(INPUT_PROOF);
129
+ await txBuilder.build().should.be.rejectedWith(/missing unwrapEncryptedAmount/);
130
+ });
131
+ });
132
+ });
133
+ }
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW53cmFwRVJDNzk4NC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvdW53cmFwRVJDNzk4NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWVBLHNEQW9JQztBQW5KRDs7R0FFRztBQUNILDhDQUFrRDtBQUNsRCxvREFBNEI7QUFDNUIsc0NBQXNFO0FBQ3RFLDBEQUF1RztBQUN2RyxrREFBNkQ7QUFFN0QsTUFBTSxlQUFlLEdBQUcsNENBQTRDLENBQUMsQ0FBQyxjQUFjO0FBQ3BGLE1BQU0sWUFBWSxHQUFHLDRDQUE0QyxDQUFDO0FBQ2xFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0MsTUFBTSxZQUFZLEdBQUcsa0VBQWtFLENBQUM7QUFFeEYsU0FBZ0IscUJBQXFCLENBQUMsUUFBZ0IsRUFBRSxVQUFnRDtJQUN0RyxRQUFRLENBQUMsR0FBRyxRQUFRLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtRQUMvRCxJQUFJLFNBQTZCLENBQUM7UUFFbEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLFNBQVMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDekQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7WUFDbkMsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtnQkFDdEQsTUFBTSxRQUFRLEdB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QWUsQ0FBQyxDQUFDO2dCQUNwQyxTQUFTLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNuQyxTQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNqQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3hDLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7WUFDbEYsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHJhbnNhY3Rpb25CdWlsZGVyIHRlc3RzIGZvciBVbndyYXBFUkM3OTg0IHRyYW5zYWN0aW9uIHR5cGUuXG4gKi9cbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBFVEhUcmFuc2FjdGlvblR5cGUsIFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBidWlsZFVud3JhcENhbGxkYXRhLCBkZWNvZGVVbndyYXBDYWxsZGF0YSwgdW53cmFwTWV0aG9kSWQgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3phbWFVdGlscyc7XG5pbXBvcnQgeyBjbGFzc2lmeVRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi91dGlscyc7XG5cbmNvbnN0IFdSQVBQRVJfQUREUkVTUyA9ICcweDJkZWJiZTA0ODdlZjkyMWRmNDQ1N2Y5ZTM2ZWQwNWJlMmRmMWFjNzUnOyAvLyBodGV0aDpjdXNkdFxuY29uc3QgQkFTRV9BRERSRVNTID0gJzB4MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc7XG5jb25zdCBFTkNSWVBURURfQU1PVU5UID0gJzB4JyArICdhYicucmVwZWF0KDMyKTtcbmNvbnN0IElOUFVUX1BST09GID0gJzB4JyArICdjZCcucmVwZWF0KDY0KTtcbmNvbnN0IFRFU1RfUFJWX0tFWSA9ICdGQUM0RDA0QUEwMDI1RUNGMjAwRDc0QkM5QjVFNDYxNkU0QjgzMzhCNjlCNjEzNjJBQUFENDlGNzZFNjhFRjI4JztcblxuZXhwb3J0IGZ1bmN0aW9uIHJ1blVud3JhcEVSQzc5ODRUZXN0cyhjb2luTmFtZTogc3RyaW5nLCBnZXRCdWlsZGVyOiAoY29pbjogc3RyaW5nKSA9PiBUcmFuc2FjdGlvbkJ1aWxkZXIpOiB2b2lkIHtcbiAgZGVzY3JpYmUoYCR7Y29pbk5hbWV9IHRyYW5zYWN0aW9uIGJ1aWxkZXIg4oCUIFVud3JhcEVSQzc5ODRgLCAoKSA9PiB7XG4gICAgbGV0IHR4QnVpbGRlcjogVHJhbnNhY3Rpb25CdWlsZGVyO1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICB0eEJ1aWxkZXIgPSBnZXRCdWlsZGVyKGNvaW5OYW1lKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoeyBmZWU6ICcxMDAwMDAwMDAwJywgZ2FzTGltaXQ6ICcyMDAwMDAnIH0pO1xuICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoMSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnY2xhc3NpZnlUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgY2xhc3NpZnkgdW53cmFwKC4uLikgYXMgVW53cmFwRVJDNzk4NCcsICgpID0+IHtcbiAgICAgICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZFVud3JhcENhbGxkYXRhKEJBU0VfQUREUkVTUywgQkFTRV9BRERSRVNTLCBFTkNSWVBURURfQU1PVU5ULCBJTlBVVF9QUk9PRik7XG4gICAgICAgIHNob3VsZC5lcXVhbChjbGFzc2lmeVRyYW5zYWN0aW9uKGNhbGxkYXRhKSwgVHJhbnNhY3Rpb25UeXBlLlVud3JhcEVSQzc5ODQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgTk9UIGNsYXNzaWZ5IGFwcHJvdmUgYXMgVW53cmFwRVJDNzk4NCcsICgpID0+IHtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGNsYXNzaWZ5VHJhbnNhY3Rpb24oJzB4MDk1ZWE3YjMnICsgJzAwJy5yZXBlYXQoNjQpKSwgVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdidWlsZCBmcm9tIHNjcmF0Y2gnLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIGJ1aWxkIGFuIFVud3JhcEVSQzc5ODQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5VbndyYXBFUkM3OTg0KTtcbiAgICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KFdSQVBQRVJfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBGcm9tKEJBU0VfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBUbyhCQVNFX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIudW53cmFwRW5jcnlwdGVkQW1vdW50KEVOQ1JZUFRFRF9BTU9VTlQpO1xuICAgICAgICB0eEJ1aWxkZXIudW53cmFwSW5wdXRQcm9vZihJTlBVVF9QUk9PRik7XG5cbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuXG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIGpzb24udG8udG9Mb3dlckNhc2UoKS5zaG91bGQuZXF1YWwoV1JBUFBFUl9BRERSRVNTLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBqc29uLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aCh1bndyYXBNZXRob2RJZCk7XG4gICAgICAgIGpzb24udmFsdWUuc2hvdWxkLmVxdWFsKCcwJyk7XG5cbiAgICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVVud3JhcENhbGxkYXRhKGpzb24uZGF0YSk7XG4gICAgICAgIGRlY29kZWQuZnJvbS50b0xvd2VyQ2FzZSgpLnNob3VsZC5lcXVhbChCQVNFX0FERFJFU1MudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGRlY29kZWQudG8udG9Mb3dlckNhc2UoKS5zaG91bGQuZXF1YWwoQkFTRV9BRERSRVNTLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBkZWNvZGVkLmVuY3J5cHRlZEFtb3VudC5zaG91bGQuZXF1YWwoRU5DUllQVEVEX0FNT1VOVCk7XG4gICAgICAgIGRlY29kZWQuaW5wdXRQcm9vZi5zaG91bGQuZXF1YWwoSU5QVVRfUFJPT0YpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgYnVpbGQgd2l0aCBFSVAtMTU1OSBmZWUgbW9kZWwnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBnZXRCdWlsZGVyKGNvaW5OYW1lKTtcbiAgICAgICAgYnVpbGRlci5mZWUoe1xuICAgICAgICAgIGZlZTogJzMwMDAwMDAwMDAwJyxcbiAgICAgICAgICBlaXAxNTU5OiB7XG4gICAgICAgICAgICBtYXhGZWVQZXJHYXM6ICczMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICBtYXhQcmlvcml0eUZlZVBlckdhczogJzEwMDAwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2FzTGltaXQ6ICcyMDAwMDAnLFxuICAgICAgICB9KTtcbiAgICAgICAgYnVpbGRlci5jb3VudGVyKDEpO1xuICAgICAgICBidWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlVud3JhcEVSQzc5ODQpO1xuICAgICAgICBidWlsZGVyLmNvbnRyYWN0KFdSQVBQRVJfQUREUkVTUyk7XG4gICAgICAgIGJ1aWxkZXIudW53cmFwRnJvbShCQVNFX0FERFJFU1MpO1xuICAgICAgICBidWlsZGVyLnVud3JhcFRvKEJBU0VfQUREUkVTUyk7XG4gICAgICAgIGJ1aWxkZXIudW53cmFwRW5jcnlwdGVkQW1vdW50KEVOQ1JZUFRFRF9BTU9VTlQpO1xuICAgICAgICBidWlsZGVyLnVud3JhcElucHV0UHJvb2YoSU5QVVRfUFJPT0YpO1xuXG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5VbndyYXBFUkM3OTg0KTtcbiAgICAgICAganNvbi5fdHlwZS5zaG91bGQuZXF1YWwoRVRIVHJhbnNhY3Rpb25UeXBlLkVJUDE1NTkpO1xuICAgICAgICBqc29uLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aCh1bndyYXBNZXRob2RJZCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdzaWduaW5nIGFuZCByb3VuZC10cmlwJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBwcm9kdWNlIGEgc2lnbmVkIHRyYW5zYWN0aW9uIHdpdGggdiwgciwgcyBhbmQgZnJvbSBmaWVsZHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5VbndyYXBFUkM3OTg0KTtcbiAgICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KFdSQVBQRVJfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBGcm9tKEJBU0VfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBUbyhCQVNFX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIudW53cmFwRW5jcnlwdGVkQW1vdW50KEVOQ1JZUFRFRF9BTU9VTlQpO1xuICAgICAgICB0eEJ1aWxkZXIudW53cmFwSW5wdXRQcm9vZihJTlBVVF9QUk9PRik7XG4gICAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBURVNUX1BSVl9LRVkgfSk7XG5cbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuXG4gICAgICAgIHNob3VsZC5leGlzdChqc29uLnYpO1xuICAgICAgICBzaG91bGQuZXhpc3QoanNvbi5yKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGpzb24ucyk7XG4gICAgICAgIHNob3VsZC5leGlzdChqc29uLmZyb20pO1xuICAgICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlVud3JhcEVSQzc5ODQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgc2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZSB0byB0aGUgc2FtZSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlVud3JhcEVSQzc5ODQpO1xuICAgICAgICB0eEJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcEZyb20oQkFTRV9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcFRvKEJBU0VfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBFbmNyeXB0ZWRBbW91bnQoRU5DUllQVEVEX0FNT1VOVCk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBJbnB1dFByb29mKElOUFVUX1BST09GKTtcblxuICAgICAgICBjb25zdCBvcmlnaW5hbFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IHJhd0hleCA9IG9yaWdpbmFsVHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgICBjb25zdCByZWJ1aWx0QnVpbGRlciA9IGdldEJ1aWxkZXIoY29pbk5hbWUpO1xuICAgICAgICByZWJ1aWx0QnVpbGRlci5mcm9tKHJhd0hleCk7XG4gICAgICAgIGNvbnN0IHJlYnVpbHRUeCA9IGF3YWl0IHJlYnVpbHRCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgICAgcmVidWlsdFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKHJhd0hleCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlVud3JhcEVSQzc5ODQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndmFsaWRhdGlvbicsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgcmVqZWN0IG1pc3NpbmcgdW53cmFwRnJvbScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlVud3JhcEVSQzc5ODQpO1xuICAgICAgICB0eEJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcFRvKEJBU0VfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBFbmNyeXB0ZWRBbW91bnQoRU5DUllQVEVEX0FNT1VOVCk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBJbnB1dFByb29mKElOUFVUX1BST09GKTtcbiAgICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvbWlzc2luZyB1bndyYXBGcm9tLyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgbWlzc2luZyB1bndyYXBFbmNyeXB0ZWRBbW91bnQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5VbndyYXBFUkM3OTg0KTtcbiAgICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KFdSQVBQRVJfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBGcm9tKEJBU0VfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBUbyhCQVNFX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIudW53cmFwSW5wdXRQcm9vZihJTlBVVF9QUk9PRik7XG4gICAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL21pc3NpbmcgdW53cmFwRW5jcnlwdGVkQW1vdW50Lyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ import { TransactionBuilder } from '../../../src';
2
+ export declare function runWrapERC7984Tests(coinName: string, getBuilder: (coin: string) => TransactionBuilder): void;
3
+ //# sourceMappingURL=wrapERC7984.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapERC7984.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/wrapERC7984.ts"],"names":[],"mappings":"AAWA,OAAO,EAAsB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUtE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,kBAAkB,GAAG,IAAI,CAqI5G"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runWrapERC7984Tests = runWrapERC7984Tests;
7
+ /**
8
+ * TransactionBuilder tests for WrapERC7984 transaction type.
9
+ *
10
+ * Verifies:
11
+ * - Building a WrapERC7984 tx from scratch (legacy and EIP-1559 fees)
12
+ * - Signing and serialization round-trip
13
+ * - classifyTransaction correctly identifies wrap(address,uint256)
14
+ * - Error cases for missing fields / invalid amount
15
+ */
16
+ const sdk_core_1 = require("@bitgo/sdk-core");
17
+ const should_1 = __importDefault(require("should"));
18
+ const src_1 = require("../../../src");
19
+ const zamaUtils_1 = require("../../../src/lib/zamaUtils");
20
+ const utils_1 = require("../../../src/lib/utils");
21
+ const WRAPPER_ADDRESS = '0x2debbe0487ef921df4457f9e36ed05be2df1ac75'; // hteth:cusdt
22
+ const RECIPIENT = '0x1111111111111111111111111111111111111111';
23
+ const AMOUNT = '1000000';
24
+ const RATE = '1';
25
+ const TEST_PRV_KEY = 'FAC4D04AA0025ECF200D74BC9B5E4616E4B8338B69B61362AAAD49F76E68EF28';
26
+ function runWrapERC7984Tests(coinName, getBuilder) {
27
+ describe(`${coinName} transaction builder — WrapERC7984`, () => {
28
+ let txBuilder;
29
+ beforeEach(() => {
30
+ txBuilder = getBuilder(coinName);
31
+ txBuilder.fee({ fee: '1000000000', gasLimit: '200000' });
32
+ txBuilder.counter(1);
33
+ });
34
+ describe('classifyTransaction', () => {
35
+ it('should classify wrap(address,uint256) as WrapERC7984', () => {
36
+ const calldata = (0, zamaUtils_1.buildWrapCalldata)(RECIPIENT, AMOUNT, RATE);
37
+ should_1.default.equal((0, utils_1.classifyTransaction)(calldata), sdk_core_1.TransactionType.WrapERC7984);
38
+ });
39
+ it('should NOT classify approve as WrapERC7984', () => {
40
+ should_1.default.equal((0, utils_1.classifyTransaction)('0x095ea7b3' + '00'.repeat(64)), sdk_core_1.TransactionType.ContractCall);
41
+ });
42
+ });
43
+ describe('build from scratch', () => {
44
+ it('should build a WrapERC7984 transaction', async () => {
45
+ txBuilder.type(sdk_core_1.TransactionType.WrapERC7984);
46
+ txBuilder.contract(WRAPPER_ADDRESS);
47
+ txBuilder.wrapRecipient(RECIPIENT);
48
+ txBuilder.wrapAmount(AMOUNT);
49
+ txBuilder.wrapRate(RATE);
50
+ const tx = await txBuilder.build();
51
+ const json = tx.toJson();
52
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.WrapERC7984);
53
+ json.to.toLowerCase().should.equal(WRAPPER_ADDRESS.toLowerCase());
54
+ json.data.should.startWith(zamaUtils_1.wrapMethodId);
55
+ json.value.should.equal('0');
56
+ const decoded = (0, zamaUtils_1.decodeWrapCalldata)(json.data);
57
+ decoded.to.toLowerCase().should.equal(RECIPIENT.toLowerCase());
58
+ decoded.amount.should.equal(AMOUNT);
59
+ });
60
+ it('should build with EIP-1559 fee model', async () => {
61
+ const builder = getBuilder(coinName);
62
+ builder.fee({
63
+ fee: '30000000000',
64
+ eip1559: {
65
+ maxFeePerGas: '30000000000',
66
+ maxPriorityFeePerGas: '1000000000',
67
+ },
68
+ gasLimit: '200000',
69
+ });
70
+ builder.counter(1);
71
+ builder.type(sdk_core_1.TransactionType.WrapERC7984);
72
+ builder.contract(WRAPPER_ADDRESS);
73
+ builder.wrapRecipient(RECIPIENT);
74
+ builder.wrapAmount(AMOUNT);
75
+ builder.wrapRate(RATE);
76
+ const tx = await builder.build();
77
+ const json = tx.toJson();
78
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.WrapERC7984);
79
+ json._type.should.equal(src_1.ETHTransactionType.EIP1559);
80
+ json.data.should.startWith(zamaUtils_1.wrapMethodId);
81
+ });
82
+ });
83
+ describe('signing and round-trip', () => {
84
+ it('should produce a signed transaction with v, r, s and from fields', async () => {
85
+ txBuilder.type(sdk_core_1.TransactionType.WrapERC7984);
86
+ txBuilder.contract(WRAPPER_ADDRESS);
87
+ txBuilder.wrapRecipient(RECIPIENT);
88
+ txBuilder.wrapAmount(AMOUNT);
89
+ txBuilder.wrapRate(RATE);
90
+ txBuilder.sign({ key: TEST_PRV_KEY });
91
+ const tx = await txBuilder.build();
92
+ const json = tx.toJson();
93
+ should_1.default.exist(json.v);
94
+ should_1.default.exist(json.r);
95
+ should_1.default.exist(json.s);
96
+ should_1.default.exist(json.from);
97
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.WrapERC7984);
98
+ });
99
+ it('should serialize and deserialize to the same transaction', async () => {
100
+ txBuilder.type(sdk_core_1.TransactionType.WrapERC7984);
101
+ txBuilder.contract(WRAPPER_ADDRESS);
102
+ txBuilder.wrapRecipient(RECIPIENT);
103
+ txBuilder.wrapAmount(AMOUNT);
104
+ txBuilder.wrapRate(RATE);
105
+ const originalTx = await txBuilder.build();
106
+ const rawHex = originalTx.toBroadcastFormat();
107
+ const rebuiltBuilder = getBuilder(coinName);
108
+ rebuiltBuilder.from(rawHex);
109
+ const rebuiltTx = await rebuiltBuilder.build();
110
+ rebuiltTx.toBroadcastFormat().should.equal(rawHex);
111
+ should_1.default.equal(rebuiltTx.type, sdk_core_1.TransactionType.WrapERC7984);
112
+ });
113
+ });
114
+ describe('validation', () => {
115
+ it('should reject missing wrapRecipient', async () => {
116
+ txBuilder.type(sdk_core_1.TransactionType.WrapERC7984);
117
+ txBuilder.contract(WRAPPER_ADDRESS);
118
+ txBuilder.wrapAmount(AMOUNT);
119
+ txBuilder.wrapRate(RATE);
120
+ await txBuilder.build().should.be.rejectedWith(/missing wrapRecipient/);
121
+ });
122
+ it('should reject missing wrapAmount', async () => {
123
+ txBuilder.type(sdk_core_1.TransactionType.WrapERC7984);
124
+ txBuilder.contract(WRAPPER_ADDRESS);
125
+ txBuilder.wrapRecipient(RECIPIENT);
126
+ txBuilder.wrapRate(RATE);
127
+ await txBuilder.build().should.be.rejectedWith(/missing wrapAmount/);
128
+ });
129
+ it('should reject amount 0 via buildWrapCalldata', async () => {
130
+ txBuilder.type(sdk_core_1.TransactionType.WrapERC7984);
131
+ txBuilder.contract(WRAPPER_ADDRESS);
132
+ txBuilder.wrapRecipient(RECIPIENT);
133
+ txBuilder.wrapAmount('0');
134
+ txBuilder.wrapRate(RATE);
135
+ await txBuilder.build().should.be.rejectedWith(/amount must be > 0/);
136
+ });
137
+ });
138
+ });
139
+ }
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcEVSQzc5ODQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3dyYXBFUkM3OTg0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBcUJBLGtEQXFJQztBQTFKRDs7Ozs7Ozs7R0FRRztBQUNILDhDQUFrRDtBQUNsRCxvREFBNEI7QUFDNUIsc0NBQXNFO0FBQ3RFLDBEQUFpRztBQUNqRyxrREFBNkQ7QUFFN0QsTUFBTSxlQUFlLEdBQUcsNENBQTRDLENBQUMsQ0FBQyxjQUFjO0FBQ3BGLE1BQU0sU0FBUyxHQUFHLDRDQUE0QyxDQUFDO0FBQy9ELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQztBQUN6QixNQUFNLElBQUksR0FBRyxHQUFHLENBQUM7QUFDakIsTUFBTSxZQUFZLEdBQUcsa0VBQWtFLENBQUM7QUFFeEYsU0FBZ0IsbUJBQW1CLENBQUMsUUFBZ0IsRUFBRSxVQUFnRDtJQUNwRyxRQUFRLENBQUMsR0FBRyxRQUFRLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtRQUM3RCxJQUFJLFNBQTZCLENBQUM7UUFFbEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLFNBQVMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDekQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7WUFDbkMsRUFBRSxDQUFDLHNEQUFzRCxFQUFFLEdBQUcsRUFBRTtnQkFDOUQsTUFBTSxRQUFRLEdBQUcsSUFBQSw2QkFBaUIsRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM1RCxnQkFBTSxD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U0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDdkUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHJhbnNhY3Rpb25CdWlsZGVyIHRlc3RzIGZvciBXcmFwRVJDNzk4NCB0cmFuc2FjdGlvbiB0eXBlLlxuICpcbiAqIFZlcmlmaWVzOlxuICogICAtIEJ1aWxkaW5nIGEgV3JhcEVSQzc5ODQgdHggZnJvbSBzY3JhdGNoIChsZWdhY3kgYW5kIEVJUC0xNTU5IGZlZXMpXG4gKiAgIC0gU2lnbmluZyBhbmQgc2VyaWFsaXphdGlvbiByb3VuZC10cmlwXG4gKiAgIC0gY2xhc3NpZnlUcmFuc2FjdGlvbiBjb3JyZWN0bHkgaWRlbnRpZmllcyB3cmFwKGFkZHJlc3MsdWludDI1NilcbiAqICAgLSBFcnJvciBjYXNlcyBmb3IgbWlzc2luZyBmaWVsZHMgLyBpbnZhbGlkIGFtb3VudFxuICovXG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgRVRIVHJhbnNhY3Rpb25UeXBlLCBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHsgYnVpbGRXcmFwQ2FsbGRhdGEsIGRlY29kZVdyYXBDYWxsZGF0YSwgd3JhcE1ldGhvZElkIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi96YW1hVXRpbHMnO1xuaW1wb3J0IHsgY2xhc3NpZnlUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuXG5jb25zdCBXUkFQUEVSX0FERFJFU1MgPSAnMHgyZGViYmUwNDg3ZWY5MjFkZjQ0NTdmOWUzNmVkMDViZTJkZjFhYzc1JzsgLy8gaHRldGg6Y3VzZHRcbmNvbnN0IFJFQ0lQSUVOVCA9ICcweDExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnO1xuY29uc3QgQU1PVU5UID0gJzEwMDAwMDAnO1xuY29uc3QgUkFURSA9ICcxJztcbmNvbnN0IFRFU1RfUFJWX0tFWSA9ICdGQUM0RDA0QUEwMDI1RUNGMjAwRDc0QkM5QjVFNDYxNkU0QjgzMzhCNjlCNjEzNjJBQUFENDlGNzZFNjhFRjI4JztcblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bldyYXBFUkM3OTg0VGVzdHMoY29pbk5hbWU6IHN0cmluZywgZ2V0QnVpbGRlcjogKGNvaW46IHN0cmluZykgPT4gVHJhbnNhY3Rpb25CdWlsZGVyKTogdm9pZCB7XG4gIGRlc2NyaWJlKGAke2NvaW5OYW1lfSB0cmFuc2FjdGlvbiBidWlsZGVyIOKAlCBXcmFwRVJDNzk4NGAsICgpID0+IHtcbiAgICBsZXQgdHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXI7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIHR4QnVpbGRlciA9IGdldEJ1aWxkZXIoY29pbk5hbWUpO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGZlZTogJzEwMDAwMDAwMDAnLCBnYXNMaW1pdDogJzIwMDAwMCcgfSk7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcigxKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjbGFzc2lmeVRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBjbGFzc2lmeSB3cmFwKGFkZHJlc3MsdWludDI1NikgYXMgV3JhcEVSQzc5ODQnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRXcmFwQ2FsbGRhdGEoUkVDSVBJRU5ULCBBTU9VTlQsIFJBVEUpO1xuICAgICAgICBzaG91bGQuZXF1YWwoY2xhc3NpZnlUcmFuc2FjdGlvbihjYWxsZGF0YSksIFRyYW5zYWN0aW9uVHlwZS5XcmFwRVJDNzk4NCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBOT1QgY2xhc3NpZnkgYXBwcm92ZSBhcyBXcmFwRVJDNzk4NCcsICgpID0+IHtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGNsYXNzaWZ5VHJhbnNhY3Rpb24oJzB4MDk1ZWE3YjMnICsgJzAwJy5yZXBlYXQoNjQpKSwgVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdidWlsZCBmcm9tIHNjcmF0Y2gnLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgV3JhcEVSQzc5ODQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5XcmFwRVJDNzk4NCk7XG4gICAgICAgIHR4QnVpbGRlci5jb250cmFjdChXUkFQUEVSX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIud3JhcFJlY2lwaWVudChSRUNJUElFTlQpO1xuICAgICAgICB0eEJ1aWxkZXIud3JhcEFtb3VudChBTU9VTlQpO1xuICAgICAgICB0eEJ1aWxkZXIud3JhcFJhdGUoUkFURSk7XG5cbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuXG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuV3JhcEVSQzc5ODQpO1xuICAgICAgICBqc29uLnRvLnRvTG93ZXJDYXNlKCkuc2hvdWxkLmVxdWFsKFdSQVBQRVJfQUREUkVTUy50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAganNvbi5kYXRhLnNob3VsZC5zdGFydFdpdGgod3JhcE1ldGhvZElkKTtcbiAgICAgICAganNvbi52YWx1ZS5zaG91bGQuZXF1YWwoJzAnKTtcblxuICAgICAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlV3JhcENhbGxkYXRhKGpzb24uZGF0YSk7XG4gICAgICAgIGRlY29kZWQudG8udG9Mb3dlckNhc2UoKS5zaG91bGQuZXF1YWwoUkVDSVBJRU5ULnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBkZWNvZGVkLmFtb3VudC5zaG91bGQuZXF1YWwoQU1PVU5UKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGJ1aWxkIHdpdGggRUlQLTE1NTkgZmVlIG1vZGVsJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gZ2V0QnVpbGRlcihjb2luTmFtZSk7XG4gICAgICAgIGJ1aWxkZXIuZmVlKHtcbiAgICAgICAgICBmZWU6ICczMDAwMDAwMDAwMCcsXG4gICAgICAgICAgZWlwMTU1OToge1xuICAgICAgICAgICAgbWF4RmVlUGVyR2FzOiAnMzAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXM6ICcxMDAwMDAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdhc0xpbWl0OiAnMjAwMDAwJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGJ1aWxkZXIuY291bnRlcigxKTtcbiAgICAgICAgYnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5XcmFwRVJDNzk4NCk7XG4gICAgICAgIGJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgYnVpbGRlci53cmFwUmVjaXBpZW50KFJFQ0lQSUVOVCk7XG4gICAgICAgIGJ1aWxkZXIud3JhcEFtb3VudChBTU9VTlQpO1xuICAgICAgICBidWlsZGVyLndyYXBSYXRlKFJBVEUpO1xuXG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5XcmFwRVJDNzk4NCk7XG4gICAgICAgIGpzb24uX3R5cGUuc2hvdWxkLmVxdWFsKEVUSFRyYW5zYWN0aW9uVHlwZS5FSVAxNTU5KTtcbiAgICAgICAganNvbi5kYXRhLnNob3VsZC5zdGFydFdpdGgod3JhcE1ldGhvZElkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3NpZ25pbmcgYW5kIHJvdW5kLXRyaXAnLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIHByb2R1Y2UgYSBzaWduZWQgdHJhbnNhY3Rpb24gd2l0aCB2LCByLCBzIGFuZCBmcm9tIGZpZWxkcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLldyYXBFUkM3OTg0KTtcbiAgICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KFdSQVBQRVJfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci53cmFwUmVjaXBpZW50KFJFQ0lQSUVOVCk7XG4gICAgICAgIHR4QnVpbGRlci53cmFwQW1vdW50KEFNT1VOVCk7XG4gICAgICAgIHR4QnVpbGRlci53cmFwUmF0ZShSQVRFKTtcbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IFRFU1RfUFJWX0tFWSB9KTtcblxuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICAgICAgc2hvdWxkLmV4aXN0KGpzb24udik7XG4gICAgICAgIHNob3VsZC5leGlzdChqc29uLnIpO1xuICAgICAgICBzaG91bGQuZXhpc3QoanNvbi5zKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGpzb24uZnJvbSk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuV3JhcEVSQzc5ODQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgc2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZSB0byB0aGUgc2FtZSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLldyYXBFUkM3OTg0KTtcbiAgICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KFdSQVBQRVJfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci53cmFwUmVjaXBpZW50KFJFQ0lQSUVOVCk7XG4gICAgICAgIHR4QnVpbGRlci53cmFwQW1vdW50KEFNT1VOVCk7XG4gICAgICAgIHR4QnVpbGRlci53cmFwUmF0ZShSQVRFKTtcblxuICAgICAgICBjb25zdCBvcmlnaW5hbFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IHJhd0hleCA9IG9yaWdpbmFsVHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgICBjb25zdCByZWJ1aWx0QnVpbGRlciA9IGdldEJ1aWxkZXIoY29pbk5hbWUpO1xuICAgICAgICByZWJ1aWx0QnVpbGRlci5mcm9tKHJhd0hleCk7XG4gICAgICAgIGNvbnN0IHJlYnVpbHRUeCA9IGF3YWl0IHJlYnVpbHRCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgICAgcmVidWlsdFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKHJhd0hleCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLldyYXBFUkM3OTg0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3ZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIHJlamVjdCBtaXNzaW5nIHdyYXBSZWNpcGllbnQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5XcmFwRVJDNzk4NCk7XG4gICAgICAgIHR4QnVpbGRlci5jb250cmFjdChXUkFQUEVSX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIud3JhcEFtb3VudChBTU9VTlQpO1xuICAgICAgICB0eEJ1aWxkZXIud3JhcFJhdGUoUkFURSk7XG4gICAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL21pc3Npbmcgd3JhcFJlY2lwaWVudC8pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmVqZWN0IG1pc3Npbmcgd3JhcEFtb3VudCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLldyYXBFUkM3OTg0KTtcbiAgICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KFdSQVBQRVJfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci53cmFwUmVjaXBpZW50KFJFQ0lQSUVOVCk7XG4gICAgICAgIHR4QnVpbGRlci53cmFwUmF0ZShSQVRFKTtcbiAgICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvbWlzc2luZyB3cmFwQW1vdW50Lyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgYW1vdW50IDAgdmlhIGJ1aWxkV3JhcENhbGxkYXRhJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuV3JhcEVSQzc5ODQpO1xuICAgICAgICB0eEJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLndyYXBSZWNpcGllbnQoUkVDSVBJRU5UKTtcbiAgICAgICAgdHhCdWlsZGVyLndyYXBBbW91bnQoJzAnKTtcbiAgICAgICAgdHhCdWlsZGVyLndyYXBSYXRlKFJBVEUpO1xuICAgICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9hbW91bnQgbXVzdCBiZSA+IDAvKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==