Skip to main content

Collateral tracker

Tracks and manages collateral using a shares model.

View Methods
​

BUY_COLLATERAL_RATIO
​

function BUY_COLLATERAL_RATIO() external view returns (int128)

Returns
​

NameTypeDescription
_0int128undefined

COLLATERAL_MARGIN_RATIO
​

function COLLATERAL_MARGIN_RATIO() external view returns (int256)

Ratio at which a position is margin called (100% collateralization)

Returns
​

NameTypeDescription
_0int256undefined

COMMISSION_FEE
​

function COMMISSION_FEE() external view returns (int128)

Returns
​

NameTypeDescription
_0int128undefined

DECIMALS
​

function DECIMALS() external view returns (uint256)

Decimals for all computation (1 basis point precision)

Returns
​

NameTypeDescription
_0uint256undefined

DECIMALS_128
​

function DECIMALS_128() external view returns (int128)

Returns
​

NameTypeDescription
_0int128undefined

DETAILS
​

function DETAILS() external view returns (string)

Returns
​

NameTypeDescription
_0stringundefined

EXERCISE_COST
​

function EXERCISE_COST() external view returns (int128)

Returns
​

NameTypeDescription
_0int128undefined

MIN_LIQUIDATION_RATIO
​

function MIN_LIQUIDATION_RATIO() external view returns (int256)

Returns
​

NameTypeDescription
_0int256undefined

SATURATED_POOL_UTILIZATION
​

function SATURATED_POOL_UTILIZATION() external view returns (int128)

Returns
​

NameTypeDescription
_0int128undefined

SELL_COLLATERAL_RATIO
​

function SELL_COLLATERAL_RATIO() external view returns (int128)

Returns
​

NameTypeDescription
_0int128undefined

TARGET_POOL_UTILIZATION
​

function TARGET_POOL_UTILIZATION() external view returns (int128)

Returns
​

NameTypeDescription
_0int128undefined

allowance
​

function allowance(address owner, address spender) external view returns (uint256)

See {IERC20-allowance}.

Parameters
​

NameTypeDescription
owneraddressundefined
spenderaddressundefined

Returns
​

NameTypeDescription
_0uint256undefined

baseRequirement
​

function baseRequirement(uint128 value, uint256 long, uint64 utilization) external pure returns (uint128 required)

Base collateral requirement. TODO: make this a function of the pool utilization factor?

Parameters
​

NameTypeDescription
valueuint128undefined
longuint256undefined
utilizationuint64undefined

Returns
​

NameTypeDescription
requireduint128undefined

buyCollateralRatio
​

function buyCollateralRatio(int128 utilization) external pure returns (int128 buyRatio)

Returns the collateral ratio that is paid when a long option is minted at a specific pool utilization

This is computed at the time the position is minted

Parameters
​

NameTypeDescription
utilizationint128undefined

Returns
​

NameTypeDescription
buyRatioint128undefined

checkCollateral
​

function checkCollateral(address user, uint128 totalAmount, uint128 movedAmount, int128 premium, uint256 offset, uint256[] positionIdList) external view returns (uint256 tokenData, uint64 utilization)

Ensures that the user has enough collateral

Parameters
​

NameTypeDescription
useraddressundefined
totalAmountuint128undefined
movedAmountuint128undefined
premiumint128undefined
offsetuint256undefined
positionIdListuint256[]undefined

Returns
​

NameTypeDescription
tokenDatauint256undefined
utilizationuint64undefined

checkHealth
​

function checkHealth(address user, uint256[] positionIdList, uint256 offset, int128 premium) external view returns (uint256 tokenData)

Check collateral requirement and return a LeftRight packaged output

tonkenData returns tokenRequired in the right slot and balanceOf(user) in the left slot

Parameters
​

NameTypeDescription
useraddressundefined
positionIdListuint256[]undefined
offsetuint256undefined
premiumint128undefined

Returns
​

NameTypeDescription
tokenDatauint256undefined

collectedFees
​

function collectedFees() external view returns (int128)

Returns the amount of token that have been collected (does not count towards available balance)

Returns
​

NameTypeDescription
_0int128undefined

commissionRate
​

function commissionRate() external view returns (int128 commissionFee)

Returns
​

NameTypeDescription
commissionFeeint128undefined

computeBonus
​

function computeBonus(address account, uint256[] positionIdList, uint256 otherTokenData, uint160 sqrtPriceX96, int128 premium) external view returns (int256 bonusRatio, uint256 tokenData)

Called when an account is liquidated. Bonus depends on degree of distress (100% bonus at 105% collateral?)

Parameters
​

NameTypeDescription
accountaddressundefined
positionIdListuint256[]undefined
otherTokenDatauint256undefined
sqrtPriceX96uint160undefined
premiumint128undefined

Returns
​

NameTypeDescription
bonusRatioint256undefined
tokenDatauint256undefined

convertToAssets
​

function convertToAssets(uint256 shares) external view returns (uint128)

Parameters
​

NameTypeDescription
sharesuint256undefined

Returns
​

NameTypeDescription
_0uint128undefined

convertToShares
​

function convertToShares(uint128 assets) external view returns (uint256)

Parameters
​

NameTypeDescription
assetsuint128undefined

Returns
​

NameTypeDescription
_0uint256undefined

decimals
​

function decimals() external view returns (uint8)

Returns the underlying token's decimals

Returns
​

NameTypeDescription
_0uint8undefined

delegatedAmount
​

function delegatedAmount(address) external view returns (int256)

Tracks the amount of shares delegated BY a user (negative balance) or TO a user (positive balance) (address user0 => uint256 shares)

Parameters
​

NameTypeDescription
_0addressundefined

Returns
​

NameTypeDescription
_0int256undefined

delegatedShares
​

function delegatedShares(address delegator, address delegatee) external view returns (uint256)

Returns the amount of shares that have been delegated from delegator to delegatee.

Parameters
​

NameTypeDescription
delegatoraddressundefined
delegateeaddressundefined

Returns
​

NameTypeDescription
_0uint256undefined

delegation
​

function delegation(address, address) external view returns (uint256)

Tracks the amount of shares delegated from address0 to address 1 (address user0 => address user1 => uint256 shares)

Parameters
​

NameTypeDescription
_0addressundefined
_1addressundefined

Returns
​

NameTypeDescription
_0uint256undefined

exerciseCost
​

function exerciseCost(int24 currentTick, uint256 tokenId) external view returns (int128 exerciseFee)

Parameters
​

NameTypeDescription
currentTickint24undefined
tokenIduint256undefined

Returns
​

NameTypeDescription
exerciseFeeint128undefined

getPositionCollateralAtTick
​

function getPositionCollateralAtTick(uint256 tokenId, uint128 numberOfContracts, int24 tick, uint128 poolUtilizations) external view returns (uint128)

returns the token required for a specific tokenIdt

Parameters
​

NameTypeDescription
tokenIduint256undefined
numberOfContractsuint128undefined
tickint24undefined
poolUtilizationsuint128undefined

Returns
​

NameTypeDescription
_0uint128undefined

getUserRequiredCollateral
​

function getUserRequiredCollateral(address user, uint256[] positionIdList, uint256 offset) external view returns (uint128 tokenRequired)

returns the token required for the entire account

Parameters
​

NameTypeDescription
useraddressundefined
positionIdListuint256[]undefined
offsetuint256undefined

Returns
​

NameTypeDescription
tokenRequireduint128undefined

inAMM
​

function inAMM() external view returns (int128)

Returns the amount of token in the sent to the Uniswap pool (inside the AMM)

Returns
​

NameTypeDescription
_0int128undefined

liquidationBonus
​

function liquidationBonus(uint256 balance, uint256 sharesRequired) external view returns (int256 bonus)

Parameters
​

NameTypeDescription
balanceuint256undefined
sharesRequireduint256undefined

Returns
​

NameTypeDescription
bonusint256undefined

maxDeposit
​

function maxDeposit(address) external view returns (uint256)

Parameters
​

NameTypeDescription
_0addressundefined

Returns
​

NameTypeDescription
_0uint256undefined

maxMint
​

function maxMint(address) external view returns (uint256)

Parameters
​

NameTypeDescription
_0addressundefined

Returns
​

NameTypeDescription
_0uint256undefined

maxRedeem
​

function maxRedeem(address user) external view returns (uint256)

Parameters
​

NameTypeDescription
useraddressundefined

Returns
​

NameTypeDescription
_0uint256undefined

maxWithdraw
​

function maxWithdraw(address user) external view returns (uint256)

Parameters
​

NameTypeDescription
useraddressundefined

Returns
​

NameTypeDescription
_0uint256undefined

name
​

function name() external view returns (string)

Returns the name of the underlying token

Returns
​

NameTypeDescription
_0stringundefined

owner
​

function owner() external view returns (address)

Returns the owner of this contract, which should be the Panoptic Pool this got deployed from.r

Returns
​

NameTypeDescription
_0addressundefined

panopticPool
​

function panopticPool() external view returns (contract IPanopticPool)

Returns
​

NameTypeDescription
_0contract IPanopticPoolundefined

poolUtilization
​

function poolUtilization() external view returns (int128)

Returns the fraction of the pool that is locked and not available

1bps precision. Adding a 1 in the denominator has no sizable effect (?) and prevents division by zero

Returns
​

NameTypeDescription
_0int128undefined

poolUtilization
​

function poolUtilization(int128 amountRemoved) external view returns (int128)

Returns the fraction of the pool that is locked and not available if amountRemoved is moved to AMM

1bps precision. Adding a 1 in the denominator has no sizable effect (?) and prevents division by zero

Parameters
​

NameTypeDescription
amountRemovedint128undefined

Returns
​

NameTypeDescription
_0int128undefined

prefix
​

function prefix() external view returns (string)

Returns
​

NameTypeDescription
_0stringundefined

previewDeposit
​

function previewDeposit(uint128 assets) external view returns (uint256)

Parameters
​

NameTypeDescription
assetsuint128undefined

Returns
​

NameTypeDescription
_0uint256undefined

previewMint
​

function previewMint(uint256 shares) external view returns (uint128)

Parameters
​

NameTypeDescription
sharesuint256undefined

Returns
​

NameTypeDescription
_0uint128undefined

previewRedeem
​

function previewRedeem(uint256 shares) external view returns (uint256)

Parameters
​

NameTypeDescription
sharesuint256undefined

Returns
​

NameTypeDescription
_0uint256undefined

previewWithdraw
​

function previewWithdraw(uint256 assets) external view returns (uint256)

Parameters
​

NameTypeDescription
assetsuint256undefined

Returns
​

NameTypeDescription
_0uint256undefined

sellCollateralRatio
​

function sellCollateralRatio(int128 utilization) external pure returns (int128 sellRatio)

Returns the collateral ratio that is paid when a short option is minted at a specific pool utilization

This is computed at the time the position is minted

Parameters
​

NameTypeDescription
utilizationint128undefined

Returns
​

NameTypeDescription
sellRatioint128undefined

symbol
​

function symbol() external view returns (string)

Returns the symbol of the underlying token

Returns
​

NameTypeDescription
_0stringundefined

tickSpacing
​

function tickSpacing() external view returns (int24)

Returns
​

NameTypeDescription
_0int24undefined

totalBalance
​

function totalBalance() external view returns (uint256)

Returns the total balance of underlying token availale in the Panoptic pool

This is the total balance MINUS the amount of collected fees (because they are reserved for short options) PLUS the amount of tokens moved to the AMM.

Returns
​

NameTypeDescription
_0uint256undefined

totalSupply
​

function totalSupply() external view returns (uint256)

See {IERC20-totalSupply}.

Returns
​

NameTypeDescription
_0uint256undefined

underlyingToken
​

function underlyingToken() external view returns (address)

Address of the underlying token

This has to be equal to token0 or token1 from the uniswapPool

Returns
​

NameTypeDescription
_0addressundefined

uniswapPool
​

function uniswapPool() external view returns (contract IUniswapV3Pool)

Returns
​

NameTypeDescription
_0contract IUniswapV3Poolundefined

Methods - onlyOwner
​

burn
​

function burn(address from, uint256 amount) external nonpayable

Burn collateral tokens from some user

Parameters
​

NameTypeDescription
fromaddressAddress of the user that gets the collateral tokens burn
amountuint256Amount of collateral tokens that will get burned

delegate
​

function delegate(address delegator, address delegatee, uint128 assets) external nonpayable returns (uint256 shares)

Parameters
​

NameTypeDescription
delegatoraddressundefined
delegateeaddressundefined
assetsuint128undefined

Returns
​

NameTypeDescription
sharesuint256undefined

depositToken
​

function depositToken(address _user, uint128 _assets) external nonpayable returns (uint256 shares)

Deposit tokens into the Panoptic pool

Parameters
​

NameTypeDescription
_useraddressAddress of the user that deposits the token
_assetsuint128Amount of assets to be deposited

Returns
​

NameTypeDescription
sharesuint256undefined

exerciseAddData
​

function exerciseAddData(address optionOwner, uint128 borrowedAssets, int128 transactedAmount, int128 collectedAmount, int128 premium) external nonpayable returns (int128 tokenToPay)

To be issued when a position is burnt because it may need to be exercised

Parameters
​

NameTypeDescription
optionOwneraddressundefined
borrowedAssetsuint128undefined
transactedAmountint128undefined
collectedAmountint128undefined
premiumint128undefined

Returns
​

NameTypeDescription
tokenToPayint128undefined

mint
​

function mint(address to, uint256 amount) external nonpayable

Mint new collateral tokens to some user

Parameters
​

NameTypeDescription
toaddressAddress of the user that gets the collateral tokens
amountuint256Amount of collateral tokens that will get minted

revoke
​

function revoke(address delegator, address delegatee, int256 bonus, int128 premium, uint256[] delegateePositionIdList) external nonpayable returns (uint256 adjustedShares, uint128 adjustedAssets)

must always revoke all

Parameters
​

NameTypeDescription
delegatoraddressundefined
delegateeaddressundefined
bonusint256undefined
premiumint128undefined
delegateePositionIdListuint256[]undefined

Returns
​

NameTypeDescription
adjustedSharesuint256undefined
adjustedAssetsuint128undefined

startToken
​

function startToken(address underlyingAddress) external nonpayable

Initialized a new token after a Panoptic Pool has been created

Parameters
​

NameTypeDescription
underlyingAddressaddressundefined

swapTakeCommissionAddData
​

function swapTakeCommissionAddData(address optionOwner, uint128 borrowedAssets, int128 transactedAmount) external nonpayable returns (int128 rate)

To be issued when a position is burnt because it may need to be exercised

Parameters
​

NameTypeDescription
optionOwneraddressundefined
borrowedAssetsuint128undefined
transactedAmountint128undefined

Returns
​

NameTypeDescription
rateint128undefined

takeCommissionAddData
​

function takeCommissionAddData(address optionOwner, uint128 borrowedAssets) external nonpayable returns (int128 rate)

To be issued when a position is minted

Parameters
​

NameTypeDescription
optionOwneraddressundefined
borrowedAssetsuint128undefined

Returns
​

NameTypeDescription
rateint128undefined

withdrawToken
​

function withdrawToken(address _user, uint256 shares, int128 _premium, uint256[] _positionIdList) external nonpayable returns (uint128 _assets)

Withdraws tokens from the Panoptic pool

Takes into consideration the delegated tokens, cannot withdraw delegated balance

Parameters
​

NameTypeDescription
_useraddressAddress of the user that deposits the token
sharesuint256undefined
_premiumint128Amount of premium collected/owed by _user
_positionIdListuint256[]List of positions owned by _user. Written as [tokenId1, tokenId2, ...]

Returns
​

NameTypeDescription
_assetsuint128undefined

Events
​

Approval
​

event Approval(address indexed owner, address indexed spender, uint256 value)

Parameters
​

NameTypeDescription
owner indexedaddressundefined
spender indexedaddressundefined
valueuint256undefined

Transfer
​

event Transfer(address indexed from, address indexed to, uint256 value)

Parameters
​

NameTypeDescription
from indexedaddressundefined
to indexedaddressundefined
valueuint256undefined

ABI
​

CollateralTracker ABI
[
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "BUY_COLLATERAL_RATIO",
"outputs": [
{
"internalType": "int128",
"name": "",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COLLATERAL_MARGIN_RATIO",
"outputs": [
{
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COMMISSION_FEE_MAX",
"outputs": [
{
"internalType": "int128",
"name": "",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COMMISSION_FEE_MIN",
"outputs": [
{
"internalType": "int128",
"name": "",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COMMISSION_START_UTILIZATION",
"outputs": [
{
"internalType": "int128",
"name": "",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DECIMALS",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DECIMALS_128",
"outputs": [
{
"internalType": "int128",
"name": "",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DETAILS",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "EXERCISE_COST",
"outputs": [
{
"internalType": "int128",
"name": "",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_LIQUIDATION_RATIO",
"outputs": [
{
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PREFIX",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SATURATED_POOL_UTILIZATION",
"outputs": [
{
"internalType": "int128",
"name": "",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SELL_COLLATERAL_RATIO",
"outputs": [
{
"internalType": "int128",
"name": "",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "TARGET_POOL_UTILIZATION",
"outputs": [
{
"internalType": "int128",
"name": "",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "int256",
"name": "x",
"type": "int256"
}
],
"name": "abs",
"outputs": [
{
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "int128",
"name": "x",
"type": "int128"
}
],
"name": "abs128",
"outputs": [
{
"internalType": "int128",
"name": "",
"type": "int128"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint128",
"name": "value",
"type": "uint128"
},
{
"internalType": "uint256",
"name": "long",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "utilization",
"type": "uint64"
}
],
"name": "baseRequirement",
"outputs": [
{
"internalType": "uint128",
"name": "required",
"type": "uint128"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "int128",
"name": "utilization",
"type": "int128"
}
],
"name": "buyCollateralRatio",
"outputs": [
{
"internalType": "int128",
"name": "buyCollateral",
"type": "int128"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "int24",
"name": "currentTick",
"type": "int24"
},
{
"internalType": "uint64",
"name": "utilization",
"type": "uint64"
},
{
"internalType": "int128",
"name": "longAmount",
"type": "int128"
},
{
"internalType": "int128",
"name": "shortAmount",
"type": "int128"
},
{
"internalType": "int128",
"name": "premiumAllPositions",
"type": "int128"
},
{
"internalType": "uint256",
"name": "offset",
"type": "uint256"
},
{
"internalType": "uint256[]",
"name": "positionIdList",
"type": "uint256[]"
}
],
"name": "checkCollateral",
"outputs": [
{
"internalType": "uint256",
"name": "tokenData",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "int24",
"name": "currentTick",
"type": "int24"
},
{
"internalType": "uint256[]",
"name": "positionIdList",
"type": "uint256[]"
},
{
"internalType": "uint256",
"name": "offset",
"type": "uint256"
},
{
"internalType": "int128",
"name": "premiumAllPositions",
"type": "int128"
}
],
"name": "checkHealth",
"outputs": [
{
"internalType": "uint256",
"name": "tokenData",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "collectedFees",
"outputs": [
{
"internalType": "int128",
"name": "",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "commissionRate",
"outputs": [
{
"internalType": "int128",
"name": "commissionFee",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "positionIdList",
"type": "uint256[]"
},
{
"internalType": "uint256",
"name": "otherTokenData",
"type": "uint256"
},
{
"internalType": "int24",
"name": "currentTick",
"type": "int24"
},
{
"internalType": "uint160",
"name": "sqrtPriceX96",
"type": "uint160"
},
{
"internalType": "int128",
"name": "premium",
"type": "int128"
}
],
"name": "computeBonus",
"outputs": [
{
"internalType": "int256",
"name": "bonusRatio",
"type": "int256"
},
{
"internalType": "uint256",
"name": "tokenData",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "computePoolData",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "currentTotalBalance",
"type": "uint256"
},
{
"internalType": "int128",
"name": "insideAMM",
"type": "int128"
},
{
"internalType": "int128",
"name": "totalCollectedFees",
"type": "int128"
},
{
"internalType": "int128",
"name": "currentPoolUtilization",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"name": "convertToAssets",
"outputs": [
{
"internalType": "uint128",
"name": "",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint128",
"name": "assets",
"type": "uint128"
}
],
"name": "convertToShares",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegator",
"type": "address"
},
{
"internalType": "address",
"name": "delegatee",
"type": "address"
},
{
"internalType": "uint128",
"name": "assets",
"type": "uint128"
}
],
"name": "delegate",
"outputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegator",
"type": "address"
},
{
"internalType": "address",
"name": "delegatee",
"type": "address"
}
],
"name": "delegatedShares",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint128",
"name": "_assets",
"type": "uint128"
}
],
"name": "depositToken",
"outputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "optionOwner",
"type": "address"
},
{
"internalType": "uint256",
"name": "currentTickPriceFee",
"type": "uint256"
},
{
"internalType": "int128",
"name": "movedAssets",
"type": "int128"
},
{
"internalType": "int128",
"name": "swappedAmount",
"type": "int128"
},
{
"internalType": "int128",
"name": "collectedAmount",
"type": "int128"
},
{
"internalType": "int128",
"name": "currentPositionPremium",
"type": "int128"
}
],
"name": "exerciseAddData",
"outputs": [
{
"internalType": "int128",
"name": "tokenToPay",
"type": "int128"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "int24",
"name": "currentTick",
"type": "int24"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "exerciseCost",
"outputs": [
{
"internalType": "int128",
"name": "exerciseFee",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint128",
"name": "positionSize",
"type": "uint128"
},
{
"internalType": "int24",
"name": "tick",
"type": "int24"
},
{
"internalType": "uint128",
"name": "poolUtilizations",
"type": "uint128"
}
],
"name": "getPositionCollateralAtTick",
"outputs": [
{
"internalType": "uint128",
"name": "combinedTokenRequired",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "int24",
"name": "currentTick",
"type": "int24"
},
{
"internalType": "uint256[]",
"name": "positionIdList",
"type": "uint256[]"
},
{
"internalType": "uint256",
"name": "offset",
"type": "uint256"
}
],
"name": "getUserRequiredCollateral",
"outputs": [
{
"internalType": "uint128",
"name": "tokenRequired",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "inAMM",
"outputs": [
{
"internalType": "int128",
"name": "",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "sharesRequired",
"type": "uint256"
}
],
"name": "liquidationBonus",
"outputs": [
{
"internalType": "int256",
"name": "bonus",
"type": "int256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "int24",
"name": "a",
"type": "int24"
},
{
"internalType": "int24",
"name": "b",
"type": "int24"
}
],
"name": "max24",
"outputs": [
{
"internalType": "int24",
"name": "",
"type": "int24"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "int24",
"name": "a",
"type": "int24"
},
{
"internalType": "int24",
"name": "b",
"type": "int24"
}
],
"name": "min24",
"outputs": [
{
"internalType": "int24",
"name": "",
"type": "int24"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "panopticPool",
"outputs": [
{
"internalType": "contract IPanopticPool",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "poolUtilization",
"outputs": [
{
"internalType": "int128",
"name": "",
"type": "int128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegator",
"type": "address"
},
{
"internalType": "address",
"name": "delegatee",
"type": "address"
},
{
"internalType": "int24",
"name": "currentTick",
"type": "int24"
},
{
"internalType": "int128",
"name": "bonus",
"type": "int128"
},
{
"internalType": "int128",
"name": "premium",
"type": "int128"
},
{
"internalType": "uint256[]",
"name": "delegateePositionIdList",
"type": "uint256[]"
}
],
"name": "revoke",
"outputs": [
{
"internalType": "uint256",
"name": "adjustedShares",
"type": "uint256"
},
{
"internalType": "uint128",
"name": "adjustedAssets",
"type": "uint128"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "s_delegatedAmount",
"outputs": [
{
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "s_delegation",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "int128",
"name": "utilization",
"type": "int128"
}
],
"name": "sellCollateralRatio",
"outputs": [
{
"internalType": "int128",
"name": "sellCollateral",
"type": "int128"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "underlyingAddress",
"type": "address"
}
],
"name": "startToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "optionOwner",
"type": "address"
},
{
"internalType": "uint256",
"name": "currentTickPriceFee",
"type": "uint256"
},
{
"internalType": "int128",
"name": "longAmount",
"type": "int128"
},
{
"internalType": "int128",
"name": "shortAmount",
"type": "int128"
},
{
"internalType": "int128",
"name": "collectedAmount",
"type": "int128"
},
{
"internalType": "int128",
"name": "premium",
"type": "int128"
},
{
"internalType": "int128",
"name": "swappedAmount",
"type": "int128"
},
{
"internalType": "uint256[]",
"name": "positionIdList",
"type": "uint256[]"
}
],
"name": "takeCommissionAddData",
"outputs": [
{
"internalType": "int256",
"name": "rateAndUtilization",
"type": "int256"
},
{
"internalType": "uint256",
"name": "tokenData",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "tickSpacing",
"outputs": [
{
"internalType": "int24",
"name": "",
"type": "int24"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "underlyingToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "uniswapPool",
"outputs": [
{
"internalType": "contract IUniswapV3Pool",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "univ3token0",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "univ3token1",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "int24",
"name": "_currentTick",
"type": "int24"
},
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "int128",
"name": "_premium",
"type": "int128"
},
{
"internalType": "uint256[]",
"name": "_positionIdList",
"type": "uint256[]"
}
],
"name": "withdrawToken",
"outputs": [
{
"internalType": "uint128",
"name": "_assets",
"type": "uint128"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
Table of Contents