@1inch/solidity-utils 2.2.7 → 2.2.9

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.
@@ -1,3 +1 @@
1
- import BN from 'bn.js';
2
- export declare function toBNExtended(value: string | number | BN): BN;
3
- export declare function assertRoughlyEqualValues(expected: string | number | BN, actual: string | number | BN, relativeDiff: number): void;
1
+ export declare function assertRoughlyEqualValues(expected: string | number | bigint, actual: string | number | bigint, relativeDiff: number): void;
@@ -1,32 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertRoughlyEqualValues = exports.toBNExtended = void 0;
3
+ exports.assertRoughlyEqualValues = void 0;
4
4
  const prelude_1 = require("./prelude");
5
- function toBNExtended(value) {
6
- if (typeof value === 'string' || typeof value === 'number') {
7
- return (0, prelude_1.toBN)(value);
8
- }
9
- return value;
10
- }
11
- exports.toBNExtended = toBNExtended;
12
5
  function assertRoughlyEqualValues(expected, actual, relativeDiff) {
13
- let expectedBN = toBNExtended(expected);
14
- let actualBN = toBNExtended(actual);
15
- if (expectedBN.isNeg() !== actualBN.isNeg()) {
16
- (0, prelude_1.expect)(actualBN).to.be.bignumber.equal(expectedBN, 'Values are of different sign');
17
- }
18
- expectedBN = expectedBN.abs();
19
- actualBN = actualBN.abs();
6
+ let expectedBN = BigInt(expected);
7
+ let actualBN = BigInt(actual);
8
+ (0, prelude_1.expect)(expectedBN * actualBN).to.be.gte(0, 'Values are of different sign');
9
+ if (expectedBN < 0)
10
+ expectedBN = -expectedBN;
11
+ if (actualBN < 0)
12
+ actualBN = -actualBN;
20
13
  let multiplerNumerator = relativeDiff;
21
- let multiplerDenominator = (0, prelude_1.toBN)('1');
14
+ let multiplerDenominator = 1n;
22
15
  while (!Number.isInteger(multiplerNumerator)) {
23
- multiplerDenominator = multiplerDenominator.mul((0, prelude_1.toBN)('10'));
16
+ multiplerDenominator = multiplerDenominator * 10n;
24
17
  multiplerNumerator *= 10;
25
18
  }
26
- const diff = expectedBN.sub(actualBN).abs();
27
- const treshold = expectedBN.mul((0, prelude_1.toBN)(multiplerNumerator.toString())).div(multiplerDenominator);
28
- if (!diff.lte(treshold)) {
29
- (0, prelude_1.expect)(actualBN).to.be.bignumber.equal(expectedBN, `${actual} != ${expected} with ${relativeDiff} precision`);
19
+ const diff = expectedBN > actualBN ? expectedBN - actualBN : actualBN - expectedBN;
20
+ const treshold = (expectedBN * BigInt(multiplerNumerator)) / multiplerDenominator;
21
+ if (diff > treshold) {
22
+ (0, prelude_1.expect)(actualBN).to.be.equal(expectedBN, `${actual} != ${expected} with ${relativeDiff} precision`);
30
23
  }
31
24
  }
32
25
  exports.assertRoughlyEqualValues = assertRoughlyEqualValues;
@@ -1 +1 @@
1
- {"version":3,"file":"asserts.js","sourceRoot":"","sources":["../../src/asserts.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAGzC,SAAgB,YAAY,CAAE,KAA2B;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACxD,OAAO,IAAA,cAAI,EAAC,KAAK,CAAC,CAAC;KACtB;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AALD,oCAKC;AAED,SAAgB,wBAAwB,CAAE,QAA8B,EAAE,MAA4B,EAAE,YAAoB;IACxH,IAAI,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,UAAU,CAAC,KAAK,EAAE,KAAK,QAAQ,CAAC,KAAK,EAAE,EAAE;QACzC,IAAA,gBAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,8BAA8B,CAAC,CAAC;KACtF;IAED,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;IAC9B,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;IAE1B,IAAI,kBAAkB,GAAG,YAAY,CAAC;IACtC,IAAI,oBAAoB,GAAG,IAAA,cAAI,EAAC,GAAG,CAAC,CAAC;IACrC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE;QAC1C,oBAAoB,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAA,cAAI,EAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,kBAAkB,IAAI,EAAE,CAAC;KAC5B;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,IAAA,cAAI,EAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC/F,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QACrB,IAAA,gBAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,MAAM,OAAO,QAAQ,SAAS,YAAY,YAAY,CAAC,CAAC;KACjH;AACL,CAAC;AArBD,4DAqBC"}
1
+ {"version":3,"file":"asserts.js","sourceRoot":"","sources":["../../src/asserts.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AAEnC,SAAgB,wBAAwB,CACpC,QAAkC,EAClC,MAAgC,EAChC,YAAoB;IAEpB,IAAI,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAA,gBAAM,EAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC;IAE3E,IAAI,UAAU,GAAG,CAAC;QAAE,UAAU,GAAG,CAAC,UAAU,CAAC;IAC7C,IAAI,QAAQ,GAAG,CAAC;QAAE,QAAQ,GAAG,CAAC,QAAQ,CAAC;IAEvC,IAAI,kBAAkB,GAAG,YAAY,CAAC;IACtC,IAAI,oBAAoB,GAAG,EAAE,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE;QAC1C,oBAAoB,GAAG,oBAAoB,GAAG,GAAG,CAAC;QAClD,kBAAkB,IAAI,EAAE,CAAC;KAC5B;IACD,MAAM,IAAI,GAAG,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC;IACnF,MAAM,QAAQ,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,oBAAoB,CAAC;IAClF,IAAI,IAAI,GAAG,QAAQ,EAAE;QACjB,IAAA,gBAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,MAAM,OAAO,QAAQ,SAAS,YAAY,YAAY,CAAC,CAAC;KACvG;AACL,CAAC;AAvBD,4DAuBC"}
@@ -1,8 +1,9 @@
1
- /// <reference types="node" />
2
- import { MessageTypes, SignTypedDataVersion, TypedMessage } from '@metamask/eth-sig-util';
3
- import { Token } from './utils';
1
+ import { SignTypedDataVersion } from '@metamask/eth-sig-util';
2
+ import { Contract } from 'ethers';
3
+ import { Wallet } from 'ethers';
4
+ import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
4
5
  export declare const TypedDataVersion = SignTypedDataVersion.V4;
5
- export declare const defaultDeadline: string;
6
+ export declare const defaultDeadline: bigint;
6
7
  export declare const EIP712Domain: {
7
8
  name: string;
8
9
  type: string;
@@ -15,16 +16,11 @@ export declare const DaiLikePermit: {
15
16
  name: string;
16
17
  type: string;
17
18
  }[];
18
- export declare function trim0x(bigNumber: BN | string): string;
19
+ export declare function trim0x(bigNumber: bigint | string): string;
19
20
  export declare function cutSelector(data: string): string;
20
21
  export declare function domainSeparator(name: string, version: string, chainId: string, verifyingContract: string): string;
21
22
  export declare function buildData(name: string, version: string, chainId: number, verifyingContract: string, owner: string, spender: string, value: string, nonce: string, deadline?: string): {
22
- readonly primaryType: "Permit";
23
23
  readonly types: {
24
- readonly EIP712Domain: {
25
- name: string;
26
- type: string;
27
- }[];
28
24
  readonly Permit: {
29
25
  name: string;
30
26
  type: string;
@@ -45,12 +41,7 @@ export declare function buildData(name: string, version: string, chainId: number
45
41
  };
46
42
  };
47
43
  export declare function buildDataLikeDai(name: string, version: string, chainId: number, verifyingContract: string, holder: string, spender: string, nonce: string, allowed: boolean, expiry?: string): {
48
- readonly primaryType: "Permit";
49
44
  readonly types: {
50
- readonly EIP712Domain: {
51
- name: string;
52
- type: string;
53
- }[];
54
45
  readonly Permit: {
55
46
  name: string;
56
47
  type: string;
@@ -70,11 +61,6 @@ export declare function buildDataLikeDai(name: string, version: string, chainId:
70
61
  readonly allowed: boolean;
71
62
  };
72
63
  };
73
- export interface PermittableToken extends Token {
74
- nonces(owner: string, txDetails?: Truffle.TransactionDetails): Promise<BN>;
75
- name(txDetails?: Truffle.TransactionDetails): Promise<string>;
76
- }
77
- export declare function signWithPk<T extends MessageTypes>(privateKey: Buffer | string, data: TypedMessage<T>): string;
78
- export declare function getPermit(owner: string, ownerPrivateKey: string, permitContract: PermittableToken, tokenVersion: string, chainId: number, spender: string, value: string, deadline?: string): Promise<string>;
79
- export declare function getPermitLikeDai(holder: string, holderPrivateKey: string, permitContract: PermittableToken, tokenVersion: string, chainId: number, spender: string, allowed: boolean, expiry?: string): Promise<string>;
80
- export declare function withTarget(target: BN | string, data: BN | string): string;
64
+ export declare function getPermit(owner: Wallet | SignerWithAddress, permitContract: Contract, tokenVersion: string, chainId: number, spender: string, value: string, deadline?: string, compact?: boolean): Promise<string>;
65
+ export declare function getPermitLikeDai(holder: Wallet | SignerWithAddress, permitContract: Contract, tokenVersion: string, chainId: number, spender: string, allowed: boolean, expiry?: string, compact?: boolean): Promise<string>;
66
+ export declare function withTarget(target: bigint | string, data: bigint | string): string;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.withTarget = exports.getPermitLikeDai = exports.getPermit = exports.signWithPk = exports.buildDataLikeDai = exports.buildData = exports.domainSeparator = exports.cutSelector = exports.trim0x = exports.DaiLikePermit = exports.Permit = exports.EIP712Domain = exports.defaultDeadline = exports.TypedDataVersion = void 0;
3
+ exports.withTarget = exports.getPermitLikeDai = exports.getPermit = exports.buildDataLikeDai = exports.buildData = exports.domainSeparator = exports.cutSelector = exports.trim0x = exports.DaiLikePermit = exports.Permit = exports.EIP712Domain = exports.defaultDeadline = exports.TypedDataVersion = void 0;
4
4
  const eth_sig_util_1 = require("@metamask/eth-sig-util");
5
- const ethereumjs_util_1 = require("ethereumjs-util");
6
5
  const prelude_1 = require("./prelude");
6
+ const utils_1 = require("ethers/lib/utils");
7
7
  exports.TypedDataVersion = eth_sig_util_1.SignTypedDataVersion.V4;
8
8
  exports.defaultDeadline = prelude_1.constants.MAX_UINT256;
9
9
  exports.EIP712Domain = [
@@ -40,55 +40,77 @@ function cutSelector(data) {
40
40
  }
41
41
  exports.cutSelector = cutSelector;
42
42
  function domainSeparator(name, version, chainId, verifyingContract) {
43
- return '0x' + eth_sig_util_1.TypedDataUtils.hashStruct('EIP712Domain', { name, version, chainId, verifyingContract }, { EIP712Domain: exports.EIP712Domain }, exports.TypedDataVersion).toString('hex');
43
+ return ('0x' +
44
+ eth_sig_util_1.TypedDataUtils.hashStruct('EIP712Domain', { name, version, chainId, verifyingContract }, { EIP712Domain: exports.EIP712Domain }, exports.TypedDataVersion).toString('hex'));
44
45
  }
45
46
  exports.domainSeparator = domainSeparator;
46
- function buildData(name, version, chainId, verifyingContract, owner, spender, value, nonce, deadline = exports.defaultDeadline) {
47
+ function buildData(name, version, chainId, verifyingContract, owner, spender, value, nonce, deadline = exports.defaultDeadline.toString()) {
47
48
  return {
48
- primaryType: 'Permit',
49
- types: { EIP712Domain: exports.EIP712Domain, Permit: exports.Permit },
49
+ types: { Permit: exports.Permit },
50
50
  domain: { name, version, chainId, verifyingContract },
51
51
  message: { owner, spender, value, nonce, deadline },
52
52
  };
53
53
  }
54
54
  exports.buildData = buildData;
55
- function buildDataLikeDai(name, version, chainId, verifyingContract, holder, spender, nonce, allowed, expiry = exports.defaultDeadline) {
55
+ function buildDataLikeDai(name, version, chainId, verifyingContract, holder, spender, nonce, allowed, expiry = exports.defaultDeadline.toString()) {
56
56
  return {
57
- primaryType: 'Permit',
58
- types: { EIP712Domain: exports.EIP712Domain, Permit: exports.DaiLikePermit },
57
+ types: { Permit: exports.DaiLikePermit },
59
58
  domain: { name, version, chainId, verifyingContract },
60
59
  message: { holder, spender, nonce, expiry, allowed },
61
60
  };
62
61
  }
63
62
  exports.buildDataLikeDai = buildDataLikeDai;
64
- function signWithPk(privateKey, data) {
65
- const buffer = Buffer.isBuffer(privateKey) ? privateKey : Buffer.from(trim0x(privateKey), 'hex');
66
- return (0, eth_sig_util_1.signTypedData)({ privateKey: buffer, data, version: exports.TypedDataVersion });
67
- }
68
- exports.signWithPk = signWithPk;
69
63
  /*
70
64
  * @param permitContract The contract object with ERC20Permit type and token address for which the permit creating.
71
65
  */
72
- async function getPermit(owner, ownerPrivateKey, permitContract, tokenVersion, chainId, spender, value, deadline = exports.defaultDeadline) {
73
- const nonce = await permitContract.nonces(owner);
66
+ async function getPermit(owner, permitContract, tokenVersion, chainId, spender, value, deadline = exports.defaultDeadline.toString(), compact = false) {
67
+ const nonce = await permitContract.nonces(owner.address);
74
68
  const name = await permitContract.name();
75
- const data = buildData(name, tokenVersion, chainId, permitContract.address, owner, spender, value, nonce.toString(), deadline);
76
- const signature = signWithPk(ownerPrivateKey, data);
77
- const { v, r, s } = (0, ethereumjs_util_1.fromRpcSig)(signature);
78
- const permitCall = permitContract.contract.methods.permit(owner, spender, value, deadline, v, r, s).encodeABI();
69
+ const data = buildData(name, tokenVersion, chainId, permitContract.address, owner.address, spender, value, nonce.toString(), deadline);
70
+ const signature = await owner._signTypedData(data.domain, data.types, data.message);
71
+ const { v, r, s } = (0, utils_1.splitSignature)(signature);
72
+ if (compact) {
73
+ if (BigInt(deadline) !== prelude_1.constants.MAX_UINT256 && BigInt(deadline) >= (1n << 32n)) {
74
+ throw new Error('Deadline is too big for the compact mode');
75
+ }
76
+ return '0x' +
77
+ BigInt(value).toString(16).padStart(64, '0') +
78
+ (deadline === prelude_1.constants.MAX_UINT256.toString() ? '00000000' : (BigInt(deadline) + 1n).toString(16).padStart(8, '0')) +
79
+ BigInt(r).toString(16).padStart(64, '0') +
80
+ (BigInt(s) | (BigInt(v - 27) << 255n)).toString(16).padStart(64, '0');
81
+ }
82
+ const permitCall = permitContract.interface.encodeFunctionData('permit', [
83
+ owner.address,
84
+ spender,
85
+ value,
86
+ deadline,
87
+ v,
88
+ r,
89
+ s,
90
+ ]);
79
91
  return cutSelector(permitCall);
80
92
  }
81
93
  exports.getPermit = getPermit;
82
94
  /*
83
95
  * @param permitContract The contract object with ERC20PermitLikeDai type and token address for which the permit creating.
84
96
  */
85
- async function getPermitLikeDai(holder, holderPrivateKey, permitContract, tokenVersion, chainId, spender, allowed, expiry = exports.defaultDeadline) {
86
- const nonce = await permitContract.nonces(holder);
97
+ async function getPermitLikeDai(holder, permitContract, tokenVersion, chainId, spender, allowed, expiry = exports.defaultDeadline.toString(), compact = false) {
98
+ const nonce = await permitContract.nonces(holder.address);
87
99
  const name = await permitContract.name();
88
- const data = buildDataLikeDai(name, tokenVersion, chainId, permitContract.address, holder, spender, nonce.toString(), allowed, expiry);
89
- const signature = signWithPk(holderPrivateKey, data);
90
- const { v, r, s } = (0, ethereumjs_util_1.fromRpcSig)(signature);
91
- const permitCall = permitContract.contract.methods.permit(holder, spender, nonce, expiry, allowed, v, r, s).encodeABI();
100
+ const data = buildDataLikeDai(name, tokenVersion, chainId, permitContract.address, holder.address, spender, nonce.toString(), allowed, expiry);
101
+ const signature = await holder._signTypedData(data.domain, data.types, data.message);
102
+ const { v, r, s } = (0, utils_1.splitSignature)(signature);
103
+ if (compact) {
104
+ if (BigInt(expiry) !== prelude_1.constants.MAX_UINT256 && BigInt(expiry) >= (1n << 32n)) {
105
+ throw new Error('Expiry is too big for the compact mode');
106
+ }
107
+ return '0x' +
108
+ BigInt(nonce).toString(16).padStart(8, '0') +
109
+ (expiry === prelude_1.constants.MAX_UINT256.toString() ? '00000000' : (BigInt(expiry) + 1n).toString(16).padStart(8, '0')) +
110
+ BigInt(r).toString(16).padStart(64, '0') +
111
+ (BigInt(s) | (BigInt(v - 27) << 255n)).toString(16).padStart(64, '0');
112
+ }
113
+ const permitCall = permitContract.interface.encodeFunctionData('permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)', [holder.address, spender, nonce, expiry, allowed, v, r, s]);
92
114
  return cutSelector(permitCall);
93
115
  }
94
116
  exports.getPermitLikeDai = getPermitLikeDai;
@@ -1 +1 @@
1
- {"version":3,"file":"permit.js","sourceRoot":"","sources":["../../src/permit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permit.js","sourceRoot":"","sources":["../../src/permit.ts"],"names":[],"mappings":";;;AAAA,yDAA8E;AAC9E,uCAAsC;AAGtC,4CAAkD;AAGrC,QAAA,gBAAgB,GAAG,mCAAoB,CAAC,EAAE,CAAC;AAC3C,QAAA,eAAe,GAAG,mBAAS,CAAC,WAAW,CAAC;AAExC,QAAA,YAAY,GAAG;IACxB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;IACpC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;CACjD,CAAC;AAEW,QAAA,MAAM,GAAG;IAClB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;IACpC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;CACxC,CAAC;AAEW,QAAA,aAAa,GAAG;IACzB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IACnC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;IACpC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IACnC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE;CACpC,CAAC;AAEF,SAAgB,MAAM,CAAC,SAA0B;IAC7C,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC/B,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACpB,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KACzB;IACD,OAAO,CAAC,CAAC;AACb,CAAC;AAND,wBAMC;AAED,SAAgB,WAAW,CAAC,IAAY;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC;IACvB,OAAO,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AAHD,kCAGC;AAED,SAAgB,eAAe,CAAC,IAAY,EAAE,OAAe,EAAE,OAAe,EAAE,iBAAyB;IACrG,OAAO,CACH,IAAI;QACJ,6BAAc,CAAC,UAAU,CACrB,cAAc,EACd,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAC7C,EAAE,YAAY,EAAZ,oBAAY,EAAE,EAChB,wBAAgB,CACnB,CAAC,QAAQ,CAAC,KAAK,CAAC,CACpB,CAAC;AACN,CAAC;AAVD,0CAUC;AAED,SAAgB,SAAS,CACrB,IAAY,EACZ,OAAe,EACf,OAAe,EACf,iBAAyB,EACzB,KAAa,EACb,OAAe,EACf,KAAa,EACb,KAAa,EACb,WAAmB,uBAAe,CAAC,QAAQ,EAAE;IAE7C,OAAO;QACH,KAAK,EAAE,EAAE,MAAM,EAAN,cAAM,EAAE;QACjB,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE;QACrD,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;KAC7C,CAAC;AACf,CAAC;AAhBD,8BAgBC;AAED,SAAgB,gBAAgB,CAC5B,IAAY,EACZ,OAAe,EACf,OAAe,EACf,iBAAyB,EACzB,MAAc,EACd,OAAe,EACf,KAAa,EACb,OAAgB,EAChB,SAAiB,uBAAe,CAAC,QAAQ,EAAE;IAE3C,OAAO;QACH,KAAK,EAAE,EAAE,MAAM,EAAE,qBAAa,EAAE;QAChC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE;QACrD,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;KAC9C,CAAC;AACf,CAAC;AAhBD,4CAgBC;AAED;;GAEG;AACI,KAAK,UAAU,SAAS,CAC3B,KAAiC,EACjC,cAAwB,EACxB,YAAoB,EACpB,OAAe,EACf,OAAe,EACf,KAAa,EACb,QAAQ,GAAG,uBAAe,CAAC,QAAQ,EAAE,EACrC,OAAO,GAAG,KAAK;IAEf,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,SAAS,CAClB,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,cAAc,CAAC,OAAO,EACtB,KAAK,CAAC,OAAO,EACb,OAAO,EACP,KAAK,EACL,KAAK,CAAC,QAAQ,EAAE,EAChB,QAAQ,CACX,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAA,sBAAc,EAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,OAAO,EAAE;QACT,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,mBAAS,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE;YAC/E,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;SAC/D;QACD,OAAO,IAAI;YACP,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;YAC5C,CAAC,QAAQ,KAAK,mBAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACpH,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;YACxC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;KAC7E;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE;QACrE,KAAK,CAAC,OAAO;QACb,OAAO;QACP,KAAK;QACL,QAAQ;QACR,CAAC;QACD,CAAC;QACD,CAAC;KACJ,CAAC,CAAC;IACH,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC;AACnC,CAAC;AA/CD,8BA+CC;AAED;;GAEG;AACI,KAAK,UAAU,gBAAgB,CAClC,MAAkC,EAClC,cAAwB,EACxB,YAAoB,EACpB,OAAe,EACf,OAAe,EACf,OAAgB,EAChB,MAAM,GAAG,uBAAe,CAAC,QAAQ,EAAE,EACnC,OAAO,GAAG,KAAK;IAEf,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,gBAAgB,CACzB,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,cAAc,CAAC,OAAO,EACtB,MAAM,CAAC,OAAO,EACd,OAAO,EACP,KAAK,CAAC,QAAQ,EAAE,EAChB,OAAO,EACP,MAAM,CACT,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAA,sBAAc,EAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,OAAO,EAAE;QACT,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,mBAAS,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE;YAC3E,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;SAC7D;QACD,OAAO,IAAI;YACP,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;YAC3C,CAAC,MAAM,KAAK,mBAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAChH,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;YACxC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;KAC7E;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,kBAAkB,CAC1D,oEAAoE,EACpE,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC7D,CAAC;IACF,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC;AACnC,CAAC;AA1CD,4CA0CC;AAED,SAAgB,UAAU,CAAC,MAAuB,EAAE,IAAqB;IACrE,OAAO,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAFD,gCAEC"}
@@ -1,20 +1,14 @@
1
1
  import { Assertion, AssertionError, assert, expect, config, should } from 'chai';
2
- import 'chai-bn';
3
- import BN from 'bn.js';
4
- export declare function toBN(num: string | number, base?: number | 'hex'): BN;
2
+ import { time } from '@nomicfoundation/hardhat-network-helpers';
5
3
  export declare const constants: {
6
4
  readonly ZERO_ADDRESS: "0x0000000000000000000000000000000000000000";
7
5
  readonly EEE_ADDRESS: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
8
6
  readonly ZERO_BYTES32: "0x0000000000000000000000000000000000000000000000000000000000000000";
9
- readonly MAX_UINT256: string;
10
- readonly MAX_INT256: string;
11
- readonly MIN_INT256: string;
7
+ readonly MAX_UINT256: bigint;
8
+ readonly MAX_INT256: bigint;
9
+ readonly MIN_INT256: bigint;
10
+ readonly MAX_UINT128: bigint;
12
11
  };
13
- export { BN, };
14
- export declare type Time = {
15
- increaseTo: (target: string | number | BN) => Promise<BN>;
16
- latest: () => Promise<BN>;
17
- };
18
- export declare const time: Time;
19
- export declare function ether(n: string): BN;
20
- export { Assertion, AssertionError, assert, expect, config, should, };
12
+ export { time };
13
+ export declare function ether(n: string): bigint;
14
+ export { Assertion, AssertionError, assert, expect, config, should };
@@ -1,40 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.should = exports.config = exports.expect = exports.assert = exports.AssertionError = exports.Assertion = exports.ether = exports.time = exports.BN = exports.constants = exports.toBN = void 0;
4
- const tslib_1 = require("tslib");
5
- const chai_1 = tslib_1.__importStar(require("chai"));
3
+ exports.should = exports.config = exports.expect = exports.assert = exports.AssertionError = exports.Assertion = exports.ether = exports.time = exports.constants = void 0;
4
+ const chai_1 = require("chai");
6
5
  Object.defineProperty(exports, "Assertion", { enumerable: true, get: function () { return chai_1.Assertion; } });
7
6
  Object.defineProperty(exports, "AssertionError", { enumerable: true, get: function () { return chai_1.AssertionError; } });
8
7
  Object.defineProperty(exports, "assert", { enumerable: true, get: function () { return chai_1.assert; } });
9
8
  Object.defineProperty(exports, "expect", { enumerable: true, get: function () { return chai_1.expect; } });
10
9
  Object.defineProperty(exports, "config", { enumerable: true, get: function () { return chai_1.config; } });
11
10
  Object.defineProperty(exports, "should", { enumerable: true, get: function () { return chai_1.should; } });
12
- require("chai-bn");
13
- const chai_as_promised_1 = tslib_1.__importDefault(require("chai-as-promised"));
14
- const web3_utils_1 = require("web3-utils");
15
- const bn_js_1 = tslib_1.__importDefault(require("bn.js"));
16
- exports.BN = bn_js_1.default;
17
- chai_1.default.use(chai_as_promised_1.default);
18
- // eslint-disable-next-line @typescript-eslint/no-var-requires
19
- const { time: timeImpl } = require('@openzeppelin/test-helpers');
20
- function toBN(num, base) {
21
- if (typeof (num) === 'string' && num.startsWith('0x')) {
22
- return new bn_js_1.default(num.substring(2), 16);
23
- }
24
- return new bn_js_1.default(num, base);
25
- }
26
- exports.toBN = toBN;
11
+ const utils_1 = require("ethers/lib/utils");
12
+ const hardhat_network_helpers_1 = require("@nomicfoundation/hardhat-network-helpers");
13
+ Object.defineProperty(exports, "time", { enumerable: true, get: function () { return hardhat_network_helpers_1.time; } });
27
14
  exports.constants = {
28
15
  ZERO_ADDRESS: '0x0000000000000000000000000000000000000000',
29
16
  EEE_ADDRESS: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE',
30
17
  ZERO_BYTES32: '0x0000000000000000000000000000000000000000000000000000000000000000',
31
- MAX_UINT256: toBN('2').pow(toBN('256')).sub(toBN('1')).toString(),
32
- MAX_INT256: toBN('2').pow(toBN('255')).sub(toBN('1')).toString(),
33
- MIN_INT256: toBN('2').pow(toBN('255')).mul(toBN('-1')).toString(),
18
+ MAX_UINT256: 2n ** 256n - 1n,
19
+ MAX_INT256: 2n ** 255n - 1n,
20
+ MIN_INT256: -(2n ** 255n),
21
+ MAX_UINT128: 2n ** 128n - 1n,
34
22
  };
35
- exports.time = timeImpl;
36
23
  function ether(n) {
37
- return toBN((0, web3_utils_1.toWei)(n, 'ether'));
24
+ return (0, utils_1.parseUnits)(n).toBigInt();
38
25
  }
39
26
  exports.ether = ether;
40
27
  //# sourceMappingURL=prelude.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prelude.js","sourceRoot":"","sources":["../../src/prelude.ts"],"names":[],"mappings":";;;;AAAA,qDAAuF;AA4CnF,0FA5CW,gBAAS,OA4CX;AACT,+FA7CsB,qBAAc,OA6CtB;AACd,uFA9CsC,aAAM,OA8CtC;AACN,uFA/C8C,aAAM,OA+C9C;AACN,uFAhDsD,aAAM,OAgDtD;AACN,uFAjD8D,aAAM,OAiD9D;AAhDV,mBAAiB;AACjB,gFAA8C;AAC9C,2CAAmC;AACnC,0DAAuB;AAuBnB,aAvBG,eAAE,CAuBH;AAtBN,cAAI,CAAC,GAAG,CAAC,0BAAc,CAAC,CAAC;AACzB,8DAA8D;AAC9D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;AAEjE,SAAgB,IAAI,CAAE,GAAoB,EAAE,IAAqB;IAC7D,IAAI,OAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QAClD,OAAO,IAAI,eAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KACvC;IACD,OAAO,IAAI,eAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;AALD,oBAKC;AAEY,QAAA,SAAS,GAAG;IACrB,YAAY,EAAE,4CAA4C;IAC1D,WAAW,EAAE,4CAA4C;IACzD,YAAY,EAAE,oEAAoE;IAClF,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC3D,CAAC;AAaE,QAAA,IAAI,GAAS,QAAQ,CAAC;AAEnC,SAAgB,KAAK,CAAE,CAAS;IAC5B,OAAO,IAAI,CAAC,IAAA,kBAAK,EAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACnC,CAAC;AAFD,sBAEC"}
1
+ {"version":3,"file":"prelude.js","sourceRoot":"","sources":["../../src/prelude.ts"],"names":[],"mappings":";;;AAAA,+BAAiF;AAsBxE,0FAtBA,gBAAS,OAsBA;AAAE,+FAtBA,qBAAc,OAsBA;AAAE,uFAtBA,aAAM,OAsBA;AAAE,uFAtBA,aAAM,OAsBA;AAAE,uFAtBA,aAAM,OAsBA;AAAE,uFAtBA,aAAM,OAsBA;AArBlE,4CAA8C;AAC9C,sFAAgE;AAavD,qFAbA,8BAAI,OAaA;AAXA,QAAA,SAAS,GAAG;IACrB,YAAY,EAAE,4CAA4C;IAC1D,WAAW,EAAE,4CAA4C;IACzD,YAAY,EAAE,oEAAoE;IAClF,WAAW,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE;IAC5B,UAAU,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE;IAC3B,UAAU,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC;IACzB,WAAW,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE;CACtB,CAAC;AAKX,SAAgB,KAAK,CAAC,CAAS;IAC3B,OAAO,IAAA,kBAAU,EAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpC,CAAC;AAFD,sBAEC"}
@@ -1,9 +1,11 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  import { PathLike, promises as fs } from 'fs';
4
+ import { providers } from 'ethers';
3
5
  export declare const gasspectOptionsDefault: {
4
6
  minOpGasCost: number;
5
7
  args: boolean;
6
8
  res: boolean;
7
9
  };
8
- export declare function profileEVM(txHash: string, instruction: string[], optionalTraceFile?: PathLike | fs.FileHandle): Promise<number[]>;
9
- export declare function gasspectEVM(txHash: string, gasspectOptions?: Record<string, unknown>, optionalTraceFile?: PathLike | fs.FileHandle): Promise<string[]>;
10
+ export declare function profileEVM(provider: providers.JsonRpcProvider, txHash: string, instruction: string[], optionalTraceFile?: PathLike | fs.FileHandle): Promise<number[]>;
11
+ export declare function gasspectEVM(provider: providers.JsonRpcProvider, txHash: string, gasspectOptions?: Record<string, unknown>, optionalTraceFile?: PathLike | fs.FileHandle): Promise<string[]>;
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.gasspectEVM = exports.profileEVM = exports.gasspectOptionsDefault = void 0;
4
- const util_1 = require("util");
5
4
  const fs_1 = require("fs");
6
- const prelude_1 = require("./prelude");
7
5
  exports.gasspectOptionsDefault = {
8
6
  minOpGasCost: 300,
9
7
  args: false,
@@ -12,16 +10,21 @@ exports.gasspectOptionsDefault = {
12
10
  function _normalizeOp(ops, i) {
13
11
  if (ops[i].op === 'STATICCALL') {
14
12
  ops[i].gasCost = ops[i].gasCost - ops[i + 1].gas;
15
- if (ops[i].stack.length > 8 && ops[i].stack[ops[i].stack.length - 8] === '0000000000000000000000000000000000000000000000000000000000000001') {
13
+ if (ops[i].stack.length > 8 &&
14
+ ops[i].stack[ops[i].stack.length - 8] === '0000000000000000000000000000000000000000000000000000000000000001') {
16
15
  ops[i].op = 'STATICCALL-ECRECOVER';
17
16
  }
18
- else if (ops[i].stack.length > 8 && ops[i].stack[ops[i].stack.length - 8] <= '00000000000000000000000000000000000000000000000000000000000000FF') {
17
+ else if (ops[i].stack.length > 8 &&
18
+ ops[i].stack[ops[i].stack.length - 8] <= '00000000000000000000000000000000000000000000000000000000000000FF') {
19
19
  ops[i].op = 'STATICCALL-' + ops[i].stack[ops[i].stack.length - 8].substr(62, 2);
20
20
  }
21
21
  else {
22
22
  ops[i].args = [
23
- '0x' + ops[i].stack[ops[i].stack.length - 2].substr(24),
24
- '0x' + (ops[i].memory || []).join('').substr(2 * (0, prelude_1.toBN)(ops[i].stack[ops[i].stack.length - 3]).toNumber(), 2 * (0, prelude_1.toBN)(ops[i].stack[ops[i].stack.length - 4]).toNumber()),
23
+ '0x' + ops[i].stack[ops[i].stack.length - 2].substring(24),
24
+ '0x' +
25
+ (ops[i].memory || [])
26
+ .join('')
27
+ .substr(2 * Number(ops[i].stack[ops[i].stack.length - 3]), 2 * Number(ops[i].stack[ops[i].stack.length - 4])),
25
28
  ];
26
29
  if (ops[i].gasCost === 100) {
27
30
  ops[i].op += '_R';
@@ -30,8 +33,11 @@ function _normalizeOp(ops, i) {
30
33
  }
31
34
  if (['CALL', 'DELEGATECALL', 'CALLCODE'].indexOf(ops[i].op) !== -1) {
32
35
  ops[i].args = [
33
- '0x' + ops[i].stack[ops[i].stack.length - 2].substr(24),
34
- '0x' + (ops[i].memory || []).join('').substr(2 * (0, prelude_1.toBN)(ops[i].stack[ops[i].stack.length - 4]).toNumber(), 2 * (0, prelude_1.toBN)(ops[i].stack[ops[i].stack.length - 5]).toNumber()),
36
+ '0x' + ops[i].stack[ops[i].stack.length - 2].substring(24),
37
+ '0x' +
38
+ (ops[i].memory || [])
39
+ .join('')
40
+ .substr(2 * Number(ops[i].stack[ops[i].stack.length - 4]), 2 * Number(ops[i].stack[ops[i].stack.length - 5])),
35
41
  ];
36
42
  ops[i].gasCost = ops[i].gasCost - ops[i + 1].gas;
37
43
  ops[i].res = ops[i + 1].stack[ops[i + 1].stack.length - 1];
@@ -43,16 +49,14 @@ function _normalizeOp(ops, i) {
43
49
  ops[i].gasCost = 3;
44
50
  }
45
51
  if (['SSTORE', 'SLOAD'].indexOf(ops[i].op) !== -1) {
46
- ops[i].args = [
47
- '0x' + ops[i].stack[ops[i].stack.length - 1],
48
- ];
52
+ ops[i].args = ['0x' + ops[i].stack[ops[i].stack.length - 1]];
49
53
  if (ops[i].op === 'SSTORE') {
50
54
  ops[i].args.push('0x' + ops[i].stack[ops[i].stack.length - 2]);
51
55
  }
52
56
  if (ops[i].gasCost === 100) {
53
57
  ops[i].op += '_R';
54
58
  }
55
- if (ops[i].gasCost === 20000) {
59
+ if (ops[i].gasCost >= 20000) {
56
60
  ops[i].op += '_I';
57
61
  }
58
62
  if (ops[i].op.startsWith('SLOAD')) {
@@ -60,43 +64,25 @@ function _normalizeOp(ops, i) {
60
64
  }
61
65
  }
62
66
  if (ops[i].op === 'EXTCODESIZE') {
63
- ops[i].args = [
64
- '0x' + ops[i].stack[ops[i].stack.length - 1].substr(24),
65
- ];
67
+ ops[i].args = ['0x' + ops[i].stack[ops[i].stack.length - 1].substring(24)];
66
68
  ops[i].res = ops[i + 1].stack[ops[i + 1].stack.length - 1];
67
69
  }
68
70
  }
69
- async function profileEVM(txHash, instruction, optionalTraceFile) {
70
- if (!web3.currentProvider || typeof web3.currentProvider === 'string' || !web3.currentProvider.send) {
71
- throw new Error('Unsupported provider');
72
- }
73
- const trace = await (0, util_1.promisify)(web3.currentProvider.send.bind(web3.currentProvider))({
74
- jsonrpc: '2.0',
75
- method: 'debug_traceTransaction',
76
- params: [txHash, {}],
77
- id: new Date().getTime(),
78
- });
71
+ async function profileEVM(provider, txHash, instruction, optionalTraceFile) {
72
+ const trace = await provider.send('debug_traceTransaction', [txHash]);
79
73
  const str = JSON.stringify(trace);
80
74
  if (optionalTraceFile) {
81
75
  await fs_1.promises.writeFile(optionalTraceFile, str);
82
76
  }
83
- return instruction.map(instr => {
77
+ return instruction.map((instr) => {
84
78
  return str.split('"' + instr.toUpperCase() + '"').length - 1;
85
79
  });
86
80
  }
87
81
  exports.profileEVM = profileEVM;
88
- async function gasspectEVM(txHash, gasspectOptions = {}, optionalTraceFile) {
82
+ async function gasspectEVM(provider, txHash, gasspectOptions = {}, optionalTraceFile) {
89
83
  const options = { ...exports.gasspectOptionsDefault, ...gasspectOptions };
90
- if (!web3.currentProvider || typeof web3.currentProvider === 'string' || !web3.currentProvider.send) {
91
- throw new Error('Unsupported provider');
92
- }
93
- const trace = await (0, util_1.promisify)(web3.currentProvider.send.bind(web3.currentProvider))({
94
- jsonrpc: '2.0',
95
- method: 'debug_traceTransaction',
96
- params: [txHash, {}],
97
- id: new Date().getTime(),
98
- });
99
- const ops = trace === null || trace === void 0 ? void 0 : trace.result.structLogs;
84
+ const trace = await provider.send('debug_traceTransaction', [txHash]);
85
+ const ops = trace.structLogs;
100
86
  const traceAddress = [0, -1];
101
87
  for (const [i, op] of ops.entries()) {
102
88
  op.traceAddress = traceAddress.slice(0, traceAddress.length - 1);
@@ -109,12 +95,17 @@ async function gasspectEVM(txHash, gasspectOptions = {}, optionalTraceFile) {
109
95
  traceAddress.pop();
110
96
  }
111
97
  }
112
- const result = ops.filter(op => op.gasCost > options.minOpGasCost).map(op => op.traceAddress.join('-') + '-' + op.op +
98
+ const result = ops
99
+ .filter((op) => op.gasCost > options.minOpGasCost)
100
+ .map((op) => op.traceAddress.join('-') +
101
+ '-' +
102
+ op.op +
113
103
  (options.args ? '(' + (op.args || []).join(',') + ')' : '') +
114
104
  (options.res ? (op.res ? ':0x' + op.res : '') : '') +
115
- ' = ' + op.gasCost);
105
+ ' = ' +
106
+ op.gasCost);
116
107
  if (optionalTraceFile) {
117
- await fs_1.promises.writeFile(optionalTraceFile, JSON.stringify(result));
108
+ await fs_1.promises.writeFile(optionalTraceFile, JSON.stringify(trace));
118
109
  }
119
110
  return result;
120
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"profileEVM.js","sourceRoot":"","sources":["../../src/profileEVM.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profileEVM.js","sourceRoot":"","sources":["../../src/profileEVM.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,11 @@
1
- /// <reference types="bn.js" />
2
1
  import { constants } from './prelude';
3
- export declare function timeIncreaseTo(seconds: number | string | BN): Promise<void>;
4
- export interface Token extends Truffle.ContractInstance {
5
- balanceOf(account: string, txDetails?: Truffle.TransactionDetails): Promise<BN>;
6
- }
7
- export declare function trackReceivedTokenAndTx<T extends unknown[], U extends Truffle.AnyEvent>(token: Token | {
2
+ import { providers, Wallet, Contract, Bytes, ContractTransaction } from 'ethers';
3
+ export declare function timeIncreaseTo(seconds: number | string): Promise<void>;
4
+ export declare function trackReceivedTokenAndTx<T extends unknown[]>(provider: providers.JsonRpcProvider, token: Contract | {
8
5
  address: typeof constants.ZERO_ADDRESS;
9
6
  } | {
10
7
  address: typeof constants.EEE_ADDRESS;
11
- }, wallet: string, txPromise: (...args: T) => Promise<Truffle.TransactionResponse<U>>, ...args: T): Promise<readonly [import("bn.js"), Truffle.TransactionResponse<U>]>;
8
+ }, wallet: string, txPromise: (...args: T) => Promise<ContractTransaction>, ...args: T): Promise<any[]>;
12
9
  export declare function fixSignature(signature: string): string;
13
- export declare function signMessage(signer: string, messageHex?: string): Promise<string>;
14
- export declare function countInstructions(txHash: string, instructions: string[]): Promise<number[]>;
10
+ export declare function signMessage(signer: Wallet, messageHex?: string | Bytes): Promise<string>;
11
+ export declare function countInstructions(provider: providers.JsonRpcProvider, txHash: string, instructions: string[]): Promise<number[]>;
package/dist/src/utils.js CHANGED
@@ -1,25 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.countInstructions = exports.signMessage = exports.fixSignature = exports.trackReceivedTokenAndTx = exports.timeIncreaseTo = void 0;
4
- const util_1 = require("util");
5
4
  const prelude_1 = require("./prelude");
5
+ const hardhat_network_helpers_1 = require("@nomicfoundation/hardhat-network-helpers");
6
6
  async function timeIncreaseTo(seconds) {
7
7
  const delay = 1000 - new Date().getMilliseconds();
8
- await new Promise(resolve => setTimeout(resolve, delay));
9
- await prelude_1.time.increaseTo(seconds);
8
+ await new Promise((resolve) => setTimeout(resolve, delay));
9
+ await hardhat_network_helpers_1.time.increaseTo(seconds);
10
10
  }
11
11
  exports.timeIncreaseTo = timeIncreaseTo;
12
- async function trackReceivedTokenAndTx(token, wallet, txPromise, ...args) {
13
- const [balanceFunc, isETH] = 'balanceOf' in token
14
- ? [() => token.balanceOf(wallet), false]
15
- : [async () => (0, prelude_1.toBN)(await web3.eth.getBalance(wallet)), true];
16
- const preBalance = await balanceFunc();
12
+ async function trackReceivedTokenAndTx(provider, token, wallet, txPromise, ...args) {
13
+ const isETH = token.address === prelude_1.constants.ZERO_ADDRESS || token.address === prelude_1.constants.EEE_ADDRESS;
14
+ const getBalance = 'balanceOf' in token ? token.balanceOf : provider.getBalance;
15
+ const preBalance = await getBalance(wallet);
17
16
  const txResult = await txPromise(...args);
18
- const txFees = (wallet.toLowerCase() === txResult.receipt.from.toLowerCase() && isETH)
19
- ? (0, prelude_1.toBN)(txResult.receipt.gasUsed).mul((0, prelude_1.toBN)(txResult.receipt.effectiveGasPrice))
20
- : (0, prelude_1.toBN)('0');
21
- const postBalance = await balanceFunc();
22
- return [postBalance.sub(preBalance).add(txFees), txResult];
17
+ const postBalance = await getBalance(wallet);
18
+ if ('wait' in txResult) {
19
+ const txReceipt = await txResult.wait();
20
+ const txFees = wallet.toLowerCase() === txResult.from.toLowerCase() && isETH
21
+ ? txReceipt.gasUsed.toBigInt() * txReceipt.effectiveGasPrice.toBigInt()
22
+ : 0n;
23
+ return [postBalance.sub(preBalance).add(txFees), txResult];
24
+ }
25
+ else {
26
+ return [postBalance.sub(preBalance), txResult];
27
+ }
23
28
  }
24
29
  exports.trackReceivedTokenAndTx = trackReceivedTokenAndTx;
25
30
  function fixSignature(signature) {
@@ -34,23 +39,14 @@ function fixSignature(signature) {
34
39
  return signature.slice(0, 130) + vHex;
35
40
  }
36
41
  exports.fixSignature = fixSignature;
37
- // signs message in node (ganache auto-applies "Ethereum Signed Message" prefix)
38
42
  async function signMessage(signer, messageHex = '0x') {
39
- return fixSignature(await web3.eth.sign(messageHex, signer));
43
+ return fixSignature(await signer.signMessage(messageHex));
40
44
  }
41
45
  exports.signMessage = signMessage;
42
- async function countInstructions(txHash, instructions) {
43
- if (!web3.currentProvider || typeof web3.currentProvider === 'string' || !web3.currentProvider.send) {
44
- throw new Error('Unsupported provider');
45
- }
46
- const trace = await (0, util_1.promisify)(web3.currentProvider.send.bind(web3.currentProvider))({
47
- jsonrpc: '2.0',
48
- method: 'debug_traceTransaction',
49
- params: [txHash, {}],
50
- id: new Date().getTime(),
51
- });
46
+ async function countInstructions(provider, txHash, instructions) {
47
+ const trace = await provider.send('debug_traceTransaction', [txHash]);
52
48
  const str = JSON.stringify(trace);
53
- return instructions.map(instr => {
49
+ return instructions.map((instr) => {
54
50
  return str.split('"' + instr.toUpperCase() + '"').length - 1;
55
51
  });
56
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AACtC,sFAAgE;AAGzD,KAAK,UAAU,cAAc,CAAC,OAAwB;IACzD,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,eAAe,EAAE,CAAC;IAClD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3D,MAAM,8BAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAJD,wCAIC;AAEM,KAAK,UAAU,uBAAuB,CACzC,QAAmC,EACnC,KAAwG,EACxG,MAAc,EACd,SAAuD,EACvD,GAAG,IAAO;IAEV,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,KAAK,mBAAS,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,KAAK,mBAAS,CAAC,WAAW,CAAC;IAClG,MAAM,UAAU,GAAG,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;IAEhF,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAE7C,IAAI,MAAM,IAAI,QAAQ,EAAE;QACpB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,MAAM,GACR,MAAM,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK;YACzD,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE;YACvE,CAAC,CAAC,EAAE,CAAC;QACb,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;KAC9D;SAAM;QACH,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;KAClD;AACL,CAAC;AAxBD,0DAwBC;AAED,SAAgB,YAAY,CAAC,SAAiB;IAC1C,2EAA2E;IAC3E,2CAA2C;IAC3C,uFAAuF;IACvF,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,GAAG,EAAE,EAAE;QACR,CAAC,IAAI,EAAE,CAAC;KACX;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5B,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AAC1C,CAAC;AAVD,oCAUC;AAEM,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,aAA6B,IAAI;IAC/E,OAAO,YAAY,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9D,CAAC;AAFD,kCAEC;AAEM,KAAK,UAAU,iBAAiB,CACnC,QAAmC,EACnC,MAAc,EACd,YAAsB;IAEtB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAElC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACP,CAAC;AAZD,8CAYC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1inch/solidity-utils",
3
- "version": "2.2.7",
3
+ "version": "2.2.9",
4
4
  "main": "dist/src/index.js",
5
5
  "types": "dist/src/index.d.ts",
6
6
  "repository": {
@@ -12,7 +12,7 @@
12
12
  "prebuild": "rimraf ./dist && cti src -b",
13
13
  "build": "tsc -p tsconfig.publish.json",
14
14
  "postbuild": "echo done",
15
- "publishPackage": "yarn build && yarn publish",
15
+ "prepublish": "yarn build",
16
16
  "coverage": "hardhat coverage",
17
17
  "format": "yarn format-ts && yarn format-sol",
18
18
  "format-ts": "prettier '**/*.ts' --write",