@scallop-io/sui-scallop-sdk 3.0.2 → 4.1.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.
Files changed (283) hide show
  1. package/dist/Logger-Cg2iFdpH.d.ts +8 -0
  2. package/dist/builder.cjs +22 -0
  3. package/dist/builder.d.cts +28 -0
  4. package/dist/builder.d.ts +28 -0
  5. package/dist/builder.js +4 -0
  6. package/dist/chunk-33AK5RWM.js +15 -0
  7. package/dist/chunk-6UQ4NWEU.js +3 -0
  8. package/dist/chunk-DIC6P5HB.js +11 -0
  9. package/dist/chunk-S34VOEZN.js +3 -0
  10. package/dist/chunk-VTGQACWU.js +6 -0
  11. package/dist/client.cjs +21 -0
  12. package/dist/client.d.cts +401 -0
  13. package/dist/client.d.ts +401 -0
  14. package/dist/client.js +5 -0
  15. package/dist/errors.cjs +10 -0
  16. package/dist/errors.d.cts +32 -0
  17. package/dist/errors.d.ts +32 -0
  18. package/dist/errors.js +1 -0
  19. package/dist/index.cjs +51 -34
  20. package/dist/index.d.cts +130 -3145
  21. package/dist/index.d.ts +130 -3145
  22. package/dist/index.js +8 -12
  23. package/dist/logger.cjs +6 -0
  24. package/dist/logger.d.cts +7 -0
  25. package/dist/logger.d.ts +7 -0
  26. package/dist/logger.js +1 -0
  27. package/dist/query-DkitepDi.d.ts +3305 -0
  28. package/dist/query.cjs +19 -0
  29. package/dist/query.d.cts +9 -0
  30. package/dist/query.d.ts +9 -0
  31. package/dist/query.js +3 -0
  32. package/dist/types.cjs +2 -0
  33. package/dist/types.d.cts +90 -0
  34. package/dist/types.d.ts +90 -0
  35. package/dist/types.js +1 -0
  36. package/package.json +98 -56
  37. package/src/constants/api.ts +2 -0
  38. package/src/constants/coinType.ts +2 -0
  39. package/src/constants/common.ts +0 -7
  40. package/src/constants/index.ts +2 -0
  41. package/src/constants/queryKeys.ts +14 -7
  42. package/src/constants/testAddress.ts +1 -0
  43. package/src/datasources/api.ts +34 -0
  44. package/src/datasources/indexer.ts +8 -0
  45. package/src/datasources/onchain.ts +121 -0
  46. package/src/entries/builder.ts +5 -0
  47. package/src/entries/client.ts +3 -0
  48. package/src/entries/errors.ts +2 -0
  49. package/src/entries/index.ts +17 -0
  50. package/src/entries/logger.ts +2 -0
  51. package/src/entries/query.ts +6 -0
  52. package/src/entries/types.ts +2 -0
  53. package/src/errors/ScallopConfigError.ts +8 -0
  54. package/src/errors/ScallopError.ts +30 -0
  55. package/src/errors/ScallopIndexerError.ts +8 -0
  56. package/src/errors/ScallopParseError.ts +8 -0
  57. package/src/errors/ScallopRpcError.ts +8 -0
  58. package/src/errors/ScallopTransactionBuildError.ts +8 -0
  59. package/src/errors/index.ts +6 -0
  60. package/src/logger/Logger.ts +6 -0
  61. package/src/logger/consoleLogger.ts +13 -0
  62. package/src/logger/index.ts +3 -0
  63. package/src/logger/noopLogger.ts +8 -0
  64. package/src/mappers/index.ts +1 -0
  65. package/src/mappers/moveTypeMapper.ts +48 -0
  66. package/src/models/index.ts +8 -10
  67. package/src/models/interface.ts +9 -9
  68. package/src/models/scallop.ts +9 -16
  69. package/src/models/scallopAddress/const.ts +416 -0
  70. package/src/models/scallopAddress/index.ts +188 -0
  71. package/src/models/scallopAddress/types.ts +212 -0
  72. package/src/models/{scallopBuilder.ts → scallopBuilder/index.ts} +65 -29
  73. package/src/models/scallopBuilder/types.ts +37 -0
  74. package/src/models/{scallopClient.ts → scallopClient/index.ts} +157 -598
  75. package/src/models/scallopClient/types.ts +25 -0
  76. package/src/models/scallopConstants/config/AddressConfigSource.ts +13 -0
  77. package/src/models/scallopConstants/config/ConfigValidator.ts +70 -0
  78. package/src/models/scallopConstants/config/PoolAddressConfigSource.ts +12 -0
  79. package/src/models/scallopConstants/config/ScallopConfig.ts +80 -0
  80. package/src/models/scallopConstants/config/ScallopConfigSnapshot.ts +46 -0
  81. package/src/models/scallopConstants/config/WhitelistConfigSource.ts +16 -0
  82. package/src/models/scallopConstants/config/index.ts +6 -0
  83. package/src/models/scallopConstants/const.ts +19 -0
  84. package/src/models/scallopConstants/constantsSource.ts +98 -0
  85. package/src/models/scallopConstants/deriveConstants.ts +150 -0
  86. package/src/models/scallopConstants/index.ts +257 -0
  87. package/src/models/scallopConstants/loadConstantsState.ts +135 -0
  88. package/src/models/scallopConstants/types.ts +77 -0
  89. package/src/models/scallopConstants/utils.ts +69 -0
  90. package/src/models/scallopQuery/index.ts +1279 -0
  91. package/src/models/scallopQuery/types.ts +9 -0
  92. package/src/models/scallopQuery/utils.ts +13 -0
  93. package/src/models/scallopUtils/index.ts +505 -0
  94. package/src/models/scallopUtils/types.ts +30 -0
  95. package/src/models/transactionExecutor.ts +122 -0
  96. package/src/repositories/addressApi/helpers.ts +14 -0
  97. package/src/repositories/addressApi/index.ts +24 -0
  98. package/src/repositories/addressApi/schema.ts +0 -0
  99. package/src/repositories/addressApi/types.ts +177 -0
  100. package/src/repositories/base.ts +38 -0
  101. package/src/repositories/borrowIncentive/bcs.ts +11 -0
  102. package/src/repositories/borrowIncentive/helpers.ts +396 -0
  103. package/src/repositories/borrowIncentive/index.ts +52 -0
  104. package/src/{types/query/borrowIncentive.ts → repositories/borrowIncentive/types.ts} +69 -23
  105. package/src/repositories/borrowIncentive/utils.ts +234 -0
  106. package/src/repositories/cache.ts +4 -0
  107. package/src/repositories/coinBalance/helpers.ts +394 -0
  108. package/src/repositories/coinBalance/index.ts +69 -0
  109. package/src/repositories/coinBalance/types.ts +33 -0
  110. package/src/repositories/flashloan/const.ts +3 -0
  111. package/src/repositories/flashloan/helpers.ts +107 -0
  112. package/src/repositories/flashloan/index.ts +34 -0
  113. package/src/repositories/flashloan/types.ts +16 -0
  114. package/src/repositories/isolatedAssets/bcs.ts +4 -0
  115. package/src/repositories/isolatedAssets/const.ts +2 -0
  116. package/src/repositories/isolatedAssets/helpers.ts +91 -0
  117. package/src/repositories/isolatedAssets/index.ts +42 -0
  118. package/src/repositories/isolatedAssets/types.ts +35 -0
  119. package/src/repositories/loyaltyProgram/bcs.ts +7 -0
  120. package/src/repositories/loyaltyProgram/helpers.ts +117 -0
  121. package/src/repositories/loyaltyProgram/index.ts +28 -0
  122. package/src/repositories/loyaltyProgram/schema.ts +18 -0
  123. package/src/repositories/loyaltyProgram/types.ts +37 -0
  124. package/src/repositories/market/const.ts +6 -0
  125. package/src/repositories/market/helpers.ts +740 -0
  126. package/src/repositories/market/index.ts +137 -0
  127. package/src/repositories/market/mapper.ts +30 -0
  128. package/src/repositories/market/types.ts +443 -0
  129. package/src/repositories/market/utils.ts +285 -0
  130. package/src/repositories/obligation/helpers.ts +228 -0
  131. package/src/repositories/obligation/index.ts +51 -0
  132. package/src/repositories/obligation/types.ts +71 -0
  133. package/src/repositories/obligation/utils.ts +57 -0
  134. package/src/repositories/poolAddresses/const.ts +5 -0
  135. package/src/repositories/poolAddresses/helpers.ts +422 -0
  136. package/src/repositories/poolAddresses/index.ts +56 -0
  137. package/src/repositories/poolAddresses/schema.ts +34 -0
  138. package/src/repositories/poolAddresses/types.ts +69 -0
  139. package/src/repositories/price/const.ts +1 -0
  140. package/src/repositories/price/helpers.ts +237 -0
  141. package/src/repositories/price/index.ts +91 -0
  142. package/src/repositories/price/schema.ts +24 -0
  143. package/src/repositories/price/types.ts +56 -0
  144. package/src/repositories/price/utils.ts +21 -0
  145. package/src/repositories/referral/bcs.ts +3 -0
  146. package/src/repositories/referral/helper.ts +24 -0
  147. package/src/repositories/referral/index.ts +31 -0
  148. package/src/repositories/referral/types.ts +33 -0
  149. package/src/repositories/spool/const.ts +1 -0
  150. package/src/repositories/spool/helpers.ts +471 -0
  151. package/src/repositories/spool/index.ts +135 -0
  152. package/src/{types/query/spool.ts → repositories/spool/types.ts} +67 -2
  153. package/src/repositories/spool/utils.ts +215 -0
  154. package/src/repositories/types.ts +39 -0
  155. package/src/repositories/utils.ts +137 -0
  156. package/src/repositories/veSca/bcs.ts +6 -0
  157. package/src/repositories/veSca/helpers.ts +341 -0
  158. package/src/repositories/veSca/index.ts +57 -0
  159. package/src/repositories/veSca/types.ts +79 -0
  160. package/src/repositories/veScaLoyaltyProgram/bcs.ts +3 -0
  161. package/src/repositories/veScaLoyaltyProgram/helpers.ts +135 -0
  162. package/src/repositories/veScaLoyaltyProgram/index.ts +28 -0
  163. package/src/repositories/veScaLoyaltyProgram/schema.ts +15 -0
  164. package/src/repositories/veScaLoyaltyProgram/types.ts +47 -0
  165. package/src/repositories/wiring/datasources.ts +42 -0
  166. package/src/repositories/wiring/metadata.ts +292 -0
  167. package/src/repositories/wiring/registry.ts +194 -0
  168. package/src/repositories/wiring/source.ts +63 -0
  169. package/src/repositories/xOracle/bcs.ts +7 -0
  170. package/src/repositories/xOracle/const.ts +1 -0
  171. package/src/repositories/xOracle/helpers.ts +304 -0
  172. package/src/repositories/xOracle/index.ts +45 -0
  173. package/src/repositories/xOracle/types.ts +96 -0
  174. package/src/repositories/xOracle/utils.ts +3 -0
  175. package/src/services/client/BorrowService.ts +229 -0
  176. package/src/services/client/CollateralService.ts +76 -0
  177. package/src/services/client/LendingService.ts +75 -0
  178. package/src/services/client/ReferralService.ts +71 -0
  179. package/src/services/client/SpoolService.ts +170 -0
  180. package/src/services/client/VeScaService.ts +142 -0
  181. package/src/services/client/types.ts +44 -0
  182. package/src/services/index.ts +8 -0
  183. package/src/services/query/portfolioCalculations.ts +1171 -0
  184. package/src/txBuilders/borrowIncentive/index.ts +80 -0
  185. package/src/txBuilders/borrowIncentive/moveCalls.ts +124 -0
  186. package/src/txBuilders/borrowIncentive/quick.ts +207 -0
  187. package/src/txBuilders/context.ts +62 -0
  188. package/src/txBuilders/core/index.ts +95 -0
  189. package/src/txBuilders/core/moveCalls.ts +241 -0
  190. package/src/txBuilders/core/quick.ts +306 -0
  191. package/src/{builders → txBuilders}/index.ts +35 -9
  192. package/src/txBuilders/loyaltyProgram/index.ts +78 -0
  193. package/src/txBuilders/loyaltyProgram/moveCalls.ts +44 -0
  194. package/src/txBuilders/loyaltyProgram/quick.ts +58 -0
  195. package/src/txBuilders/manifest.ts +160 -0
  196. package/src/txBuilders/modules.ts +70 -0
  197. package/src/{builders → txBuilders}/oracles/index.ts +3 -2
  198. package/src/{builders → txBuilders}/oracles/pyth.ts +4 -3
  199. package/src/txBuilders/referral/index.ts +72 -0
  200. package/src/txBuilders/referral/moveCalls.ts +93 -0
  201. package/src/txBuilders/referral/quick.ts +57 -0
  202. package/src/txBuilders/sCoin/index.ts +72 -0
  203. package/src/txBuilders/sCoin/moveCalls.ts +36 -0
  204. package/src/txBuilders/sCoin/quick.ts +34 -0
  205. package/src/txBuilders/spool/index.ts +82 -0
  206. package/src/txBuilders/spool/moveCalls.ts +79 -0
  207. package/src/{builders/spoolBuilder.ts → txBuilders/spool/quick.ts} +22 -162
  208. package/src/txBuilders/utils.ts +36 -0
  209. package/src/txBuilders/verify.ts +45 -0
  210. package/src/txBuilders/vesca/index.ts +75 -0
  211. package/src/txBuilders/vesca/moveCalls.ts +147 -0
  212. package/src/{builders/vescaBuilder.ts → txBuilders/vesca/quick.ts} +85 -274
  213. package/src/types/address.ts +4 -178
  214. package/src/types/builder/borrowIncentive.ts +4 -3
  215. package/src/types/builder/core.ts +6 -33
  216. package/src/types/builder/index.ts +5 -1
  217. package/src/types/builder/loyaltyProgram.ts +4 -3
  218. package/src/types/builder/modules.ts +49 -0
  219. package/src/types/builder/referral.ts +5 -4
  220. package/src/types/builder/sCoin.ts +20 -2
  221. package/src/types/builder/spool.ts +22 -2
  222. package/src/types/builder/vesca.ts +4 -12
  223. package/src/types/constant/index.ts +3 -1
  224. package/src/types/constant/queryKeys.ts +15 -8
  225. package/src/types/index.ts +5 -6
  226. package/src/types/internal/dto.ts +46 -0
  227. package/src/types/internal/index.ts +2 -0
  228. package/src/types/internal/move.ts +13 -0
  229. package/src/types/public/index.ts +21 -0
  230. package/src/types/query/core.ts +0 -317
  231. package/src/types/query/index.ts +3 -4
  232. package/src/types/query/portfolio.ts +2 -15
  233. package/src/types/repositories/borrowIncentive.ts +12 -0
  234. package/src/types/repositories/index.ts +9 -0
  235. package/src/types/repositories/loyaltyProgram.ts +2 -0
  236. package/src/types/repositories/market.ts +13 -0
  237. package/src/types/repositories/spool.ts +21 -0
  238. package/src/types/repositories/veSca.ts +5 -0
  239. package/src/types/repositories/veScaLoyaltyProgram.ts +2 -0
  240. package/src/types/sui.ts +0 -1
  241. package/src/utils/array.ts +7 -0
  242. package/src/utils/cache.ts +17 -0
  243. package/src/utils/object.ts +30 -12
  244. package/src/utils/query.ts +9 -190
  245. package/src/utils/vesca.ts +0 -8
  246. package/src/builders/borrowIncentiveBuilder.ts +0 -372
  247. package/src/builders/coreBuilder.ts +0 -636
  248. package/src/builders/loyaltyProgramBuilder.ts +0 -142
  249. package/src/builders/referralBuilder.ts +0 -192
  250. package/src/builders/sCoinBuilder.ts +0 -124
  251. package/src/index.ts +0 -13
  252. package/src/models/scallopAddress.ts +0 -841
  253. package/src/models/scallopAxios.ts +0 -185
  254. package/src/models/scallopConstants.ts +0 -380
  255. package/src/models/scallopIndexer.ts +0 -226
  256. package/src/models/scallopQuery.ts +0 -974
  257. package/src/models/scallopQueryClient.ts +0 -29
  258. package/src/models/scallopSuiKit.ts +0 -480
  259. package/src/models/scallopUtils.ts +0 -734
  260. package/src/queries/borrowIncentiveQuery.ts +0 -361
  261. package/src/queries/borrowLimitQuery.ts +0 -33
  262. package/src/queries/coreQuery.ts +0 -1173
  263. package/src/queries/flashloanFeeQuery.ts +0 -92
  264. package/src/queries/index.ts +0 -15
  265. package/src/queries/isolatedAssetQuery.ts +0 -103
  266. package/src/queries/loyaltyProgramQuery.ts +0 -178
  267. package/src/queries/ownerQuery.ts +0 -32
  268. package/src/queries/poolAddressesQuery.ts +0 -340
  269. package/src/queries/portfolioQuery.ts +0 -1149
  270. package/src/queries/priceQuery.ts +0 -37
  271. package/src/queries/referralQuery.ts +0 -42
  272. package/src/queries/sCoinQuery.ts +0 -195
  273. package/src/queries/spoolQuery.ts +0 -542
  274. package/src/queries/supplyLimitQuery.ts +0 -32
  275. package/src/queries/switchboardQuery.ts +0 -65
  276. package/src/queries/vescaQuery.ts +0 -312
  277. package/src/queries/xOracleQuery.ts +0 -149
  278. package/src/types/constant/common.ts +0 -55
  279. package/src/types/query/loyaltyProgram.ts +0 -12
  280. package/src/types/query/vesca.ts +0 -27
  281. package/src/utils/index.ts +0 -7
  282. package/src/utils/indexer.ts +0 -47
  283. /package/src/{models → datasources}/rateLimiter.ts +0 -0
@@ -1,142 +0,0 @@
1
- import { Transaction } from '@mysten/sui/transactions';
2
- import { SuiTxBlock as SuiKitTxBlock } from '@scallop-io/sui-kit';
3
- import { ScallopBuilder } from 'src/models/index.js';
4
- import {
5
- GenerateLoyaltyProgramNormalMethod,
6
- GenerateLoyaltyProgramQuickMethod,
7
- LoyaltyProgramTxBlock,
8
- ScallopTxBlock,
9
- SuiTxBlockWithLoyaltyProgramNormalMethods,
10
- } from 'src/types/index.js';
11
- import { requireSender } from 'src/utils/index.js';
12
-
13
- const generateLoyaltyProgramNormalMethod: GenerateLoyaltyProgramNormalMethod =
14
- ({ builder, txBlock }) => {
15
- const loyaltyProgramIds = {
16
- pkgId: builder.address.get('loyaltyProgram.id'),
17
- scaRewardPool: builder.address.get('loyaltyProgram.rewardPool'),
18
- };
19
-
20
- const veScaProgramIds = {
21
- object: builder.address.get('vesca.object'),
22
- protocolConfig: builder.address.get('vesca.config'),
23
- veScaTable: builder.address.get('vesca.table'),
24
- subsTable: builder.address.get('vesca.subsTable'),
25
- };
26
-
27
- const veScaLoyaltyProgramIds = {
28
- pkgId: builder.address.get('veScaLoyaltyProgram.id'),
29
- veScaRewardPool: builder.address.get(
30
- 'veScaLoyaltyProgram.veScaRewardPool'
31
- ),
32
- };
33
-
34
- return {
35
- claimLoyaltyRevenue: (veScaKey) => {
36
- return builder.moveCall(
37
- txBlock,
38
- `${loyaltyProgramIds.pkgId}::reward_pool::redeem_reward`,
39
- [loyaltyProgramIds.scaRewardPool, veScaKey]
40
- );
41
- },
42
- claimVeScaLoyaltyReward: (veScaKey) => {
43
- return builder.moveCall(
44
- txBlock,
45
- `${veScaLoyaltyProgramIds.pkgId}::ve_sca_reward::redeem_reward`,
46
- [
47
- veScaLoyaltyProgramIds.veScaRewardPool,
48
- veScaKey,
49
- veScaProgramIds.protocolConfig,
50
- veScaProgramIds.veScaTable,
51
- veScaProgramIds.subsTable,
52
- ]
53
- );
54
- },
55
- };
56
- };
57
-
58
- const generateLoyaltyProgramQuickMethod: GenerateLoyaltyProgramQuickMethod = ({
59
- builder,
60
- txBlock,
61
- }) => {
62
- return {
63
- claimLoyaltyRevenueQuick: async (veScaKey) => {
64
- veScaKey = veScaKey ?? (await builder.query.getVeScas())[0]?.keyId;
65
- const sender = requireSender(txBlock);
66
- if (!veScaKey) throw new Error(`No veScaKey found for user ${sender}`);
67
-
68
- // claim the pending reward
69
- const rewardCoin = txBlock.claimLoyaltyRevenue(veScaKey);
70
-
71
- // get existing sca coin to merge with
72
- const scaCoinType = builder.constants.coinTypes.sca;
73
- if (!scaCoinType) throw new Error('Coin type sca not found');
74
-
75
- await builder.utils.mergeSimilarCoins(
76
- txBlock,
77
- rewardCoin,
78
- scaCoinType,
79
- requireSender(txBlock)
80
- );
81
- txBlock.transferObjects([rewardCoin], sender);
82
- },
83
- claimVeScaLoyaltyRewardQuick: async (veScaKey) => {
84
- veScaKey = veScaKey ?? (await builder.query.getVeScas())[0]?.keyId;
85
- const sender = requireSender(txBlock);
86
- if (!veScaKey) throw new Error(`No veScaKey found for user ${sender}`);
87
-
88
- // claim the pending reward
89
- const rewardVeScaKey = txBlock.claimVeScaLoyaltyReward(veScaKey);
90
-
91
- // transfer the reward veSca key to the sender
92
- txBlock.transferObjects([rewardVeScaKey], sender);
93
- },
94
- };
95
- };
96
-
97
- /**
98
- * Create an enhanced transaction block instance for interaction with loyalty program modules of the Scallop contract.
99
- *
100
- * @param builder - Scallop builder instance.
101
- * @param initTxBlock - Scallop txBlock, txBlock created by SuiKit, or original transaction block.
102
- * @return Scallop loyalty program txBlock.
103
- */
104
- export const newLoyaltyProgramTxBlock = (
105
- builder: ScallopBuilder,
106
- initTxBlock?: ScallopTxBlock | SuiKitTxBlock | Transaction
107
- ) => {
108
- const txBlock =
109
- initTxBlock instanceof Transaction
110
- ? new SuiKitTxBlock(initTxBlock)
111
- : initTxBlock
112
- ? initTxBlock
113
- : new SuiKitTxBlock();
114
-
115
- const normalMethod = generateLoyaltyProgramNormalMethod({
116
- builder,
117
- txBlock,
118
- });
119
-
120
- const normalTxBlock = new Proxy(txBlock, {
121
- get: (target, prop) => {
122
- if (prop in normalMethod) {
123
- return Reflect.get(normalMethod, prop);
124
- }
125
- return Reflect.get(target, prop);
126
- },
127
- }) as SuiTxBlockWithLoyaltyProgramNormalMethods;
128
-
129
- const quickMethod = generateLoyaltyProgramQuickMethod({
130
- builder,
131
- txBlock: normalTxBlock,
132
- });
133
-
134
- return new Proxy(normalTxBlock, {
135
- get: (target, prop) => {
136
- if (prop in quickMethod) {
137
- return Reflect.get(quickMethod, prop);
138
- }
139
- return Reflect.get(target, prop);
140
- },
141
- }) as LoyaltyProgramTxBlock;
142
- };
@@ -1,192 +0,0 @@
1
- import { ScallopBuilder } from 'src/models/index.js';
2
- import { ScallopTxBlock } from 'src/types/index.js';
3
- import {
4
- SUI_CLOCK_OBJECT_ID,
5
- SuiTxBlock as SuiKitTxBlock,
6
- SuiObjectArg,
7
- Transaction,
8
- } from '@scallop-io/sui-kit';
9
- import {
10
- GenerateReferralNormalMethod,
11
- GenerateReferralQuickMethod,
12
- ReferralIds,
13
- ReferralTxBlock,
14
- SuiTxBlockWithReferralNormalMethods,
15
- } from 'src/types/builder/referral.js';
16
- import { requireSender } from 'src/utils/index.js';
17
-
18
- const generateReferralNormalMethod: GenerateReferralNormalMethod = ({
19
- builder,
20
- txBlock,
21
- }) => {
22
- const referralIds: ReferralIds = {
23
- referralPgkId: builder.address.get('referral.id'),
24
- referralBindings: builder.address.get('referral.referralBindings'),
25
- referralRevenuePool: builder.address.get('referral.referralRevenuePool'),
26
- authorizedWitnessList: builder.address.get(
27
- 'referral.authorizedWitnessList'
28
- ),
29
- referralTiers: builder.address.get('referral.referralTiers'),
30
- version: builder.address.get('referral.version'),
31
- };
32
-
33
- const veScaTable = builder.address.get('vesca.table');
34
- const clockObjectRef = txBlock.sharedObjectRef({
35
- objectId: SUI_CLOCK_OBJECT_ID,
36
- mutable: false,
37
- initialSharedVersion: '1',
38
- });
39
-
40
- return {
41
- bindToReferral: (veScaKeyId: string) => {
42
- builder.moveCall(
43
- txBlock,
44
- `${referralIds.referralPgkId}::referral_bindings::bind_ve_sca_referrer`,
45
- [
46
- referralIds.referralBindings,
47
- txBlock.pure.id(veScaKeyId),
48
- veScaTable,
49
- clockObjectRef,
50
- ],
51
- []
52
- );
53
- },
54
- claimReferralTicket: (poolCoinName: string) => {
55
- const coinType = builder.utils.parseCoinType(poolCoinName);
56
- return builder.moveCall(
57
- txBlock,
58
- `${referralIds.referralPgkId}::scallop_referral_program::claim_ve_sca_referral_ticket`,
59
- [
60
- referralIds.version,
61
- veScaTable,
62
- referralIds.referralBindings,
63
- referralIds.authorizedWitnessList,
64
- referralIds.referralTiers,
65
- clockObjectRef,
66
- ],
67
- [coinType]
68
- );
69
- },
70
- burnReferralTicket: (ticket: SuiObjectArg, poolCoinName: string) => {
71
- const coinType = builder.utils.parseCoinType(poolCoinName);
72
- builder.moveCall(
73
- txBlock,
74
- `${referralIds.referralPgkId}::scallop_referral_program::burn_ve_sca_referral_ticket`,
75
- [
76
- referralIds.version,
77
- ticket,
78
- referralIds.referralRevenuePool,
79
- clockObjectRef,
80
- ],
81
- [coinType]
82
- );
83
- },
84
- claimReferralRevenue: (veScaKey: SuiObjectArg, poolCoinName: string) => {
85
- const coinType = builder.utils.parseCoinType(poolCoinName);
86
- return builder.moveCall(
87
- txBlock,
88
- `${referralIds.referralPgkId}::referral_revenue_pool::claim_revenue_with_ve_sca_key`,
89
- [
90
- referralIds.version,
91
- referralIds.referralRevenuePool,
92
- veScaKey,
93
- clockObjectRef,
94
- ],
95
- [coinType]
96
- );
97
- },
98
- unbindReferral: () => {
99
- return builder.moveCall(
100
- txBlock,
101
- `${referralIds.referralPgkId}::referral_bindings::unbind_ve_sca_referrer`,
102
- [referralIds.referralBindings]
103
- );
104
- },
105
- };
106
- };
107
-
108
- const generateReferralQuickMethod: GenerateReferralQuickMethod = ({
109
- builder,
110
- txBlock,
111
- }) => {
112
- return {
113
- claimReferralRevenueQuick: async (
114
- veScaKey: SuiObjectArg,
115
- coinNames: string[] = [...builder.constants.whitelist.lending]
116
- ) => {
117
- const sender = requireSender(txBlock);
118
- const objToTransfer: SuiObjectArg[] = [];
119
- for (const coinName of coinNames) {
120
- if (coinName === 'sui') {
121
- const rewardCoin = txBlock.claimReferralRevenue(veScaKey, coinName);
122
- objToTransfer.push(rewardCoin);
123
- } else {
124
- const rewardCoin = txBlock.claimReferralRevenue(veScaKey, coinName);
125
- try {
126
- // get the matching user coin if exists
127
- const coins = await builder.suiKit.suiInteractor.selectCoins(
128
- sender,
129
- Infinity,
130
- builder.utils.parseCoinType(coinName)
131
- );
132
- txBlock.mergeCoins(rewardCoin, coins.slice(0, 500));
133
- } catch (_e) {
134
- // ignore
135
- } finally {
136
- objToTransfer.push(rewardCoin);
137
- }
138
- }
139
- }
140
- if (objToTransfer.length > 0) {
141
- txBlock.transferObjects(objToTransfer, sender);
142
- }
143
- },
144
- };
145
- };
146
-
147
- /**
148
- * Create an enhanced transaction block instance for interaction with borrow incentive modules of the Scallop contract.
149
- *
150
- * @param builder - Scallop builder instance.
151
- * @param initTxBlock - Scallop txBlock, txBlock created by SuiKit, or original transaction block.
152
- * @return Scallop referral txBlock.
153
- */
154
- export const newReferralTxBlock = (
155
- builder: ScallopBuilder,
156
- initTxBlock?: ScallopTxBlock | SuiKitTxBlock | Transaction
157
- ) => {
158
- const txBlock =
159
- initTxBlock instanceof Transaction
160
- ? new SuiKitTxBlock(initTxBlock)
161
- : initTxBlock
162
- ? initTxBlock
163
- : new SuiKitTxBlock();
164
-
165
- const normalMethod = generateReferralNormalMethod({
166
- builder,
167
- txBlock,
168
- });
169
-
170
- const normalTxBlock = new Proxy(txBlock, {
171
- get: (target, prop) => {
172
- if (prop in normalMethod) {
173
- return Reflect.get(normalMethod, prop);
174
- }
175
- return Reflect.get(target, prop);
176
- },
177
- }) as SuiTxBlockWithReferralNormalMethods;
178
-
179
- const quickMethod = generateReferralQuickMethod({
180
- builder,
181
- txBlock: normalTxBlock,
182
- });
183
-
184
- return new Proxy(normalTxBlock, {
185
- get: (target, prop) => {
186
- if (prop in quickMethod) {
187
- return Reflect.get(quickMethod, prop);
188
- }
189
- return Reflect.get(target, prop);
190
- },
191
- }) as ReferralTxBlock;
192
- };
@@ -1,124 +0,0 @@
1
- import { Transaction, SuiTxBlock as SuiKitTxBlock } from '@scallop-io/sui-kit';
2
- import { ScallopBuilder } from 'src/models/index.js';
3
- import {
4
- BaseScallopTxBlock,
5
- GenerateSCoinNormalMethod,
6
- GenerateSCoinQuickMethod,
7
- SCoinTxBlock,
8
- ScallopTxBlock,
9
- SuiTxBlockWithSCoinNormalMethods,
10
- sCoinPkgIds,
11
- } from 'src/types/index.js';
12
- import { requireSender } from 'src/utils/index.js';
13
-
14
- const generateSCoinNormalMethod: GenerateSCoinNormalMethod = ({
15
- builder,
16
- txBlock,
17
- }) => {
18
- const sCoinPkgIds: sCoinPkgIds = {
19
- pkgId: builder.address.get('scoin.id'),
20
- };
21
-
22
- return {
23
- mintSCoin: (marketCoinName, marketCoin) => {
24
- const sCoinType = builder.utils.parseSCoinType(marketCoinName);
25
- if (!sCoinType)
26
- throw new Error(`Invalid marketCoinName name: ${marketCoinName}`);
27
-
28
- return builder.moveCall(
29
- txBlock,
30
- `${sCoinPkgIds.pkgId}::s_coin_converter::mint_s_coin`,
31
- [builder.utils.getSCoinTreasury(marketCoinName), marketCoin],
32
- [sCoinType, builder.utils.parseUnderlyingSCoinType(marketCoinName)]
33
- );
34
- },
35
- burnSCoin: (sCoinName, sCoin) => {
36
- const sCoinType = builder.utils.parseSCoinType(sCoinName);
37
- if (!sCoinType) throw new Error(`Invalid sCoin name: ${sCoinName}`);
38
-
39
- return builder.moveCall(
40
- txBlock,
41
- `${sCoinPkgIds.pkgId}::s_coin_converter::burn_s_coin`,
42
- [builder.utils.getSCoinTreasury(sCoinName), sCoin],
43
- [sCoinType, builder.utils.parseUnderlyingSCoinType(sCoinName)]
44
- );
45
- },
46
- };
47
- };
48
-
49
- const generateSCoinQuickMethod: GenerateSCoinQuickMethod = ({
50
- builder,
51
- txBlock,
52
- }) => {
53
- return {
54
- mintSCoinQuick: async (marketCoinName, amount) => {
55
- const sender = requireSender(txBlock);
56
- const { leftCoin, takeCoin } = await builder.selectMarketCoin(
57
- txBlock,
58
- marketCoinName,
59
- amount,
60
- sender
61
- );
62
-
63
- txBlock.transferObjects([leftCoin], sender);
64
- return txBlock.mintSCoin(marketCoinName, takeCoin);
65
- },
66
- burnSCoinQuick: async (sCoinName, amount) => {
67
- const sender = requireSender(txBlock);
68
- const { leftCoin, takeCoin } = await builder.selectSCoin(
69
- txBlock,
70
- sCoinName,
71
- amount,
72
- sender
73
- );
74
-
75
- txBlock.transferObjects([leftCoin], sender);
76
- return txBlock.burnSCoin(sCoinName, takeCoin);
77
- },
78
- };
79
- };
80
-
81
- export const newSCoinTxBlock = (
82
- builder: ScallopBuilder,
83
- initTxBlock?:
84
- | ScallopTxBlock
85
- | SuiKitTxBlock
86
- | Transaction
87
- | BaseScallopTxBlock
88
- ) => {
89
- const txBlock =
90
- initTxBlock instanceof Transaction
91
- ? new SuiKitTxBlock(initTxBlock)
92
- : initTxBlock
93
- ? initTxBlock
94
- : new SuiKitTxBlock();
95
-
96
- const normalMethod = generateSCoinNormalMethod({
97
- builder,
98
- txBlock,
99
- });
100
-
101
- const normalTxBlock = new Proxy(txBlock, {
102
- get: (target, prop) => {
103
- if (prop in normalMethod) {
104
- return Reflect.get(normalMethod, prop);
105
- }
106
- return Reflect.get(target, prop);
107
- },
108
- }) as SuiTxBlockWithSCoinNormalMethods;
109
-
110
- const quickMethod = generateSCoinQuickMethod({
111
- builder,
112
- txBlock: normalTxBlock,
113
- });
114
-
115
- return new Proxy(normalTxBlock, {
116
- get: (target, prop) => {
117
- if (prop in quickMethod) {
118
- return Reflect.get(quickMethod, prop);
119
- }
120
-
121
- return Reflect.get(target, prop);
122
- },
123
- }) as SCoinTxBlock;
124
- };
package/src/index.ts DELETED
@@ -1,13 +0,0 @@
1
- export * from './constants/index.js';
2
- export {
3
- Scallop,
4
- ScallopConstants,
5
- ScallopAddress,
6
- ScallopBuilder,
7
- ScallopQuery,
8
- ScallopSuiKit,
9
- ScallopClient,
10
- ScallopIndexer,
11
- ScallopUtils,
12
- } from './models/index.js';
13
- export type * from './types/index.js';