@@ -11,7 +11,7 @@ use astroport::asset::{Asset, AssetInfo, AssetInfoExt, Decimal256Ext, DecimalAss
11
11
use astroport:: cosmwasm_ext:: IntegerToDecimal ;
12
12
use astroport_pcl_common:: state:: Precisions ;
13
13
use astroport_pcl_common:: {
14
- calc_y,
14
+ calc_d , calc_y,
15
15
state:: { AmpGamma , Config } ,
16
16
} ;
17
17
@@ -134,18 +134,19 @@ impl SpotOrdersFactory {
134
134
& mut self ,
135
135
pair_config : & Config ,
136
136
amp_gamma : AmpGamma ,
137
- d : Decimal256 ,
138
137
ixs : & [ Decimal256 ] ,
139
138
asset_0_trade_size : Decimal256 ,
140
139
asset_1_trade_size : Decimal256 ,
141
140
orders_number : u8 ,
142
141
) -> Result < bool , ContractError > {
142
+ let d = calc_d ( ixs, & amp_gamma) ?;
143
+
143
144
for i in 1 ..=orders_number {
144
145
let i_dec = Decimal256 :: from_integer ( i) ;
145
146
146
147
let asset_0_sell_amount = asset_0_trade_size * i_dec;
147
148
let asset_1_sell_amount =
148
- compute_offer_amount ( & ixs, asset_0_sell_amount, 1 , pair_config, amp_gamma, d) ?;
149
+ compute_offer_amount ( ixs, asset_0_sell_amount, 1 , pair_config, amp_gamma, d) ?;
149
150
150
151
let sell_price = if i > 1 {
151
152
( asset_1_sell_amount - self . orderbook_one_side_liquidity ( false ) )
@@ -156,7 +157,7 @@ impl SpotOrdersFactory {
156
157
157
158
let asset_1_buy_amount = asset_1_trade_size * i_dec;
158
159
let asset_0_buy_amount =
159
- compute_offer_amount ( & ixs, asset_1_buy_amount, 0 , pair_config, amp_gamma, d) ?;
160
+ compute_offer_amount ( ixs, asset_1_buy_amount, 0 , pair_config, amp_gamma, d) ?;
160
161
161
162
let buy_price = if i > 1 {
162
163
( asset_0_buy_amount - self . orderbook_one_side_liquidity ( true ) ) / asset_1_trade_size
@@ -617,7 +618,6 @@ mod unit_tests {
617
618
. construct_orders (
618
619
& pair_config,
619
620
amp_gamma,
620
- d,
621
621
& ixs,
622
622
asset_0_trade_size,
623
623
asset_1_trade_size,
0 commit comments