@@ -25,7 +25,9 @@ describe('FeePredictor', () => {
2525 let rollup : RollupContract ;
2626
2727 let slotDuration : number ;
28+ let ethereumSlotDuration : number ;
2829 let l1GenesisTime : bigint ;
30+ let dateProvider : DateProvider ;
2931
3032 beforeAll ( async ( ) => {
3133 const privateKeyRaw = '0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba' ;
@@ -47,7 +49,9 @@ describe('FeePredictor', () => {
4749 rollupCheatCodes = RollupCheatCodes . create ( [ rpcUrl ] , deployed . l1ContractAddresses , new DateProvider ( ) ) ;
4850
4951 slotDuration = await rollup . getSlotDuration ( ) ;
52+ ethereumSlotDuration = DefaultL1ContractsConfig . ethereumSlotDuration ;
5053 l1GenesisTime = await rollup . getL1GenesisTime ( ) ;
54+ dateProvider = new DateProvider ( ) ;
5155 } , 60_000 ) ;
5256
5357 afterAll ( async ( ) => {
@@ -71,15 +75,29 @@ describe('FeePredictor', () => {
7175 const l1Fee = await rollup . getManaMinFeeAt ( getTimestamp ( startSlot ) , true ) ;
7276
7377 for ( const manaUsage of Object . values ( ManaUsageEstimate ) ) {
74- const predictor = new FeePredictor ( rollup , slotDuration , l1GenesisTime ) ;
75- const predicted = await predictor . getPredictedMinFees ( publicClient , manaUsage ) ;
78+ const predictor = new FeePredictor (
79+ rollup ,
80+ publicClient ,
81+ dateProvider ,
82+ slotDuration ,
83+ l1GenesisTime ,
84+ ethereumSlotDuration ,
85+ ) ;
86+ const predicted = await predictor . getPredictedMinFees ( manaUsage ) ;
7687 expect ( predicted [ 0 ] . feePerL2Gas ) . toBe ( l1Fee ) ;
7788 }
7889 } ) ;
7990
8091 it ( 'all slots match L1 with ManaUsageEstimate.None and zero congestion' , async ( ) => {
81- const predictor = new FeePredictor ( rollup , slotDuration , l1GenesisTime ) ;
82- const predicted = await predictor . getPredictedMinFees ( publicClient , ManaUsageEstimate . None ) ;
92+ const predictor = new FeePredictor (
93+ rollup ,
94+ publicClient ,
95+ dateProvider ,
96+ slotDuration ,
97+ l1GenesisTime ,
98+ ethereumSlotDuration ,
99+ ) ;
100+ const predicted = await predictor . getPredictedMinFees ( ManaUsageEstimate . None ) ;
83101
84102 const startSlot = await getPredictionStartSlot ( ) ;
85103 for ( let i = 0 ; i < predicted . length ; i ++ ) {
@@ -99,8 +117,15 @@ describe('FeePredictor', () => {
99117 await cheatCodes . mine ( ) ;
100118 await rollupCheatCodes . updateL1GasFeeOracle ( ) ;
101119
102- const predictor = new FeePredictor ( rollup , slotDuration , l1GenesisTime ) ;
103- const predicted = await predictor . getPredictedMinFees ( publicClient , ManaUsageEstimate . None ) ;
120+ const predictor = new FeePredictor (
121+ rollup ,
122+ publicClient ,
123+ dateProvider ,
124+ slotDuration ,
125+ l1GenesisTime ,
126+ ethereumSlotDuration ,
127+ ) ;
128+ const predicted = await predictor . getPredictedMinFees ( ManaUsageEstimate . None ) ;
104129
105130 const startSlot = await getPredictionStartSlot ( ) ;
106131 for ( let i = 0 ; i < predicted . length ; i ++ ) {
@@ -117,17 +142,31 @@ describe('FeePredictor', () => {
117142 await cheatCodes . mine ( ) ;
118143 await rollupCheatCodes . advanceSlots ( 3 ) ;
119144
120- const predictor = new FeePredictor ( rollup , slotDuration , l1GenesisTime ) ;
121- const predicted = await predictor . getPredictedMinFees ( publicClient , ManaUsageEstimate . None ) ;
145+ const predictor = new FeePredictor (
146+ rollup ,
147+ publicClient ,
148+ dateProvider ,
149+ slotDuration ,
150+ l1GenesisTime ,
151+ ethereumSlotDuration ,
152+ ) ;
153+ const predicted = await predictor . getPredictedMinFees ( ManaUsageEstimate . None ) ;
122154
123155 const startSlot = await getPredictionStartSlot ( ) ;
124156 const l1Fee = await rollup . getManaMinFeeAt ( getTimestamp ( startSlot ) , true ) ;
125157 expect ( predicted [ 0 ] . feePerL2Gas ) . toBe ( l1Fee ) ;
126158 } ) ;
127159
128160 it ( 'returns exactly FEE_ORACLE_LAG entries' , async ( ) => {
129- const predictor = new FeePredictor ( rollup , slotDuration , l1GenesisTime ) ;
130- const predicted = await predictor . getPredictedMinFees ( publicClient , ManaUsageEstimate . Target ) ;
161+ const predictor = new FeePredictor (
162+ rollup ,
163+ publicClient ,
164+ dateProvider ,
165+ slotDuration ,
166+ l1GenesisTime ,
167+ ethereumSlotDuration ,
168+ ) ;
169+ const predicted = await predictor . getPredictedMinFees ( ManaUsageEstimate . Target ) ;
131170 expect ( predicted . length ) . toBe ( FEE_ORACLE_LAG ) ;
132171 } ) ;
133172
@@ -155,8 +194,15 @@ describe('FeePredictor', () => {
155194 const assumedManaUsed =
156195 estimate === ManaUsageEstimate . None ? 0n : estimate === ManaUsageEstimate . Target ? manaTarget : manaLimit ;
157196
158- const predictor = new FeePredictor ( rollup , slotDuration , l1GenesisTime ) ;
159- const predicted = await predictor . getPredictedMinFees ( publicClient , estimate ) ;
197+ const predictor = new FeePredictor (
198+ rollup ,
199+ publicClient ,
200+ dateProvider ,
201+ slotDuration ,
202+ l1GenesisTime ,
203+ ethereumSlotDuration ,
204+ ) ;
205+ const predicted = await predictor . getPredictedMinFees ( estimate ) ;
160206
161207 const rollupAddress = EthAddress . fromString ( rollup . address ) ;
162208
@@ -272,8 +318,15 @@ describe('FeePredictor', () => {
272318
273319 // Step through 6 successive slots, creating a fresh predictor each time.
274320 for ( let step = 0 ; step < 6 ; step ++ ) {
275- const predictor = new FeePredictor ( rollup , slotDuration , l1GenesisTime ) ;
276- const predicted = await predictor . getPredictedMinFees ( publicClient , ManaUsageEstimate . None ) ;
321+ const predictor = new FeePredictor (
322+ rollup ,
323+ publicClient ,
324+ dateProvider ,
325+ slotDuration ,
326+ l1GenesisTime ,
327+ ethereumSlotDuration ,
328+ ) ;
329+ const predicted = await predictor . getPredictedMinFees ( ManaUsageEstimate . None ) ;
277330
278331 expect ( predicted . length ) . toBe ( FEE_ORACLE_LAG ) ;
279332
0 commit comments