@zebec-network/admin-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.
Files changed (68) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +730 -0
  3. package/dist/artifacts/abi/index.d.ts +161 -0
  4. package/dist/artifacts/abi/index.js +7 -0
  5. package/dist/artifacts/abi/token.json +350 -0
  6. package/dist/artifacts/abi/weth.json +153 -0
  7. package/dist/artifacts/abi/zebecCard.json +1229 -0
  8. package/dist/artifacts/index.d.ts +11 -0
  9. package/dist/artifacts/index.js +11 -0
  10. package/dist/artifacts/typechain-types/OdysseyZebecCard.d.ts +559 -0
  11. package/dist/artifacts/typechain-types/OdysseyZebecCard.js +1 -0
  12. package/dist/artifacts/typechain-types/Token.d.ts +149 -0
  13. package/dist/artifacts/typechain-types/Token.js +1 -0
  14. package/dist/artifacts/typechain-types/Weth.d.ts +179 -0
  15. package/dist/artifacts/typechain-types/Weth.js +1 -0
  16. package/dist/artifacts/typechain-types/ZebecCard.d.ts +723 -0
  17. package/dist/artifacts/typechain-types/ZebecCard.js +1 -0
  18. package/dist/artifacts/typechain-types/common.d.ts +50 -0
  19. package/dist/artifacts/typechain-types/common.js +1 -0
  20. package/dist/artifacts/typechain-types/factories/OdysseyZebecCard__factory.d.ts +735 -0
  21. package/dist/artifacts/typechain-types/factories/OdysseyZebecCard__factory.js +959 -0
  22. package/dist/artifacts/typechain-types/factories/Token__factory.d.ts +280 -0
  23. package/dist/artifacts/typechain-types/factories/Token__factory.js +374 -0
  24. package/dist/artifacts/typechain-types/factories/Weth__factory.d.ts +219 -0
  25. package/dist/artifacts/typechain-types/factories/Weth__factory.js +292 -0
  26. package/dist/artifacts/typechain-types/factories/ZebecCard__factory.d.ts +966 -0
  27. package/dist/artifacts/typechain-types/factories/ZebecCard__factory.js +1253 -0
  28. package/dist/artifacts/typechain-types/factories/index.d.ts +4 -0
  29. package/dist/artifacts/typechain-types/factories/index.js +7 -0
  30. package/dist/artifacts/typechain-types/index.d.ts +9 -0
  31. package/dist/artifacts/typechain-types/index.js +8 -0
  32. package/dist/artifacts/zebec_instant_card.d.ts +3683 -0
  33. package/dist/artifacts/zebec_instant_card.js +1 -0
  34. package/dist/artifacts/zebec_instant_card.json +2801 -0
  35. package/dist/artifacts/zebec_proxy_stream.d.ts +1933 -0
  36. package/dist/artifacts/zebec_proxy_stream.js +1 -0
  37. package/dist/artifacts/zebec_proxy_stream.json +1497 -0
  38. package/dist/artifacts/zebec_stake_v1.d.ts +1679 -0
  39. package/dist/artifacts/zebec_stake_v1.js +1 -0
  40. package/dist/artifacts/zebec_stake_v1.json +1255 -0
  41. package/dist/artifacts/zebec_stream.d.ts +1481 -0
  42. package/dist/artifacts/zebec_stream.js +1 -0
  43. package/dist/artifacts/zebec_stream.json +1243 -0
  44. package/dist/constants.d.ts +32 -0
  45. package/dist/constants.js +115 -0
  46. package/dist/index.d.ts +6 -0
  47. package/dist/index.js +6 -0
  48. package/dist/pda.d.ts +23 -0
  49. package/dist/pda.js +125 -0
  50. package/dist/services/evmCardService.d.ts +189 -0
  51. package/dist/services/evmCardService.js +322 -0
  52. package/dist/services/index.d.ts +6 -0
  53. package/dist/services/index.js +6 -0
  54. package/dist/services/proxyStreamService.d.ts +72 -0
  55. package/dist/services/proxyStreamService.js +302 -0
  56. package/dist/services/solanaCardV2Service.d.ts +50 -0
  57. package/dist/services/solanaCardV2Service.js +717 -0
  58. package/dist/services/stakingService.d.ts +39 -0
  59. package/dist/services/stakingService.js +265 -0
  60. package/dist/services/streamServices.d.ts +50 -0
  61. package/dist/services/streamServices.js +322 -0
  62. package/dist/services/suiCardService.d.ts +91 -0
  63. package/dist/services/suiCardService.js +487 -0
  64. package/dist/types.d.ts +433 -0
  65. package/dist/types.js +1 -0
  66. package/dist/utils.d.ts +5 -0
  67. package/dist/utils.js +39 -0
  68. package/package.json +57 -0
@@ -0,0 +1,322 @@
1
+ import { bpsToPercent, percentToBps } from "@zebec-network/core-utils";
2
+ import { ethers } from "ethers";
3
+ import { OdysseyZebecCard__factory, Token__factory, Weth__factory, ZebecCard__factory, } from "../artifacts/index.js";
4
+ import { DEFAULT_GAS_LIMIT, ODYSSEY_CHAIN_IDS, parseSupportedChain, USDC_ADDRESS, WETH_ADDRESS, ZEBEC_EVM_CARD_ADDRESS, } from "../constants.js";
5
+ export class ZebecCardService {
6
+ signer;
7
+ chainId;
8
+ zebecCard;
9
+ usdcToken;
10
+ weth;
11
+ /**
12
+ * Create instance of ZebecCardService.
13
+ * @param signer ethers signer
14
+ * @param chainId chain ID supported by sdk
15
+ */
16
+ constructor(signer, chainId) {
17
+ this.signer = signer;
18
+ this.chainId = chainId;
19
+ const chain = parseSupportedChain(chainId);
20
+ const zebecCardAddress = ZEBEC_EVM_CARD_ADDRESS[chain];
21
+ const usdcAddress = USDC_ADDRESS[chain];
22
+ const wethAddress = WETH_ADDRESS[chain];
23
+ this.zebecCard = ODYSSEY_CHAIN_IDS.includes(chainId)
24
+ ? OdysseyZebecCard__factory.connect(zebecCardAddress, signer)
25
+ : ZebecCard__factory.connect(zebecCardAddress, signer);
26
+ this.usdcToken = Token__factory.connect(usdcAddress, signer);
27
+ this.weth = Weth__factory.connect(wethAddress, signer);
28
+ }
29
+ /**
30
+ * Sets Native Fee in card config.
31
+ *
32
+ * Can only be invoked admin.
33
+ *
34
+ * @param params
35
+ * @returns
36
+ */
37
+ async setNativeFee(params) {
38
+ const feeInBps = BigInt(percentToBps(params.feeInPercent));
39
+ const overrides = {
40
+ ...params.overrides,
41
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
42
+ };
43
+ return this.zebecCard.setNativeFee(feeInBps, overrides);
44
+ }
45
+ /**
46
+ * Sets NonNative Fee in card config
47
+ *
48
+ * Can only be invoked admin.
49
+ *
50
+ * @param params
51
+ * @returns
52
+ */
53
+ async setNonNativeFee(params) {
54
+ const feeInBps = BigInt(percentToBps(params.feeInPercent));
55
+ const overrides = {
56
+ ...params.overrides,
57
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
58
+ };
59
+ return this.zebecCard.setNonNativeFee(feeInBps, overrides);
60
+ }
61
+ /**
62
+ * Sets Revenue Fee in card config
63
+ *
64
+ * Can only be invoked admin.
65
+ *
66
+ * @param params
67
+ * @returns
68
+ */
69
+ async setRevenueFee(params) {
70
+ const feeInBps = BigInt(percentToBps(params.feeInPercent));
71
+ const overrides = {
72
+ ...params.overrides,
73
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
74
+ };
75
+ return this.zebecCard.setRevenueFee(feeInBps, overrides);
76
+ }
77
+ /**
78
+ * Sets Revenue vault address in card config
79
+ *
80
+ * Can only be invoked admin.
81
+ *
82
+ * @param params
83
+ * @returns
84
+ */
85
+ async setRevenueVault(params) {
86
+ const overrides = {
87
+ ...params.overrides,
88
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
89
+ };
90
+ return this.zebecCard.setRevenueVault(params.vaultAddress, overrides);
91
+ }
92
+ /**
93
+ * Sets commission vault address in card config
94
+ *
95
+ * Can only be invoked admin.
96
+ *
97
+ * @param params
98
+ * @returns
99
+ */
100
+ async setCommissionVault(params) {
101
+ const overrides = {
102
+ ...params.overrides,
103
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT,
104
+ };
105
+ return this.zebecCard.setComissionVault(params.vaultAddress, overrides);
106
+ }
107
+ /**
108
+ * Sets card vault address in card config
109
+ *
110
+ * Can only be invoked admin.
111
+ *
112
+ */
113
+ async setCardVault(params) {
114
+ const overrides = {
115
+ ...params.overrides,
116
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
117
+ };
118
+ return this.zebecCard.setCardVault(params.vaultAddress, overrides);
119
+ }
120
+ /**
121
+ * Sets usdc address in card config
122
+ * Can only be invoked by admin
123
+ */
124
+ async setUsdcAddress(params) {
125
+ const overrides = {
126
+ ...params.overrides,
127
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
128
+ };
129
+ return this.zebecCard.setUsdcAddress(params.tokenAddress, overrides);
130
+ }
131
+ /**
132
+ * Sets minimum card amount for purchasing card in card config
133
+ */
134
+ async setMinCardAmount(params) {
135
+ const decimals = await this.usdcToken.decimals();
136
+ const minCardAmount = ethers.parseUnits(params.minCardAmount, decimals);
137
+ const overrides = {
138
+ ...params.overrides,
139
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
140
+ };
141
+ return this.zebecCard.setMinCardAmount(minCardAmount, overrides);
142
+ }
143
+ /**
144
+ * Sets maximum card amount for purchasing card in card config
145
+ */
146
+ async setMaxCardAmount(params) {
147
+ const decimals = await this.usdcToken.decimals();
148
+ const maxCardAmount = ethers.parseUnits(params.maxCardAmount, decimals);
149
+ const overrides = {
150
+ ...params.overrides,
151
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
152
+ };
153
+ return this.zebecCard.setMaxCardAmount(maxCardAmount, overrides);
154
+ }
155
+ /**
156
+ * Sets daily card purchase limit in card config
157
+ */
158
+ async setDailyCardPurchaseLimit(params) {
159
+ const decimals = await this.usdcToken.decimals();
160
+ const dailyCardPurchaseLimit = ethers.parseUnits(params.dailyCardPurchaseLimit, decimals);
161
+ const overrides = {
162
+ ...params.overrides,
163
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
164
+ };
165
+ return this.zebecCard.setDailyCardBuyLimit(dailyCardPurchaseLimit, overrides);
166
+ }
167
+ /**
168
+ * Updates fee for given min - max (range) amount and inserts if range in not found.
169
+ */
170
+ async setFee(params) {
171
+ const decimals = await this.usdcToken.decimals();
172
+ const minAmount = ethers.parseUnits(params.minAmount, decimals);
173
+ const maxAmount = ethers.parseUnits(params.maxAmount, decimals);
174
+ const fee = percentToBps(params.feePercent);
175
+ const overrides = {
176
+ ...params.overrides,
177
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
178
+ };
179
+ return this.zebecCard.setFee(minAmount, maxAmount, fee, overrides);
180
+ }
181
+ /**
182
+ * Sets fee tiers only be invoked by admin
183
+ */
184
+ async setFeeTiers(params) {
185
+ const parsedFeeTiers = await this._parseFeeTiers(params.feeTiers);
186
+ const overrides = {
187
+ ...params.overrides,
188
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
189
+ };
190
+ return this.zebecCard.setFeeArray(parsedFeeTiers, overrides);
191
+ }
192
+ async _parseFeeTiers(feeTiers) {
193
+ const decimals = await this.usdcToken.decimals();
194
+ return feeTiers.map((feeTier) => {
195
+ return {
196
+ fee: percentToBps(feeTier.feePercent),
197
+ minAmount: ethers.parseUnits(feeTier.minAmount.toString(), decimals),
198
+ maxAmount: ethers.parseUnits(feeTier.maxAmount.toString(), decimals),
199
+ };
200
+ });
201
+ }
202
+ async setCustomFee(params) {
203
+ const fee = percentToBps(params.fee.toString());
204
+ const overrides = {
205
+ ...params.overrides,
206
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
207
+ };
208
+ return this.zebecCard.setCustomTokenFee(params.tokenAddress, fee, overrides);
209
+ }
210
+ async getCustomFee(params) {
211
+ const fee = await this.zebecCard.getCustomTokenFee(params.tokenAddress);
212
+ return bpsToPercent(fee.toString());
213
+ }
214
+ async setReloadableFee(params) {
215
+ const fee = percentToBps(params.fee.toString());
216
+ const overrides = {
217
+ ...params.overrides,
218
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
219
+ };
220
+ return this.zebecCard.setReloadableFee(fee, overrides);
221
+ }
222
+ async getReloadableFee() {
223
+ const fee = await this.zebecCard.getReloadableFee();
224
+ return bpsToPercent(fee.toString());
225
+ }
226
+ /**
227
+ * Gets user's card purchase
228
+ * @param params
229
+ * @returns
230
+ */
231
+ async getCardPurhcaseOfDay(params) {
232
+ const decimals = await this.usdcToken.decimals();
233
+ const cardPurchase = await this.zebecCard.cardPurchases(params.userAddress);
234
+ const totalCardPurchased = ethers.formatUnits(cardPurchase.totalCardBoughtPerDay, decimals);
235
+ const cardPurchasedTimestamp = Number(cardPurchase.unixInRecord.toString());
236
+ return {
237
+ totalCardPurchased,
238
+ cardPurchasedTimestamp,
239
+ };
240
+ }
241
+ /**
242
+ * Gets Zebec Instant Card contract configs
243
+ * @returns
244
+ */
245
+ async getCardConfig() {
246
+ const cardConfig = await this.zebecCard.cardConfig();
247
+ const nativeFeePercent = bpsToPercent(cardConfig.nativeFee.toString());
248
+ const nonNativeFeePercent = bpsToPercent(cardConfig.nonNativeFee.toString());
249
+ const revenueFeePercent = bpsToPercent(cardConfig.revenueFee.toString());
250
+ const decimals = await this.usdcToken.decimals();
251
+ const minCardAmount = ethers.formatUnits(cardConfig.minCardAmount, decimals);
252
+ const maxCardAmount = ethers.formatUnits(cardConfig.maxCardAmount, decimals);
253
+ const dailyCardPurchaseLimit = ethers.formatUnits(cardConfig.dailyCardBuyLimit, decimals);
254
+ return {
255
+ cardVault: cardConfig.cardVault,
256
+ commissionVault: cardConfig.commissionVault,
257
+ revenueVault: cardConfig.revenueVault,
258
+ nativeFeePercent,
259
+ nonNativeFeePercent,
260
+ revenueFeePercent,
261
+ totalCardSold: cardConfig.counter,
262
+ usdcAddress: cardConfig.usdcAddress,
263
+ maxCardAmount,
264
+ minCardAmount,
265
+ dailyCardPurchaseLimit,
266
+ };
267
+ }
268
+ /**
269
+ * Gets fee tiers
270
+ * @returns Array of fee tier
271
+ */
272
+ async getFeeTiers() {
273
+ const decimals = await this.usdcToken.decimals();
274
+ const feeTiers = await this.zebecCard.getFeeTiers();
275
+ return feeTiers.map((feeTier) => {
276
+ return {
277
+ feePercent: bpsToPercent(feeTier.fee.toString()),
278
+ maxAmount: ethers.formatUnits(feeTier.maxAmount, decimals),
279
+ minAmount: ethers.formatUnits(feeTier.minAmount, decimals),
280
+ };
281
+ });
282
+ }
283
+ /**
284
+ * Gets admin adddress
285
+ * @returns
286
+ */
287
+ async getAdmin() {
288
+ return this.zebecCard.owner();
289
+ }
290
+ /**
291
+ * add allowance of given amount of given token to given spender
292
+ * @param params
293
+ * @returns
294
+ */
295
+ async approve(params) {
296
+ const token = Token__factory.connect(params.token, this.signer);
297
+ const decimals = await token.decimals();
298
+ const parsedAmount = ethers.parseUnits(params.amount, decimals);
299
+ const allowance = await token.allowance(this.signer, params.spender);
300
+ const overrides = {
301
+ ...params.overrides,
302
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
303
+ };
304
+ if (allowance < parsedAmount) {
305
+ return await token.approve(params.spender, parsedAmount, overrides);
306
+ }
307
+ return null;
308
+ }
309
+ /**
310
+ * Wrap ETH to Wrapped ETH
311
+ * @param param
312
+ * @returns
313
+ */
314
+ async wrapEth(params) {
315
+ const parsedAmount = ethers.parseEther(params.amount);
316
+ const overrides = {
317
+ ...params.overrides,
318
+ gasLimit: params.overrides?.gasLimit || DEFAULT_GAS_LIMIT, // Default
319
+ };
320
+ return this.weth.deposit({ value: parsedAmount, ...overrides });
321
+ }
322
+ }
@@ -0,0 +1,6 @@
1
+ export * from "./evmCardService.js";
2
+ export * from "./proxyStreamService.js";
3
+ export * from "./solanaCardV2Service.js";
4
+ export * from "./stakingService.js";
5
+ export * from "./streamServices.js";
6
+ export * from "./suiCardService.js";
@@ -0,0 +1,6 @@
1
+ export * from "./evmCardService.js";
2
+ export * from "./proxyStreamService.js";
3
+ export * from "./solanaCardV2Service.js";
4
+ export * from "./stakingService.js";
5
+ export * from "./streamServices.js";
6
+ export * from "./suiCardService.js";
@@ -0,0 +1,72 @@
1
+ import { type Address, Program, type Provider } from "@coral-xyz/anchor";
2
+ import { Connection, Keypair, PublicKey, type TransactionInstruction } from "@solana/web3.js";
3
+ import { TransactionPayload } from "@zebec-network/solana-common";
4
+ import BN from "bn.js";
5
+ import { type ZebecProxyStreamIdl, type ZebecStreamIdl } from "../artifacts/index.js";
6
+ import type { ProxyConfigInfo, RpcNetwork } from "../types.js";
7
+ export declare class ProxyStreamAdminService {
8
+ readonly provider: Provider;
9
+ readonly proxyStreamProgram: Program<ZebecProxyStreamIdl>;
10
+ readonly streamProgram: Program<ZebecStreamIdl>;
11
+ readonly network: RpcNetwork;
12
+ constructor(provider: Provider, proxyStreamProgram: Program<ZebecProxyStreamIdl>, streamProgram: Program<ZebecStreamIdl>, network: RpcNetwork);
13
+ static create(provider: Provider, network: RpcNetwork): ProxyStreamAdminService;
14
+ private _createTransactionPayload;
15
+ get proxyStreamProgramId(): PublicKey;
16
+ get streamProgramId(): PublicKey;
17
+ get connection(): Connection;
18
+ getInitProxyConfigInstruction(admin: PublicKey, feeVault: PublicKey, mintAuthority: PublicKey, proxyConfig: PublicKey, data: {
19
+ chainId: string;
20
+ fee: number;
21
+ minAmount: BN;
22
+ }): Promise<TransactionInstruction>;
23
+ initProxyConfig(params: {
24
+ admin: Address;
25
+ feeVault: Address;
26
+ chainId: string;
27
+ fee: number;
28
+ minAmount: number;
29
+ }): Promise<TransactionPayload>;
30
+ getUpdateProxyConfigInstruction(admin: PublicKey, proxyConfig: PublicKey, data: {
31
+ fee: number;
32
+ newAdmin: PublicKey;
33
+ }): Promise<TransactionInstruction>;
34
+ updateProxyConfig(params: {
35
+ admin: Address;
36
+ chainId: string;
37
+ fee: number;
38
+ newAdmin: Address;
39
+ }): Promise<TransactionPayload>;
40
+ getSetMintableTokensInstruction(admin: PublicKey, proxyConfig: PublicKey, data: {
41
+ tokens: PublicKey[];
42
+ }): Promise<TransactionInstruction>;
43
+ getWhitelistTokensInstruction(admin: PublicKey, streamConfig: PublicKey, data: {
44
+ tokens: PublicKey[];
45
+ }): Promise<TransactionInstruction>;
46
+ createToken(params: {
47
+ admin: Address;
48
+ chainId: string;
49
+ streamConfigName: string;
50
+ tokenInfo: {
51
+ tokenName: string;
52
+ symbol: string;
53
+ metadataUri: string;
54
+ decimals: number;
55
+ mintKeypair?: Keypair;
56
+ };
57
+ }): Promise<TransactionPayload>;
58
+ updateZTokenMetadata(params: {
59
+ admin: Address;
60
+ mint: Address;
61
+ tokenInfo: {
62
+ tokenName: string;
63
+ symbol: string;
64
+ metadataUri: string;
65
+ };
66
+ }): Promise<TransactionPayload>;
67
+ getEmergencyPauseInstruction(admin: PublicKey): Promise<TransactionInstruction>;
68
+ emergencyPause(params: {
69
+ admin: Address;
70
+ }): Promise<TransactionPayload>;
71
+ getProxyConfig(chainId: string): Promise<ProxyConfigInfo>;
72
+ }