@scallop-io/sui-scallop-sdk 0.47.3 → 0.47.5

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.
@@ -52,6 +52,7 @@ export declare class ScallopQuery {
52
52
  */
53
53
  getMarketPools(poolCoinNames?: SupportPoolCoins[], indexer?: boolean): Promise<{
54
54
  usdc?: import("../types").MarketPool | undefined;
55
+ sbeth?: import("../types").MarketPool | undefined;
55
56
  weth?: import("../types").MarketPool | undefined;
56
57
  wbtc?: import("../types").MarketPool | undefined;
57
58
  wusdc?: import("../types").MarketPool | undefined;
@@ -86,6 +87,7 @@ export declare class ScallopQuery {
86
87
  */
87
88
  getMarketCollaterals(collateralCoinNames?: SupportCollateralCoins[], indexer?: boolean): Promise<{
88
89
  usdc?: import("../types").MarketCollateral | undefined;
90
+ sbeth?: import("../types").MarketCollateral | undefined;
89
91
  weth?: import("../types").MarketCollateral | undefined;
90
92
  wbtc?: import("../types").MarketCollateral | undefined;
91
93
  wusdc?: import("../types").MarketCollateral | undefined;
@@ -281,6 +283,7 @@ export declare class ScallopQuery {
281
283
  */
282
284
  getBorrowIncentivePools(coinNames?: SupportBorrowIncentiveCoins[], indexer?: boolean): Promise<{
283
285
  usdc?: import("../types").BorrowIncentivePool | undefined;
286
+ sbeth?: import("../types").BorrowIncentivePool | undefined;
284
287
  weth?: import("../types").BorrowIncentivePool | undefined;
285
288
  wusdc?: import("../types").BorrowIncentivePool | undefined;
286
289
  wusdt?: import("../types").BorrowIncentivePool | undefined;
@@ -299,6 +302,7 @@ export declare class ScallopQuery {
299
302
  */
300
303
  getBorrowIncentiveAccounts(obligationId: string, coinNames?: SupportBorrowIncentiveCoins[]): Promise<{
301
304
  usdc?: import("../types").ParsedBorrowIncentiveAccountData | undefined;
305
+ sbeth?: import("../types").ParsedBorrowIncentiveAccountData | undefined;
302
306
  weth?: import("../types").ParsedBorrowIncentiveAccountData | undefined;
303
307
  wusdc?: import("../types").ParsedBorrowIncentiveAccountData | undefined;
304
308
  wusdt?: import("../types").ParsedBorrowIncentiveAccountData | undefined;
@@ -318,6 +322,7 @@ export declare class ScallopQuery {
318
322
  */
319
323
  getLendings(poolCoinNames?: SupportPoolCoins[], ownerAddress?: string, indexer?: boolean): Promise<{
320
324
  usdc?: import("../types").Lending | undefined;
325
+ sbeth?: import("../types").Lending | undefined;
321
326
  weth?: import("../types").Lending | undefined;
322
327
  wbtc?: import("../types").Lending | undefined;
323
328
  wusdc?: import("../types").Lending | undefined;
@@ -386,7 +391,10 @@ export declare class ScallopQuery {
386
391
  * @param walletAddress
387
392
  * @returns array of veSca
388
393
  */
389
- getVeScas(walletAddress?: string): Promise<import("../types").Vesca[]>;
394
+ getVeScas({ walletAddress, excludeEmpty, }?: {
395
+ walletAddress?: string;
396
+ excludeEmpty?: boolean;
397
+ }): Promise<import("../types").Vesca[]>;
390
398
  /**
391
399
  * Get total vesca treasury with movecall
392
400
  * @returns Promise<string | undefined>
@@ -429,7 +437,7 @@ export declare class ScallopQuery {
429
437
  * @param ownerAddress - The owner address.
430
438
  * @return All market sCoin amounts.
431
439
  */
432
- getSCoinAmounts(sCoinNames?: SupportSCoin[], ownerAddress?: string): Promise<import("../types").OptionalKeys<Record<"susdc" | "sweth" | "ssui" | "swusdc" | "swusdt" | "scetus" | "safsui" | "shasui" | "svsui" | "ssca" | "swsol" | "swbtc", number>>>;
440
+ getSCoinAmounts(sCoinNames?: SupportSCoin[], ownerAddress?: string): Promise<import("../types").OptionalKeys<Record<"susdc" | "sweth" | "ssui" | "swusdc" | "swusdt" | "scetus" | "safsui" | "shasui" | "svsui" | "ssbeth" | "ssca" | "swsol" | "swbtc", number>>>;
433
441
  /**
434
442
  * Get sCoin amount.
435
443
  *
@@ -444,7 +452,7 @@ export declare class ScallopQuery {
444
452
  * @returns
445
453
  */
446
454
  getSCoinSwapRate(fromSCoin: SupportSCoin, toSCoin: SupportSCoin): Promise<number>;
447
- getFlashLoanFees(assetCoinNames?: SupportAssetCoins[]): Promise<Record<"usdc" | "weth" | "wbtc" | "wusdc" | "wusdt" | "sui" | "wapt" | "wsol" | "cetus" | "afsui" | "hasui" | "vsui" | "sca", number>>;
455
+ getFlashLoanFees(assetCoinNames?: SupportAssetCoins[]): Promise<Record<"usdc" | "sbeth" | "weth" | "wbtc" | "wusdc" | "wusdt" | "sui" | "wapt" | "wsol" | "cetus" | "afsui" | "hasui" | "vsui" | "sca", number>>;
448
456
  /**
449
457
  * Get supply limit of supply pool
450
458
  */
@@ -1,7 +1,7 @@
1
1
  import { SuiKit } from '@scallop-io/sui-kit';
2
2
  import { ScallopAddress } from './scallopAddress';
3
3
  import { ScallopCache } from './scallopCache';
4
- import type { ScallopUtilsParams, SupportCoins, SupportAssetCoins, SupportMarketCoins, SupportStakeMarketCoins, SupportBorrowIncentiveCoins, CoinWrappedType, SupportSCoin, ScallopUtilsInstanceParams } from '../types';
4
+ import type { ScallopUtilsParams, SupportCoins, SupportAssetCoins, SupportMarketCoins, SupportStakeMarketCoins, SupportBorrowIncentiveCoins, CoinWrappedType, SupportSCoin, ScallopUtilsInstanceParams, SupportSuiBridgeCoins, SupportWormholeCoins } from '../types';
5
5
  import type { SuiAddressArg, SuiTxArg, SuiTxBlock } from '@scallop-io/sui-kit';
6
6
  /**
7
7
  * @description
@@ -24,6 +24,8 @@ export declare class ScallopUtils {
24
24
  walletAddress: string;
25
25
  private _priceMap;
26
26
  constructor(params: ScallopUtilsParams, instance?: ScallopUtilsInstanceParams);
27
+ isSuiBridgeAsset(coinName: any): coinName is SupportSuiBridgeCoins;
28
+ isWormholeAsset(coinName: any): coinName is SupportWormholeCoins;
27
29
  /**
28
30
  * Request the scallop API to initialize data.
29
31
  *
@@ -97,7 +99,7 @@ export declare class ScallopUtils {
97
99
  parseCoinNameFromType<T extends SupportMarketCoins>(coinType: string): T extends SupportMarketCoins ? T : SupportMarketCoins;
98
100
  parseCoinNameFromType<T extends SupportCoins>(coinType: string): T extends SupportCoins ? T : SupportCoins;
99
101
  /**
100
- * Convert marke coin name to coin name.
102
+ * Convert market coin name to coin name.
101
103
  *
102
104
  * @param marketCoinName - Specific support market coin name.
103
105
  * @return Coin Name.
@@ -16,6 +16,7 @@ export declare const queryBorrowIncentivePools: (address: ScallopAddress) => Pro
16
16
  */
17
17
  export declare const getBorrowIncentivePools: (query: ScallopQuery, borrowIncentiveCoinNames?: SupportBorrowIncentiveCoins[], indexer?: boolean) => Promise<{
18
18
  usdc?: BorrowIncentivePool | undefined;
19
+ sbeth?: BorrowIncentivePool | undefined;
19
20
  weth?: BorrowIncentivePool | undefined;
20
21
  wusdc?: BorrowIncentivePool | undefined;
21
22
  wusdt?: BorrowIncentivePool | undefined;
@@ -36,6 +37,7 @@ export declare const queryBorrowIncentiveAccounts: ({ utils, }: {
36
37
  utils: ScallopUtils;
37
38
  }, obligationId: string, borrowIncentiveCoinNames?: SupportBorrowIncentiveCoins[]) => Promise<{
38
39
  usdc?: import("../types").ParsedBorrowIncentiveAccountData | undefined;
40
+ sbeth?: import("../types").ParsedBorrowIncentiveAccountData | undefined;
39
41
  weth?: import("../types").ParsedBorrowIncentiveAccountData | undefined;
40
42
  wusdc?: import("../types").ParsedBorrowIncentiveAccountData | undefined;
41
43
  wusdt?: import("../types").ParsedBorrowIncentiveAccountData | undefined;
@@ -27,6 +27,7 @@ export declare const queryMarket: (query: ScallopQuery, indexer?: boolean) => Pr
27
27
  */
28
28
  export declare const getMarketPools: (query: ScallopQuery, poolCoinNames?: SupportPoolCoins[], indexer?: boolean) => Promise<{
29
29
  usdc?: MarketPool | undefined;
30
+ sbeth?: MarketPool | undefined;
30
31
  weth?: MarketPool | undefined;
31
32
  wbtc?: MarketPool | undefined;
32
33
  wusdc?: MarketPool | undefined;
@@ -65,6 +66,7 @@ export declare const getMarketPool: (query: ScallopQuery, poolCoinName: SupportP
65
66
  */
66
67
  export declare const getMarketCollaterals: (query: ScallopQuery, collateralCoinNames?: SupportCollateralCoins[], indexer?: boolean) => Promise<{
67
68
  usdc?: MarketCollateral | undefined;
69
+ sbeth?: MarketCollateral | undefined;
68
70
  weth?: MarketCollateral | undefined;
69
71
  wbtc?: MarketCollateral | undefined;
70
72
  wusdc?: MarketCollateral | undefined;
@@ -11,6 +11,7 @@ import type { Market, SupportPoolCoins, MarketPool, Spool, StakeAccount, Lending
11
11
  */
12
12
  export declare const getLendings: (query: ScallopQuery, poolCoinNames?: SupportPoolCoins[], ownerAddress?: string, indexer?: boolean) => Promise<{
13
13
  usdc?: Lending | undefined;
14
+ sbeth?: Lending | undefined;
14
15
  weth?: Lending | undefined;
15
16
  wbtc?: Lending | undefined;
16
17
  wusdc?: Lending | undefined;
@@ -19,7 +19,7 @@ export declare const getSCoinTotalSupply: ({ utils, }: {
19
19
  */
20
20
  export declare const getSCoinAmounts: ({ utils, }: {
21
21
  utils: ScallopUtils;
22
- }, sCoinNames?: SupportSCoin[], ownerAddress?: string) => Promise<OptionalKeys<Record<"susdc" | "sweth" | "ssui" | "swusdc" | "swusdt" | "scetus" | "safsui" | "shasui" | "svsui" | "ssca" | "swsol" | "swbtc", number>>>;
22
+ }, sCoinNames?: SupportSCoin[], ownerAddress?: string) => Promise<OptionalKeys<Record<"susdc" | "sweth" | "ssui" | "swusdc" | "swusdt" | "scetus" | "safsui" | "shasui" | "svsui" | "ssbeth" | "ssca" | "swsol" | "swbtc", number>>>;
23
23
  /**
24
24
  * Query owned sCoin amount.
25
25
  *
@@ -18,7 +18,7 @@ export declare const getVescaKeys: (utils: ScallopUtils, ownerAddress?: string)
18
18
  */
19
19
  export declare const getVeScas: ({ utils, }: {
20
20
  utils: ScallopUtils;
21
- }, ownerAddress?: string) => Promise<Vesca[]>;
21
+ }, ownerAddress?: string, excludeEmpty?: boolean) => Promise<Vesca[]>;
22
22
  /**
23
23
  * Get veSca data.
24
24
  *
@@ -1,4 +1,4 @@
1
- import { SUPPORT_POOLS, SUPPORT_COLLATERALS, SUPPORT_ORACLES, SUPPORT_PACKAGES, SUPPORT_SPOOLS, SUPPORT_SPOOLS_REWARDS, SUPPORT_BORROW_INCENTIVE_POOLS, SUPPORT_BORROW_INCENTIVE_REWARDS, SUPPORT_SCOIN } from '../../constants';
1
+ import { SUPPORT_POOLS, SUPPORT_COLLATERALS, SUPPORT_ORACLES, SUPPORT_PACKAGES, SUPPORT_SPOOLS, SUPPORT_SPOOLS_REWARDS, SUPPORT_BORROW_INCENTIVE_POOLS, SUPPORT_BORROW_INCENTIVE_REWARDS, SUPPORT_SCOIN, SUPPORT_SUI_BRIDGE, SUPPORT_WORMHOLE } from '../../constants';
2
2
  type ParseMarketCoins<T extends string> = `s${T}`;
3
3
  type ParseCoins<T extends string> = T extends `s${infer R}` ? R : never;
4
4
  export type SupportCoins = SupportAssetCoins | SupportMarketCoins | SupportStakeMarketCoins | SupportSCoin;
@@ -7,6 +7,8 @@ export type SupportPoolCoins = (typeof SUPPORT_POOLS)[number];
7
7
  export type SupportCollateralCoins = (typeof SUPPORT_COLLATERALS)[number];
8
8
  export type SupportMarketCoins = ParseMarketCoins<SupportPoolCoins> | SupportStakeMarketCoins;
9
9
  export type SupportStakeMarketCoins = (typeof SUPPORT_SPOOLS)[number];
10
+ export type SupportSuiBridgeCoins = (typeof SUPPORT_SUI_BRIDGE)[number];
11
+ export type SupportWormholeCoins = (typeof SUPPORT_WORMHOLE)[number];
10
12
  export type SupportStakeCoins = Extract<SupportPoolCoins, ParseCoins<SupportStakeMarketCoins>>;
11
13
  export type SupportStakeRewardCoins = (typeof SUPPORT_SPOOLS_REWARDS)[number];
12
14
  export type SupportBorrowIncentiveCoins = (typeof SUPPORT_BORROW_INCENTIVE_POOLS)[number];
@@ -1,4 +1,4 @@
1
- import { SupportCoins, SupportAssetCoins, SupportMarketCoins, SupportStakeMarketCoins, SupportStakeRewardCoins, SupportBorrowIncentiveCoins, SupportBorrowIncentiveRewardCoins, SupportSCoin } from './common';
1
+ import { SupportCoins, SupportAssetCoins, SupportMarketCoins, SupportStakeMarketCoins, SupportStakeRewardCoins, SupportBorrowIncentiveCoins, SupportBorrowIncentiveRewardCoins, SupportSCoin, SupportSuiBridgeCoins } from './common';
2
2
  export type Coins = {
3
3
  [K in SupportCoins]: K;
4
4
  };
@@ -17,6 +17,9 @@ export type StakeMarketCoins = {
17
17
  export type StakeRewardCoins = {
18
18
  [key in SupportStakeMarketCoins]: SupportStakeRewardCoins;
19
19
  };
20
+ export type SuiBridgeCoins = {
21
+ [K in SupportSuiBridgeCoins]: K;
22
+ };
20
23
  export type BorrowIncentiveRewardCoins = {
21
24
  [key in SupportBorrowIncentiveCoins]: SupportBorrowIncentiveRewardCoins[];
22
25
  };
@@ -39,4 +42,7 @@ export type WormholeCoinIds = {
39
42
  export type VoloCoinIds = {
40
43
  [key in PickFromUnion<SupportAssetCoins, 'vsui'>]: string;
41
44
  };
45
+ export type SuiBridgedCoinPackageIds = {
46
+ [key in SupportSuiBridgeCoins]: string;
47
+ };
42
48
  export {};
@@ -1,7 +1,9 @@
1
1
  import type { ScallopAddress } from '../models';
2
2
  import type { SupportAssetCoins, SupportCoins, SupportMarketCoins } from '../types';
3
3
  export declare const isMarketCoin: (coinName: SupportCoins) => coinName is SupportMarketCoins;
4
- export declare const parseAssetSymbol: (coinName: SupportAssetCoins) => string;
4
+ export declare const isSuiBridgeAsset: (coinName: any) => coinName is "sbeth";
5
+ export declare const isWormholeAsset: (coinName: any) => coinName is "weth" | "wbtc" | "wusdc" | "wusdt" | "wapt" | "wsol";
6
+ export declare const parseAssetSymbol: (coinName: SupportCoins) => string;
5
7
  /**
6
8
  * Parse price from pyth price feed.
7
9
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scallop-io/sui-scallop-sdk",
3
- "version": "0.47.3",
3
+ "version": "0.47.5",
4
4
  "description": "Typescript sdk for interacting with Scallop contract on SUI",
5
5
  "keywords": [
6
6
  "sui",
@@ -32,6 +32,7 @@ export const OLD_BORROW_INCENTIVE_PROTOCOL_ID =
32
32
 
33
33
  export const SUPPORT_POOLS = [
34
34
  'usdc', // native USDC
35
+ 'sbeth', // native ETH
35
36
  'weth',
36
37
  'wbtc',
37
38
  'wusdc',
@@ -47,7 +48,8 @@ export const SUPPORT_POOLS = [
47
48
  ] as const;
48
49
 
49
50
  export const SUPPORT_COLLATERALS = [
50
- 'usdc',
51
+ 'usdc', // native USDC
52
+ 'sbeth', // native ETH
51
53
  'weth',
52
54
  'wbtc',
53
55
  'wusdc',
@@ -76,6 +78,7 @@ export const SUPPORT_SPOOLS = [
76
78
 
77
79
  export const SUPPORT_SCOIN = [
78
80
  'susdc',
81
+ 'ssbeth',
79
82
  'ssui',
80
83
  'swusdc',
81
84
  'swusdt',
@@ -89,6 +92,16 @@ export const SUPPORT_SCOIN = [
89
92
  'swbtc',
90
93
  ] as const;
91
94
 
95
+ export const SUPPORT_SUI_BRIDGE = ['sbeth'] as const;
96
+ export const SUPPORT_WORMHOLE = [
97
+ 'wusdc',
98
+ 'wusdt',
99
+ 'weth',
100
+ 'wbtc',
101
+ 'wapt',
102
+ 'wsol',
103
+ ] as const;
104
+
92
105
  export const SUPPORT_SPOOLS_REWARDS = ['sui'] as const;
93
106
 
94
107
  export const SUPPORT_BORROW_INCENTIVE_POOLS = [
@@ -99,6 +112,7 @@ export const SUPPORT_BORROW_INCENTIVE_POOLS = [
99
112
  'hasui',
100
113
  'vsui',
101
114
  'weth',
115
+ 'sbeth',
102
116
  'sca',
103
117
  'usdc',
104
118
  ] as const;
@@ -3,6 +3,7 @@ import { IS_VE_SCA_TEST } from './common';
3
3
 
4
4
  export const coinDecimals: types.SupportCoinDecimals = {
5
5
  usdc: 6,
6
+ sbeth: 8,
6
7
  weth: 8,
7
8
  wbtc: 8,
8
9
  wusdc: 6,
@@ -17,6 +18,7 @@ export const coinDecimals: types.SupportCoinDecimals = {
17
18
  sca: 9,
18
19
  susdc: 6,
19
20
  sweth: 8,
21
+ ssbeth: 8,
20
22
  swbtc: 8,
21
23
  swusdc: 6,
22
24
  swusdt: 6,
@@ -32,6 +34,7 @@ export const coinDecimals: types.SupportCoinDecimals = {
32
34
 
33
35
  export const assetCoins: types.AssetCoins = {
34
36
  usdc: 'usdc',
37
+ sbeth: 'sbeth',
35
38
  weth: 'weth',
36
39
  wbtc: 'wbtc',
37
40
  wusdc: 'wusdc',
@@ -48,6 +51,7 @@ export const assetCoins: types.AssetCoins = {
48
51
 
49
52
  export const marketCoins: types.MarketCoins = {
50
53
  susdc: 'susdc',
54
+ ssbeth: 'ssbeth',
51
55
  sweth: 'sweth',
52
56
  swbtc: 'swbtc',
53
57
  swusdc: 'swusdc',
@@ -64,6 +68,7 @@ export const marketCoins: types.MarketCoins = {
64
68
 
65
69
  export const sCoins: types.SCoins = {
66
70
  susdc: 'susdc',
71
+ ssbeth: 'ssbeth',
67
72
  sweth: 'sweth',
68
73
  swusdc: 'swusdc',
69
74
  swusdt: 'swusdt',
@@ -101,6 +106,10 @@ export const spoolRewardCoins: types.StakeRewardCoins = {
101
106
  susdc: 'sui',
102
107
  };
103
108
 
109
+ export const suiBridgeCoins: types.SuiBridgeCoins = {
110
+ sbeth: 'sbeth',
111
+ };
112
+
104
113
  export const borrowIncentiveRewardCoins: types.BorrowIncentiveRewardCoins = {
105
114
  usdc: ['sui', 'sca'],
106
115
  sui: ['sui', 'sca'],
@@ -111,11 +120,13 @@ export const borrowIncentiveRewardCoins: types.BorrowIncentiveRewardCoins = {
111
120
  hasui: ['sui'],
112
121
  vsui: ['sui'],
113
122
  weth: ['sui'],
123
+ sbeth: ['sui'],
114
124
  };
115
125
 
116
126
  export const coinIds: types.AssetCoinIds = {
117
127
  usdc: '0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7',
118
128
  sui: '0x0000000000000000000000000000000000000000000000000000000000000002',
129
+ sbeth: '0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29',
119
130
  weth: '0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5',
120
131
  wbtc: '0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881',
121
132
  wusdc: '0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf',
@@ -148,6 +159,8 @@ export const voloCoinIds: types.VoloCoinIds = {
148
159
  export const sCoinIds: types.SCoinIds = {
149
160
  susdc:
150
161
  '0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC',
162
+ ssbeth:
163
+ '0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH',
151
164
  ssui: '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI',
152
165
  scetus:
153
166
  '0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS',
@@ -1095,7 +1095,9 @@ export class ScallopClient {
1095
1095
  ): Promise<ScallopClientVeScaReturnType<S>> {
1096
1096
  // get all veSca keys
1097
1097
  const veScaKeys = (
1098
- (await this.query.getVeScas(this.walletAddress)) ?? []
1098
+ (await this.query.getVeScas({
1099
+ walletAddress: this.walletAddress,
1100
+ })) ?? []
1099
1101
  ).map(({ keyObject }) => keyObject);
1100
1102
  if (veScaKeys.length === 0) {
1101
1103
  throw new Error('No veSCA found in the wallet');
@@ -579,8 +579,14 @@ export class ScallopQuery {
579
579
  * @param walletAddress
580
580
  * @returns array of veSca
581
581
  */
582
- public async getVeScas(walletAddress: string = this.walletAddress) {
583
- return await getVeScas(this, walletAddress);
582
+ public async getVeScas({
583
+ walletAddress = this.walletAddress,
584
+ excludeEmpty = false,
585
+ }: {
586
+ walletAddress?: string;
587
+ excludeEmpty?: boolean;
588
+ } = {}) {
589
+ return await getVeScas(this, walletAddress, excludeEmpty);
584
590
  }
585
591
 
586
592
  /**
@@ -17,6 +17,7 @@ import {
17
17
  MAX_LOCK_DURATION,
18
18
  SUPPORT_SCOIN,
19
19
  sCoinIds,
20
+ suiBridgeCoins,
20
21
  } from '../constants';
21
22
  import { getPythPrice, queryObligation } from '../queries';
22
23
  import {
@@ -24,6 +25,8 @@ import {
24
25
  isMarketCoin,
25
26
  parseAssetSymbol,
26
27
  findClosestUnlockRound,
28
+ isSuiBridgeAsset,
29
+ isWormholeAsset,
27
30
  } from '../utils';
28
31
  import { PYTH_ENDPOINTS } from 'src/constants/pyth';
29
32
  import { ScallopCache } from './scallopCache';
@@ -40,6 +43,8 @@ import type {
40
43
  CoinWrappedType,
41
44
  SupportSCoin,
42
45
  ScallopUtilsInstanceParams,
46
+ SupportSuiBridgeCoins,
47
+ SupportWormholeCoins,
43
48
  } from '../types';
44
49
  import type { SuiAddressArg, SuiTxArg, SuiTxBlock } from '@scallop-io/sui-kit';
45
50
 
@@ -106,6 +111,14 @@ export class ScallopUtils {
106
111
  ? params.networkType === 'testnet'
107
112
  : false;
108
113
  }
114
+ // -------------- TYPE GUARDS --------------
115
+ public isSuiBridgeAsset(coinName: any): coinName is SupportSuiBridgeCoins {
116
+ return isSuiBridgeAsset(coinName);
117
+ }
118
+
119
+ public isWormholeAsset(coinName: any): coinName is SupportWormholeCoins {
120
+ return isWormholeAsset(coinName);
121
+ }
109
122
 
110
123
  /**
111
124
  * Request the scallop API to initialize data.
@@ -128,16 +141,7 @@ export class ScallopUtils {
128
141
  * @return Symbol string.
129
142
  */
130
143
  public parseSymbol(coinName: SupportCoins) {
131
- if (isMarketCoin(coinName)) {
132
- const assetCoinName = coinName
133
- .slice(1)
134
- .toLowerCase() as SupportAssetCoins;
135
- return (
136
- coinName.slice(0, 1).toLowerCase() + parseAssetSymbol(assetCoinName)
137
- );
138
- } else {
139
- return parseAssetSymbol(coinName);
140
- }
144
+ return parseAssetSymbol(coinName);
141
145
  }
142
146
 
143
147
  /**
@@ -173,10 +177,23 @@ export class ScallopUtils {
173
177
  const voloPackageIds = [
174
178
  this.address.get('core.coins.vsui.id') ?? voloCoinIds.vsui,
175
179
  ];
180
+
181
+ const suiBridgePackageIds = Object.values<SupportSuiBridgeCoins>(
182
+ suiBridgeCoins
183
+ ).reduce((curr, coinName) => {
184
+ curr.push(
185
+ this.address.get(`core.coins.${coinName}.id`) ?? coinIds[coinName]
186
+ );
187
+ return curr;
188
+ }, [] as string[]);
176
189
  if (wormHolePackageIds.includes(coinPackageId)) {
177
190
  return `${coinPackageId}::coin::COIN`;
178
191
  } else if (voloPackageIds.includes(coinPackageId)) {
179
192
  return `${coinPackageId}::cert::CERT`;
193
+ } else if (suiBridgePackageIds.includes(coinPackageId)) {
194
+ // handle sui bridge assets
195
+ const typeCoinName = coinName.slice(2);
196
+ return `${coinPackageId}::${typeCoinName}::${typeCoinName.toUpperCase()}`;
180
197
  } else {
181
198
  return `${coinPackageId}::${coinName}::${coinName.toUpperCase()}`;
182
199
  }
@@ -299,9 +316,20 @@ export class ScallopUtils {
299
316
  }::cert::CERT`]: 'vsui',
300
317
  };
301
318
 
319
+ const suiBridgeTypeMap = Object.values<SupportSuiBridgeCoins>(
320
+ suiBridgeCoins
321
+ ).reduce(
322
+ (curr, coinName) => {
323
+ curr[this.parseCoinType(coinName)] = coinName;
324
+ return curr;
325
+ },
326
+ {} as Record<string, SupportSuiBridgeCoins>
327
+ );
328
+
302
329
  const assetCoinName =
303
330
  wormHoleCoinTypeMap[coinType] ||
304
331
  voloCoinTypeMap[coinType] ||
332
+ suiBridgeTypeMap[coinType] ||
305
333
  (coinType.split('::')[2].toLowerCase() as SupportAssetCoins);
306
334
 
307
335
  return isMarketCoinType
@@ -310,7 +338,7 @@ export class ScallopUtils {
310
338
  }
311
339
 
312
340
  /**
313
- * Convert marke coin name to coin name.
341
+ * Convert market coin name to coin name.
314
342
  *
315
343
  * @param marketCoinName - Specific support market coin name.
316
344
  * @return Coin Name.
@@ -370,17 +398,19 @@ export class ScallopUtils {
370
398
  * return Coin wrapped type.
371
399
  */
372
400
  public getCoinWrappedType(assetCoinName: SupportAssetCoins): CoinWrappedType {
373
- return assetCoinName === 'wusdc' ||
374
- assetCoinName === 'wusdt' ||
375
- assetCoinName === 'weth' ||
376
- assetCoinName === 'wbtc' ||
377
- assetCoinName === 'wapt' ||
378
- assetCoinName === 'wsol'
379
- ? {
380
- from: 'Wormhole',
381
- type: 'Portal from Ethereum',
382
- }
383
- : undefined;
401
+ if (this.isSuiBridgeAsset(assetCoinName)) {
402
+ return {
403
+ from: 'Sui Bridge',
404
+ type: 'Asset from Sui Bridge',
405
+ };
406
+ } else if (this.isWormholeAsset(assetCoinName)) {
407
+ return {
408
+ from: 'Wormhole',
409
+ type: 'Portal from Ethereum',
410
+ };
411
+ }
412
+
413
+ return undefined;
384
414
  }
385
415
 
386
416
  /**
@@ -324,7 +324,6 @@ export const getMarketPool = async (
324
324
  if (marketObject.content && 'fields' in marketObject.content) {
325
325
  const fields = marketObject.content.fields as any;
326
326
  const coinType = query.utils.parseCoinType(poolCoinName);
327
-
328
327
  // Get balance sheet.
329
328
  const balanceSheetParentId =
330
329
  fields.vault.fields.balance_sheets.fields.table.fields.id.id;