import { BN } from '@coral-xyz/anchor';
import { PublicKey } from '@solana/web3.js';
import { InterestRateParams, OracleConfigParams } from './types';
export interface TokenRegisterParams {
    oracleConfig: OracleConfigParams;
    groupInsuranceFund: boolean;
    interestRateParams: InterestRateParams;
    loanFeeRate: number;
    loanOriginationFeeRate: number;
    maintAssetWeight: number;
    initAssetWeight: number;
    maintLiabWeight: number;
    initLiabWeight: number;
    liquidationFee: number;
    stablePriceDelayIntervalSeconds: number;
    stablePriceDelayGrowthLimit: number;
    stablePriceGrowthLimit: number;
    minVaultToDepositsRatio: number;
    netBorrowLimitPerWindowQuote: number;
    netBorrowLimitWindowSizeTs: number;
    borrowWeightScaleStartQuote: number;
    depositWeightScaleStartQuote: number;
    reduceOnly: number;
    tokenConditionalSwapTakerFeeRate: number;
    tokenConditionalSwapMakerFeeRate: number;
    flashLoanSwapFeeRate: number;
    interestCurveScaling: number;
    interestTargetUtilization: number;
    depositLimit: BN;
    zeroUtilRate: number;
    platformLiquidationFee: number;
    disableAssetLiquidation: boolean;
    collateralFeePerDay: number;
}
export declare const DefaultTokenRegisterParams: TokenRegisterParams;
export interface TokenEditParams {
    oracle: PublicKey | null;
    oracleConfig: OracleConfigParams | null;
    groupInsuranceFund: boolean | null;
    interestRateParams: InterestRateParams | null;
    loanFeeRate: number | null;
    loanOriginationFeeRate: number | null;
    maintAssetWeight: number | null;
    initAssetWeight: number | null;
    maintLiabWeight: number | null;
    initLiabWeight: number | null;
    liquidationFee: number | null;
    stablePriceDelayIntervalSeconds: number | null;
    stablePriceDelayGrowthLimit: number | null;
    stablePriceGrowthLimit: number | null;
    minVaultToDepositsRatio: number | null;
    netBorrowLimitPerWindowQuote: number | null;
    netBorrowLimitWindowSizeTs: number | null;
    borrowWeightScaleStartQuote: number | null;
    depositWeightScaleStartQuote: number | null;
    resetStablePrice: boolean | null;
    resetNetBorrowLimit: boolean | null;
    reduceOnly: number | null;
    name: string | null;
    forceClose: boolean | null;
    tokenConditionalSwapTakerFeeRate: number | null;
    tokenConditionalSwapMakerFeeRate: number | null;
    flashLoanSwapFeeRate: number | null;
    interestCurveScaling: number | null;
    interestTargetUtilization: number | null;
    maintWeightShiftStart: BN | null;
    maintWeightShiftEnd: BN | null;
    maintWeightShiftAssetTarget: number | null;
    maintWeightShiftLiabTarget: number | null;
    maintWeightShiftAbort: boolean | null;
    fallbackOracle: PublicKey | null;
    depositLimit: BN | null;
    zeroUtilRate: number | null;
    platformLiquidationFee: number | null;
    disableAssetLiquidation: boolean | null;
    collateralFeePerDay: number | null;
    forceWithdraw: boolean | null;
}
export declare const NullTokenEditParams: TokenEditParams;
export interface PerpEditParams {
    oracle: PublicKey | null;
    oracleConfig: OracleConfigParams | null;
    baseDecimals: number | null;
    maintBaseAssetWeight: number | null;
    initBaseAssetWeight: number | null;
    maintBaseLiabWeight: number | null;
    initBaseLiabWeight: number | null;
    maintOverallAssetWeight: number | null;
    initOverallAssetWeight: number | null;
    baseLiquidationFee: number | null;
    makerFee: number | null;
    takerFee: number | null;
    feePenalty: number | null;
    minFunding: number | null;
    maxFunding: number | null;
    impactQuantity: number | null;
    groupInsuranceFund: boolean | null;
    settleFeeFlat: number | null;
    settleFeeAmountThreshold: number | null;
    settleFeeFractionLowHealth: number | null;
    stablePriceDelayIntervalSeconds: number | null;
    stablePriceDelayGrowthLimit: number | null;
    stablePriceGrowthLimit: number | null;
    settlePnlLimitFactor: number | null;
    settlePnlLimitWindowSize: number | null;
    reduceOnly: boolean | null;
    resetStablePrice: boolean | null;
    positivePnlLiquidationFee: number | null;
    name: string | null;
    forceClose: boolean | null;
    platformLiquidationFee: number | null;
}
export declare const NullPerpEditParams: PerpEditParams;
export interface IxGateParams {
    AccountClose: boolean;
    AccountCreate: boolean;
    AccountEdit: boolean;
    AccountExpand: boolean;
    AccountToggleFreeze: boolean;
    AltExtend: boolean;
    AltSet: boolean;
    FlashLoan: boolean;
    GroupClose: boolean;
    GroupCreate: boolean;
    GroupToggleHalt: boolean;
    HealthRegion: boolean;
    PerpCancelAllOrders: boolean;
    PerpCancelAllOrdersBySide: boolean;
    PerpCancelOrder: boolean;
    PerpCancelOrderByClientOrderId: boolean;
    PerpCloseMarket: boolean;
    PerpConsumeEvents: boolean;
    PerpCreateMarket: boolean;
    PerpDeactivatePosition: boolean;
    PerpEditMarket: boolean;
    PerpLiqBaseOrPositivePnl: boolean;
    PerpLiqForceCancelOrders: boolean;
    PerpLiqNegativePnlOrBankruptcy: boolean;
    PerpPlaceOrder: boolean;
    PerpSettleFees: boolean;
    PerpSettlePnl: boolean;
    PerpUpdateFunding: boolean;
    Serum3CancelAllOrders: boolean;
    Serum3CancelOrder: boolean;
    Serum3CloseOpenOrders: boolean;
    Serum3CreateOpenOrders: boolean;
    Serum3DeregisterMarket: boolean;
    Serum3EditMarket: boolean;
    Serum3LiqForceCancelOrders: boolean;
    Serum3PlaceOrder: boolean;
    Serum3RegisterMarket: boolean;
    Serum3SettleFunds: boolean;
    StubOracleClose: boolean;
    StubOracleCreate: boolean;
    StubOracleSet: boolean;
    TokenAddBank: boolean;
    TokenDeposit: boolean;
    TokenDeregister: boolean;
    TokenEdit: boolean;
    TokenLiqBankruptcy: boolean;
    TokenLiqWithToken: boolean;
    TokenRegister: boolean;
    TokenRegisterTrustless: boolean;
    TokenUpdateIndexAndRate: boolean;
    TokenWithdraw: boolean;
    AccountBuybackFeesWithMngo: boolean;
    TokenForceCloseBorrowsWithToken: boolean;
    PerpForceClosePosition: boolean;
    GroupWithdrawInsuranceFund: boolean;
    TokenConditionalSwapCreate: boolean;
    TokenConditionalSwapTrigger: boolean;
    TokenConditionalSwapCancel: boolean;
    OpenbookV2CancelOrder: boolean;
    OpenbookV2CloseOpenOrders: boolean;
    OpenbookV2CreateOpenOrders: boolean;
    OpenbookV2DeregisterMarket: boolean;
    OpenbookV2EditMarket: boolean;
    OpenbookV2LiqForceCancelOrders: boolean;
    OpenbookV2PlaceOrder: boolean;
    OpenbookV2PlaceTakeOrder: boolean;
    OpenbookV2RegisterMarket: boolean;
    OpenbookV2SettleFunds: boolean;
    AdminTokenWithdrawFees: boolean;
    AdminPerpWithdrawFees: boolean;
    AccountSizeMigration: boolean;
    TokenConditionalSwapStart: boolean;
    TokenConditionalSwapCreatePremiumAuction: boolean;
    TokenConditionalSwapCreateLinearAuction: boolean;
    Serum3PlaceOrderV2: boolean;
    TokenForceWithdraw: boolean;
    SequenceCheck: boolean;
    HealthCheck: boolean;
}
export declare const TrueIxGateParams: IxGateParams;
export declare function buildIxGate(p: IxGateParams): BN;
//# sourceMappingURL=clientIxParamBuilder.d.ts.map