@scallop-io/sui-scallop-sdk 2.2.3-pyth-sponsored-transaction-alpha.1 → 2.3.0-lst-x-oracle-alpha.2

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 (74) hide show
  1. package/dist/address-CW2IpaLn.d.ts +165 -0
  2. package/dist/chunk-E3URAUAC.js +25 -0
  3. package/dist/chunk-YA77R5GT.mjs +5 -0
  4. package/dist/constants/index.d.mts +262 -0
  5. package/dist/constants/index.d.ts +262 -0
  6. package/dist/constants/index.js +86 -0
  7. package/dist/constants/index.mjs +5 -0
  8. package/dist/index.d.mts +11 -3242
  9. package/dist/index.d.ts +11 -3242
  10. package/dist/index.js +0 -47
  11. package/dist/index.mjs +0 -14
  12. package/dist/models/index.d.mts +393 -0
  13. package/dist/models/index.d.ts +393 -0
  14. package/dist/models/index.js +34 -0
  15. package/dist/models/index.mjs +16 -0
  16. package/dist/queryKeys-AaZqDYle.d.ts +43 -0
  17. package/dist/scallopUtils-BZLZd2z8.d.ts +2404 -0
  18. package/dist/types/index.d.mts +9 -0
  19. package/dist/types/index.d.ts +9 -0
  20. package/dist/types/index.js +2 -0
  21. package/dist/types/index.mjs +1 -0
  22. package/package.json +31 -4
  23. package/src/builders/borrowIncentiveBuilder.ts +2 -2
  24. package/src/builders/coreBuilder.ts +5 -14
  25. package/src/builders/index.ts +2 -2
  26. package/src/builders/oracles/error.ts +29 -0
  27. package/src/builders/oracles/index.ts +114 -365
  28. package/src/builders/oracles/oraclePackageRegistry.ts +323 -0
  29. package/src/builders/oracles/priceFeedUpdater.ts +112 -0
  30. package/src/builders/oracles/priceUpdateRequester.ts +50 -0
  31. package/src/builders/oracles/xOracleUpdateStrategy.ts +178 -0
  32. package/src/builders/oracles/xOracleUpdater.ts +160 -0
  33. package/src/builders/vescaBuilder.ts +2 -2
  34. package/src/constants/api.ts +2 -0
  35. package/src/constants/common.ts +0 -3
  36. package/src/constants/index.ts +2 -1
  37. package/src/constants/package.ts +14 -0
  38. package/src/constants/testAddress.ts +190 -105
  39. package/src/constants/xoracle.ts +8 -2
  40. package/src/index.ts +2 -12
  41. package/src/models/index.ts +2 -1
  42. package/src/models/interface.ts +6 -6
  43. package/src/models/scallopAddress.ts +24 -4
  44. package/src/models/scallopBuilder.ts +4 -4
  45. package/src/models/scallopClient.ts +1 -1
  46. package/src/models/scallopConstants.ts +2 -2
  47. package/src/models/scallopIndexer.ts +3 -2
  48. package/src/models/scallopQuery.ts +52 -36
  49. package/src/models/scallopQueryClient.ts +1 -1
  50. package/src/models/scallopSuiKit.ts +1 -1
  51. package/src/models/scallopUtils.ts +5 -8
  52. package/src/queries/borrowIncentiveQuery.ts +2 -3
  53. package/src/queries/coreQuery.ts +2 -3
  54. package/src/queries/index.ts +4 -3
  55. package/src/queries/loyaltyProgramQuery.ts +1 -1
  56. package/src/queries/portfolioQuery.ts +13 -13
  57. package/src/queries/sCoinQuery.ts +2 -2
  58. package/src/queries/spoolQuery.ts +8 -8
  59. package/src/queries/vescaQuery.ts +2 -2
  60. package/src/queries/xOracleQuery.ts +20 -3
  61. package/src/types/address.ts +85 -47
  62. package/src/types/builder/core.ts +2 -4
  63. package/src/types/constant/index.ts +2 -1
  64. package/src/types/constant/package.ts +3 -0
  65. package/src/types/constant/xOracle.ts +10 -7
  66. package/src/types/query/index.ts +0 -1
  67. package/src/utils/builder.ts +1 -1
  68. package/src/utils/index.ts +2 -2
  69. package/src/utils/query.ts +6 -6
  70. package/src/utils/util.ts +1 -1
  71. package/src/builders/oracles/pyth.ts +0 -52
  72. package/src/queries/ownerQuery.ts +0 -32
  73. package/src/types/constant/enum.ts +0 -64
  74. package/src/types/query/sCoin.ts +0 -1
@@ -0,0 +1,160 @@
1
+ import { SuiTxBlock, TransactionArgument } from '@scallop-io/sui-kit';
2
+ import { SupportOracleType, xOracleRuleType } from 'src/types';
3
+ import { SUPPORT_SUI_LST } from 'src/constants/xoracle';
4
+ import { IOraclePackageRegistry } from './oraclePackageRegistry';
5
+ import {
6
+ IXOracleUpdateStrategy,
7
+ PythDefaultUpdateStrategy,
8
+ PythSuiLstUpdateStrategy,
9
+ SupraDefaultUpdateStrategy,
10
+ SwitchboardDefaultUpdateStrategy,
11
+ } from './xOracleUpdateStrategy';
12
+ import { UnsupportedLstOracleError } from './error';
13
+
14
+ export interface IXOracleUpdater<
15
+ T extends SupportOracleType = SupportOracleType,
16
+ > {
17
+ oracleName: T; // e.g. 'pyth', 'supra', 'switchboard'
18
+ updateXOracle(
19
+ coinName: string,
20
+ rule: xOracleRuleType,
21
+ request: TransactionArgument
22
+ ): void;
23
+ }
24
+
25
+ abstract class BaseXOracleUpdater<
26
+ T extends SupportOracleType = SupportOracleType,
27
+ > implements IXOracleUpdater
28
+ {
29
+ protected strategies: Map<string, IXOracleUpdateStrategy<T>>;
30
+ abstract readonly oracleName: T;
31
+
32
+ constructor(
33
+ protected readonly tx: SuiTxBlock,
34
+ protected readonly registry: IOraclePackageRegistry<T>,
35
+ listStrategies: Record<string, IXOracleUpdateStrategy<T>>
36
+ ) {
37
+ this.strategies = new Map(Object.entries(listStrategies));
38
+ }
39
+
40
+ abstract updateXOracle(
41
+ coinName: string,
42
+ rule: xOracleRuleType,
43
+ request: TransactionArgument
44
+ ): void;
45
+ }
46
+
47
+ class PythXOracleUpdater extends BaseXOracleUpdater<'pyth'> {
48
+ readonly oracleName = 'pyth';
49
+ protected readonly SUPPORT_SUI_LST_SET: Set<string> = new Set(
50
+ SUPPORT_SUI_LST
51
+ );
52
+
53
+ constructor(tx: SuiTxBlock, registry: IOraclePackageRegistry<'pyth'>) {
54
+ super(tx, registry, {
55
+ default: new PythDefaultUpdateStrategy(registry),
56
+ sui_lst: new PythSuiLstUpdateStrategy(registry),
57
+ });
58
+ }
59
+
60
+ private resolveStrategy(
61
+ coinName: string
62
+ ): IXOracleUpdateStrategy<typeof this.oracleName> {
63
+ // decide which key to look up in this.strategies
64
+ let key: string;
65
+
66
+ if (this.SUPPORT_SUI_LST_SET.has(coinName)) {
67
+ key = 'sui_lst';
68
+ }
69
+ // else if (this.WALRUS_LST_SET.has(coinName)) {
70
+ // key = 'walrus_lst';
71
+ // }
72
+ else {
73
+ key = 'default';
74
+ }
75
+
76
+ const strat = this.strategies.get(key);
77
+ if (!strat) {
78
+ // guard if you forgot to register default or list strategies
79
+ throw new UnsupportedLstOracleError(coinName, this.oracleName);
80
+ }
81
+
82
+ return strat as IXOracleUpdateStrategy<typeof this.oracleName>;
83
+ }
84
+
85
+ updateXOracle(
86
+ coinName: string,
87
+ rule: xOracleRuleType,
88
+ request: TransactionArgument
89
+ ): void {
90
+ const strategy = this.resolveStrategy(coinName);
91
+ strategy.updatePrice(this.tx, request, coinName, rule);
92
+ }
93
+ }
94
+
95
+ class SupraXOracleUpdater extends BaseXOracleUpdater<'supra'> {
96
+ readonly oracleName = 'supra';
97
+
98
+ constructor(tx: SuiTxBlock, registry: IOraclePackageRegistry<'supra'>) {
99
+ super(tx, registry, {
100
+ default: new SupraDefaultUpdateStrategy(registry), // Placeholder, implement Supra strategy
101
+ });
102
+ }
103
+
104
+ updateXOracle(
105
+ coinName: string,
106
+ rule: xOracleRuleType,
107
+ request: TransactionArgument
108
+ ): void {
109
+ const stragtegy = this.strategies.get('default');
110
+ stragtegy?.updatePrice(this.tx, request, coinName, rule);
111
+ }
112
+ }
113
+
114
+ class SwitchboardXOracleUpdater extends BaseXOracleUpdater<'switchboard'> {
115
+ readonly oracleName = 'switchboard';
116
+ constructor(tx: SuiTxBlock, registry: IOraclePackageRegistry<'switchboard'>) {
117
+ super(tx, registry, {
118
+ // Placeholder, implement Switchboard strategy
119
+ default: new SwitchboardDefaultUpdateStrategy(registry),
120
+ });
121
+ }
122
+
123
+ updateXOracle(
124
+ coinName: string,
125
+ rule: xOracleRuleType,
126
+ request: TransactionArgument
127
+ ): void {
128
+ const stragtegy = this.strategies.get('default');
129
+ stragtegy?.updatePrice(this.tx, request, coinName, rule);
130
+ }
131
+ }
132
+
133
+ export const createXOracleUpdater = (
134
+ tx: SuiTxBlock,
135
+ registry: IOraclePackageRegistry
136
+ ) => {
137
+ const oracleType = registry.oracleName;
138
+ switch (oracleType) {
139
+ case 'pyth': {
140
+ return new PythXOracleUpdater(
141
+ tx,
142
+ registry as IOraclePackageRegistry<'pyth'>
143
+ );
144
+ }
145
+ case 'supra': {
146
+ return new SupraXOracleUpdater(
147
+ tx,
148
+ registry as IOraclePackageRegistry<'supra'>
149
+ );
150
+ }
151
+ case 'switchboard': {
152
+ return new SwitchboardXOracleUpdater(
153
+ tx,
154
+ registry as IOraclePackageRegistry<'switchboard'>
155
+ );
156
+ }
157
+ default:
158
+ throw new Error(`Unsupported oracle type: ${oracleType}`);
159
+ }
160
+ };
@@ -4,9 +4,9 @@ import {
4
4
  Transaction,
5
5
  SuiTxBlock as SuiKitTxBlock,
6
6
  } from '@scallop-io/sui-kit';
7
- import { SCA_COIN_TYPE } from 'src/constants';
7
+ import { SCA_COIN_TYPE } from 'src/constants/common';
8
8
  import { ScallopBuilder } from 'src/models';
9
- import { getVeSca, getVeScas } from 'src/queries';
9
+ import { getVeSca, getVeScas } from 'src/queries/vescaQuery';
10
10
  import {
11
11
  requireSender,
12
12
  checkLockSca,
@@ -0,0 +1,2 @@
1
+ export const API_BASE_URL = 'https://sui.apis.scallop.io' as const;
2
+ export const SDK_API_BASE_URL = 'https://sdk.api.scallop.io' as const;
@@ -1,6 +1,3 @@
1
- export const API_BASE_URL = 'https://sui.apis.scallop.io' as const;
2
- export const SDK_API_BASE_URL = 'https://sdk.api.scallop.io' as const;
3
-
4
1
  export const IS_VE_SCA_TEST: boolean = false;
5
2
  export const USE_TEST_ADDRESS: boolean = false;
6
3
 
@@ -1,8 +1,9 @@
1
+ export * from './api';
1
2
  export * from './cache';
2
3
  export * from './common';
4
+ export * from './package';
3
5
  export * from './queryKeys';
4
6
  export * from './rpc';
5
7
  export * from './testAddress';
6
8
  export * from './vesca';
7
- export * from './testAddress';
8
9
  export * from './xoracle';
@@ -0,0 +1,14 @@
1
+ export const PACKAGE_NAMES = [
2
+ 'coinDecimalsRegistry',
3
+ 'math',
4
+ 'whitelist',
5
+ 'x',
6
+ 'protocol',
7
+ 'protocolWhitelist',
8
+ 'query',
9
+ 'supra',
10
+ 'pyth',
11
+ 'switchboard',
12
+ 'xOracle',
13
+ 'testCoin',
14
+ ] as const;