@across-protocol/sdk 3.4.9 → 3.4.10

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.
@@ -30,6 +30,12 @@ export declare class QueryBase implements QueryInterface {
30
30
  opStackL1GasCostMultiplier: BigNumber;
31
31
  transport: Transport;
32
32
  }>): Promise<TransactionCostEstimate>;
33
+ getUnsignedTxFromDeposit(deposit: Deposit, relayer?: string): Promise<PopulatedTransaction>;
34
+ getNativeGasCost(deposit: Deposit, relayer?: string): Promise<BigNumber>;
35
+ getOpStackL1DataFee(unsignedTx: PopulatedTransaction, relayer: string | undefined, options: Partial<{
36
+ opStackL2GasUnits: BigNumberish;
37
+ opStackL1DataFeeMultiplier: BigNumber;
38
+ }>): Promise<BigNumber>;
33
39
  estimateGas(unsignedTx: PopulatedTransaction, senderAddress: string, provider: providers.Provider | L2Provider<providers.Provider>, options?: Partial<{
34
40
  gasPrice: BigNumberish;
35
41
  gasUnits: BigNumberish;
@@ -31,7 +31,7 @@ var QueryBase = (function () {
31
31
  switch (_c.label) {
32
32
  case 0:
33
33
  _a = options.gasPrice, gasPrice = _a === void 0 ? this.fixedGasPrice : _a, gasUnits = options.gasUnits, baseFeeMultiplier = options.baseFeeMultiplier, priorityFeeMultiplier = options.priorityFeeMultiplier, opStackL1GasCostMultiplier = options.opStackL1GasCostMultiplier, transport = options.transport;
34
- return [4, (0, utils_1.populateV3Relay)(this.spokePool, deposit, relayer)];
34
+ return [4, this.getUnsignedTxFromDeposit(deposit, relayer)];
35
35
  case 1:
36
36
  tx = _c.sent();
37
37
  return [4, this.estimateGas(tx, relayer, this.provider, {
@@ -54,10 +54,53 @@ var QueryBase = (function () {
54
54
  });
55
55
  });
56
56
  };
57
+ QueryBase.prototype.getUnsignedTxFromDeposit = function (deposit, relayer) {
58
+ if (relayer === void 0) { relayer = constants_1.DEFAULT_SIMULATED_RELAYER_ADDRESS; }
59
+ return (0, utils_1.populateV3Relay)(this.spokePool, deposit, relayer);
60
+ };
61
+ QueryBase.prototype.getNativeGasCost = function (deposit, relayer) {
62
+ if (relayer === void 0) { relayer = constants_1.DEFAULT_SIMULATED_RELAYER_ADDRESS; }
63
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
64
+ var unsignedTx, voidSigner;
65
+ return tslib_1.__generator(this, function (_a) {
66
+ switch (_a.label) {
67
+ case 0: return [4, this.getUnsignedTxFromDeposit(deposit, relayer)];
68
+ case 1:
69
+ unsignedTx = _a.sent();
70
+ voidSigner = new ethers_1.VoidSigner(relayer, this.provider);
71
+ return [2, voidSigner.estimateGas(unsignedTx)];
72
+ }
73
+ });
74
+ });
75
+ };
76
+ QueryBase.prototype.getOpStackL1DataFee = function (unsignedTx, relayer, options) {
77
+ if (relayer === void 0) { relayer = constants_1.DEFAULT_SIMULATED_RELAYER_ADDRESS; }
78
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
79
+ var _a, opStackL2GasUnits, _b, opStackL1DataFeeMultiplier, chainId, voidSigner, populatedTransaction, l1DataFee;
80
+ return tslib_1.__generator(this, function (_c) {
81
+ switch (_c.label) {
82
+ case 0:
83
+ _a = options || {}, opStackL2GasUnits = _a.opStackL2GasUnits, _b = _a.opStackL1DataFeeMultiplier, opStackL1DataFeeMultiplier = _b === void 0 ? (0, utils_1.toBNWei)("1") : _b;
84
+ return [4, this.provider.getNetwork()];
85
+ case 1:
86
+ chainId = (_c.sent()).chainId;
87
+ (0, utils_1.assert)((0, l2_provider_1.isL2Provider)(this.provider), "Unexpected provider for chain ID ".concat(chainId, "."));
88
+ voidSigner = new ethers_1.VoidSigner(relayer, this.provider);
89
+ return [4, voidSigner.populateTransaction(tslib_1.__assign(tslib_1.__assign({}, unsignedTx), { gasLimit: opStackL2GasUnits }))];
90
+ case 2:
91
+ populatedTransaction = _c.sent();
92
+ return [4, this.provider.estimateL1GasCost(populatedTransaction)];
93
+ case 3:
94
+ l1DataFee = _c.sent();
95
+ return [2, l1DataFee.mul(opStackL1DataFeeMultiplier).div(utils_1.fixedPointAdjustment)];
96
+ }
97
+ });
98
+ });
99
+ };
57
100
  QueryBase.prototype.estimateGas = function (unsignedTx, senderAddress, provider, options) {
58
101
  if (options === void 0) { options = {}; }
59
102
  return tslib_1.__awaiter(this, void 0, void 0, function () {
60
- var _a, _gasPrice, gasUnits, _b, baseFeeMultiplier, _c, priorityFeeMultiplier, _d, opStackL1GasCostMultiplier, transport, chainId, voidSigner, queries, _e, nativeGasCost, gasPrice, tokenGasCost, opStackL1GasCost, populatedTransaction, l1GasCost, l2GasCost;
103
+ var _a, _gasPrice, gasUnits, _b, baseFeeMultiplier, _c, priorityFeeMultiplier, _d, opStackL1GasCostMultiplier, transport, chainId, voidSigner, queries, _e, nativeGasCost, gasPrice, tokenGasCost, opStackL1GasCost, l2GasCost;
61
104
  return tslib_1.__generator(this, function (_f) {
62
105
  switch (_f.label) {
63
106
  case 0:
@@ -76,22 +119,20 @@ var QueryBase = (function () {
76
119
  case 2:
77
120
  _e = _f.sent(), nativeGasCost = _e[0], gasPrice = _e[1].maxFeePerGas;
78
121
  (0, utils_1.assert)(nativeGasCost.gt(utils_1.bnZero), "Gas cost should not be 0");
79
- if (!(0, utils_1.chainIsOPStack)(chainId)) return [3, 5];
80
- (0, utils_1.assert)((0, l2_provider_1.isL2Provider)(provider), "Unexpected provider for chain ID ".concat(chainId, "."));
81
- return [4, voidSigner.populateTransaction(tslib_1.__assign(tslib_1.__assign({}, unsignedTx), { gasLimit: nativeGasCost }))];
122
+ if (!(0, utils_1.chainIsOPStack)(chainId)) return [3, 4];
123
+ return [4, this.getOpStackL1DataFee(unsignedTx, senderAddress, {
124
+ opStackL2GasUnits: nativeGasCost,
125
+ opStackL1DataFeeMultiplier: opStackL1GasCostMultiplier,
126
+ })];
82
127
  case 3:
83
- populatedTransaction = _f.sent();
84
- return [4, provider.estimateL1GasCost(populatedTransaction)];
85
- case 4:
86
- l1GasCost = _f.sent();
87
- opStackL1GasCost = l1GasCost.mul(opStackL1GasCostMultiplier).div(utils_1.fixedPointAdjustment);
128
+ opStackL1GasCost = _f.sent();
88
129
  l2GasCost = nativeGasCost.mul(gasPrice);
89
130
  tokenGasCost = opStackL1GasCost.add(l2GasCost);
90
- return [3, 6];
91
- case 5:
131
+ return [3, 5];
132
+ case 4:
92
133
  tokenGasCost = nativeGasCost.mul(gasPrice);
93
- _f.label = 6;
94
- case 6: return [2, {
134
+ _f.label = 5;
135
+ case 5: return [2, {
95
136
  nativeGasCost: nativeGasCost,
96
137
  tokenGasCost: tokenGasCost,
97
138
  gasPrice: utils_1.BigNumber.from(gasPrice.toString()),
@@ -1 +1 @@
1
- {"version":3,"file":"baseQuery.js","sourceRoot":"","sources":["../../../../src/relayFeeCalculator/chain-queries/baseQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseQuery.js","sourceRoot":"","sources":["../../../../src/relayFeeCalculator/chain-queries/baseQuery.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,32 @@ export declare class QueryBase implements QueryInterface {
55
55
  opStackL1GasCostMultiplier: BigNumber;
56
56
  transport: Transport;
57
57
  }>): Promise<TransactionCostEstimate>;
58
+ /**
59
+ * @notice Return ethers.PopulatedTransaction for a fill based on input deposit args
60
+ * @param deposit
61
+ * @param relayer Sender of PopulatedTransaction
62
+ * @returns PopulatedTransaction
63
+ */
64
+ getUnsignedTxFromDeposit(deposit: Deposit, relayer?: string): Promise<PopulatedTransaction>;
65
+ /**
66
+ * @notice Return the gas cost of a simulated transaction
67
+ * @param deposit
68
+ * @param relayer Sender of PopulatedTransaction
69
+ * @returns Estimated gas cost based on ethers.VoidSigner's gas estimation
70
+ */
71
+ getNativeGasCost(deposit: Deposit, relayer?: string): Promise<BigNumber>;
72
+ /**
73
+ * @notice Return L1 data fee for OP stack L2 transaction, which is based on L2 calldata.
74
+ * @dev https://docs.optimism.io/stack/transactions/fees#l1-data-fee
75
+ * @param unsignedTx L2 transaction that you want L1 data fee for
76
+ * @param relayer Sender of unsignedTx
77
+ * @param options Specify gas units to avoid additional gas estimation call and multiplier for L1 data fee
78
+ * @returns BigNumber L1 data fee in gas units
79
+ */
80
+ getOpStackL1DataFee(unsignedTx: PopulatedTransaction, relayer: string | undefined, options: Partial<{
81
+ opStackL2GasUnits: BigNumberish;
82
+ opStackL1DataFeeMultiplier: BigNumber;
83
+ }>): Promise<BigNumber>;
58
84
  /**
59
85
  * Estimates the total gas cost required to submit an unsigned (populated) transaction on-chain.
60
86
  * @param unsignedTx The unsigned transaction that this function will estimate.
@@ -53,7 +53,7 @@ var QueryBase = /** @class */ (function () {
53
53
  switch (_c.label) {
54
54
  case 0:
55
55
  _a = options.gasPrice, gasPrice = _a === void 0 ? this.fixedGasPrice : _a, gasUnits = options.gasUnits, baseFeeMultiplier = options.baseFeeMultiplier, priorityFeeMultiplier = options.priorityFeeMultiplier, opStackL1GasCostMultiplier = options.opStackL1GasCostMultiplier, transport = options.transport;
56
- return [4 /*yield*/, populateV3Relay(this.spokePool, deposit, relayer)];
56
+ return [4 /*yield*/, this.getUnsignedTxFromDeposit(deposit, relayer)];
57
57
  case 1:
58
58
  tx = _c.sent();
59
59
  return [4 /*yield*/, this.estimateGas(tx, relayer, this.provider, {
@@ -76,6 +76,69 @@ var QueryBase = /** @class */ (function () {
76
76
  });
77
77
  });
78
78
  };
79
+ /**
80
+ * @notice Return ethers.PopulatedTransaction for a fill based on input deposit args
81
+ * @param deposit
82
+ * @param relayer Sender of PopulatedTransaction
83
+ * @returns PopulatedTransaction
84
+ */
85
+ QueryBase.prototype.getUnsignedTxFromDeposit = function (deposit, relayer) {
86
+ if (relayer === void 0) { relayer = DEFAULT_SIMULATED_RELAYER_ADDRESS; }
87
+ return populateV3Relay(this.spokePool, deposit, relayer);
88
+ };
89
+ /**
90
+ * @notice Return the gas cost of a simulated transaction
91
+ * @param deposit
92
+ * @param relayer Sender of PopulatedTransaction
93
+ * @returns Estimated gas cost based on ethers.VoidSigner's gas estimation
94
+ */
95
+ QueryBase.prototype.getNativeGasCost = function (deposit, relayer) {
96
+ if (relayer === void 0) { relayer = DEFAULT_SIMULATED_RELAYER_ADDRESS; }
97
+ return __awaiter(this, void 0, void 0, function () {
98
+ var unsignedTx, voidSigner;
99
+ return __generator(this, function (_a) {
100
+ switch (_a.label) {
101
+ case 0: return [4 /*yield*/, this.getUnsignedTxFromDeposit(deposit, relayer)];
102
+ case 1:
103
+ unsignedTx = _a.sent();
104
+ voidSigner = new VoidSigner(relayer, this.provider);
105
+ return [2 /*return*/, voidSigner.estimateGas(unsignedTx)];
106
+ }
107
+ });
108
+ });
109
+ };
110
+ /**
111
+ * @notice Return L1 data fee for OP stack L2 transaction, which is based on L2 calldata.
112
+ * @dev https://docs.optimism.io/stack/transactions/fees#l1-data-fee
113
+ * @param unsignedTx L2 transaction that you want L1 data fee for
114
+ * @param relayer Sender of unsignedTx
115
+ * @param options Specify gas units to avoid additional gas estimation call and multiplier for L1 data fee
116
+ * @returns BigNumber L1 data fee in gas units
117
+ */
118
+ QueryBase.prototype.getOpStackL1DataFee = function (unsignedTx, relayer, options) {
119
+ if (relayer === void 0) { relayer = DEFAULT_SIMULATED_RELAYER_ADDRESS; }
120
+ return __awaiter(this, void 0, void 0, function () {
121
+ var _a, opStackL2GasUnits, _b, opStackL1DataFeeMultiplier, chainId, voidSigner, populatedTransaction, l1DataFee;
122
+ return __generator(this, function (_c) {
123
+ switch (_c.label) {
124
+ case 0:
125
+ _a = options || {}, opStackL2GasUnits = _a.opStackL2GasUnits, _b = _a.opStackL1DataFeeMultiplier, opStackL1DataFeeMultiplier = _b === void 0 ? toBNWei("1") : _b;
126
+ return [4 /*yield*/, this.provider.getNetwork()];
127
+ case 1:
128
+ chainId = (_c.sent()).chainId;
129
+ assert(isOptimismL2Provider(this.provider), "Unexpected provider for chain ID ".concat(chainId, "."));
130
+ voidSigner = new VoidSigner(relayer, this.provider);
131
+ return [4 /*yield*/, voidSigner.populateTransaction(__assign(__assign({}, unsignedTx), { gasLimit: opStackL2GasUnits }))];
132
+ case 2:
133
+ populatedTransaction = _c.sent();
134
+ return [4 /*yield*/, this.provider.estimateL1GasCost(populatedTransaction)];
135
+ case 3:
136
+ l1DataFee = _c.sent();
137
+ return [2 /*return*/, l1DataFee.mul(opStackL1DataFeeMultiplier).div(fixedPointAdjustment)];
138
+ }
139
+ });
140
+ });
141
+ };
79
142
  /**
80
143
  * Estimates the total gas cost required to submit an unsigned (populated) transaction on-chain.
81
144
  * @param unsignedTx The unsigned transaction that this function will estimate.
@@ -90,7 +153,7 @@ var QueryBase = /** @class */ (function () {
90
153
  QueryBase.prototype.estimateGas = function (unsignedTx, senderAddress, provider, options) {
91
154
  if (options === void 0) { options = {}; }
92
155
  return __awaiter(this, void 0, void 0, function () {
93
- var _a, _gasPrice, gasUnits, _b, baseFeeMultiplier, _c, priorityFeeMultiplier, _d, opStackL1GasCostMultiplier, transport, chainId, voidSigner, queries, _e, nativeGasCost, gasPrice, tokenGasCost, opStackL1GasCost, populatedTransaction, l1GasCost, l2GasCost;
156
+ var _a, _gasPrice, gasUnits, _b, baseFeeMultiplier, _c, priorityFeeMultiplier, _d, opStackL1GasCostMultiplier, transport, chainId, voidSigner, queries, _e, nativeGasCost, gasPrice, tokenGasCost, opStackL1GasCost, l2GasCost;
94
157
  return __generator(this, function (_f) {
95
158
  switch (_f.label) {
96
159
  case 0:
@@ -109,22 +172,20 @@ var QueryBase = /** @class */ (function () {
109
172
  case 2:
110
173
  _e = _f.sent(), nativeGasCost = _e[0], gasPrice = _e[1].maxFeePerGas;
111
174
  assert(nativeGasCost.gt(bnZero), "Gas cost should not be 0");
112
- if (!chainIsOPStack(chainId)) return [3 /*break*/, 5];
113
- assert(isOptimismL2Provider(provider), "Unexpected provider for chain ID ".concat(chainId, "."));
114
- return [4 /*yield*/, voidSigner.populateTransaction(__assign(__assign({}, unsignedTx), { gasLimit: nativeGasCost }))];
175
+ if (!chainIsOPStack(chainId)) return [3 /*break*/, 4];
176
+ return [4 /*yield*/, this.getOpStackL1DataFee(unsignedTx, senderAddress, {
177
+ opStackL2GasUnits: nativeGasCost,
178
+ opStackL1DataFeeMultiplier: opStackL1GasCostMultiplier,
179
+ })];
115
180
  case 3:
116
- populatedTransaction = _f.sent();
117
- return [4 /*yield*/, provider.estimateL1GasCost(populatedTransaction)];
118
- case 4:
119
- l1GasCost = _f.sent();
120
- opStackL1GasCost = l1GasCost.mul(opStackL1GasCostMultiplier).div(fixedPointAdjustment);
181
+ opStackL1GasCost = _f.sent();
121
182
  l2GasCost = nativeGasCost.mul(gasPrice);
122
183
  tokenGasCost = opStackL1GasCost.add(l2GasCost);
123
- return [3 /*break*/, 6];
124
- case 5:
184
+ return [3 /*break*/, 5];
185
+ case 4:
125
186
  tokenGasCost = nativeGasCost.mul(gasPrice);
126
- _f.label = 6;
127
- case 6: return [2 /*return*/, {
187
+ _f.label = 5;
188
+ case 5: return [2 /*return*/, {
128
189
  nativeGasCost: nativeGasCost,
129
190
  tokenGasCost: tokenGasCost,
130
191
  gasPrice: BigNumber.from(gasPrice.toString()),
@@ -1 +1 @@
1
- {"version":3,"file":"baseQuery.js","sourceRoot":"","sources":["../../../../src/relayFeeCalculator/chain-queries/baseQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseQuery.js","sourceRoot":"","sources":["../../../../src/relayFeeCalculator/chain-queries/baseQuery.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,32 @@ export declare class QueryBase implements QueryInterface {
55
55
  opStackL1GasCostMultiplier: BigNumber;
56
56
  transport: Transport;
57
57
  }>): Promise<TransactionCostEstimate>;
58
+ /**
59
+ * @notice Return ethers.PopulatedTransaction for a fill based on input deposit args
60
+ * @param deposit
61
+ * @param relayer Sender of PopulatedTransaction
62
+ * @returns PopulatedTransaction
63
+ */
64
+ getUnsignedTxFromDeposit(deposit: Deposit, relayer?: string): Promise<PopulatedTransaction>;
65
+ /**
66
+ * @notice Return the gas cost of a simulated transaction
67
+ * @param deposit
68
+ * @param relayer Sender of PopulatedTransaction
69
+ * @returns Estimated gas cost based on ethers.VoidSigner's gas estimation
70
+ */
71
+ getNativeGasCost(deposit: Deposit, relayer?: string): Promise<BigNumber>;
72
+ /**
73
+ * @notice Return L1 data fee for OP stack L2 transaction, which is based on L2 calldata.
74
+ * @dev https://docs.optimism.io/stack/transactions/fees#l1-data-fee
75
+ * @param unsignedTx L2 transaction that you want L1 data fee for
76
+ * @param relayer Sender of unsignedTx
77
+ * @param options Specify gas units to avoid additional gas estimation call and multiplier for L1 data fee
78
+ * @returns BigNumber L1 data fee in gas units
79
+ */
80
+ getOpStackL1DataFee(unsignedTx: PopulatedTransaction, relayer: string | undefined, options: Partial<{
81
+ opStackL2GasUnits: BigNumberish;
82
+ opStackL1DataFeeMultiplier: BigNumber;
83
+ }>): Promise<BigNumber>;
58
84
  /**
59
85
  * Estimates the total gas cost required to submit an unsigned (populated) transaction on-chain.
60
86
  * @param unsignedTx The unsigned transaction that this function will estimate.
@@ -1 +1 @@
1
- {"version":3,"file":"baseQuery.d.ts","sourceRoot":"","sources":["../../../../src/relayFeeCalculator/chain-queries/baseQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAG3E,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAc,MAAM,QAAQ,CAAC;AAGrE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAsB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EACL,YAAY,EACZ,uBAAuB,EAEvB,SAAS,EAMV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,KAAK,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AACnC,KAAK,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC7C,KAAK,iBAAiB,GAAG,MAAM,CAC7B,MAAM,EACN;IACE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB,CACF,CAAC;AAEF;;;GAGG;AACH,qBAAa,SAAU,YAAW,cAAc;IAc5C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,gBAAgB;IAC9C,QAAQ,CAAC,aAAa,EAAE,iBAAiB;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM;IACjC,QAAQ,CAAC,uBAAuB,EAAE,MAAM;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,kBAAkB,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC;IACvB,QAAQ,CAAC,qBAAqB,EAAE,MAAM;IApBxC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B;;;;;;;;;;OAUG;gBAEQ,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,EACrC,aAAa,EAAE,iBAAiB,EAChC,gBAAgB,EAAE,MAAM,EACxB,uBAAuB,EAAE,MAAM,EAC/B,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,oBAAQ,EAC3B,aAAa,CAAC,0BAAc,EAC5B,qBAAqB,GAAE,MAAc;IAKhD;;;;;;;;;OASG;IACG,WAAW,CACf,OAAO,EAAE,OAAO,EAChB,OAAO,SAAoC,EAC3C,OAAO,GAAE,OAAO,CAAC;QACf,QAAQ,EAAE,YAAY,CAAC;QACvB,QAAQ,EAAE,YAAY,CAAC;QACvB,iBAAiB,EAAE,SAAS,CAAC;QAC7B,qBAAqB,EAAE,SAAS,CAAC;QACjC,0BAA0B,EAAE,SAAS,CAAC;QACtC,SAAS,EAAE,SAAS,CAAC;KACtB,CAAM,GACN,OAAO,CAAC,uBAAuB,CAAC;IAiCnC;;;;;;;;;;OAUG;IACG,WAAW,CACf,UAAU,EAAE,oBAAoB,EAChC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC7D,OAAO,GAAE,OAAO,CAAC;QACf,QAAQ,EAAE,YAAY,CAAC;QACvB,QAAQ,EAAE,YAAY,CAAC;QACvB,iBAAiB,EAAE,SAAS,CAAC;QAC7B,qBAAqB,EAAE,SAAS,CAAC;QACjC,0BAA0B,EAAE,SAAS,CAAC;QACtC,SAAS,EAAE,SAAS,CAAC;KACtB,CAAM,GACN,OAAO,CAAC,uBAAuB,CAAC;IAgDnC;;;;OAIG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUzD;;;;OAIG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;CAI9C"}
1
+ {"version":3,"file":"baseQuery.d.ts","sourceRoot":"","sources":["../../../../src/relayFeeCalculator/chain-queries/baseQuery.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@across-protocol/sdk",
3
3
  "author": "UMA Team",
4
- "version": "3.4.9",
4
+ "version": "3.4.10",
5
5
  "license": "AGPL-3.0",
6
6
  "homepage": "https://docs.across.to/reference/sdk",
7
7
  "files": [
@@ -91,7 +91,7 @@ export class QueryBase implements QueryInterface {
91
91
  transport,
92
92
  } = options;
93
93
 
94
- const tx = await populateV3Relay(this.spokePool, deposit, relayer);
94
+ const tx = await this.getUnsignedTxFromDeposit(deposit, relayer);
95
95
  const {
96
96
  nativeGasCost,
97
97
  tokenGasCost,
@@ -114,6 +114,59 @@ export class QueryBase implements QueryInterface {
114
114
  };
115
115
  }
116
116
 
117
+ /**
118
+ * @notice Return ethers.PopulatedTransaction for a fill based on input deposit args
119
+ * @param deposit
120
+ * @param relayer Sender of PopulatedTransaction
121
+ * @returns PopulatedTransaction
122
+ */
123
+ getUnsignedTxFromDeposit(
124
+ deposit: Deposit,
125
+ relayer = DEFAULT_SIMULATED_RELAYER_ADDRESS
126
+ ): Promise<PopulatedTransaction> {
127
+ return populateV3Relay(this.spokePool, deposit, relayer);
128
+ }
129
+
130
+ /**
131
+ * @notice Return the gas cost of a simulated transaction
132
+ * @param deposit
133
+ * @param relayer Sender of PopulatedTransaction
134
+ * @returns Estimated gas cost based on ethers.VoidSigner's gas estimation
135
+ */
136
+ async getNativeGasCost(deposit: Deposit, relayer = DEFAULT_SIMULATED_RELAYER_ADDRESS): Promise<BigNumber> {
137
+ const unsignedTx = await this.getUnsignedTxFromDeposit(deposit, relayer);
138
+ const voidSigner = new VoidSigner(relayer, this.provider);
139
+ return voidSigner.estimateGas(unsignedTx);
140
+ }
141
+
142
+ /**
143
+ * @notice Return L1 data fee for OP stack L2 transaction, which is based on L2 calldata.
144
+ * @dev https://docs.optimism.io/stack/transactions/fees#l1-data-fee
145
+ * @param unsignedTx L2 transaction that you want L1 data fee for
146
+ * @param relayer Sender of unsignedTx
147
+ * @param options Specify gas units to avoid additional gas estimation call and multiplier for L1 data fee
148
+ * @returns BigNumber L1 data fee in gas units
149
+ */
150
+ async getOpStackL1DataFee(
151
+ unsignedTx: PopulatedTransaction,
152
+ relayer = DEFAULT_SIMULATED_RELAYER_ADDRESS,
153
+ options: Partial<{
154
+ opStackL2GasUnits: BigNumberish;
155
+ opStackL1DataFeeMultiplier: BigNumber;
156
+ }>
157
+ ): Promise<BigNumber> {
158
+ const { opStackL2GasUnits, opStackL1DataFeeMultiplier = toBNWei("1") } = options || {};
159
+ const { chainId } = await this.provider.getNetwork();
160
+ assert(isOptimismL2Provider(this.provider), `Unexpected provider for chain ID ${chainId}.`);
161
+ const voidSigner = new VoidSigner(relayer, this.provider);
162
+ const populatedTransaction = await voidSigner.populateTransaction({
163
+ ...unsignedTx,
164
+ gasLimit: opStackL2GasUnits, // prevents additional gas estimation call
165
+ });
166
+ const l1DataFee = await (this.provider as L2Provider<providers.Provider>).estimateL1GasCost(populatedTransaction);
167
+ return l1DataFee.mul(opStackL1DataFeeMultiplier).div(fixedPointAdjustment);
168
+ }
169
+
117
170
  /**
118
171
  * Estimates the total gas cost required to submit an unsigned (populated) transaction on-chain.
119
172
  * @param unsignedTx The unsigned transaction that this function will estimate.
@@ -164,13 +217,10 @@ export class QueryBase implements QueryInterface {
164
217
  // OP stack is a special case; gas cost is computed by the SDK, without having to query price.
165
218
  let opStackL1GasCost: BigNumber | undefined;
166
219
  if (chainIsOPStack(chainId)) {
167
- assert(isOptimismL2Provider(provider), `Unexpected provider for chain ID ${chainId}.`);
168
- const populatedTransaction = await voidSigner.populateTransaction({
169
- ...unsignedTx,
170
- gasLimit: nativeGasCost, // prevents additional gas estimation call
220
+ opStackL1GasCost = await this.getOpStackL1DataFee(unsignedTx, senderAddress, {
221
+ opStackL2GasUnits: nativeGasCost,
222
+ opStackL1DataFeeMultiplier: opStackL1GasCostMultiplier,
171
223
  });
172
- const l1GasCost = await (provider as L2Provider<providers.Provider>).estimateL1GasCost(populatedTransaction);
173
- opStackL1GasCost = l1GasCost.mul(opStackL1GasCostMultiplier).div(fixedPointAdjustment);
174
224
  const l2GasCost = nativeGasCost.mul(gasPrice);
175
225
  tokenGasCost = opStackL1GasCost.add(l2GasCost);
176
226
  } else {