Skip to content

PairInfos Contract 📜

Holds the metadata of asset pairs. (Ex: BTC/USDC, ETH/USDC, etc.)

State Variables

storageT

solidity
StorageInterfaceV5 public storageT;
StorageInterfaceV5 public storageT;

manager

solidity
address public manager;
address public manager;

PRECISION

solidity
uint256 constant PRECISION = 1e10;
uint256 constant PRECISION = 1e10;

LIQ_THRESHOLD_P

solidity
uint256 constant LIQ_THRESHOLD_P = 90;
uint256 constant LIQ_THRESHOLD_P = 90;

maxNegativePnlOnOpenP

solidity
uint256 public maxNegativePnlOnOpenP;
uint256 public maxNegativePnlOnOpenP;

pairParams

solidity
mapping(uint256 => PairParams) public pairParams;
mapping(uint256 => PairParams) public pairParams;

pairFundingFees

solidity
mapping(uint256 => PairFundingFees) public pairFundingFees;
mapping(uint256 => PairFundingFees) public pairFundingFees;

pairRolloverFees

solidity
mapping(uint256 => PairRolloverFees) public pairRolloverFees;
mapping(uint256 => PairRolloverFees) public pairRolloverFees;

_tradeInitialAccFees

solidity
mapping(address => mapping(uint256 => mapping(uint256 => TradeInitialAccFees))) private _tradeInitialAccFees;
mapping(address => mapping(uint256 => mapping(uint256 => TradeInitialAccFees))) private _tradeInitialAccFees;

Functions

initialize

solidity
function initialize(StorageInterfaceV5 _storageT, address _manager, uint256 _maxNegativePnlOnOpenP)
    external
    initializer;
function initialize(StorageInterfaceV5 _storageT, address _manager, uint256 _maxNegativePnlOnOpenP)
    external
    initializer;

onlyGov

solidity
modifier onlyGov();
modifier onlyGov();

onlyManager

solidity
modifier onlyManager();
modifier onlyManager();

onlyCallbacks

solidity
modifier onlyCallbacks();
modifier onlyCallbacks();

setManager

solidity
function setManager(address _manager) external onlyGov;
function setManager(address _manager) external onlyGov;

setMaxNegativePnlOnOpenP

solidity
function setMaxNegativePnlOnOpenP(uint256 value) external onlyManager;
function setMaxNegativePnlOnOpenP(uint256 value) external onlyManager;

setPairParams

solidity
function setPairParams(uint256 pairIndex, PairParams memory value) public onlyManager;
function setPairParams(uint256 pairIndex, PairParams memory value) public onlyManager;

setPairParamsArray

solidity
function setPairParamsArray(uint256[] memory indices, PairParams[] memory values) external onlyManager;
function setPairParamsArray(uint256[] memory indices, PairParams[] memory values) external onlyManager;

setOnePercentDepth

solidity
function setOnePercentDepth(uint256 pairIndex, uint256 valueAbove, uint256 valueBelow) public onlyManager;
function setOnePercentDepth(uint256 pairIndex, uint256 valueAbove, uint256 valueBelow) public onlyManager;

setOnePercentDepthArray

solidity
function setOnePercentDepthArray(uint256[] memory indices, uint256[] memory valuesAbove, uint256[] memory valuesBelow)
    external
    onlyManager;
function setOnePercentDepthArray(uint256[] memory indices, uint256[] memory valuesAbove, uint256[] memory valuesBelow)
    external
    onlyManager;

setRolloverFeePerBlockP

solidity
function setRolloverFeePerBlockP(uint256 pairIndex, uint256 value) public onlyManager;
function setRolloverFeePerBlockP(uint256 pairIndex, uint256 value) public onlyManager;

setRolloverFeePerBlockPArray

solidity
function setRolloverFeePerBlockPArray(uint256[] memory indices, uint256[] memory values) external onlyManager;
function setRolloverFeePerBlockPArray(uint256[] memory indices, uint256[] memory values) external onlyManager;

setFundingFeePerBlockP

solidity
function setFundingFeePerBlockP(uint256 pairIndex, uint256 value) public onlyManager;
function setFundingFeePerBlockP(uint256 pairIndex, uint256 value) public onlyManager;

setFundingFeePerBlockPArray

solidity
function setFundingFeePerBlockPArray(uint256[] memory indices, uint256[] memory values) external onlyManager;
function setFundingFeePerBlockPArray(uint256[] memory indices, uint256[] memory values) external onlyManager;

storeTradeInitialAccFees

solidity
function storeTradeInitialAccFees(address trader, uint256 pairIndex, uint256 index, bool long) external onlyCallbacks;
function storeTradeInitialAccFees(address trader, uint256 pairIndex, uint256 index, bool long) external onlyCallbacks;

storeAccRolloverFees

solidity
function storeAccRolloverFees(uint256 pairIndex) private;
function storeAccRolloverFees(uint256 pairIndex) private;

getPendingAccRolloverFees

solidity
function getPendingAccRolloverFees(uint256 pairIndex) public view returns (uint256);
function getPendingAccRolloverFees(uint256 pairIndex) public view returns (uint256);

storeAccFundingFees

solidity
function storeAccFundingFees(uint256 pairIndex) private;
function storeAccFundingFees(uint256 pairIndex) private;

getPendingAccFundingFees

solidity
function getPendingAccFundingFees(uint256 pairIndex) public view returns (int256 valueLong, int256 valueShort);
function getPendingAccFundingFees(uint256 pairIndex) public view returns (int256 valueLong, int256 valueShort);

getTradePriceImpact

solidity
function getTradePriceImpact(uint256 openPrice, uint256 pairIndex, bool long, uint256 tradeOpenInterest)
    external
    view
    returns (uint256 priceImpactP, uint256 priceAfterImpact);
function getTradePriceImpact(uint256 openPrice, uint256 pairIndex, bool long, uint256 tradeOpenInterest)
    external
    view
    returns (uint256 priceImpactP, uint256 priceAfterImpact);

getTradePriceImpactPure

solidity
function getTradePriceImpactPure(
    uint256 openPrice,
    bool long,
    uint256 startOpenInterest,
    uint256 tradeOpenInterest,
    uint256 onePercentDepth
) public pure returns (uint256 priceImpactP, uint256 priceAfterImpact);
function getTradePriceImpactPure(
    uint256 openPrice,
    bool long,
    uint256 startOpenInterest,
    uint256 tradeOpenInterest,
    uint256 onePercentDepth
) public pure returns (uint256 priceImpactP, uint256 priceAfterImpact);

getTradeRolloverFee

solidity
function getTradeRolloverFee(address trader, uint256 pairIndex, uint256 index, uint256 collateral)
    public
    view
    returns (uint256);
function getTradeRolloverFee(address trader, uint256 pairIndex, uint256 index, uint256 collateral)
    public
    view
    returns (uint256);

getTradeRolloverFeePure

solidity
function getTradeRolloverFeePure(
    uint256 accRolloverFeesPerCollateral,
    uint256 endAccRolloverFeesPerCollateral,
    uint256 collateral
) public pure returns (uint256);
function getTradeRolloverFeePure(
    uint256 accRolloverFeesPerCollateral,
    uint256 endAccRolloverFeesPerCollateral,
    uint256 collateral
) public pure returns (uint256);

getTradeFundingFee

solidity
function getTradeFundingFee(
    address trader,
    uint256 pairIndex,
    uint256 index,
    bool long,
    uint256 collateral,
    uint256 leverage
) public view returns (int256);
function getTradeFundingFee(
    address trader,
    uint256 pairIndex,
    uint256 index,
    bool long,
    uint256 collateral,
    uint256 leverage
) public view returns (int256);

getTradeFundingFeePure

solidity
function getTradeFundingFeePure(
    int256 accFundingFeesPerOi,
    int256 endAccFundingFeesPerOi,
    uint256 collateral,
    uint256 leverage
) public pure returns (int256);
function getTradeFundingFeePure(
    int256 accFundingFeesPerOi,
    int256 endAccFundingFeesPerOi,
    uint256 collateral,
    uint256 leverage
) public pure returns (int256);

getTradeLiquidationPrice

solidity
function getTradeLiquidationPrice(
    address trader,
    uint256 pairIndex,
    uint256 index,
    uint256 openPrice,
    bool long,
    uint256 collateral,
    uint256 leverage
) external view returns (uint256);
function getTradeLiquidationPrice(
    address trader,
    uint256 pairIndex,
    uint256 index,
    uint256 openPrice,
    bool long,
    uint256 collateral,
    uint256 leverage
) external view returns (uint256);

getTradeLiquidationPricePure

solidity
function getTradeLiquidationPricePure(
    uint256 openPrice,
    bool long,
    uint256 collateral,
    uint256 leverage,
    uint256 rolloverFee,
    int256 fundingFee
) public pure returns (uint256);
function getTradeLiquidationPricePure(
    uint256 openPrice,
    bool long,
    uint256 collateral,
    uint256 leverage,
    uint256 rolloverFee,
    int256 fundingFee
) public pure returns (uint256);

getTradeValue

solidity
function getTradeValue(
    address trader,
    uint256 pairIndex,
    uint256 index,
    bool long,
    uint256 collateral,
    uint256 leverage,
    int256 percentProfit,
    uint256 closingFee
) external onlyCallbacks returns (uint256 amount);
function getTradeValue(
    address trader,
    uint256 pairIndex,
    uint256 index,
    bool long,
    uint256 collateral,
    uint256 leverage,
    int256 percentProfit,
    uint256 closingFee
) external onlyCallbacks returns (uint256 amount);

getTradeValuePure

solidity
function getTradeValuePure(
    uint256 collateral,
    int256 percentProfit,
    uint256 rolloverFee,
    int256 fundingFee,
    uint256 closingFee
) public pure returns (uint256);
function getTradeValuePure(
    uint256 collateral,
    int256 percentProfit,
    uint256 rolloverFee,
    int256 fundingFee,
    uint256 closingFee
) public pure returns (uint256);

getPairInfos

solidity
function getPairInfos(uint256[] memory indices)
    external
    view
    returns (PairParams[] memory, PairRolloverFees[] memory, PairFundingFees[] memory);
function getPairInfos(uint256[] memory indices)
    external
    view
    returns (PairParams[] memory, PairRolloverFees[] memory, PairFundingFees[] memory);

getOnePercentDepthAbove

solidity
function getOnePercentDepthAbove(uint256 pairIndex) external view returns (uint256);
function getOnePercentDepthAbove(uint256 pairIndex) external view returns (uint256);

getOnePercentDepthBelow

solidity
function getOnePercentDepthBelow(uint256 pairIndex) external view returns (uint256);
function getOnePercentDepthBelow(uint256 pairIndex) external view returns (uint256);

getRolloverFeePerBlockP

solidity
function getRolloverFeePerBlockP(uint256 pairIndex) external view returns (uint256);
function getRolloverFeePerBlockP(uint256 pairIndex) external view returns (uint256);

getFundingFeePerBlockP

solidity
function getFundingFeePerBlockP(uint256 pairIndex) external view returns (uint256);
function getFundingFeePerBlockP(uint256 pairIndex) external view returns (uint256);

getAccRolloverFees

solidity
function getAccRolloverFees(uint256 pairIndex) external view returns (uint256);
function getAccRolloverFees(uint256 pairIndex) external view returns (uint256);

getAccRolloverFeesUpdateBlock

solidity
function getAccRolloverFeesUpdateBlock(uint256 pairIndex) external view returns (uint256);
function getAccRolloverFeesUpdateBlock(uint256 pairIndex) external view returns (uint256);

getAccFundingFeesLong

solidity
function getAccFundingFeesLong(uint256 pairIndex) external view returns (int256);
function getAccFundingFeesLong(uint256 pairIndex) external view returns (int256);

getAccFundingFeesShort

solidity
function getAccFundingFeesShort(uint256 pairIndex) external view returns (int256);
function getAccFundingFeesShort(uint256 pairIndex) external view returns (int256);

getAccFundingFeesUpdateBlock

solidity
function getAccFundingFeesUpdateBlock(uint256 pairIndex) external view returns (uint256);
function getAccFundingFeesUpdateBlock(uint256 pairIndex) external view returns (uint256);

tradeInitialAccFees

solidity
function tradeInitialAccFees(address trader, uint256 pairIndex, uint256 index)
    external
    view
    returns (TradeInitialAccFees memory);
function tradeInitialAccFees(address trader, uint256 pairIndex, uint256 index)
    external
    view
    returns (TradeInitialAccFees memory);

getTradeInitialAccRolloverFeesPerCollateral

solidity
function getTradeInitialAccRolloverFeesPerCollateral(address trader, uint256 pairIndex, uint256 index)
    external
    view
    returns (uint256);
function getTradeInitialAccRolloverFeesPerCollateral(address trader, uint256 pairIndex, uint256 index)
    external
    view
    returns (uint256);

getTradeInitialAccFundingFeesPerOi

solidity
function getTradeInitialAccFundingFeesPerOi(address trader, uint256 pairIndex, uint256 index)
    external
    view
    returns (int256);
function getTradeInitialAccFundingFeesPerOi(address trader, uint256 pairIndex, uint256 index)
    external
    view
    returns (int256);

getTradeOpenedAfterUpdate

solidity
function getTradeOpenedAfterUpdate(address trader, uint256 pairIndex, uint256 index) external view returns (bool);
function getTradeOpenedAfterUpdate(address trader, uint256 pairIndex, uint256 index) external view returns (bool);

Events

ManagerUpdated

solidity
event ManagerUpdated(address value);
event ManagerUpdated(address value);

MaxNegativePnlOnOpenPUpdated

solidity
event MaxNegativePnlOnOpenPUpdated(uint256 value);
event MaxNegativePnlOnOpenPUpdated(uint256 value);

PairParamsUpdated

solidity
event PairParamsUpdated(uint256 pairIndex, PairParams value);
event PairParamsUpdated(uint256 pairIndex, PairParams value);

OnePercentDepthUpdated

solidity
event OnePercentDepthUpdated(uint256 pairIndex, uint256 valueAbove, uint256 valueBelow);
event OnePercentDepthUpdated(uint256 pairIndex, uint256 valueAbove, uint256 valueBelow);

RolloverFeePerBlockPUpdated

solidity
event RolloverFeePerBlockPUpdated(uint256 pairIndex, uint256 value);
event RolloverFeePerBlockPUpdated(uint256 pairIndex, uint256 value);

FundingFeePerBlockPUpdated

solidity
event FundingFeePerBlockPUpdated(uint256 pairIndex, uint256 value);
event FundingFeePerBlockPUpdated(uint256 pairIndex, uint256 value);

TradeInitialAccFeesStored

solidity
event TradeInitialAccFeesStored(address trader, uint256 pairIndex, uint256 index, uint256 rollover, int256 funding);
event TradeInitialAccFeesStored(address trader, uint256 pairIndex, uint256 index, uint256 rollover, int256 funding);

AccFundingFeesStored

solidity
event AccFundingFeesStored(uint256 pairIndex, int256 valueLong, int256 valueShort);
event AccFundingFeesStored(uint256 pairIndex, int256 valueLong, int256 valueShort);

AccRolloverFeesStored

solidity
event AccRolloverFeesStored(uint256 pairIndex, uint256 value);
event AccRolloverFeesStored(uint256 pairIndex, uint256 value);

FeesCharged

solidity
event FeesCharged(
    address trader, uint256 pairIndex, uint256 index, uint256 rolloverFees, int256 fundingFees, uint256 closingFees
);
event FeesCharged(
    address trader, uint256 pairIndex, uint256 index, uint256 rolloverFees, int256 fundingFees, uint256 closingFees
);

Structs

PairParams

solidity
struct PairParams {
    uint256 onePercentDepthAbove;
    uint256 onePercentDepthBelow;
    uint256 rolloverFeePerBlockP;
    uint256 fundingFeePerBlockP;
}
struct PairParams {
    uint256 onePercentDepthAbove;
    uint256 onePercentDepthBelow;
    uint256 rolloverFeePerBlockP;
    uint256 fundingFeePerBlockP;
}

PairFundingFees

solidity
struct PairFundingFees {
    int256 accPerOiLong;
    int256 accPerOiShort;
    uint256 lastUpdateBlock;
}
struct PairFundingFees {
    int256 accPerOiLong;
    int256 accPerOiShort;
    uint256 lastUpdateBlock;
}

PairRolloverFees

solidity
struct PairRolloverFees {
    uint256 accPerCollateral;
    uint256 lastUpdateBlock;
}
struct PairRolloverFees {
    uint256 accPerCollateral;
    uint256 lastUpdateBlock;
}