@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.
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.d.ts +6 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js +55 -14
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.d.ts +26 -0
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js +75 -14
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
- package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts +26 -0
- package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/relayFeeCalculator/chain-queries/baseQuery.ts +57 -7
|
@@ -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,
|
|
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,
|
|
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,
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
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,
|
|
91
|
-
case
|
|
131
|
+
return [3, 5];
|
|
132
|
+
case 4:
|
|
92
133
|
tokenGasCost = nativeGasCost.mul(gasPrice);
|
|
93
|
-
_f.label =
|
|
94
|
-
case
|
|
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":";;;;AACA,kEAA0F;AAE1F,iCAAqE;AACrE,6CAA4C;AAC5C,6CAA+E;AAE/E,6CAAgE;AAChE,qCAUqB;AAGrB,sDAAkE;AAelE;IAaE,mBACW,QAAqC,EACrC,aAAgC,EAChC,gBAAwB,EACxB,uBAA+B,EAC/B,MAAc,EACd,kBAA2B,EAC3B,aAA4B,EAC5B,qBAAqC;QAArC,sCAAA,EAAA,6BAAqC;QAPrC,aAAQ,GAAR,QAAQ,CAA6B;QACrC,kBAAa,GAAb,aAAa,CAAmB;QAChC,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,4BAAuB,GAAvB,uBAAuB,CAAQ;QAC/B,WAAM,GAAN,MAAM,CAAQ;QACd,uBAAkB,GAAlB,kBAAkB,CAAS;QAC3B,kBAAa,GAAb,aAAa,CAAe;QAC5B,0BAAqB,GAArB,qBAAqB,CAAgB;QAE9C,IAAI,CAAC,SAAS,GAAG,8BAAkB,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAC1E,CAAC;IAYK,+BAAW,GAAjB,UACE,OAAgB,EAChB,OAA2C,EAC3C,OAOO;QARP,wBAAA,EAAA,UAAU,6CAAiC;QAC3C,wBAAA,EAAA,YAOO;;;;;;wBAGL,KAME,OAAO,SANoB,EAA7B,QAAQ,mBAAG,IAAI,CAAC,aAAa,KAAA,EAC7B,QAAQ,GAKN,OAAO,SALD,EACR,iBAAiB,GAIf,OAAO,kBAJQ,EACjB,qBAAqB,GAGnB,OAAO,sBAHY,EACrB,0BAA0B,GAExB,OAAO,2BAFiB,EAC1B,SAAS,GACP,OAAO,UADA,CACC;wBAED,WAAM,
|
|
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*/,
|
|
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,
|
|
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*/,
|
|
113
|
-
|
|
114
|
-
|
|
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
|
-
|
|
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*/,
|
|
124
|
-
case
|
|
184
|
+
return [3 /*break*/, 5];
|
|
185
|
+
case 4:
|
|
125
186
|
tokenGasCost = nativeGasCost.mul(gasPrice);
|
|
126
|
-
_f.label =
|
|
127
|
-
case
|
|
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":";AACA,OAAO,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1F,OAAO,EAAmC,UAAU,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,iCAAiC,EAAE,MAAM,iBAAiB,CAAC;AAE/E,OAAO,EAAa,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAGL,eAAe,EACf,SAAS,EACT,OAAO,EACP,MAAM,EACN,MAAM,EACN,cAAc,EACd,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAWlE;;;GAGG;AACH;IAEE;;;;;;;;;;OAUG;IACH,mBACW,QAAqC,EACrC,aAAgC,EAChC,gBAAwB,EACxB,uBAA+B,EAC/B,MAAc,EACd,kBAA2B,EAC3B,aAA4B,EAC5B,qBAAqC;QAArC,sCAAA,EAAA,6BAAqC;QAPrC,aAAQ,GAAR,QAAQ,CAA6B;QACrC,kBAAa,GAAb,aAAa,CAAmB;QAChC,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,4BAAuB,GAAvB,uBAAuB,CAAQ;QAC/B,WAAM,GAAN,MAAM,CAAQ;QACd,uBAAkB,GAAlB,kBAAkB,CAAS;QAC3B,kBAAa,GAAb,aAAa,CAAe;QAC5B,0BAAqB,GAArB,qBAAqB,CAAgB;QAE9C,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;;;OASG;IACG,+BAAW,GAAjB,UACE,OAAgB,EAChB,OAA2C,EAC3C,OAOO;QARP,wBAAA,EAAA,2CAA2C;QAC3C,wBAAA,EAAA,YAOO;;;;;;wBAGL,KAME,OAAO,SANoB,EAA7B,QAAQ,mBAAG,IAAI,CAAC,aAAa,KAAA,EAC7B,QAAQ,GAKN,OAAO,SALD,EACR,iBAAiB,GAIf,OAAO,kBAJQ,EACjB,qBAAqB,GAGnB,OAAO,sBAHY,EACrB,0BAA0B,GAExB,OAAO,2BAFiB,EAC1B,SAAS,GACP,OAAO,UADA,CACC;wBAED,qBAAM,
|
|
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;
|
|
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
|
@@ -91,7 +91,7 @@ export class QueryBase implements QueryInterface {
|
|
|
91
91
|
transport,
|
|
92
92
|
} = options;
|
|
93
93
|
|
|
94
|
-
const tx = await
|
|
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
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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 {
|