pub fn perp_edit_market(
    ctx: Context<'_, '_, '_, '_, PerpEditMarket<'_>>,
    oracle_opt: Option<Pubkey>,
    oracle_config_opt: Option<OracleConfigParams>,
    base_decimals_opt: Option<u8>,
    maint_base_asset_weight_opt: Option<f32>,
    init_base_asset_weight_opt: Option<f32>,
    maint_base_liab_weight_opt: Option<f32>,
    init_base_liab_weight_opt: Option<f32>,
    maint_overall_asset_weight_opt: Option<f32>,
    init_overall_asset_weight_opt: Option<f32>,
    base_liquidation_fee_opt: Option<f32>,
    maker_fee_opt: Option<f32>,
    taker_fee_opt: Option<f32>,
    min_funding_opt: Option<f32>,
    max_funding_opt: Option<f32>,
    impact_quantity_opt: Option<i64>,
    group_insurance_fund_opt: Option<bool>,
    fee_penalty_opt: Option<f32>,
    settle_fee_flat_opt: Option<f32>,
    settle_fee_amount_threshold_opt: Option<f32>,
    settle_fee_fraction_low_health_opt: Option<f32>,
    stable_price_delay_interval_seconds_opt: Option<u32>,
    stable_price_delay_growth_limit_opt: Option<f32>,
    stable_price_growth_limit_opt: Option<f32>,
    settle_pnl_limit_factor_opt: Option<f32>,
    settle_pnl_limit_window_size_ts_opt: Option<u64>,
    reduce_only_opt: Option<bool>,
    reset_stable_price: bool,
    positive_pnl_liquidation_fee_opt: Option<f32>,
    name_opt: Option<String>,
    force_close_opt: Option<bool>,
    platform_liquidation_fee_opt: Option<f32>
) -> Result<()>