@scallop-io/sui-scallop-sdk 2.2.2 → 2.3.0-lst-x-oracle-alpha.1
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/dist/address-Bp_gAUMw.d.ts +165 -0
- package/dist/chunk-4GSK5DO7.js +25 -0
- package/dist/chunk-B4M6FI47.mjs +5 -0
- package/dist/constants/index.d.mts +262 -0
- package/dist/constants/index.d.ts +262 -0
- package/dist/constants/index.js +86 -0
- package/dist/constants/index.mjs +5 -0
- package/dist/models/index.d.mts +393 -0
- package/dist/models/index.d.ts +393 -0
- package/dist/models/index.js +34 -0
- package/dist/models/index.mjs +16 -0
- package/dist/queryKeys-AaZqDYle.d.ts +43 -0
- package/dist/{index.d.mts → scallopUtils-Cxm9zldY.d.ts} +1748 -2586
- package/dist/types/index.d.mts +9 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.mjs +1 -0
- package/package.json +23 -11
- package/src/builders/borrowIncentiveBuilder.ts +2 -2
- package/src/builders/coreBuilder.ts +1 -1
- package/src/builders/index.ts +2 -2
- package/src/builders/oracles/error.ts +29 -0
- package/src/builders/oracles/index.ts +115 -363
- package/src/builders/oracles/oraclePackageRegistry.ts +323 -0
- package/src/builders/oracles/priceFeedUpdater.ts +112 -0
- package/src/builders/oracles/priceUpdateRequester.ts +50 -0
- package/src/builders/oracles/xOracleUpdateStrategy.ts +178 -0
- package/src/builders/oracles/xOracleUpdater.ts +160 -0
- package/src/builders/vescaBuilder.ts +2 -2
- package/src/constants/api.ts +2 -0
- package/src/constants/common.ts +0 -3
- package/src/constants/index.ts +2 -1
- package/src/constants/package.ts +14 -0
- package/src/constants/testAddress.ts +190 -105
- package/src/constants/xoracle.ts +8 -2
- package/src/models/scallopAddress.ts +24 -4
- package/src/models/scallopBuilder.ts +4 -4
- package/src/models/scallopClient.ts +1 -1
- package/src/models/scallopConstants.ts +2 -2
- package/src/models/scallopIndexer.ts +3 -2
- package/src/models/scallopQuery.ts +52 -36
- package/src/models/scallopQueryClient.ts +1 -1
- package/src/models/scallopSuiKit.ts +1 -1
- package/src/models/scallopUtils.ts +5 -8
- package/src/queries/borrowIncentiveQuery.ts +2 -3
- package/src/queries/coreQuery.ts +2 -3
- package/src/queries/index.ts +4 -3
- package/src/queries/loyaltyProgramQuery.ts +1 -1
- package/src/queries/portfolioQuery.ts +13 -13
- package/src/queries/sCoinQuery.ts +2 -2
- package/src/queries/spoolQuery.ts +8 -8
- package/src/queries/vescaQuery.ts +2 -2
- package/src/queries/xOracleQuery.ts +20 -3
- package/src/types/address.ts +85 -47
- package/src/types/constant/index.ts +2 -1
- package/src/types/constant/package.ts +3 -0
- package/src/types/constant/xOracle.ts +10 -7
- package/src/types/query/index.ts +0 -1
- package/src/utils/builder.ts +1 -1
- package/src/utils/index.ts +2 -2
- package/src/utils/query.ts +6 -6
- package/src/utils/util.ts +1 -1
- package/dist/index.d.ts +0 -3242
- package/dist/index.js +0 -49
- package/dist/index.mjs +0 -15
- package/src/builders/oracles/pyth.ts +0 -44
- package/src/index.ts +0 -13
- package/src/queries/ownerQuery.ts +0 -32
- package/src/types/constant/enum.ts +0 -64
- 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,
|
package/src/constants/common.ts
CHANGED
package/src/constants/index.ts
CHANGED
|
@@ -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';
|