@@ -988,6 +988,7 @@ pub fn fill_perp_order(
988988 clock : & Clock ,
989989 fill_mode : FillMode ,
990990 rev_share_escrow : & mut Option < & mut RevenueShareEscrowZeroCopyMut > ,
991+ builder_referral_feature_enabled : bool ,
991992) -> DriftResult < ( u64 , u64 ) > {
992993 let now = clock. unix_timestamp ;
993994 let slot = clock. slot ;
@@ -1336,6 +1337,7 @@ pub fn fill_perp_order(
13361337 fill_mode,
13371338 oracle_stale_for_margin,
13381339 rev_share_escrow,
1340+ builder_referral_feature_enabled,
13391341 ) ?;
13401342
13411343 if base_asset_amount != 0 {
@@ -1752,10 +1754,15 @@ fn get_builder_escrow_info(
17521754 sub_account_id : u16 ,
17531755 order_id : u32 ,
17541756 market_index : u16 ,
1757+ builder_referral_feature_enabled : bool ,
17551758) -> ( Option < u32 > , Option < u32 > , Option < u16 > , Option < u8 > ) {
17561759 if let Some ( escrow) = escrow_opt {
17571760 let builder_order_idx = escrow. find_order_index ( sub_account_id, order_id) ;
1758- let referrer_builder_order_idx = escrow. find_or_create_referral_index ( market_index) ;
1761+ let referrer_builder_order_idx = if builder_referral_feature_enabled {
1762+ escrow. find_or_create_referral_index ( market_index)
1763+ } else {
1764+ None
1765+ } ;
17591766
17601767 let builder_order = builder_order_idx. and_then ( |idx| escrow. get_order ( idx) . ok ( ) ) ;
17611768 let builder_order_fee_bps = builder_order. map ( |order| order. fee_tenth_bps ) ;
@@ -1797,6 +1804,7 @@ fn fulfill_perp_order(
17971804 fill_mode : FillMode ,
17981805 oracle_stale_for_margin : bool ,
17991806 rev_share_escrow : & mut Option < & mut RevenueShareEscrowZeroCopyMut > ,
1807+ builder_referral_feature_enabled : bool ,
18001808) -> DriftResult < ( u64 , u64 ) > {
18011809 let market_index = user. orders [ user_order_index] . market_index ;
18021810
@@ -1897,6 +1905,7 @@ fn fulfill_perp_order(
18971905 AMMLiquiditySplit :: Shared ,
18981906 fill_mode. is_liquidation ( ) ,
18991907 rev_share_escrow,
1908+ builder_referral_feature_enabled,
19001909 ) ?;
19011910
19021911 ( fill_base_asset_amount, fill_quote_asset_amount)
@@ -1943,6 +1952,7 @@ fn fulfill_perp_order(
19431952 fill_mode. is_liquidation ( ) ,
19441953 None ,
19451954 rev_share_escrow,
1955+ builder_referral_feature_enabled,
19461956 ) ?;
19471957
19481958 if maker_fill_base_asset_amount != 0 {
@@ -2188,6 +2198,7 @@ pub fn fulfill_perp_order_with_amm(
21882198 liquidity_split : AMMLiquiditySplit ,
21892199 is_liquidation : bool ,
21902200 rev_share_escrow : & mut Option < & mut RevenueShareEscrowZeroCopyMut > ,
2201+ builder_referral_feature_enabled : bool ,
21912202) -> DriftResult < ( u64 , u64 ) > {
21922203 let position_index = get_position_index ( & user. perp_positions , market. market_index ) ?;
21932204 let existing_base_asset_amount = user. perp_positions [ position_index] . base_asset_amount ;
@@ -2302,6 +2313,7 @@ pub fn fulfill_perp_order_with_amm(
23022313 user. sub_account_id ,
23032314 order_id,
23042315 market. market_index ,
2316+ builder_referral_feature_enabled,
23052317 ) ;
23062318
23072319 let FillFees {
@@ -2605,6 +2617,7 @@ pub fn fulfill_perp_order_with_match(
26052617 is_liquidation : bool ,
26062618 amm_lp_allowed_to_jit_make : Option < bool > ,
26072619 builder_escrow : & mut Option < & mut RevenueShareEscrowZeroCopyMut > ,
2620+ builder_referral_feature_enabled : bool ,
26082621) -> DriftResult < ( u64 , u64 , u64 ) > {
26092622 if !are_orders_same_market_but_different_sides (
26102623 & maker. orders [ maker_order_index] ,
@@ -2720,6 +2733,7 @@ pub fn fulfill_perp_order_with_match(
27202733 amm_liquidity_split,
27212734 is_liquidation,
27222735 builder_escrow,
2736+ builder_referral_feature_enabled,
27232737 ) ?;
27242738
27252739 total_base_asset_amount = base_asset_amount_filled_by_amm;
@@ -2821,6 +2835,7 @@ pub fn fulfill_perp_order_with_match(
28212835 taker. sub_account_id ,
28222836 taker. orders [ taker_order_index] . order_id ,
28232837 market. market_index ,
2838+ builder_referral_feature_enabled,
28242839 ) ;
28252840
28262841 let filler_multiplier = if reward_filler {
0 commit comments