pool-read-supply-v2-1-3
SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4NSource Code
(use-trait ft 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.ft-trait.ft-trait)
(define-read-only (is-active (asset principal))
(let (
(reserve-state (get-reserve-data asset))
)
(and (get is-active reserve-state) (not (get is-frozen reserve-state)))
)
)
(define-constant available-assets (list
'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token
'SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc
'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.wstx
'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token
'SPN5AKG35QZSK2M8GAMR4AFX45659RJHDW353HSG.usdh-token-v1
'SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.token-susdt
'SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token
'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststxbtc-token-v2
'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex
))
(define-read-only (get-supplieable-assets)
available-assets
)
(define-read-only (get-borroweable-assets)
(list
'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token
'SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc
'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.wstx
'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token
'SPN5AKG35QZSK2M8GAMR4AFX45659RJHDW353HSG.usdh-token-v1
'SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.token-susdt
'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex
)
)
(define-read-only (is-isolated-asset (asset principal))
(is-isolated-type asset)
)
(define-read-only (is-isolated-type (asset principal))
(default-to false (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-isolated-assets-read asset)))
(define-read-only (is-used-as-collateral (who principal) (asset principal))
(get use-as-collateral (get-user-reserve-data who asset))
)
;; Define a helper function to get reserve data
(define-read-only (get-reserve-data (asset principal))
(unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-reserve-state-read asset))
)
(define-read-only (get-user-reserve-data (who principal) (asset principal))
(unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-user-reserve-data-read who asset))
)
(define-read-only (get-asset-supply-apy (reserve principal))
(let (
(reserve-resp (get-reserve-data reserve))
)
(calculate-linear-interest
(get current-liquidity-rate reserve-resp)
(* u144 u365)
)
)
)
(define-read-only (get-user-assets (who principal))
(default-to
{ assets-supplied: (list), assets-borrowed: (list) }
(contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-user-assets-read who)))
(define-read-only (get-useable-collateral-usd-ststx (who principal))
(let (
(asset-balance (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zststx-v2-0 get-principal-balance who)))
(reserve-data (get-reserve-data 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token))
(user-index (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-user-index-read who 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token)))
(asset-decimals (get decimals reserve-data))
(base-ltv-as-collateral (get base-ltv-as-collateral reserve-data))
(reserve-normalized-income
(get-normalized-income
(get current-liquidity-rate reserve-data)
(get last-updated-block reserve-data)
(get last-liquidity-cumulative-index reserve-data)
)
)
)
(mul
base-ltv-as-collateral
(mul
(mul-to-fixed-precision
asset-balance
asset-decimals
(div reserve-normalized-income user-index))
(get-ststx-price)
)
)
)
)
(define-read-only (get-useable-collateral-usd-aeusdc (who principal))
(let (
(asset-balance (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zaeusdc-v2-0 get-principal-balance who)))
(reserve-data (get-reserve-data 'SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc))
(user-index (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-user-index-read who 'SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc)))
(asset-decimals (get decimals reserve-data))
(base-ltv-as-collateral (get base-ltv-as-collateral reserve-data))
(reserve-normalized-income
(get-normalized-income
(get current-liquidity-rate reserve-data)
(get last-updated-block reserve-data)
(get last-liquidity-cumulative-index reserve-data)
)
)
)
(mul
base-ltv-as-collateral
(mul
(mul-to-fixed-precision
asset-balance
asset-decimals
(div reserve-normalized-income user-index))
(contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.aeusdc-oracle-v1-0 get-price)
)
)
)
)
(define-read-only (get-useable-collateral-usd-stx (who principal))
(let (
(asset-balance (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zwstx-v2-0 get-principal-balance who)))
(reserve-data (get-reserve-data 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.wstx))
(user-index (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-user-index-read who 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.wstx)))
(asset-decimals (get decimals reserve-data))
(base-ltv-as-collateral (get base-ltv-as-collateral reserve-data))
(reserve-normalized-income
(get-normalized-income
(get current-liquidity-rate reserve-data)
(get last-updated-block reserve-data)
(get last-liquidity-cumulative-index reserve-data)
)
)
)
(mul
base-ltv-as-collateral
(mul
(mul-to-fixed-precision
asset-balance
asset-decimals
(div reserve-normalized-income user-index))
(contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.stx-oracle-v1-3 get-price)
)
)
)
)
(define-read-only (get-useable-collateral-usd-diko (who principal))
(let (
(asset-balance (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zdiko-v2-0 get-principal-balance who)))
(reserve-data (get-reserve-data 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token))
(user-index (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-user-index-read who 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token)))
(asset-decimals (get decimals reserve-data))
(base-ltv-as-collateral (get base-ltv-as-collateral reserve-data))
(reserve-normalized-income
(get-normalized-income
(get current-liquidity-rate reserve-data)
(get last-updated-block reserve-data)
(get last-liquidity-cumulative-index reserve-data)
)
)
)
(mul
base-ltv-as-collateral
(mul
(mul-to-fixed-precision
asset-balance
asset-decimals
(div reserve-normalized-income user-index))
(get-diko-price)
)
)
)
)
(define-read-only (get-useable-collateral-usd-usdh (who principal))
(let (
(asset-balance (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zusdh-v2-0 get-principal-balance who)))
(reserve-data (get-reserve-data 'SPN5AKG35QZSK2M8GAMR4AFX45659RJHDW353HSG.usdh-token-v1))
(user-index (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-user-index-read who 'SPN5AKG35QZSK2M8GAMR4AFX45659RJHDW353HSG.usdh-token-v1)))
(asset-decimals (get decimals reserve-data))
(base-ltv-as-collateral (get base-ltv-as-collateral reserve-data))
(reserve-normalized-income
(get-normalized-income
(get current-liquidity-rate reserve-data)
(get last-updated-block reserve-data)
(get last-liquidity-cumulative-index reserve-data)
)
)
)
(mul
base-ltv-as-collateral
(mul
(mul-to-fixed-precision
asset-balance
asset-decimals
(div reserve-normalized-income user-index))
(get-usdh-price)
)
)
)
)
(define-read-only (get-useable-collateral-usd-susdt (who principal))
(let (
(asset-balance (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zsusdt-v2-0 get-principal-balance who)))
(reserve-data (get-reserve-data 'SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.token-susdt))
(user-index (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-user-index-read who 'SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.token-susdt)))
(asset-decimals (get decimals reserve-data))
(base-ltv-as-collateral (get base-ltv-as-collateral reserve-data))
(reserve-normalized-income
(get-normalized-income
(get current-liquidity-rate reserve-data)
(get last-updated-block reserve-data)
(get last-liquidity-cumulative-index reserve-data)
)
)
)
(mul
base-ltv-as-collateral
(mul
(mul-to-fixed-precision
asset-balance
asset-decimals
(div reserve-normalized-income user-index))
(get-usdh-price)
)
)
)
)
(define-read-only (get-useable-collateral-usd-sbtc (who principal))
(let (
(asset-balance (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zsbtc-v2-0 get-principal-balance who)))
(reserve-data (get-reserve-data 'SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token))
(user-index (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-user-index-read who 'SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token)))
(asset-decimals (get decimals reserve-data))
(base-ltv-as-collateral (get base-ltv-as-collateral reserve-data))
(reserve-normalized-income
(get-normalized-income
(get current-liquidity-rate reserve-data)
(get last-updated-block reserve-data)
(get last-liquidity-cumulative-index reserve-data)
)
)
)
(mul
base-ltv-as-collateral
(mul
(mul-to-fixed-precision
asset-balance
asset-decimals
(div reserve-normalized-income user-index))
(get-sbtc-price)
)
)
)
)
(define-read-only (get-useable-collateral-usd-ststxbtc-v2 (who principal))
(let (
(asset-balance (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zststxbtc-v2_v2-0 get-principal-balance who)))
(reserve-data (get-reserve-data 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststxbtc-token-v2))
(user-index (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-user-index-read who 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststxbtc-token-v2)))
(asset-decimals (get decimals reserve-data))
(base-ltv-as-collateral (get base-ltv-as-collateral reserve-data))
(reserve-normalized-income
(get-normalized-income
(get current-liquidity-rate reserve-data)
(get last-updated-block reserve-data)
(get last-liquidity-cumulative-index reserve-data)
)
)
)
(mul
base-ltv-as-collateral
(mul
(mul-to-fixed-precision
asset-balance
asset-decimals
(div reserve-normalized-income user-index))
(get-ststxbtc-price)
)
)
)
)
(define-read-only (get-useable-collateral-usd-alex (who principal))
(let (
(asset-balance (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zalex-v2-0 get-principal-balance who)))
(reserve-data (get-reserve-data 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex))
(user-index (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-user-index-read who 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex)))
(asset-decimals (get decimals reserve-data))
(base-ltv-as-collateral (get base-ltv-as-collateral reserve-data))
(reserve-normalized-income
(get-normalized-income
(get current-liquidity-rate reserve-data)
(get last-updated-block reserve-data)
(get last-liquidity-cumulative-index reserve-data)
)
)
)
(mul
base-ltv-as-collateral
(mul
(mul-to-fixed-precision
asset-balance
asset-decimals
(div reserve-normalized-income user-index))
(get-alex-price)
)
)
)
)
(define-read-only (get-supplied-balance-user-usd-ststx (who principal) (oracle principal))
(token-to-usd
(get-supplied-balance-user-ststx who)
u6
(get-ststx-price)
)
)
(define-read-only (get-supplied-balance-user-usd-aeusdc (who principal) (oracle principal))
(token-to-usd
(get-supplied-balance-user-aeusdc who)
u6
(contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.aeusdc-oracle-v1-0 get-price)
)
)
(define-read-only (get-supplied-balance-user-usd-stx (who principal) (oracle principal))
(token-to-usd
(get-supplied-balance-user-stx who)
u6
(contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.stx-oracle-v1-3 get-price)
)
)
(define-read-only (get-supplied-balance-user-usd-diko (who principal) (oracle principal))
(token-to-usd
(get-supplied-balance-user-stx who)
u6
(get-diko-price)
)
)
(define-read-only (get-supplied-balance-user-usd-usdh (who principal) (oracle principal))
(token-to-usd
(get-supplied-balance-user-usdh who)
u8
(get-usdh-price)
)
)
(define-read-only (get-supplied-balance-user-usd-susdt (who principal) (oracle principal))
(token-to-usd
(get-supplied-balance-user-susdt who)
u8
(get-susdt-price)
)
)
(define-read-only (get-supplied-balance-user-usd-usda (who principal) (oracle principal))
(token-to-usd
(get-supplied-balance-user-usda who)
u6
(get-usda-price)
)
)
(define-read-only (get-supplied-balance-user-usd-sbtc (who principal) (oracle principal))
(token-to-usd
(get-supplied-balance-user-sbtc who)
u8
(get-sbtc-price)
)
)
(define-read-only (get-supplied-balance-user-usd-ststxbtc-v2 (who principal) (oracle principal))
(token-to-usd
(get-supplied-balance-user-ststxbtc-v2 who)
u6
(get-ststxbtc-price)
)
)
(define-read-only (get-supplied-balance-user-usd-alex (who principal) (oracle principal))
(token-to-usd
(get-supplied-balance-user-alex who)
u8
(get-alex-price)
)
)
(define-read-only (get-supplied-balance-user-ststx (who principal))
(let ((principal (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zststx-v2-0 get-principal-balance who))))
(calculate-cumulated-balance who u6 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token principal u6)
)
)
(define-read-only (get-supplied-balance-user-aeusdc (who principal))
(let ((principal (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zaeusdc-v2-0 get-principal-balance who))))
(calculate-cumulated-balance who u6 'SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc principal u6)
)
)
(define-read-only (get-supplied-balance-user-stx (who principal))
(let ((principal (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zwstx-v2-0 get-principal-balance who))))
(calculate-cumulated-balance who u6 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.wstx principal u6)
)
)
(define-read-only (get-supplied-balance-user-diko (who principal))
(let ((principal (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zdiko-v2-0 get-principal-balance who))))
(calculate-cumulated-balance who u6 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token principal u6)
)
)
(define-read-only (get-supplied-balance-user-usdh (who principal))
(let ((principal (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zusdh-v2-0 get-principal-balance who))))
(calculate-cumulated-balance who u8 'SPN5AKG35QZSK2M8GAMR4AFX45659RJHDW353HSG.usdh-token-v1 principal u8)
)
)
(define-read-only (get-supplied-balance-user-susdt (who principal))
(let ((principal (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zsusdt-v2-0 get-principal-balance who))))
(calculate-cumulated-balance who u8 'SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.token-susdt principal u8)
)
)
(define-read-only (get-supplied-balance-user-usda (who principal))
(let ((principal (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zusda-v2-0 get-principal-balance who))))
(calculate-cumulated-balance who u6 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token principal u6)
)
)
(define-read-only (get-supplied-balance-user-sbtc (who principal))
(let ((principal (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zsbtc-v2-0 get-principal-balance who))))
(calculate-cumulated-balance who u8 'SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token principal u8)
)
)
(define-read-only (get-supplied-balance-user-ststxbtc-v2 (who principal))
(let ((principal (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zststxbtc-v2_v2-0 get-principal-balance who))))
(calculate-cumulated-balance who u6 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststxbtc-token-v2 principal u6)
)
)
(define-read-only (get-supplied-balance-user-alex (who principal))
(let ((principal (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zalex-v2-0 get-principal-balance who))))
(calculate-cumulated-balance who u8 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex principal u8)
)
)
(define-read-only (get-supplied-balance-usd-ststx)
(token-to-usd
(unwrap-panic (contract-call? 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
u6
(get-ststx-price)
)
)
(define-read-only (get-supplied-balance-usd-aeusdc)
(token-to-usd
(unwrap-panic (contract-call? 'SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
u6
(contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.aeusdc-oracle-v1-0 get-price)
)
)
(define-read-only (get-supplied-balance-usd-stx)
(token-to-usd
(unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.wstx get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
u6
(contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.stx-oracle-v1-3 get-price)
)
)
(define-read-only (get-supplied-balance-usd-diko)
(token-to-usd
(unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
u6
(get-diko-price)
)
)
(define-read-only (get-supplied-balance-usd-usdh)
(token-to-usd
(unwrap-panic (contract-call? 'SPN5AKG35QZSK2M8GAMR4AFX45659RJHDW353HSG.usdh-token-v1 get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
u8
(get-usdh-price)
)
)
(define-read-only (get-supplied-balance-usd-susdt)
(token-to-usd
(unwrap-panic (contract-call? 'SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.token-susdt get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
u8
(get-susdt-price)
)
)
(define-read-only (get-supplied-balance-usd-usda)
(token-to-usd
(unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
u6
(get-usda-price)
)
)
(define-read-only (get-supplied-balance-usd-sbtc)
(token-to-usd
(unwrap-panic (contract-call? 'SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
u8
(get-sbtc-price)
)
)
(define-read-only (get-supplied-balance-usd-ststxbtc-v2)
(token-to-usd
(unwrap-panic (contract-call? 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststxbtc-token-v2 get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
u6
(get-ststxbtc-price)
)
)
(define-read-only (get-supplied-balance-usd-alex)
(token-to-usd
(unwrap-panic (contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
u8
(get-alex-price)
)
)
(define-read-only (get-supplied-balance-ststx)
(unwrap-panic (contract-call? 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
)
(define-read-only (get-supplied-balance-aeusdc)
(unwrap-panic (contract-call? 'SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
)
(define-read-only (get-supplied-balance-stx)
(unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.wstx get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
)
(define-read-only (get-supplied-balance-diko)
(unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
)
(define-read-only (get-supplied-balance-usdh)
(unwrap-panic (contract-call? 'SPN5AKG35QZSK2M8GAMR4AFX45659RJHDW353HSG.usdh-token-v1 get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
)
(define-read-only (get-supplied-balance-susdt)
(unwrap-panic (contract-call? 'SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.token-susdt get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
)
(define-read-only (get-supplied-balance-usda)
(unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
)
(define-read-only (get-supplied-balance-sbtc)
(unwrap-panic (contract-call? 'SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
)
(define-read-only (get-supplied-balance-ststxbtc-v2)
(unwrap-panic (contract-call? 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststxbtc-token-v2 get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
)
(define-read-only (get-supplied-balance-alex)
(unwrap-panic (contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex get-balance 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault))
)
;; utils functions
(define-read-only (get-ststx-price)
(let (
(ststx-price (get last-price (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-oracle-v2-3 get-price "stSTX")))
)
(* ststx-price u100)
)
)
(define-read-only (get-stx-price)
(let (
(stx-price (get last-price (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-oracle-v2-3 get-price "STX")))
)
(* stx-price u100)
)
)
(define-read-only (get-diko-price)
(let (
(price (get last-price (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-oracle-v2-3 get-price "DIKO")))
)
(* price u100)
)
)
(define-read-only (get-usdh-price)
(let (
(price (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.usdh-oracle-v1-0 get-price))
)
price
)
)
(define-read-only (get-susdt-price)
(let (
(price (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.susdt-oracle-v1-0 get-price))
)
price
)
)
(define-read-only (get-usda-price)
(let (
(price (get last-price (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-oracle-v2-3 get-price "USDA")))
)
(* price u100)
)
)
(define-read-only (get-sbtc-price)
(let (
(price (get last-price (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-oracle-v2-3 get-price "BTC")))
)
(* price u100)
)
)
(define-read-only (get-ststxbtc-price)
(let (
(price (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.ststxbtc-oracle-v1-0 get-price))
)
price
)
)
(define-read-only (get-alex-price)
(let (
(price (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.alex-oracle-v1-0 get-price))
)
price
)
)
(define-read-only (token-to-usd (amount uint) (decimals uint) (unit-price uint))
(contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.math-v2-0 mul-to-fixed-precision amount decimals unit-price)
)
(define-read-only (calculate-cumulated-balance
(who principal)
(lp-decimals uint)
(asset <ft>)
(asset-balance uint)
(asset-decimals uint))
(let (
(asset-principal (contract-of asset))
(reserve-data (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-reserve-state-read asset-principal)))
(user-index (unwrap-panic (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-reserve-data get-user-index-read who (contract-of asset))))
(reserve-normalized-income
(get-normalized-income
(get current-liquidity-rate reserve-data)
(get last-updated-block reserve-data)
(get last-liquidity-cumulative-index reserve-data)))
)
(from-fixed-to-precision
(mul-to-fixed-precision
asset-balance
asset-decimals
(div reserve-normalized-income user-index)
)
asset-decimals
)
)
)
(define-read-only (get-normalized-income
(current-liquidity-rate uint)
(last-updated-block uint)
(last-liquidity-cumulative-index uint))
(let (
(cumulated
(calculate-linear-interest
current-liquidity-rate
(- stacks-block-height last-updated-block))))
(mul cumulated last-liquidity-cumulative-index)
)
)
(define-read-only (calculate-linear-interest
(current-liquidity-rate uint)
(delta uint))
(let (
(rate (get-rt-by-block current-liquidity-rate delta))
)
(+ one-8 rate)
)
)
(define-constant one-8 u100000000)
(define-constant one-12 u1000000000000)
(define-constant fixed-precision u8)
(define-constant max-value u340282366920938463463374607431768211455)
(define-constant e 271828182)
;; (* u144 u365 u10 u60)
(define-constant seconds-in-year u31536000)
;; (* u10 u60)
(define-constant seconds-in-block u600)
;; seconds-year/seconds-block, to multiply with number of blocks to determine seconds passed in x number of blocks, is in fixed-precision
;; (/ (* seconds-in-block one-8) u31536000)
(define-constant sb-by-sy u1903)
(define-read-only (get-max-value)
max-value
)
(define-read-only (mul (x uint) (y uint))
(/ (+ (* x y) (/ one-8 u2)) one-8))
(define-read-only (div (x uint) (y uint))
(/ (+ (* x one-8) (/ y u2)) y))
(define-read-only (mul-to-fixed-precision (a uint) (decimals-a uint) (b-fixed uint))
(if (> decimals-a fixed-precision)
(mul (/ a (pow u10 (- decimals-a fixed-precision))) b-fixed)
(mul (* a (pow u10 (- fixed-precision decimals-a))) b-fixed)
)
)
(define-read-only (div-to-fixed-precision (a uint) (decimals-a uint) (b-fixed uint))
(if (> decimals-a fixed-precision)
(div (/ a (pow u10 (- decimals-a fixed-precision))) b-fixed)
(div (* a (pow u10 (- fixed-precision decimals-a))) b-fixed)
)
)
(define-read-only (div-precision-to-fixed (a uint) (b uint) (decimals uint))
(let (
(result (/ (* a (pow u10 decimals)) b)))
(to-fixed result decimals)
)
)
;; Multiply a number with arbitrary decimals with a fixed-precision number
;; return number with arbitrary decimals
(define-read-only (mul-precision-with-factor (a uint) (decimals-a uint) (b-fixed uint))
(if (> decimals-a fixed-precision)
;; convert a and b-fixed in decimals-a precision
;; result is in decimals-a precision
(mul-arbitrary a (* b-fixed (pow u10 (- decimals-a fixed-precision))) decimals-a)
;; convert a to fixed precision
;; result is in fixed precision, convert to decimals-a
(/
(mul-arbitrary (* a (pow u10 (- fixed-precision decimals-a))) b-fixed u8)
(pow u10 (- fixed-precision decimals-a)))
)
)
;; Divide a number with arbitrary decimals by a fixed-precision number, then return to
;; number with arbitrary decimals
(define-read-only (div-precision-with-factor (a uint) (decimals-a uint) (b-fixed uint))
(if (> decimals-a fixed-precision)
;; convert b-fixed to decimals-a precision
;; final result is in decimals-a precision
(div-arbitrary a (* b-fixed (pow u10 (- decimals-a fixed-precision))) decimals-a)
;; convert a to fixed precision
;; result is in fixed precision, convert to decimals-a
(/
(div-arbitrary (* a (pow u10 (- fixed-precision decimals-a))) b-fixed u8)
(pow u10 (- fixed-precision decimals-a)))
)
)
(define-read-only (mul-arbitrary (x uint) (y uint) (arbitrary-prec uint))
(/ (+ (* x y) (/ (pow u10 arbitrary-prec) u2)) (pow u10 arbitrary-prec)))
(define-read-only (div-arbitrary (x uint) (y uint) (arbitrary-prec uint))
(/ (+ (* x (pow u10 arbitrary-prec)) (/ y u2)) y))
(define-read-only (add-precision-to-fixed (a uint) (decimals-a uint) (b-fixed uint))
(if (> decimals-a fixed-precision)
(+ (/ a (pow u10 (- decimals-a fixed-precision))) b-fixed)
(+ (* a (pow u10 (- fixed-precision decimals-a))) b-fixed)
)
)
(define-read-only (sub-precision-to-fixed (a uint) (decimals-a uint) (b-fixed uint))
(if (> decimals-a fixed-precision)
(- (/ a (pow u10 (- decimals-a fixed-precision))) b-fixed)
(- (* a (pow u10 (- fixed-precision decimals-a))) b-fixed)
)
)
(define-read-only (to-fixed (a uint) (decimals-a uint))
(if (> decimals-a fixed-precision)
(/ a (pow u10 (- decimals-a fixed-precision)))
(* a (pow u10 (- fixed-precision decimals-a)))
)
)
;; multiply a number of arbitrary precision with a 8-decimals fixed number
;; convert back to unit of arbitrary precision
(define-read-only (mul-perc (a uint) (decimals-a uint) (b-fixed uint))
(mul-precision-with-factor a decimals-a b-fixed)
)
(define-read-only (fix-precision (a uint) (decimals-a uint) (b uint) (decimals-b uint))
(let (
(a-standard
(if (> decimals-a fixed-precision)
(/ a (pow u10 (- decimals-a fixed-precision)))
(* a (pow u10 (- fixed-precision decimals-a)))
))
(b-standard
(if (> decimals-b fixed-precision)
(/ b (pow u10 (- decimals-b fixed-precision)))
(* b (pow u10 (- fixed-precision decimals-b)))
))
)
{
a: a-standard,
decimals-a: decimals-a,
b: b-standard,
decimals-b: decimals-b,
}
)
)
(define-read-only (from-fixed-to-precision (a uint) (decimals-a uint))
(if (> decimals-a fixed-precision)
(* a (pow u10 (- decimals-a fixed-precision)))
(/ a (pow u10 (- fixed-precision decimals-a)))
)
)
;; x-price and y-price are in fixed precision
(define-read-only (get-y-from-x
(x uint)
(x-decimals uint)
(y-decimals uint)
(x-price uint)
(y-price uint)
)
(if (> x-decimals y-decimals)
;; decrease decimals if x has more decimals
(/ (div-precision-with-factor (mul-precision-with-factor x x-decimals x-price) x-decimals y-price) (pow u10 (- x-decimals y-decimals)))
;; do operations in the amounts with greater decimals, convert x to y-decimals
(div-precision-with-factor (mul-precision-with-factor ( * x (pow u10 (- y-decimals x-decimals))) y-decimals x-price) y-decimals y-price)
)
)
(define-read-only (is-odd (x uint))
(not (is-even x))
)
(define-read-only (is-even (x uint))
(is-eq (mod x u2) u0)
)
;; rate in 8-fixed
;; n-blocks
(define-read-only (get-rt-by-block (rate uint) (delta uint))
(if (is-eq delta u0)
u0
(let (
(start-time (unwrap-panic (get-stacks-block-info? time (- stacks-block-height delta))))
;; add 5 seconds
(end-time (+ u5 (unwrap-panic (get-stacks-block-info? time (- stacks-block-height u1)))))
(delta-time (- end-time start-time))
)
(/ (* rate delta-time) seconds-in-year)
)
)
)
(define-read-only (get-sb-by-sy)
sb-by-sy
)
(define-read-only (get-e) e)
(define-read-only (get-one) one-8)
(define-read-only (get-seconds-in-year)
seconds-in-year
)
(define-read-only (get-seconds-in-block)
seconds-in-block
)
(define-constant fact_2 u200000000)
;; (mul u300000000 u200000000)
(define-constant fact_3 u600000000)
;; (mul u400000000 (mul u300000000 u200000000))
(define-constant fact_4 u2400000000)
;; (mul u500000000 (mul u400000000 (mul u300000000 u200000000)))
(define-constant fact_5 u12000000000)
;; (mul u600000000 (mul u500000000 (mul u400000000 (mul u300000000 u200000000))))
(define-constant fact_6 u72000000000)
;; taylor series expansion to the 6th degree to estimate e^x
(define-read-only (taylor-6 (x uint))
(let (
(x_2 (mul x x))
(x_3 (mul x x_2))
(x_4 (mul x x_3))
(x_5 (mul x x_4))
)
(+
one-8 x
(div x_2 fact_2)
(div x_3 fact_3)
(div x_4 fact_4)
(div x_5 fact_5)
(div (mul x x_5) fact_6)
)
)
)Functions (97)
| Function | Access | Args |
|---|---|---|
| get-supplied-balance-user-aeusdc | read-only | who: principal |
| is-active | read-only | asset: principal |
| get-supplieable-assets | read-only | |
| get-borroweable-assets | read-only | |
| is-isolated-asset | read-only | asset: principal |
| is-isolated-type | read-only | asset: principal |
| is-used-as-collateral | read-only | who: principal, asset: principal |
| get-reserve-data | read-only | asset: principal |
| get-user-reserve-data | read-only | who: principal, asset: principal |
| get-asset-supply-apy | read-only | reserve: principal |
| get-user-assets | read-only | who: principal |
| get-useable-collateral-usd-ststx | read-only | who: principal |
| get-useable-collateral-usd-aeusdc | read-only | who: principal |
| get-useable-collateral-usd-stx | read-only | who: principal |
| get-useable-collateral-usd-diko | read-only | who: principal |
| get-useable-collateral-usd-usdh | read-only | who: principal |
| get-useable-collateral-usd-susdt | read-only | who: principal |
| get-useable-collateral-usd-sbtc | read-only | who: principal |
| get-useable-collateral-usd-ststxbtc-v2 | read-only | who: principal |
| get-useable-collateral-usd-alex | read-only | who: principal |
| get-supplied-balance-user-usd-ststx | read-only | who: principal, oracle: principal |
| get-supplied-balance-user-usd-aeusdc | read-only | who: principal, oracle: principal |
| get-supplied-balance-user-usd-stx | read-only | who: principal, oracle: principal |
| get-supplied-balance-user-usd-diko | read-only | who: principal, oracle: principal |
| get-supplied-balance-user-usd-usdh | read-only | who: principal, oracle: principal |
| get-supplied-balance-user-usd-susdt | read-only | who: principal, oracle: principal |
| get-supplied-balance-user-usd-usda | read-only | who: principal, oracle: principal |
| get-supplied-balance-user-usd-sbtc | read-only | who: principal, oracle: principal |
| get-supplied-balance-user-usd-ststxbtc-v2 | read-only | who: principal, oracle: principal |
| get-supplied-balance-user-usd-alex | read-only | who: principal, oracle: principal |
| get-supplied-balance-user-ststx | read-only | who: principal |
| get-supplied-balance-user-stx | read-only | who: principal |
| get-supplied-balance-user-diko | read-only | who: principal |
| get-supplied-balance-user-usdh | read-only | who: principal |
| get-supplied-balance-user-susdt | read-only | who: principal |
| get-supplied-balance-user-usda | read-only | who: principal |
| get-supplied-balance-user-sbtc | read-only | who: principal |
| get-supplied-balance-user-ststxbtc-v2 | read-only | who: principal |
| get-supplied-balance-user-alex | read-only | who: principal |
| get-supplied-balance-usd-ststx | read-only | |
| get-supplied-balance-usd-aeusdc | read-only | |
| get-supplied-balance-usd-stx | read-only | |
| get-supplied-balance-usd-diko | read-only | |
| get-supplied-balance-usd-usdh | read-only | |
| get-supplied-balance-usd-susdt | read-only | |
| get-supplied-balance-usd-usda | read-only | |
| get-supplied-balance-usd-sbtc | read-only | |
| get-supplied-balance-usd-ststxbtc-v2 | read-only | |
| get-supplied-balance-usd-alex | read-only | |
| get-supplied-balance-ststx | read-only | |
| get-supplied-balance-aeusdc | read-only | |
| get-supplied-balance-stx | read-only | |
| get-supplied-balance-diko | read-only | |
| get-supplied-balance-usdh | read-only | |
| get-supplied-balance-susdt | read-only | |
| get-supplied-balance-usda | read-only | |
| get-supplied-balance-sbtc | read-only | |
| get-supplied-balance-ststxbtc-v2 | read-only | |
| get-supplied-balance-alex | read-only | |
| get-ststx-price | read-only | |
| get-stx-price | read-only | |
| get-diko-price | read-only | |
| get-usdh-price | read-only | |
| get-susdt-price | read-only | |
| get-usda-price | read-only | |
| get-sbtc-price | read-only | |
| get-ststxbtc-price | read-only | |
| get-alex-price | read-only | |
| token-to-usd | read-only | amount: uint, decimals: uint, unit-price: uint |
| calculate-cumulated-balance | read-only | who: principal, lp-decimals: uint, asset: <ft>, asset-balance: uint, asset-decimals: uint |
| get-normalized-income | read-only | current-liquidity-rate: uint, last-updated-block: uint, last-liquidity-cumulative-index: uint |
| calculate-linear-interest | read-only | current-liquidity-rate: uint, delta: uint |
| get-max-value | read-only | |
| mul | read-only | x: uint, y: uint |
| div | read-only | x: uint, y: uint |
| mul-to-fixed-precision | read-only | a: uint, decimals-a: uint, b-fixed: uint |
| div-to-fixed-precision | read-only | a: uint, decimals-a: uint, b-fixed: uint |
| div-precision-to-fixed | read-only | a: uint, b: uint, decimals: uint |
| mul-precision-with-factor | read-only | a: uint, decimals-a: uint, b-fixed: uint |
| div-precision-with-factor | read-only | a: uint, decimals-a: uint, b-fixed: uint |
| mul-arbitrary | read-only | x: uint, y: uint, arbitrary-prec: uint |
| div-arbitrary | read-only | x: uint, y: uint, arbitrary-prec: uint |
| add-precision-to-fixed | read-only | a: uint, decimals-a: uint, b-fixed: uint |
| sub-precision-to-fixed | read-only | a: uint, decimals-a: uint, b-fixed: uint |
| to-fixed | read-only | a: uint, decimals-a: uint |
| mul-perc | read-only | a: uint, decimals-a: uint, b-fixed: uint |
| fix-precision | read-only | a: uint, decimals-a: uint, b: uint, decimals-b: uint |
| from-fixed-to-precision | read-only | a: uint, decimals-a: uint |
| is-odd | read-only | x: uint |
| is-even | read-only | x: uint |
| get-rt-by-block | read-only | rate: uint, delta: uint |
| get-sb-by-sy | read-only | |
| get-e | read-only | |
| get-one | read-only | |
| get-seconds-in-year | read-only | |
| get-seconds-in-block | read-only | |
| taylor-6 | read-only | x: uint |