@suilend/sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/client.d.ts +101 -0
- package/core/client.js +478 -0
- package/core/constants.d.ts +2 -0
- package/core/constants.js +5 -0
- package/core/parsers/deps.d.ts +15 -0
- package/core/parsers/deps.js +2 -0
- package/core/parsers/lendingMarket.d.ts +115 -0
- package/core/parsers/lendingMarket.js +30 -0
- package/core/parsers/obligation.d.ts +229 -0
- package/core/parsers/obligation.js +99 -0
- package/core/parsers/rateLimiter.d.ts +19 -0
- package/core/parsers/rateLimiter.js +46 -0
- package/core/parsers/reserve.d.ts +162 -0
- package/core/parsers/reserve.js +193 -0
- package/core/types.d.ts +662 -0
- package/core/types.js +123 -0
- package/core/utils.d.ts +1 -0
- package/core/utils.js +7 -0
- package/index.d.ts +1 -0
- package/index.js +17 -0
- package/mainnet/_generated/_dependencies/source/0x1/ascii/structs.d.ts +82 -0
- package/mainnet/_generated/_dependencies/source/0x1/ascii/structs.js +253 -0
- package/mainnet/_generated/_dependencies/source/0x1/bit-vector/structs.d.ts +50 -0
- package/mainnet/_generated/_dependencies/source/0x1/bit-vector/structs.js +154 -0
- package/mainnet/_generated/_dependencies/source/0x1/fixed-point32/structs.d.ts +41 -0
- package/mainnet/_generated/_dependencies/source/0x1/fixed-point32/structs.js +124 -0
- package/mainnet/_generated/_dependencies/source/0x1/index.d.ts +2 -0
- package/mainnet/_generated/_dependencies/source/0x1/index.js +5 -0
- package/mainnet/_generated/_dependencies/source/0x1/init.d.ts +2 -0
- package/mainnet/_generated/_dependencies/source/0x1/init.js +42 -0
- package/mainnet/_generated/_dependencies/source/0x1/option/structs.d.ts +46 -0
- package/mainnet/_generated/_dependencies/source/0x1/option/structs.js +152 -0
- package/mainnet/_generated/_dependencies/source/0x1/string/structs.d.ts +44 -0
- package/mainnet/_generated/_dependencies/source/0x1/string/structs.js +148 -0
- package/mainnet/_generated/_dependencies/source/0x1/type-name/structs.d.ts +48 -0
- package/mainnet/_generated/_dependencies/source/0x1/type-name/structs.js +125 -0
- package/mainnet/_generated/_dependencies/source/0x2/authenticator-state/structs.d.ts +442 -0
- package/mainnet/_generated/_dependencies/source/0x2/authenticator-state/structs.js +633 -0
- package/mainnet/_generated/_dependencies/source/0x2/bag/structs.d.ts +56 -0
- package/mainnet/_generated/_dependencies/source/0x2/bag/structs.js +130 -0
- package/mainnet/_generated/_dependencies/source/0x2/balance/structs.d.ts +79 -0
- package/mainnet/_generated/_dependencies/source/0x2/balance/structs.js +237 -0
- package/mainnet/_generated/_dependencies/source/0x2/bcs/structs.d.ts +44 -0
- package/mainnet/_generated/_dependencies/source/0x2/bcs/structs.js +147 -0
- package/mainnet/_generated/_dependencies/source/0x2/bls12381/structs.d.ts +155 -0
- package/mainnet/_generated/_dependencies/source/0x2/bls12381/structs.js +448 -0
- package/mainnet/_generated/_dependencies/source/0x2/borrow/structs.d.ts +104 -0
- package/mainnet/_generated/_dependencies/source/0x2/borrow/structs.js +256 -0
- package/mainnet/_generated/_dependencies/source/0x2/clock/structs.d.ts +56 -0
- package/mainnet/_generated/_dependencies/source/0x2/clock/structs.js +131 -0
- package/mainnet/_generated/_dependencies/source/0x2/coin/structs.d.ts +379 -0
- package/mainnet/_generated/_dependencies/source/0x2/coin/structs.js +741 -0
- package/mainnet/_generated/_dependencies/source/0x2/deny-list/structs.d.ts +178 -0
- package/mainnet/_generated/_dependencies/source/0x2/deny-list/structs.js +279 -0
- package/mainnet/_generated/_dependencies/source/0x2/display/structs.d.ts +228 -0
- package/mainnet/_generated/_dependencies/source/0x2/display/structs.js +375 -0
- package/mainnet/_generated/_dependencies/source/0x2/dynamic-field/structs.d.ts +63 -0
- package/mainnet/_generated/_dependencies/source/0x2/dynamic-field/structs.js +139 -0
- package/mainnet/_generated/_dependencies/source/0x2/dynamic-object-field/structs.d.ts +42 -0
- package/mainnet/_generated/_dependencies/source/0x2/dynamic-object-field/structs.js +127 -0
- package/mainnet/_generated/_dependencies/source/0x2/groth16/structs.d.ts +186 -0
- package/mainnet/_generated/_dependencies/source/0x2/groth16/structs.js +489 -0
- package/mainnet/_generated/_dependencies/source/0x2/group-ops/structs.d.ts +44 -0
- package/mainnet/_generated/_dependencies/source/0x2/group-ops/structs.js +150 -0
- package/mainnet/_generated/_dependencies/source/0x2/index.d.ts +2 -0
- package/mainnet/_generated/_dependencies/source/0x2/index.js +5 -0
- package/mainnet/_generated/_dependencies/source/0x2/init.d.ts +2 -0
- package/mainnet/_generated/_dependencies/source/0x2/init.js +150 -0
- package/mainnet/_generated/_dependencies/source/0x2/kiosk/structs.d.ts +565 -0
- package/mainnet/_generated/_dependencies/source/0x2/kiosk/structs.js +1233 -0
- package/mainnet/_generated/_dependencies/source/0x2/kiosk-extension/structs.d.ts +112 -0
- package/mainnet/_generated/_dependencies/source/0x2/kiosk-extension/structs.js +248 -0
- package/mainnet/_generated/_dependencies/source/0x2/linked-table/structs.d.ts +144 -0
- package/mainnet/_generated/_dependencies/source/0x2/linked-table/structs.js +269 -0
- package/mainnet/_generated/_dependencies/source/0x2/object/structs.d.ts +83 -0
- package/mainnet/_generated/_dependencies/source/0x2/object/structs.js +232 -0
- package/mainnet/_generated/_dependencies/source/0x2/object-bag/structs.d.ts +56 -0
- package/mainnet/_generated/_dependencies/source/0x2/object-bag/structs.js +131 -0
- package/mainnet/_generated/_dependencies/source/0x2/object-table/structs.d.ts +56 -0
- package/mainnet/_generated/_dependencies/source/0x2/object-table/structs.js +133 -0
- package/mainnet/_generated/_dependencies/source/0x2/package/structs.d.ts +262 -0
- package/mainnet/_generated/_dependencies/source/0x2/package/structs.js +531 -0
- package/mainnet/_generated/_dependencies/source/0x2/priority-queue/structs.d.ts +101 -0
- package/mainnet/_generated/_dependencies/source/0x2/priority-queue/structs.js +269 -0
- package/mainnet/_generated/_dependencies/source/0x2/random/structs.d.ts +136 -0
- package/mainnet/_generated/_dependencies/source/0x2/random/structs.js +283 -0
- package/mainnet/_generated/_dependencies/source/0x2/sui/structs.d.ts +41 -0
- package/mainnet/_generated/_dependencies/source/0x2/sui/structs.js +123 -0
- package/mainnet/_generated/_dependencies/source/0x2/table/structs.d.ts +56 -0
- package/mainnet/_generated/_dependencies/source/0x2/table/structs.js +133 -0
- package/mainnet/_generated/_dependencies/source/0x2/table-vec/structs.d.ts +63 -0
- package/mainnet/_generated/_dependencies/source/0x2/table-vec/structs.js +151 -0
- package/mainnet/_generated/_dependencies/source/0x2/token/structs.d.ts +424 -0
- package/mainnet/_generated/_dependencies/source/0x2/token/structs.js +754 -0
- package/mainnet/_generated/_dependencies/source/0x2/transfer/structs.d.ts +52 -0
- package/mainnet/_generated/_dependencies/source/0x2/transfer/structs.js +133 -0
- package/mainnet/_generated/_dependencies/source/0x2/transfer-policy/structs.d.ts +345 -0
- package/mainnet/_generated/_dependencies/source/0x2/transfer-policy/structs.js +746 -0
- package/mainnet/_generated/_dependencies/source/0x2/tx-context/structs.d.ts +68 -0
- package/mainnet/_generated/_dependencies/source/0x2/tx-context/structs.js +175 -0
- package/mainnet/_generated/_dependencies/source/0x2/url/structs.d.ts +48 -0
- package/mainnet/_generated/_dependencies/source/0x2/url/structs.js +124 -0
- package/mainnet/_generated/_dependencies/source/0x2/vec-map/structs.d.ts +101 -0
- package/mainnet/_generated/_dependencies/source/0x2/vec-map/structs.js +267 -0
- package/mainnet/_generated/_dependencies/source/0x2/vec-set/structs.d.ts +45 -0
- package/mainnet/_generated/_dependencies/source/0x2/vec-set/structs.js +151 -0
- package/mainnet/_generated/_dependencies/source/0x2/versioned/structs.d.ts +104 -0
- package/mainnet/_generated/_dependencies/source/0x2/versioned/structs.js +246 -0
- package/mainnet/_generated/_dependencies/source/0x2/zklogin-verified-id/structs.d.ts +105 -0
- package/mainnet/_generated/_dependencies/source/0x2/zklogin-verified-id/structs.js +159 -0
- package/mainnet/_generated/_dependencies/source/0x2/zklogin-verified-issuer/structs.d.ts +69 -0
- package/mainnet/_generated/_dependencies/source/0x2/zklogin-verified-issuer/structs.js +141 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/bytes20/structs.d.ts +44 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/bytes20/structs.js +149 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/bytes32/structs.d.ts +44 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/bytes32/structs.js +149 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/consumed-vaas/structs.d.ts +72 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/consumed-vaas/structs.js +151 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/cursor/structs.d.ts +45 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/cursor/structs.js +151 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/emitter/structs.d.ts +140 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/emitter/structs.js +352 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/external-address/structs.d.ts +52 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/external-address/structs.js +126 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/fee-collector/structs.d.ts +58 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/fee-collector/structs.js +157 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/governance-message/structs.d.ts +158 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/governance-message/structs.js +299 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/guardian/structs.d.ts +52 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/guardian/structs.js +126 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/guardian-set/structs.d.ts +75 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/guardian-set/structs.js +162 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/guardian-signature/structs.d.ts +80 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/guardian-signature/structs.js +144 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/index.d.ts +2 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/index.js +5 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/init.d.ts +2 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/init.js +91 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/migrate/structs.d.ts +46 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/migrate/structs.js +126 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/package-utils/structs.d.ts +177 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/package-utils/structs.js +463 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/publish-message/structs.d.ts +141 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/publish-message/structs.js +308 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/set/structs.d.ts +101 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/set/structs.js +260 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/set-fee/structs.d.ts +79 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/set-fee/structs.js +235 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/setup/structs.d.ts +50 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/setup/structs.js +126 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/state/structs.d.ts +269 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/state/structs.js +314 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/transfer-fee/structs.d.ts +85 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/transfer-fee/structs.js +244 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/update-guardian-set/structs.d.ts +145 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/update-guardian-set/structs.js +376 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/upgrade-contract/structs.d.ts +143 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/upgrade-contract/structs.js +353 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/vaa/structs.d.ts +122 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/vaa/structs.js +198 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/version-control/structs.d.ts +79 -0
- package/mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/version-control/structs.js +235 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/batch-price-attestation/structs.d.ts +279 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/batch-price-attestation/structs.js +302 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/contract-upgrade/structs.d.ts +105 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/contract-upgrade/structs.js +243 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/data-source/structs.d.ts +66 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/data-source/structs.js +132 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/event/structs.d.ts +200 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/event/structs.js +242 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/governance/structs.d.ts +67 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/governance/structs.js +162 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/governance-action/structs.d.ts +41 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/governance-action/structs.js +125 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/governance-instruction/structs.d.ts +71 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/governance-instruction/structs.js +168 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/hot-potato-vector/structs.d.ts +45 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/hot-potato-vector/structs.js +151 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs.d.ts +47 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs.js +130 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/index.d.ts +2 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/index.js +5 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/init.d.ts +2 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/init.js +86 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/migrate/structs.d.ts +46 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/migrate/structs.js +126 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs.d.ts +84 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs.js +144 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs.d.ts +153 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs.js +139 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.d.ts +44 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.js +149 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs.d.ts +351 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs.js +255 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-status/structs.d.ts +41 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-status/structs.js +125 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set/structs.d.ts +110 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set/structs.js +267 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-data-sources/structs.d.ts +75 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-data-sources/structs.js +150 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-fee-recipient/structs.d.ts +41 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-fee-recipient/structs.js +128 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-governance-data-source/structs.d.ts +72 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-governance-data-source/structs.js +138 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-stale-price-threshold/structs.d.ts +41 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-stale-price-threshold/structs.js +125 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-update-fee/structs.d.ts +47 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-update-fee/structs.js +131 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/setup/structs.d.ts +50 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/setup/structs.js +126 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/state/structs.d.ts +269 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/state/structs.js +394 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/version-control/structs.d.ts +117 -0
- package/mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/version-control/structs.js +345 -0
- package/mainnet/_generated/_framework/init-source.d.ts +1 -0
- package/mainnet/_generated/_framework/init-source.js +45 -0
- package/mainnet/_generated/_framework/loader.d.ts +17 -0
- package/mainnet/_generated/_framework/loader.js +46 -0
- package/mainnet/_generated/_framework/reified.d.ts +100 -0
- package/mainnet/_generated/_framework/reified.js +263 -0
- package/mainnet/_generated/_framework/util.d.ts +53 -0
- package/mainnet/_generated/_framework/util.js +250 -0
- package/mainnet/_generated/suilend/cell/functions.d.ts +10 -0
- package/mainnet/_generated/suilend/cell/functions.js +37 -0
- package/mainnet/_generated/suilend/cell/structs.d.ts +49 -0
- package/mainnet/_generated/suilend/cell/structs.js +128 -0
- package/mainnet/_generated/suilend/decimal/functions.d.ts +75 -0
- package/mainnet/_generated/suilend/decimal/functions.js +152 -0
- package/mainnet/_generated/suilend/decimal/structs.d.ts +41 -0
- package/mainnet/_generated/suilend/decimal/structs.js +125 -0
- package/mainnet/_generated/suilend/index.d.ts +2 -0
- package/mainnet/_generated/suilend/index.js +5 -0
- package/mainnet/_generated/suilend/init.d.ts +2 -0
- package/mainnet/_generated/suilend/init.js +79 -0
- package/mainnet/_generated/suilend/launch/functions.d.ts +3 -0
- package/mainnet/_generated/suilend/launch/functions.js +12 -0
- package/mainnet/_generated/suilend/launch/structs.d.ts +41 -0
- package/mainnet/_generated/suilend/launch/structs.js +125 -0
- package/mainnet/_generated/suilend/lending-market/functions.d.ts +198 -0
- package/mainnet/_generated/suilend/lending-market/functions.js +386 -0
- package/mainnet/_generated/suilend/lending-market/structs.d.ts +1495 -0
- package/mainnet/_generated/suilend/lending-market/structs.js +1992 -0
- package/mainnet/_generated/suilend/lending-market-registry/functions.d.ts +4 -0
- package/mainnet/_generated/suilend/lending-market-registry/functions.js +20 -0
- package/mainnet/_generated/suilend/lending-market-registry/structs.d.ts +123 -0
- package/mainnet/_generated/suilend/lending-market-registry/structs.js +274 -0
- package/mainnet/_generated/suilend/liquidity-mining/functions.d.ts +68 -0
- package/mainnet/_generated/suilend/liquidity-mining/functions.js +149 -0
- package/mainnet/_generated/suilend/liquidity-mining/structs.d.ts +467 -0
- package/mainnet/_generated/suilend/liquidity-mining/structs.js +697 -0
- package/mainnet/_generated/suilend/obligation/functions.d.ts +132 -0
- package/mainnet/_generated/suilend/obligation/functions.js +286 -0
- package/mainnet/_generated/suilend/obligation/structs.d.ts +1100 -0
- package/mainnet/_generated/suilend/obligation/structs.js +994 -0
- package/mainnet/_generated/suilend/oracles/functions.d.ts +8 -0
- package/mainnet/_generated/suilend/oracles/functions.js +19 -0
- package/mainnet/_generated/suilend/rate-limiter/functions.d.ts +33 -0
- package/mainnet/_generated/suilend/rate-limiter/functions.js +54 -0
- package/mainnet/_generated/suilend/rate-limiter/structs.d.ts +132 -0
- package/mainnet/_generated/suilend/rate-limiter/structs.js +260 -0
- package/mainnet/_generated/suilend/reserve/functions.d.ts +138 -0
- package/mainnet/_generated/suilend/reserve/functions.js +356 -0
- package/mainnet/_generated/suilend/reserve/structs.d.ts +1064 -0
- package/mainnet/_generated/suilend/reserve/structs.js +1023 -0
- package/mainnet/_generated/suilend/reserve-config/functions.d.ts +151 -0
- package/mainnet/_generated/suilend/reserve-config/functions.js +330 -0
- package/mainnet/_generated/suilend/reserve-config/structs.d.ts +233 -0
- package/mainnet/_generated/suilend/reserve-config/structs.js +368 -0
- package/mainnet/_generated/suilend/suilend/structs.d.ts +41 -0
- package/mainnet/_generated/suilend/suilend/structs.js +125 -0
- package/mainnet/client.d.ts +19 -0
- package/mainnet/client.js +108 -0
- package/mainnet/constants.d.ts +1 -0
- package/mainnet/constants.js +17 -0
- package/mainnet/index.d.ts +2 -0
- package/mainnet/index.js +18 -0
- package/mainnet/parsers/lendingMarket.d.ts +115 -0
- package/mainnet/parsers/lendingMarket.js +41 -0
- package/mainnet/parsers/obligation.d.ts +10 -0
- package/mainnet/parsers/obligation.js +30 -0
- package/mainnet/parsers/rateLimiter.d.ts +18 -0
- package/mainnet/parsers/rateLimiter.js +32 -0
- package/mainnet/parsers/reserve.d.ts +162 -0
- package/mainnet/parsers/reserve.js +38 -0
- package/mainnet/types.d.ts +1 -0
- package/mainnet/types.js +17 -0
- package/mainnet/utils/events.d.ts +144 -0
- package/mainnet/utils/events.js +115 -0
- package/mainnet/utils/index.d.ts +4 -0
- package/mainnet/utils/index.js +20 -0
- package/mainnet/utils/obligation.d.ts +25 -0
- package/mainnet/utils/obligation.js +299 -0
- package/mainnet/utils/simulate.d.ts +18 -0
- package/mainnet/utils/simulate.js +284 -0
- package/mainnet/utils/utils.d.ts +79 -0
- package/mainnet/utils/utils.js +157 -0
- package/mainnet/utils.d.ts +1 -0
- package/mainnet/utils.js +17 -0
- package/package.json +1 -0
- package/pyth-sdk/SuiPriceServiceConnection.d.ts +14 -0
- package/pyth-sdk/SuiPriceServiceConnection.js +32 -0
- package/pyth-sdk/client.d.ts +74 -0
- package/pyth-sdk/client.js +322 -0
- package/pyth-sdk/index.d.ts +4 -0
- package/pyth-sdk/index.js +10 -0
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.getObligationHistoryPage = exports.fetchAllObligationsForMarket = exports.fetchAllObligationsForMarketWithHandler = void 0;
|
|
39
|
+
const utils_1 = require("@mysten/sui.js/utils");
|
|
40
|
+
const p_limit_1 = __importDefault(require("p-limit"));
|
|
41
|
+
const reified_1 = require("../_generated/_framework/reified");
|
|
42
|
+
const suilend_1 = require("../_generated/suilend");
|
|
43
|
+
const structs_1 = require("../_generated/suilend/obligation/structs");
|
|
44
|
+
const client_1 = require("../client");
|
|
45
|
+
const parsed = __importStar(require("./events"));
|
|
46
|
+
function fetchAllObligationsForMarketWithHandler(client, marketAddress, chunkHandler) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
var _a;
|
|
49
|
+
const limit = (0, p_limit_1.default)(30);
|
|
50
|
+
const rawLendingMarket = yield client.getObject({
|
|
51
|
+
id: marketAddress,
|
|
52
|
+
options: {
|
|
53
|
+
showType: true,
|
|
54
|
+
showContent: true,
|
|
55
|
+
showOwner: true,
|
|
56
|
+
showBcs: true,
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
const obligationField = ((_a = rawLendingMarket.data) === null || _a === void 0 ? void 0 : _a.content).fields
|
|
60
|
+
.obligations;
|
|
61
|
+
const obligationOwnerID = obligationField.fields.id.id;
|
|
62
|
+
let hasNextPage = true;
|
|
63
|
+
let cursor = null;
|
|
64
|
+
const promises = [];
|
|
65
|
+
while (hasNextPage) {
|
|
66
|
+
const response = yield client.getDynamicFields({
|
|
67
|
+
parentId: obligationOwnerID,
|
|
68
|
+
cursor: cursor,
|
|
69
|
+
});
|
|
70
|
+
hasNextPage = response.hasNextPage;
|
|
71
|
+
cursor = response.nextCursor;
|
|
72
|
+
promises.push(limit(() => __awaiter(this, void 0, void 0, function* () {
|
|
73
|
+
var _b;
|
|
74
|
+
const obligationObjects = yield chunkedMultiGet(client, response.data.map((x) => x.objectId));
|
|
75
|
+
const obligations = [];
|
|
76
|
+
for (const rawObligation of obligationObjects) {
|
|
77
|
+
obligations.push(structs_1.Obligation.fromBcs((0, reified_1.phantom)(client_1.LENDING_MARKET_TYPE), (0, utils_1.fromB64)(((_b = rawObligation.data) === null || _b === void 0 ? void 0 : _b.bcs).bcsBytes)));
|
|
78
|
+
}
|
|
79
|
+
yield chunkHandler(obligations);
|
|
80
|
+
})));
|
|
81
|
+
}
|
|
82
|
+
yield Promise.all(promises);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
exports.fetchAllObligationsForMarketWithHandler = fetchAllObligationsForMarketWithHandler;
|
|
86
|
+
function fetchAllObligationsForMarket(client, marketAddress) {
|
|
87
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
var _a, _b;
|
|
89
|
+
const rawLendingMarket = yield client.getObject({
|
|
90
|
+
id: marketAddress,
|
|
91
|
+
options: {
|
|
92
|
+
showType: true,
|
|
93
|
+
showContent: true,
|
|
94
|
+
showOwner: true,
|
|
95
|
+
showBcs: true,
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
const obligationField = ((_a = rawLendingMarket.data) === null || _a === void 0 ? void 0 : _a.content).fields
|
|
99
|
+
.obligations;
|
|
100
|
+
const obligationOwnerID = obligationField.fields.id.id;
|
|
101
|
+
let hasNextPage = true;
|
|
102
|
+
let cursor = null;
|
|
103
|
+
let fields = [];
|
|
104
|
+
while (hasNextPage) {
|
|
105
|
+
const response = yield client.getDynamicFields({
|
|
106
|
+
parentId: obligationOwnerID,
|
|
107
|
+
cursor: cursor,
|
|
108
|
+
});
|
|
109
|
+
fields = fields.concat(response.data);
|
|
110
|
+
hasNextPage = response.hasNextPage;
|
|
111
|
+
cursor = response.nextCursor;
|
|
112
|
+
}
|
|
113
|
+
const obligationObjects = yield chunkedMultiGet(client, fields.map((x) => x.objectId));
|
|
114
|
+
const obligations = [];
|
|
115
|
+
for (const rawObligation of obligationObjects) {
|
|
116
|
+
obligations.push(structs_1.Obligation.fromBcs((0, reified_1.phantom)(client_1.LENDING_MARKET_TYPE), (0, utils_1.fromB64)(((_b = rawObligation.data) === null || _b === void 0 ? void 0 : _b.bcs).bcsBytes)));
|
|
117
|
+
}
|
|
118
|
+
return obligations;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
exports.fetchAllObligationsForMarket = fetchAllObligationsForMarket;
|
|
122
|
+
function chunkedMultiGet(client, objectIds) {
|
|
123
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
124
|
+
const limit = (0, p_limit_1.default)(30);
|
|
125
|
+
const results = [];
|
|
126
|
+
const chunks = splitIntoChunks(objectIds, 50);
|
|
127
|
+
const promises = [];
|
|
128
|
+
for (const chunk of chunks) {
|
|
129
|
+
promises.push(limit(() => client.multiGetObjects({
|
|
130
|
+
ids: chunk,
|
|
131
|
+
options: {
|
|
132
|
+
showType: true,
|
|
133
|
+
showContent: true,
|
|
134
|
+
showOwner: true,
|
|
135
|
+
showBcs: true,
|
|
136
|
+
},
|
|
137
|
+
})));
|
|
138
|
+
}
|
|
139
|
+
for (const chunk of yield Promise.all(promises)) {
|
|
140
|
+
for (const result of chunk) {
|
|
141
|
+
results.push(result);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return results;
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
function splitIntoChunks(arr, chunkSize) {
|
|
148
|
+
const result = [];
|
|
149
|
+
for (let i = 0; i < arr.length; i += chunkSize) {
|
|
150
|
+
const chunk = arr.slice(i, i + chunkSize);
|
|
151
|
+
result.push(chunk);
|
|
152
|
+
}
|
|
153
|
+
return result;
|
|
154
|
+
}
|
|
155
|
+
function getObligationHistoryPage(client, obligationId, maxQuantity, cursor) {
|
|
156
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
157
|
+
var _a;
|
|
158
|
+
if (maxQuantity > 50 || maxQuantity < 1) {
|
|
159
|
+
throw Error("maxQuantity must be between 1 and 50");
|
|
160
|
+
}
|
|
161
|
+
const payload = yield client.queryTransactionBlocks({
|
|
162
|
+
cursor: cursor,
|
|
163
|
+
limit: maxQuantity,
|
|
164
|
+
order: "descending",
|
|
165
|
+
filter: {
|
|
166
|
+
ChangedObject: obligationId,
|
|
167
|
+
},
|
|
168
|
+
options: {
|
|
169
|
+
showEffects: true,
|
|
170
|
+
showEvents: true,
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
let formattedEvents = [];
|
|
174
|
+
for (const data of payload.data) {
|
|
175
|
+
const events = ((_a = data.events) === null || _a === void 0 ? void 0 : _a.filter((e) => e.packageId === suilend_1.PACKAGE_ID)) || [];
|
|
176
|
+
formattedEvents = formattedEvents.concat(formatEventsToHistory(obligationId, data, events));
|
|
177
|
+
}
|
|
178
|
+
if (payload.hasNextPage) {
|
|
179
|
+
return {
|
|
180
|
+
cursor: payload.nextCursor,
|
|
181
|
+
history: formattedEvents,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
cursor: null,
|
|
186
|
+
history: formattedEvents,
|
|
187
|
+
};
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
exports.getObligationHistoryPage = getObligationHistoryPage;
|
|
191
|
+
function formatEventsToHistory(obligationId, data, events) {
|
|
192
|
+
const formattedEvents = [];
|
|
193
|
+
for (const [, event] of events.entries()) {
|
|
194
|
+
const eventComponents = event.type.split("::");
|
|
195
|
+
const eventType = eventComponents[eventComponents.length - 1];
|
|
196
|
+
if (eventType === "DepositEvent") {
|
|
197
|
+
const deposit = new parsed.DepositEvent(event);
|
|
198
|
+
if (deposit.params().obligation_id !== obligationId) {
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
// Find the corresponding mint event
|
|
202
|
+
const matchingEvent = events.find((e) => {
|
|
203
|
+
return (e.type.includes("MintEvent") &&
|
|
204
|
+
new parsed.MintEvent(e).params().ctoken_amount ===
|
|
205
|
+
deposit.params().ctoken_amount);
|
|
206
|
+
});
|
|
207
|
+
if (!matchingEvent) {
|
|
208
|
+
// TODO: Handle case with solo Mint or solo Deposit
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
const mint = new parsed.MintEvent(matchingEvent);
|
|
212
|
+
formattedEvents.push({
|
|
213
|
+
reserveId: deposit.params().reserve_id,
|
|
214
|
+
quantity: parseInt(mint.params().liquidity_amount),
|
|
215
|
+
action: "Deposit",
|
|
216
|
+
timestampMs: parseInt(data.timestampMs, 10),
|
|
217
|
+
digest: data.digest,
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
else if (eventType === "WithdrawEvent") {
|
|
221
|
+
const withdraw = new parsed.WithdrawEvent(event);
|
|
222
|
+
if (withdraw.params().obligation_id !== obligationId) {
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
// Find the corresponding mint event
|
|
226
|
+
const matchingEvent = events.find((e) => {
|
|
227
|
+
return (e.type.includes("RedeemEvent") &&
|
|
228
|
+
new parsed.RedeemEvent(e).params().ctoken_amount ===
|
|
229
|
+
withdraw.params().ctoken_amount);
|
|
230
|
+
});
|
|
231
|
+
if (!matchingEvent) {
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
const redeem = new parsed.RedeemEvent(matchingEvent);
|
|
235
|
+
formattedEvents.push({
|
|
236
|
+
reserveId: redeem.params().reserve_id,
|
|
237
|
+
quantity: parseInt(redeem.params().liquidity_amount),
|
|
238
|
+
action: "Withdraw",
|
|
239
|
+
timestampMs: parseInt(data.timestampMs, 10),
|
|
240
|
+
digest: data.digest,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
else if (eventType === "BorrowEvent") {
|
|
244
|
+
const borrow = new parsed.BorrowEvent(event);
|
|
245
|
+
if (borrow.params().obligation_id !== obligationId) {
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
formattedEvents.push({
|
|
249
|
+
reserveId: borrow.params().reserve_id,
|
|
250
|
+
quantity: parseInt(borrow.params().liquidity_amount),
|
|
251
|
+
action: "Borrow",
|
|
252
|
+
timestampMs: parseInt(data.timestampMs, 10),
|
|
253
|
+
digest: data.digest,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
else if (eventType === "RepayEvent") {
|
|
257
|
+
const repay = new parsed.RepayEvent(event);
|
|
258
|
+
if (repay.params().obligation_id !== obligationId) {
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
formattedEvents.push({
|
|
262
|
+
reserveId: repay.params().reserve_id,
|
|
263
|
+
quantity: parseInt(repay.params().liquidity_amount),
|
|
264
|
+
action: "Repay",
|
|
265
|
+
timestampMs: parseInt(data.timestampMs, 10),
|
|
266
|
+
digest: data.digest,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
else if (eventType === "LiquidateEvent") {
|
|
270
|
+
const liquidate = new parsed.LiquidateEvent(event);
|
|
271
|
+
if (liquidate.params().obligation_id !== obligationId) {
|
|
272
|
+
continue;
|
|
273
|
+
}
|
|
274
|
+
formattedEvents.push({
|
|
275
|
+
repayReserveId: liquidate.params().repay_reserve_id,
|
|
276
|
+
repayQuantity: parseInt(liquidate.params().repay_amount),
|
|
277
|
+
withdrawReserveId: liquidate.params().withdraw_reserve_id,
|
|
278
|
+
withdrawQuantity: parseInt(liquidate.params().withdraw_amount),
|
|
279
|
+
action: "Liquidation",
|
|
280
|
+
timestampMs: parseInt(data.timestampMs, 10),
|
|
281
|
+
digest: data.digest,
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
else if (eventType === "ClaimRewardEvent") {
|
|
285
|
+
const claimReward = new parsed.ClaimRewardEvent(event);
|
|
286
|
+
if (claimReward.params().obligation_id !== obligationId) {
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
formattedEvents.push({
|
|
290
|
+
reserveId: claimReward.params().reserve_id,
|
|
291
|
+
quantity: parseInt(claimReward.params().liquidity_amount),
|
|
292
|
+
action: "Claim Reward",
|
|
293
|
+
timestampMs: parseInt(data.timestampMs, 10),
|
|
294
|
+
digest: data.digest,
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return formattedEvents;
|
|
299
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import BigNumber from "bignumber.js";
|
|
2
|
+
import { SuiPriceServiceConnection } from "../../pyth-sdk";
|
|
3
|
+
import { Decimal } from "../_generated/suilend/decimal/structs";
|
|
4
|
+
import { PoolRewardManager } from "../_generated/suilend/liquidity-mining/structs";
|
|
5
|
+
import { Obligation } from "../_generated/suilend/obligation/structs";
|
|
6
|
+
import { Reserve } from "../_generated/suilend/reserve/structs";
|
|
7
|
+
export declare function calculateUtilizationRate(reserve: Reserve<string>): BigNumber;
|
|
8
|
+
export declare function calculateBorrowApr(reserve: Reserve<string>): BigNumber;
|
|
9
|
+
export declare function calculateSupplyApr(reserve: Reserve<string>): BigNumber;
|
|
10
|
+
export declare function compoundReserveInterest(reserve: Reserve<string>, now: number): Reserve<string>;
|
|
11
|
+
export declare function updatePoolRewardsManager(manager: PoolRewardManager, nowMs: number): PoolRewardManager;
|
|
12
|
+
export declare function refreshReservePrice(reserves: Reserve<string>[], pythConnection: SuiPriceServiceConnection): Promise<Reserve<string>[]>;
|
|
13
|
+
export declare function refreshObligation(unrefreshedObligation: Obligation<string>, refreshedReserves: Reserve<string>[]): Obligation<string>;
|
|
14
|
+
export declare function numberToDecimal(value: number): Decimal;
|
|
15
|
+
export declare function stringToDecimal(value: string): Decimal;
|
|
16
|
+
export declare function decimalToBigNumber(value: Decimal): BigNumber;
|
|
17
|
+
export declare function cTokenRatio(reserve: Reserve<string>): BigNumber;
|
|
18
|
+
export declare function totalSupply(reserve: Reserve<string>): BigNumber;
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.totalSupply = exports.cTokenRatio = exports.decimalToBigNumber = exports.stringToDecimal = exports.numberToDecimal = exports.refreshObligation = exports.refreshReservePrice = exports.updatePoolRewardsManager = exports.compoundReserveInterest = exports.calculateSupplyApr = exports.calculateBorrowApr = exports.calculateUtilizationRate = void 0;
|
|
16
|
+
const bcs_1 = require("@mysten/sui.js/bcs");
|
|
17
|
+
const utils_1 = require("@mysten/sui.js/utils");
|
|
18
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
19
|
+
const structs_1 = require("../_generated/suilend/decimal/structs");
|
|
20
|
+
const structs_2 = require("../_generated/suilend/liquidity-mining/structs");
|
|
21
|
+
function calculateUtilizationRate(reserve) {
|
|
22
|
+
// Units are decimal
|
|
23
|
+
const totalSupplyExcludingFees = new bignumber_js_1.default(reserve.availableAmount.toString()).plus(decimalToBigNumber(reserve.borrowedAmount));
|
|
24
|
+
if (totalSupplyExcludingFees.eq(new bignumber_js_1.default(0))) {
|
|
25
|
+
return new bignumber_js_1.default(0);
|
|
26
|
+
}
|
|
27
|
+
return decimalToBigNumber(reserve.borrowedAmount).dividedBy(totalSupplyExcludingFees);
|
|
28
|
+
}
|
|
29
|
+
exports.calculateUtilizationRate = calculateUtilizationRate;
|
|
30
|
+
function calculateBorrowApr(reserve) {
|
|
31
|
+
const config = reserve.config.element;
|
|
32
|
+
const length = config.interestRateUtils.length;
|
|
33
|
+
const currentUtil = calculateUtilizationRate(reserve).toNumber();
|
|
34
|
+
let i = 1;
|
|
35
|
+
while (i < length) {
|
|
36
|
+
const leftUtil = config.interestRateUtils[i - 1] / 100;
|
|
37
|
+
const rightUtil = config.interestRateUtils[i] / 100;
|
|
38
|
+
if (currentUtil >= leftUtil && currentUtil <= rightUtil) {
|
|
39
|
+
const leftAPR = config.interestRateAprs[i - 1];
|
|
40
|
+
const rightAPR = config.interestRateAprs[i];
|
|
41
|
+
const weight = (currentUtil - leftUtil) / (rightUtil - leftUtil);
|
|
42
|
+
const aprDiff = rightAPR - leftAPR;
|
|
43
|
+
return new bignumber_js_1.default(new bignumber_js_1.default(leftAPR.toString())
|
|
44
|
+
.plus(new bignumber_js_1.default(weight).multipliedBy(new bignumber_js_1.default(aprDiff.toString())))
|
|
45
|
+
.toString()).dividedBy(new bignumber_js_1.default(100));
|
|
46
|
+
}
|
|
47
|
+
i = i + 1;
|
|
48
|
+
}
|
|
49
|
+
// Should never reach here
|
|
50
|
+
return new bignumber_js_1.default(0);
|
|
51
|
+
}
|
|
52
|
+
exports.calculateBorrowApr = calculateBorrowApr;
|
|
53
|
+
function calculateSupplyApr(reserve) {
|
|
54
|
+
var _a, _b;
|
|
55
|
+
const borrowApr = calculateBorrowApr(reserve);
|
|
56
|
+
const currentUtil = calculateUtilizationRate(reserve);
|
|
57
|
+
const protocolTakePercentage = new bignumber_js_1.default(1).minus(new bignumber_js_1.default(((_b = (_a = reserve.config.element) === null || _a === void 0 ? void 0 : _a.spreadFeeBps) === null || _b === void 0 ? void 0 : _b.toString()) || 0).dividedBy(10000));
|
|
58
|
+
return currentUtil.times(borrowApr).times(protocolTakePercentage);
|
|
59
|
+
}
|
|
60
|
+
exports.calculateSupplyApr = calculateSupplyApr;
|
|
61
|
+
function compoundReserveInterest(reserve, now) {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
const timeElapsedSeconds = now - Number(reserve.interestLastUpdateTimestampS);
|
|
64
|
+
if (timeElapsedSeconds === 0) {
|
|
65
|
+
return reserve;
|
|
66
|
+
}
|
|
67
|
+
bignumber_js_1.default.config({ POW_PRECISION: 100 });
|
|
68
|
+
const compoundedBorrowRate = new bignumber_js_1.default(1)
|
|
69
|
+
.plus(calculateBorrowApr(reserve).dividedBy(new bignumber_js_1.default(100 * 365 * 24 * 60 * 60)))
|
|
70
|
+
.pow(new bignumber_js_1.default(timeElapsedSeconds).toNumber());
|
|
71
|
+
const updatedReserve = Object.assign({}, reserve);
|
|
72
|
+
const oldBorrowedAmount = decimalToBigNumber(reserve.borrowedAmount);
|
|
73
|
+
const oldCumulativeBorrowRate = decimalToBigNumber(reserve.cumulativeBorrowRate);
|
|
74
|
+
const oldUnclaimedSpreadFees = decimalToBigNumber(reserve.unclaimedSpreadFees);
|
|
75
|
+
updatedReserve.cumulativeBorrowRate = stringToDecimal(compoundedBorrowRate.multipliedBy(oldCumulativeBorrowRate).toString());
|
|
76
|
+
const netNewDebt = oldBorrowedAmount.multipliedBy(compoundedBorrowRate.minus(1));
|
|
77
|
+
const spreadFee = new bignumber_js_1.default(((_b = (_a = reserve.config.element) === null || _a === void 0 ? void 0 : _a.spreadFeeBps) === null || _b === void 0 ? void 0 : _b.toString()) || 0);
|
|
78
|
+
updatedReserve.unclaimedSpreadFees = stringToDecimal(oldUnclaimedSpreadFees
|
|
79
|
+
.plus(netNewDebt.multipliedBy(spreadFee.dividedBy(10000)))
|
|
80
|
+
.toString());
|
|
81
|
+
updatedReserve.borrowedAmount = stringToDecimal(oldBorrowedAmount.plus(netNewDebt).toString());
|
|
82
|
+
updatedReserve.interestLastUpdateTimestampS = BigInt(now);
|
|
83
|
+
updatedReserve.depositsPoolRewardManager = updatePoolRewardsManager(updatedReserve.depositsPoolRewardManager, now * 1000);
|
|
84
|
+
updatedReserve.borrowsPoolRewardManager = updatePoolRewardsManager(updatedReserve.borrowsPoolRewardManager, now * 1000);
|
|
85
|
+
return updatedReserve;
|
|
86
|
+
}
|
|
87
|
+
exports.compoundReserveInterest = compoundReserveInterest;
|
|
88
|
+
function updatePoolRewardsManager(manager, nowMs) {
|
|
89
|
+
const updatedManager = Object.assign({}, manager);
|
|
90
|
+
const timeElapsedMs = nowMs - Number(manager.lastUpdateTimeMs);
|
|
91
|
+
if (manager.totalShares === BigInt(0) || timeElapsedMs === 0) {
|
|
92
|
+
return updatedManager;
|
|
93
|
+
}
|
|
94
|
+
updatedManager.poolRewards = updatedManager.poolRewards.map((poolReward) => {
|
|
95
|
+
if (poolReward === null) {
|
|
96
|
+
return poolReward;
|
|
97
|
+
}
|
|
98
|
+
if (nowMs < poolReward.startTimeMs ||
|
|
99
|
+
manager.lastUpdateTimeMs >= poolReward.endTimeMs) {
|
|
100
|
+
return poolReward;
|
|
101
|
+
}
|
|
102
|
+
const updatedPoolReward = Object.assign({}, poolReward);
|
|
103
|
+
const endTimeMs = Number(poolReward.endTimeMs);
|
|
104
|
+
const startTimeMs = Number(poolReward.startTimeMs);
|
|
105
|
+
const lastUpdateTimeMs = Number(manager.lastUpdateTimeMs);
|
|
106
|
+
const timePassedMs = Math.min(nowMs, endTimeMs) - Math.max(startTimeMs, lastUpdateTimeMs);
|
|
107
|
+
const unlockedRewards = new bignumber_js_1.default(poolReward.totalRewards.toString())
|
|
108
|
+
.multipliedBy(timePassedMs)
|
|
109
|
+
.dividedBy(Number(poolReward.endTimeMs - poolReward.startTimeMs));
|
|
110
|
+
updatedPoolReward.allocatedRewards = stringToDecimal(decimalToBigNumber(poolReward.allocatedRewards)
|
|
111
|
+
.plus(unlockedRewards)
|
|
112
|
+
.toString());
|
|
113
|
+
updatedPoolReward.cumulativeRewardsPerShare = stringToDecimal(decimalToBigNumber(poolReward.cumulativeRewardsPerShare)
|
|
114
|
+
.plus(unlockedRewards.dividedBy(Number(manager.totalShares)))
|
|
115
|
+
.toString());
|
|
116
|
+
return updatedPoolReward;
|
|
117
|
+
});
|
|
118
|
+
updatedManager.lastUpdateTimeMs = BigInt(nowMs);
|
|
119
|
+
return updatedManager;
|
|
120
|
+
}
|
|
121
|
+
exports.updatePoolRewardsManager = updatePoolRewardsManager;
|
|
122
|
+
function refreshReservePrice(reserves, pythConnection) {
|
|
123
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
124
|
+
const priceIdentifiers = reserves.map((r) => (0, utils_1.toHEX)(new Uint8Array(r.priceIdentifier.bytes)));
|
|
125
|
+
const priceData = yield pythConnection.getLatestPriceFeeds(priceIdentifiers);
|
|
126
|
+
if (!priceData)
|
|
127
|
+
return reserves;
|
|
128
|
+
const updatedReserves = [];
|
|
129
|
+
for (let i = 0; i < reserves.length; i++) {
|
|
130
|
+
const newReserve = Object.assign({}, reserves[i]);
|
|
131
|
+
newReserve.price = stringToDecimal(priceData[i].getPriceUnchecked().getPriceAsNumberUnchecked().toString());
|
|
132
|
+
newReserve.smoothedPrice = stringToDecimal(priceData[i]
|
|
133
|
+
.getEmaPriceUnchecked()
|
|
134
|
+
.getPriceAsNumberUnchecked()
|
|
135
|
+
.toString());
|
|
136
|
+
newReserve.priceLastUpdateTimestampS = BigInt(priceData[i].getPriceUnchecked().publishTime);
|
|
137
|
+
updatedReserves.push(newReserve);
|
|
138
|
+
}
|
|
139
|
+
return updatedReserves;
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
exports.refreshReservePrice = refreshReservePrice;
|
|
143
|
+
function updateUserRewardManager(poolManager, userRewardManager, now) {
|
|
144
|
+
const updatedUserRewardManager = Object.assign({}, userRewardManager);
|
|
145
|
+
for (let i = 0; i < poolManager.poolRewards.length; i++) {
|
|
146
|
+
const poolReward = poolManager.poolRewards[i];
|
|
147
|
+
if (poolReward == null) {
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
if (i >= userRewardManager.rewards.length) {
|
|
151
|
+
userRewardManager.rewards.push(null);
|
|
152
|
+
}
|
|
153
|
+
const oldReward = updatedUserRewardManager.rewards[i];
|
|
154
|
+
const reward = Object.assign({}, oldReward);
|
|
155
|
+
if (oldReward != null) {
|
|
156
|
+
const newRewards = decimalToBigNumber(poolReward.cumulativeRewardsPerShare)
|
|
157
|
+
.minus(decimalToBigNumber(oldReward.cumulativeRewardsPerShare))
|
|
158
|
+
.multipliedBy(new bignumber_js_1.default(Number(userRewardManager.share)));
|
|
159
|
+
reward.earnedRewards = stringToDecimal(decimalToBigNumber(oldReward.earnedRewards).plus(newRewards).toString());
|
|
160
|
+
reward.cumulativeRewardsPerShare = poolReward.cumulativeRewardsPerShare;
|
|
161
|
+
updatedUserRewardManager.rewards[i] = reward;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
if (userRewardManager.lastUpdateTimeMs <= poolReward.endTimeMs) {
|
|
165
|
+
updatedUserRewardManager.rewards[i] = structs_2.UserReward.fromFields({
|
|
166
|
+
pool_reward_id: { bytes: poolReward.id.slice(2) },
|
|
167
|
+
earned_rewards: stringToDecimal((userRewardManager.lastUpdateTimeMs <= poolReward.startTimeMs
|
|
168
|
+
? decimalToBigNumber(poolReward.cumulativeRewardsPerShare).multipliedBy(new bignumber_js_1.default(Number(userRewardManager.share)))
|
|
169
|
+
: new bignumber_js_1.default(0)).toString()),
|
|
170
|
+
cumulative_rewards_per_share: poolReward.cumulativeRewardsPerShare,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
updatedUserRewardManager.lastUpdateTimeMs = BigInt(now);
|
|
176
|
+
return updatedUserRewardManager;
|
|
177
|
+
}
|
|
178
|
+
function refreshObligation(unrefreshedObligation, refreshedReserves) {
|
|
179
|
+
const obligation = Object.assign({}, unrefreshedObligation);
|
|
180
|
+
// Refresh Deposits
|
|
181
|
+
let depositValueUsd = new bignumber_js_1.default(0);
|
|
182
|
+
let allowedBorrowValueUsd = new bignumber_js_1.default(0);
|
|
183
|
+
let unhealthyBorrowValueUsd = new bignumber_js_1.default(0);
|
|
184
|
+
for (let i = 0; i < obligation.deposits.length; i++) {
|
|
185
|
+
const deposit = Object.assign({}, obligation.deposits[i]);
|
|
186
|
+
const reserve = refreshedReserves.find((r) => r.coinType.name === deposit.coinType.name);
|
|
187
|
+
if (!reserve) {
|
|
188
|
+
throw new Error(`Unable to find reserve for coin type ${deposit.coinType.name}`);
|
|
189
|
+
}
|
|
190
|
+
const config = reserve.config.element;
|
|
191
|
+
obligation.userRewardManagers[deposit.userRewardManagerIndex] = updateUserRewardManager(reserve.depositsPoolRewardManager, obligation.userRewardManagers[deposit.userRewardManagerIndex], Date.now());
|
|
192
|
+
const marketValue = getCTokenMarketValue(reserve, new bignumber_js_1.default(deposit.depositedCtokenAmount.toString()));
|
|
193
|
+
const marketValueLowerBound = getCTokenMarketValueLowerBound(reserve, new bignumber_js_1.default(deposit.depositedCtokenAmount.toString()));
|
|
194
|
+
deposit.marketValue = stringToDecimal(marketValue.toString());
|
|
195
|
+
depositValueUsd = depositValueUsd.plus(new bignumber_js_1.default(marketValue.toString()));
|
|
196
|
+
allowedBorrowValueUsd = allowedBorrowValueUsd.plus(marketValueLowerBound.multipliedBy(new bignumber_js_1.default(config.openLtvPct / 100)));
|
|
197
|
+
unhealthyBorrowValueUsd = unhealthyBorrowValueUsd.plus(marketValue.multipliedBy(new bignumber_js_1.default(config.closeLtvPct / 100)));
|
|
198
|
+
obligation.deposits[i] = deposit;
|
|
199
|
+
}
|
|
200
|
+
obligation.unhealthyBorrowValueUsd = stringToDecimal(unhealthyBorrowValueUsd.toString());
|
|
201
|
+
obligation.allowedBorrowValueUsd = stringToDecimal(allowedBorrowValueUsd.toString());
|
|
202
|
+
obligation.depositedValueUsd = stringToDecimal(depositValueUsd.toString());
|
|
203
|
+
// Refresh borrows
|
|
204
|
+
let unweightedBorrowedValueUsd = new bignumber_js_1.default(0);
|
|
205
|
+
let weightedBorrowedValueUsd = new bignumber_js_1.default(0);
|
|
206
|
+
let weightedBorrowedValueUpperBoundUsd = new bignumber_js_1.default(0);
|
|
207
|
+
for (let i = 0; i < obligation.borrows.length; i++) {
|
|
208
|
+
const unrefreshedBorrow = obligation.borrows[i];
|
|
209
|
+
const reserve = refreshedReserves.find((r) => r.coinType.name == unrefreshedBorrow.coinType.name);
|
|
210
|
+
if (!reserve) {
|
|
211
|
+
throw new Error(`Unable to find reserve for coin type ${unrefreshedBorrow.coinType.name}`);
|
|
212
|
+
}
|
|
213
|
+
const config = reserve.config.element;
|
|
214
|
+
const borrow = Object.assign({}, compoundDebt(unrefreshedBorrow, reserve));
|
|
215
|
+
obligation.userRewardManagers[borrow.userRewardManagerIndex] = updateUserRewardManager(reserve.borrowsPoolRewardManager, obligation.userRewardManagers[borrow.userRewardManagerIndex], Date.now());
|
|
216
|
+
const marketValue = decimalToBigNumber(borrow.borrowedAmount)
|
|
217
|
+
.multipliedBy(decimalToBigNumber(reserve.price))
|
|
218
|
+
.dividedBy(new bignumber_js_1.default(10 ** reserve.mintDecimals));
|
|
219
|
+
const upperBoundPrice = bignumber_js_1.default.max(decimalToBigNumber(reserve.price), decimalToBigNumber(reserve.smoothedPrice));
|
|
220
|
+
const marketValueUpperBound = decimalToBigNumber(reserve.borrowedAmount)
|
|
221
|
+
.multipliedBy(upperBoundPrice)
|
|
222
|
+
.dividedBy(new bignumber_js_1.default(10 ** reserve.mintDecimals));
|
|
223
|
+
borrow.marketValue = stringToDecimal(marketValue.toString());
|
|
224
|
+
unweightedBorrowedValueUsd = unweightedBorrowedValueUsd.plus(marketValue);
|
|
225
|
+
const borrowWeight = new bignumber_js_1.default((config.borrowWeightBps / BigInt(10000)).toString());
|
|
226
|
+
weightedBorrowedValueUsd = weightedBorrowedValueUsd.plus(marketValue.multipliedBy(borrowWeight));
|
|
227
|
+
weightedBorrowedValueUpperBoundUsd =
|
|
228
|
+
weightedBorrowedValueUpperBoundUsd.plus(marketValueUpperBound.multipliedBy(borrowWeight));
|
|
229
|
+
}
|
|
230
|
+
obligation.unweightedBorrowedValueUsd = stringToDecimal(unweightedBorrowedValueUsd.toString());
|
|
231
|
+
obligation.weightedBorrowedValueUpperBoundUsd = stringToDecimal(weightedBorrowedValueUpperBoundUsd.toString());
|
|
232
|
+
obligation.weightedBorrowedValueUsd = stringToDecimal(weightedBorrowedValueUsd.toString());
|
|
233
|
+
return obligation;
|
|
234
|
+
}
|
|
235
|
+
exports.refreshObligation = refreshObligation;
|
|
236
|
+
function numberToDecimal(value) {
|
|
237
|
+
const adjustedValue = Math.round(value * 10 ** 18);
|
|
238
|
+
return structs_1.Decimal.fromBcs(bcs_1.bcs.u256().serialize(adjustedValue).toBytes());
|
|
239
|
+
}
|
|
240
|
+
exports.numberToDecimal = numberToDecimal;
|
|
241
|
+
function stringToDecimal(value) {
|
|
242
|
+
return numberToDecimal(new bignumber_js_1.default(value).toNumber());
|
|
243
|
+
}
|
|
244
|
+
exports.stringToDecimal = stringToDecimal;
|
|
245
|
+
function decimalToBigNumber(value) {
|
|
246
|
+
return new bignumber_js_1.default(value.value.toString()).dividedBy(new bignumber_js_1.default(10 ** 18));
|
|
247
|
+
}
|
|
248
|
+
exports.decimalToBigNumber = decimalToBigNumber;
|
|
249
|
+
function getCTokenMarketValue(reserve, depositedCTokenAmount) {
|
|
250
|
+
const liquidityAmount = depositedCTokenAmount.multipliedBy(cTokenRatio(reserve));
|
|
251
|
+
return decimalToBigNumber(reserve.price)
|
|
252
|
+
.multipliedBy(liquidityAmount)
|
|
253
|
+
.dividedBy(new bignumber_js_1.default(10 ** reserve.mintDecimals));
|
|
254
|
+
}
|
|
255
|
+
function getCTokenMarketValueLowerBound(reserve, depositedCTokenAmount) {
|
|
256
|
+
const liquidityAmount = depositedCTokenAmount.multipliedBy(cTokenRatio(reserve));
|
|
257
|
+
const price = bignumber_js_1.default.min(decimalToBigNumber(reserve.price), decimalToBigNumber(reserve.smoothedPrice));
|
|
258
|
+
return price
|
|
259
|
+
.multipliedBy(liquidityAmount)
|
|
260
|
+
.dividedBy(new bignumber_js_1.default(10 ** reserve.mintDecimals));
|
|
261
|
+
}
|
|
262
|
+
function cTokenRatio(reserve) {
|
|
263
|
+
if (reserve.ctokenSupply === BigInt(0)) {
|
|
264
|
+
return new bignumber_js_1.default(1);
|
|
265
|
+
}
|
|
266
|
+
return totalSupply(reserve).dividedBy(new bignumber_js_1.default(reserve.ctokenSupply.toString()));
|
|
267
|
+
}
|
|
268
|
+
exports.cTokenRatio = cTokenRatio;
|
|
269
|
+
function totalSupply(reserve) {
|
|
270
|
+
return new bignumber_js_1.default(reserve.availableAmount.toString())
|
|
271
|
+
.plus(decimalToBigNumber(reserve.borrowedAmount))
|
|
272
|
+
.minus(decimalToBigNumber(reserve.unclaimedSpreadFees));
|
|
273
|
+
}
|
|
274
|
+
exports.totalSupply = totalSupply;
|
|
275
|
+
function compoundDebt(borrow, reserve) {
|
|
276
|
+
const borrowCopy = Object.assign({}, borrow);
|
|
277
|
+
const newCumulativeBorrowRate = decimalToBigNumber(reserve.cumulativeBorrowRate);
|
|
278
|
+
const compoundedInterestRate = newCumulativeBorrowRate.dividedBy(decimalToBigNumber(borrow.cumulativeBorrowRate));
|
|
279
|
+
borrowCopy.borrowedAmount = stringToDecimal(decimalToBigNumber(borrow.borrowedAmount)
|
|
280
|
+
.multipliedBy(compoundedInterestRate)
|
|
281
|
+
.toString());
|
|
282
|
+
borrowCopy.cumulativeBorrowRate = stringToDecimal(newCumulativeBorrowRate.toString());
|
|
283
|
+
return borrowCopy;
|
|
284
|
+
}
|