Skip to content

Callbacks Contract 📜

An extension of the TradingContract and handles the state management on chain for opening and closing trades.

State Variables

oracleModule

solidity
SlinkyOraclePrecompile immutable oracleModule = SlinkyOraclePrecompile(0x9202Af6Ce925b26AE6B25aDfff0B2705147e195F);
SlinkyOraclePrecompile immutable oracleModule = SlinkyOraclePrecompile(0x9202Af6Ce925b26AE6B25aDfff0B2705147e195F);

storageT

solidity
StorageInterfaceV5 public storageT;
StorageInterfaceV5 public storageT;

pairInfos

solidity
GNSPairInfosInterfaceV6 public pairInfos;
GNSPairInfosInterfaceV6 public pairInfos;

vault

solidity
IGToken public vault;
IGToken public vault;

PRECISION

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

MAX_SL_P

solidity
uint256 constant MAX_SL_P = 75;
uint256 constant MAX_SL_P = 75;

MAX_GAIN_P

solidity
uint256 constant MAX_GAIN_P = 900;
uint256 constant MAX_GAIN_P = 900;

MAX_EXECUTE_TIMEOUT

solidity
uint256 constant MAX_EXECUTE_TIMEOUT = 5;
uint256 constant MAX_EXECUTE_TIMEOUT = 5;

USDC

solidity
string constant USDC = "USDC/USDT";
string constant USDC = "USDC/USDT";

sssFeeP

solidity
uint256 public sssFeeP;
uint256 public sssFeeP;

isPaused

solidity
bool public isPaused;
bool public isPaused;

isDone

solidity
bool public isDone;
bool public isDone;

canExecuteTimeout

solidity
uint256 public canExecuteTimeout;
uint256 public canExecuteTimeout;

_tradeLastUpdated

solidity
mapping(address => mapping(uint256 => mapping(uint256 => mapping(TradeType => LastUpdated)))) private _tradeLastUpdated;
mapping(address => mapping(uint256 => mapping(uint256 => mapping(TradeType => LastUpdated)))) private _tradeLastUpdated;

borrowingFees

solidity
GNSBorrowingFeesInterfaceV6_3_2 public borrowingFees;
GNSBorrowingFeesInterfaceV6_3_2 public borrowingFees;

pairMaxLeverage

solidity
mapping(uint256 => uint256) public pairMaxLeverage;
mapping(uint256 => uint256) public pairMaxLeverage;

Functions

initializeV2

solidity
function initializeV2(GNSBorrowingFeesInterfaceV6_3_2 _borrowingFees) external reinitializer(2);
function initializeV2(GNSBorrowingFeesInterfaceV6_3_2 _borrowingFees) external reinitializer(2);

onlyGov

solidity
modifier onlyGov();
modifier onlyGov();

notDone

solidity
modifier notDone();
modifier notDone();

onlyTrading

solidity
modifier onlyTrading();
modifier onlyTrading();

onlyManager

solidity
modifier onlyManager();
modifier onlyManager();

isGov

solidity
function isGov() private view;
function isGov() private view;

isNotDone

solidity
function isNotDone() private view;
function isNotDone() private view;

isTrading

solidity
function isTrading() private view;
function isTrading() private view;

isManager

solidity
function isManager() private view;
function isManager() private view;

setPairMaxLeverage

solidity
function setPairMaxLeverage(uint256 pairIndex, uint256 maxLeverage) external onlyManager;
function setPairMaxLeverage(uint256 pairIndex, uint256 maxLeverage) external onlyManager;

setPairMaxLeverageArray

solidity
function setPairMaxLeverageArray(uint256[] calldata indices, uint256[] calldata values) external onlyManager;
function setPairMaxLeverageArray(uint256[] calldata indices, uint256[] calldata values) external onlyManager;

_setPairMaxLeverage

solidity
function _setPairMaxLeverage(uint256 pairIndex, uint256 maxLeverage) private;
function _setPairMaxLeverage(uint256 pairIndex, uint256 maxLeverage) private;

setCanExecuteTimeout

solidity
function setCanExecuteTimeout(uint256 _canExecuteTimeout) external onlyGov;
function setCanExecuteTimeout(uint256 _canExecuteTimeout) external onlyGov;

pause

solidity
function pause() external onlyGov;
function pause() external onlyGov;

done

solidity
function done() external onlyGov;
function done() external onlyGov;

openTradeMarketCallback

solidity
function openTradeMarketCallback(AggregatorAnswer memory a, StorageInterfaceV5.PendingMarketOrder memory o)
    external
    onlyTrading
    notDone;
function openTradeMarketCallback(AggregatorAnswer memory a, StorageInterfaceV5.PendingMarketOrder memory o)
    external
    onlyTrading
    notDone;

closeTradeMarketCallback

solidity
function closeTradeMarketCallback(AggregatorAnswer memory a, StorageInterfaceV5.PendingMarketOrder memory o)
    external
    onlyTrading
    notDone;
function closeTradeMarketCallback(AggregatorAnswer memory a, StorageInterfaceV5.PendingMarketOrder memory o)
    external
    onlyTrading
    notDone;

executeNftOpenOrderCallback

solidity
function executeNftOpenOrderCallback(AggregatorAnswer memory a, StorageInterfaceV5.PendingNftOrder memory n)
    external
    onlyTrading
    notDone;
function executeNftOpenOrderCallback(AggregatorAnswer memory a, StorageInterfaceV5.PendingNftOrder memory n)
    external
    onlyTrading
    notDone;

executeNftCloseOrderCallback

solidity
function executeNftCloseOrderCallback(AggregatorAnswer memory a, StorageInterfaceV5.PendingNftOrder memory o)
    external
    onlyTrading
    notDone;
function executeNftCloseOrderCallback(AggregatorAnswer memory a, StorageInterfaceV5.PendingNftOrder memory o)
    external
    onlyTrading
    notDone;

updateSlCallback

solidity
function updateSlCallback(AggregatorAnswer memory a, PendingSl memory o) external onlyTrading notDone;
function updateSlCallback(AggregatorAnswer memory a, PendingSl memory o) external onlyTrading notDone;

setTradeLastUpdated

solidity
function setTradeLastUpdated(SimplifiedTradeId memory _id, LastUpdated memory _lastUpdated) external onlyTrading;
function setTradeLastUpdated(SimplifiedTradeId memory _id, LastUpdated memory _lastUpdated) external onlyTrading;

withinMaxLeverage

solidity
function withinMaxLeverage(uint256 pairIndex, uint256 leverage) private view returns (bool);
function withinMaxLeverage(uint256 pairIndex, uint256 leverage) private view returns (bool);

currentPercentProfit

solidity
function currentPercentProfit(uint256 openPrice, uint256 currentPrice, bool buy, uint256 leverage)
    private
    pure
    returns (int256 p);
function currentPercentProfit(uint256 openPrice, uint256 currentPrice, bool buy, uint256 leverage)
    private
    pure
    returns (int256 p);

correctTp

solidity
function correctTp(uint256 openPrice, uint256 leverage, uint256 tp, bool buy) private pure returns (uint256);
function correctTp(uint256 openPrice, uint256 leverage, uint256 tp, bool buy) private pure returns (uint256);

correctSl

solidity
function correctSl(uint256 openPrice, uint256 leverage, uint256 sl, bool buy) private pure returns (uint256);
function correctSl(uint256 openPrice, uint256 leverage, uint256 sl, bool buy) private pure returns (uint256);

marketExecutionPrice

solidity
function marketExecutionPrice(uint256 price, uint256 spreadP, uint256 spreadReductionP, bool long)
    private
    pure
    returns (uint256);
function marketExecutionPrice(uint256 price, uint256 spreadP, uint256 spreadReductionP, bool long)
    private
    pure
    returns (uint256);

getPairsStorage

solidity
function getPairsStorage() private view returns (PairsStorageInterfaceV6);
function getPairsStorage() private view returns (PairsStorageInterfaceV6);

getOpenTrade

solidity
function getOpenTrade(address trader, uint256 pairIndex, uint256 index)
    private
    view
    returns (StorageInterfaceV5.Trade memory);
function getOpenTrade(address trader, uint256 pairIndex, uint256 index)
    private
    view
    returns (StorageInterfaceV5.Trade memory);

getOpenTradeInfo

solidity
function getOpenTradeInfo(address trader, uint256 pairIndex, uint256 index)
    private
    view
    returns (StorageInterfaceV5.TradeInfo memory);
function getOpenTradeInfo(address trader, uint256 pairIndex, uint256 index)
    private
    view
    returns (StorageInterfaceV5.TradeInfo memory);

getAllPairsMaxLeverage

solidity
function getAllPairsMaxLeverage() external view returns (uint256[] memory);
function getAllPairsMaxLeverage() external view returns (uint256[] memory);

tradeLastUpdated

solidity
function tradeLastUpdated(address trader, uint256 pairIndex, uint256 index, TradeType tradeType)
    external
    view
    returns (LastUpdated memory);
function tradeLastUpdated(address trader, uint256 pairIndex, uint256 index, TradeType tradeType)
    external
    view
    returns (LastUpdated memory);

tokenPriceHoney

solidity
function tokenPriceHoney() private view returns (uint256);
function tokenPriceHoney() private view returns (uint256);

Events

MarketOpenCanceled

solidity
event MarketOpenCanceled(address indexed trader, uint256 indexed pairIndex, CancelReason cancelReason);
event MarketOpenCanceled(address indexed trader, uint256 indexed pairIndex, CancelReason cancelReason);

MarketCloseCanceled

solidity
event MarketCloseCanceled(address indexed trader, uint256 indexed pairIndex, uint256 index, CancelReason cancelReason);
event MarketCloseCanceled(address indexed trader, uint256 indexed pairIndex, uint256 index, CancelReason cancelReason);

NftOrderCanceled

solidity
event NftOrderCanceled(
    StorageInterfaceV5.LimitOrder orderType,
    CancelReason cancelReason,
    uint256 currPrice,
    uint256 minExecPrice,
    uint256 maxExecPrice,
    uint256 tp,
    uint256 sl
);
event NftOrderCanceled(
    StorageInterfaceV5.LimitOrder orderType,
    CancelReason cancelReason,
    uint256 currPrice,
    uint256 minExecPrice,
    uint256 maxExecPrice,
    uint256 tp,
    uint256 sl
);

SlUpdated

solidity
event SlUpdated(address indexed trader, uint256 indexed pairIndex, uint256 index, uint256 newSl, uint256 openTime);
event SlUpdated(address indexed trader, uint256 indexed pairIndex, uint256 index, uint256 newSl, uint256 openTime);

SlCanceled

solidity
event SlCanceled(address indexed trader, uint256 indexed pairIndex, uint256 index, CancelReason cancelReason);
event SlCanceled(address indexed trader, uint256 indexed pairIndex, uint256 index, CancelReason cancelReason);

CanExecuteTimeoutUpdated

solidity
event CanExecuteTimeoutUpdated(uint256 newValue);
event CanExecuteTimeoutUpdated(uint256 newValue);

Pause

solidity
event Pause(bool paused);
event Pause(bool paused);

Done

solidity
event Done(bool done);
event Done(bool done);

PairMaxLeverageUpdated

solidity
event PairMaxLeverageUpdated(uint256 indexed pairIndex, uint256 maxLeverage);
event PairMaxLeverageUpdated(uint256 indexed pairIndex, uint256 maxLeverage);

Errors

WrongParams

solidity
error WrongParams();
error WrongParams();

Forbidden

solidity
error Forbidden();
error Forbidden();

Enums

CancelReason

solidity
enum CancelReason {
    NONE,
    PAUSED,
    MARKET_CLOSED,
    SLIPPAGE,
    TP_REACHED,
    SL_REACHED,
    EXPOSURE_LIMITS,
    PRICE_IMPACT,
    MAX_LEVERAGE,
    NO_TRADE,
    WRONG_TRADE,
    NOT_HIT
}
enum CancelReason {
    NONE,
    PAUSED,
    MARKET_CLOSED,
    SLIPPAGE,
    TP_REACHED,
    SL_REACHED,
    EXPOSURE_LIMITS,
    PRICE_IMPACT,
    MAX_LEVERAGE,
    NO_TRADE,
    WRONG_TRADE,
    NOT_HIT
}