@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.
- package/LICENSE +21 -0
- package/README.md +730 -0
- package/dist/artifacts/abi/index.d.ts +161 -0
- package/dist/artifacts/abi/index.js +7 -0
- package/dist/artifacts/abi/token.json +350 -0
- package/dist/artifacts/abi/weth.json +153 -0
- package/dist/artifacts/abi/zebecCard.json +1229 -0
- package/dist/artifacts/index.d.ts +11 -0
- package/dist/artifacts/index.js +11 -0
- package/dist/artifacts/typechain-types/OdysseyZebecCard.d.ts +559 -0
- package/dist/artifacts/typechain-types/OdysseyZebecCard.js +1 -0
- package/dist/artifacts/typechain-types/Token.d.ts +149 -0
- package/dist/artifacts/typechain-types/Token.js +1 -0
- package/dist/artifacts/typechain-types/Weth.d.ts +179 -0
- package/dist/artifacts/typechain-types/Weth.js +1 -0
- package/dist/artifacts/typechain-types/ZebecCard.d.ts +723 -0
- package/dist/artifacts/typechain-types/ZebecCard.js +1 -0
- package/dist/artifacts/typechain-types/common.d.ts +50 -0
- package/dist/artifacts/typechain-types/common.js +1 -0
- package/dist/artifacts/typechain-types/factories/OdysseyZebecCard__factory.d.ts +735 -0
- package/dist/artifacts/typechain-types/factories/OdysseyZebecCard__factory.js +959 -0
- package/dist/artifacts/typechain-types/factories/Token__factory.d.ts +280 -0
- package/dist/artifacts/typechain-types/factories/Token__factory.js +374 -0
- package/dist/artifacts/typechain-types/factories/Weth__factory.d.ts +219 -0
- package/dist/artifacts/typechain-types/factories/Weth__factory.js +292 -0
- package/dist/artifacts/typechain-types/factories/ZebecCard__factory.d.ts +966 -0
- package/dist/artifacts/typechain-types/factories/ZebecCard__factory.js +1253 -0
- package/dist/artifacts/typechain-types/factories/index.d.ts +4 -0
- package/dist/artifacts/typechain-types/factories/index.js +7 -0
- package/dist/artifacts/typechain-types/index.d.ts +9 -0
- package/dist/artifacts/typechain-types/index.js +8 -0
- package/dist/artifacts/zebec_instant_card.d.ts +3683 -0
- package/dist/artifacts/zebec_instant_card.js +1 -0
- package/dist/artifacts/zebec_instant_card.json +2801 -0
- package/dist/artifacts/zebec_proxy_stream.d.ts +1933 -0
- package/dist/artifacts/zebec_proxy_stream.js +1 -0
- package/dist/artifacts/zebec_proxy_stream.json +1497 -0
- package/dist/artifacts/zebec_stake_v1.d.ts +1679 -0
- package/dist/artifacts/zebec_stake_v1.js +1 -0
- package/dist/artifacts/zebec_stake_v1.json +1255 -0
- package/dist/artifacts/zebec_stream.d.ts +1481 -0
- package/dist/artifacts/zebec_stream.js +1 -0
- package/dist/artifacts/zebec_stream.json +1243 -0
- package/dist/constants.d.ts +32 -0
- package/dist/constants.js +115 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +6 -0
- package/dist/pda.d.ts +23 -0
- package/dist/pda.js +125 -0
- package/dist/services/evmCardService.d.ts +189 -0
- package/dist/services/evmCardService.js +322 -0
- package/dist/services/index.d.ts +6 -0
- package/dist/services/index.js +6 -0
- package/dist/services/proxyStreamService.d.ts +72 -0
- package/dist/services/proxyStreamService.js +302 -0
- package/dist/services/solanaCardV2Service.d.ts +50 -0
- package/dist/services/solanaCardV2Service.js +717 -0
- package/dist/services/stakingService.d.ts +39 -0
- package/dist/services/stakingService.js +265 -0
- package/dist/services/streamServices.d.ts +50 -0
- package/dist/services/streamServices.js +322 -0
- package/dist/services/suiCardService.d.ts +91 -0
- package/dist/services/suiCardService.js +487 -0
- package/dist/types.d.ts +433 -0
- package/dist/types.js +1 -0
- package/dist/utils.d.ts +5 -0
- package/dist/utils.js +39 -0
- package/package.json +57 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { RpcNetwork, SuiNetwork } from "./types";
|
|
2
|
+
export declare const STREAM_PROGRAM_LOOKUP_TABLE_ADDRESS: Record<RpcNetwork, string>;
|
|
3
|
+
/**
|
|
4
|
+
* Supported Chain Ids by SDK
|
|
5
|
+
*/
|
|
6
|
+
export declare enum SupportedChain {
|
|
7
|
+
Mainnet = 1,
|
|
8
|
+
Sepolia = 11155111,
|
|
9
|
+
Base = 8453,
|
|
10
|
+
Bsc = 56,
|
|
11
|
+
BscTestnet = 97,
|
|
12
|
+
OdysseyTestnet = 131313,
|
|
13
|
+
Odyssey = 153153,
|
|
14
|
+
Polygon = 137,
|
|
15
|
+
PolygonAmoy = 80002
|
|
16
|
+
}
|
|
17
|
+
export declare function parseSupportedChain(chainId: number): SupportedChain;
|
|
18
|
+
/**
|
|
19
|
+
* Odyssey chain ids
|
|
20
|
+
*/
|
|
21
|
+
export declare const ODYSSEY_CHAIN_IDS: SupportedChain[];
|
|
22
|
+
export declare const ZEBEC_EVM_CARD_ADDRESS: Record<SupportedChain, string>;
|
|
23
|
+
export declare const USDC_ADDRESS: Record<SupportedChain, string>;
|
|
24
|
+
export declare const WETH_ADDRESS: Record<SupportedChain, string>;
|
|
25
|
+
export declare const DEFAULT_GAS_LIMIT = 3000000;
|
|
26
|
+
export declare const SUI_SILVERCARD_PACKAGE_ADDRESS: Record<SuiNetwork, string>;
|
|
27
|
+
export declare const SUI_SILVERCARD_MODULE_NAME = "sui_silver_card_contract";
|
|
28
|
+
export declare const SUI_SILVERCARD_CARD_CONFIG_OBJECT_ID: Record<SuiNetwork, string>;
|
|
29
|
+
export declare const SUI_SILVERCARD_FEE_TIER_LIST_OBJECT_ID: Record<SuiNetwork, string>;
|
|
30
|
+
export declare const SUI_SILVERCARD_SWAP_FEE_LIST_OBJECT_ID: Record<SuiNetwork, string>;
|
|
31
|
+
export declare const SUI_SILVERCARD_ADMIN_CAP_STRUCT_TYPE: Record<SuiNetwork, string>;
|
|
32
|
+
export declare const SUI_USDC_COIN_TYPE: Record<SuiNetwork, string>;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
export const STREAM_PROGRAM_LOOKUP_TABLE_ADDRESS = {
|
|
2
|
+
devnet: "HJmEzSXzJrtSdgBZSaedQ51WaD4LkT1r5zR2yT1QERqv",
|
|
3
|
+
"mainnet-beta": "43N5otEu7k7TzkKsdhkwiYGrdKjBejetWQbF9cJPtY6i",
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Supported Chain Ids by SDK
|
|
7
|
+
*/
|
|
8
|
+
export var SupportedChain;
|
|
9
|
+
(function (SupportedChain) {
|
|
10
|
+
SupportedChain[SupportedChain["Mainnet"] = 1] = "Mainnet";
|
|
11
|
+
SupportedChain[SupportedChain["Sepolia"] = 11155111] = "Sepolia";
|
|
12
|
+
SupportedChain[SupportedChain["Base"] = 8453] = "Base";
|
|
13
|
+
SupportedChain[SupportedChain["Bsc"] = 56] = "Bsc";
|
|
14
|
+
SupportedChain[SupportedChain["BscTestnet"] = 97] = "BscTestnet";
|
|
15
|
+
SupportedChain[SupportedChain["OdysseyTestnet"] = 131313] = "OdysseyTestnet";
|
|
16
|
+
SupportedChain[SupportedChain["Odyssey"] = 153153] = "Odyssey";
|
|
17
|
+
SupportedChain[SupportedChain["Polygon"] = 137] = "Polygon";
|
|
18
|
+
SupportedChain[SupportedChain["PolygonAmoy"] = 80002] = "PolygonAmoy";
|
|
19
|
+
})(SupportedChain || (SupportedChain = {}));
|
|
20
|
+
export function parseSupportedChain(chainId) {
|
|
21
|
+
switch (chainId) {
|
|
22
|
+
case 1:
|
|
23
|
+
return SupportedChain.Mainnet;
|
|
24
|
+
case 11155111:
|
|
25
|
+
return SupportedChain.Sepolia;
|
|
26
|
+
case 8453:
|
|
27
|
+
return SupportedChain.Base;
|
|
28
|
+
case 56:
|
|
29
|
+
return SupportedChain.Bsc;
|
|
30
|
+
case 97:
|
|
31
|
+
return SupportedChain.BscTestnet;
|
|
32
|
+
case 131313:
|
|
33
|
+
return SupportedChain.OdysseyTestnet;
|
|
34
|
+
case 153153:
|
|
35
|
+
return SupportedChain.Odyssey;
|
|
36
|
+
case 137:
|
|
37
|
+
return SupportedChain.Polygon;
|
|
38
|
+
case 80002:
|
|
39
|
+
return SupportedChain.PolygonAmoy;
|
|
40
|
+
default:
|
|
41
|
+
throw new Error(`Chain Id: ${chainId} not supported.`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Odyssey chain ids
|
|
46
|
+
*/
|
|
47
|
+
export const ODYSSEY_CHAIN_IDS = [
|
|
48
|
+
SupportedChain.Odyssey,
|
|
49
|
+
SupportedChain.OdysseyTestnet,
|
|
50
|
+
];
|
|
51
|
+
export const ZEBEC_EVM_CARD_ADDRESS = {
|
|
52
|
+
[SupportedChain.Sepolia]: "0xD0e8f23ACcC1a7147Fb17E078A5cbe7ff1F47407",
|
|
53
|
+
[SupportedChain.Base]: "0x1bF6419D8555EafaE79142D309534e8aBd54aBa3",
|
|
54
|
+
[SupportedChain.Mainnet]: "0xB4f6E946E12200F4E0ba3B352B8DbF0a66635b53",
|
|
55
|
+
[SupportedChain.Bsc]: "0x1bF6419D8555EafaE79142D309534e8aBd54aBa3",
|
|
56
|
+
[SupportedChain.BscTestnet]: "0x53E1Ffb703298744670a7Fd341F90AC7949D7516",
|
|
57
|
+
[SupportedChain.OdysseyTestnet]: "0x597fA3656FF24034939edce2d74480c0619F51A7",
|
|
58
|
+
[SupportedChain.Odyssey]: "0x935D149eCB4E3F3824327e7d4357180a08aE8a15",
|
|
59
|
+
[SupportedChain.Polygon]: "0xB4f6E946E12200F4E0ba3B352B8DbF0a66635b53",
|
|
60
|
+
[SupportedChain.PolygonAmoy]: "0xB4f6E946E12200F4E0ba3B352B8DbF0a66635b53",
|
|
61
|
+
};
|
|
62
|
+
export const USDC_ADDRESS = {
|
|
63
|
+
[SupportedChain.Sepolia]: "0x94a9D9AC8a22534E3FaCa9F4e7F2E2cf85d5E4C8",
|
|
64
|
+
[SupportedChain.Base]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
65
|
+
[SupportedChain.Mainnet]: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|
66
|
+
[SupportedChain.Bsc]: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",
|
|
67
|
+
[SupportedChain.BscTestnet]: "0xF8Dc6f35a10244213096D86c376491042594a84e",
|
|
68
|
+
[SupportedChain.OdysseyTestnet]: "0x1bF6419D8555EafaE79142D309534e8aBd54aBa3",
|
|
69
|
+
[SupportedChain.Odyssey]: "0x8aBEE32587864cce7000e6f2820680874eD6100A",
|
|
70
|
+
[SupportedChain.Polygon]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
|
|
71
|
+
[SupportedChain.PolygonAmoy]: "0x935d149ecb4e3f3824327e7d4357180a08ae8a15",
|
|
72
|
+
};
|
|
73
|
+
export const WETH_ADDRESS = {
|
|
74
|
+
[SupportedChain.Sepolia]: "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9",
|
|
75
|
+
[SupportedChain.Base]: "0x4200000000000000000000000000000000000006",
|
|
76
|
+
[SupportedChain.Bsc]: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
|
|
77
|
+
[SupportedChain.BscTestnet]: "0x094616F0BdFB0b526bD735Bf66Eca0Ad254ca81F",
|
|
78
|
+
[SupportedChain.Mainnet]: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
|
79
|
+
[SupportedChain.OdysseyTestnet]: "0xF21Cbaf7bD040D686Bd390957770D2ea652E4013",
|
|
80
|
+
[SupportedChain.Odyssey]: "0xF21Cbaf7bD040D686Bd390957770D2ea652E4013",
|
|
81
|
+
[SupportedChain.Polygon]: "0x0000000000000000000000000000000000001010",
|
|
82
|
+
[SupportedChain.PolygonAmoy]: "0x0000000000000000000000000000000000000000",
|
|
83
|
+
};
|
|
84
|
+
export const DEFAULT_GAS_LIMIT = 3000000; // Default gas limit for transactions
|
|
85
|
+
export const SUI_SILVERCARD_PACKAGE_ADDRESS = {
|
|
86
|
+
devnet: "0x6f2c14f388f357c3820464b7c22a0ff7ad36f6b9a5ebdbfffe3a14d1f0efc95c",
|
|
87
|
+
mainnet: "0xec2d5a4ca1fba9385301d858253a2a07c5bba566c041cc7433e3c77b42f679ea",
|
|
88
|
+
testnet: "0xfe1c8009a32922998c9f8ac3481bf5f7c5aa0b6e4556a18c5727ae5c4dcab92c",
|
|
89
|
+
};
|
|
90
|
+
export const SUI_SILVERCARD_MODULE_NAME = "sui_silver_card_contract";
|
|
91
|
+
export const SUI_SILVERCARD_CARD_CONFIG_OBJECT_ID = {
|
|
92
|
+
devnet: "0xc3c5e0e713713d5b3e0f259c68e1087ecb69162d61e9482753f0df8312adcb3b",
|
|
93
|
+
mainnet: "0x86951e397bd073eafc1f3cc4dda0f44efb6fd32ad00ea097a336ae7cf530e4ff",
|
|
94
|
+
testnet: "0xc5dc55b550b9d1ec7edca3d66428a56fe3c743f0cf08ead476d86ac0ef9fb44c",
|
|
95
|
+
};
|
|
96
|
+
export const SUI_SILVERCARD_FEE_TIER_LIST_OBJECT_ID = {
|
|
97
|
+
devnet: "0x2a6daec8090c5194dca6f44c7dec9806c53a27235c34110989b0538e30868f60",
|
|
98
|
+
mainnet: "0x07a5844cae13e02762ee72605a574404642f3538f2c520677c0032b996193a33",
|
|
99
|
+
testnet: "0x2ccc98c504a62804cb9db6c2f95ad5e09855f33f5282c430de069356ba88abab",
|
|
100
|
+
};
|
|
101
|
+
export const SUI_SILVERCARD_SWAP_FEE_LIST_OBJECT_ID = {
|
|
102
|
+
devnet: "0x49bffe8c49cebcc25ca7b5c6c2c88fb94926f1cb45d7e126780932e63d8043b4",
|
|
103
|
+
mainnet: "0x492d3bc81be1b2fc1f800f757ae159552284036eacf45103b2d925e9a00d3456",
|
|
104
|
+
testnet: "0xee0a756e0d508a47dc8057d91a1fb1eb32c25ce98b8ef7b4fe86d3784218f9ec",
|
|
105
|
+
};
|
|
106
|
+
export const SUI_SILVERCARD_ADMIN_CAP_STRUCT_TYPE = {
|
|
107
|
+
devnet: "0x6f2c14f388f357c3820464b7c22a0ff7ad36f6b9a5ebdbfffe3a14d1f0efc95c::sui_silver_card_contract::AdminCap",
|
|
108
|
+
mainnet: "0xec2d5a4ca1fba9385301d858253a2a07c5bba566c041cc7433e3c77b42f679ea::sui_silver_card_contract::AdminCap",
|
|
109
|
+
testnet: "0xfe1c8009a32922998c9f8ac3481bf5f7c5aa0b6e4556a18c5727ae5c4dcab92c::sui_silver_card_contract::AdminCap",
|
|
110
|
+
};
|
|
111
|
+
export const SUI_USDC_COIN_TYPE = {
|
|
112
|
+
devnet: "0x46f30b27bdbdd02b003f7c8db8dfc83488f7b8f7f8eef06d9434eeff7c4655c3::sui_generic_coins::SUI_GENERIC_COINS",
|
|
113
|
+
mainnet: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",
|
|
114
|
+
testnet: "0x03cea04319a0015e35e7a9dae0f046643e8fbbf29922aad31a5ffd9a9c3e76f4::sui_generic_coins::SUI_GENERIC_COINS",
|
|
115
|
+
};
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
package/dist/pda.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Address } from "@coral-xyz/anchor";
|
|
2
|
+
import { PublicKey } from "@solana/web3.js";
|
|
3
|
+
import { Buffer } from "buffer";
|
|
4
|
+
export declare function deriveStreamConfigPda(configName: string, programId: Address): [PublicKey, number];
|
|
5
|
+
export declare function deriveStreamVaultPda(metatadata: Address, programId: Address): [PublicKey, number];
|
|
6
|
+
export declare function deriveProxyConfigPda(chainId: string, programId: Address): [PublicKey, number];
|
|
7
|
+
export declare function deriveMintAuthorityPda(programId: Address): [PublicKey, number];
|
|
8
|
+
export declare function deriveCheckAccountPda(hash: Buffer | Uint8Array, programId: Address): [PublicKey, number];
|
|
9
|
+
export declare function deriveUserPda(chainId: string, walletHash: Buffer | Uint8Array, programId: Address): [PublicKey, number];
|
|
10
|
+
export declare function deriveUserVaultPda(userPda: PublicKey, programId: Address): [PublicKey, number];
|
|
11
|
+
export declare function deriveStakeAddress(staker: Address, lockup: Address, nonce: bigint, programId: Address): PublicKey;
|
|
12
|
+
export declare function deriveLockupAddress(name: string, programId: Address): PublicKey;
|
|
13
|
+
export declare function deriveUserNonceAddress(user: Address, lockup: Address, programId: Address): PublicKey;
|
|
14
|
+
export declare function deriveStakeVaultAddress(lockup: Address, programId: Address): PublicKey;
|
|
15
|
+
export declare function deriveRewardVaultAddress(lockup: Address, programId: Address): PublicKey;
|
|
16
|
+
export declare function deriveCardConfigPda(programId: Address): [PublicKey, number];
|
|
17
|
+
export declare function derivePartnerCardConfigPda(programId: Address, partnershipName: string): [PublicKey, number];
|
|
18
|
+
export declare function deriveTokenFeeMapPda(programId: Address): [PublicKey, number];
|
|
19
|
+
export declare function derivePartnerTokenFeeMapPda(cardPda: Address, programId: Address): [PublicKey, number];
|
|
20
|
+
export declare function deriveCardPurchasePda(buyer: Address, buyerCounter: bigint, programId: Address): [PublicKey, number];
|
|
21
|
+
export declare function derivePartnerCardPurchasePda(buyer: Address, cardPda: Address, buyerCounter: bigint, programId: Address): [PublicKey, number];
|
|
22
|
+
export declare function deriveUserPurchaseRecordPda(user: Address, programId: Address): [PublicKey, number];
|
|
23
|
+
export declare function derivePartnerUserPurchaseRecordPda(user: Address, cardPda: Address, programId: Address): [PublicKey, number];
|
package/dist/pda.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { translateAddress, utils } from "@coral-xyz/anchor";
|
|
2
|
+
import { PublicKey } from "@solana/web3.js";
|
|
3
|
+
import BN from "bn.js";
|
|
4
|
+
import { Buffer } from "buffer";
|
|
5
|
+
const STREAM_PROGRAM_SEEDS = {
|
|
6
|
+
STREAM_CONFIG: utils.bytes.utf8.encode("config"),
|
|
7
|
+
};
|
|
8
|
+
export function deriveStreamConfigPda(configName, programId) {
|
|
9
|
+
return PublicKey.findProgramAddressSync([
|
|
10
|
+
Buffer.from(STREAM_PROGRAM_SEEDS.STREAM_CONFIG),
|
|
11
|
+
utils.bytes.utf8.encode(configName),
|
|
12
|
+
], translateAddress(programId));
|
|
13
|
+
}
|
|
14
|
+
export function deriveStreamVaultPda(metatadata, programId) {
|
|
15
|
+
return PublicKey.findProgramAddressSync([translateAddress(metatadata).toBuffer()], translateAddress(programId));
|
|
16
|
+
}
|
|
17
|
+
const PROXY_STREAM_PROGRAM_SEEDS = {
|
|
18
|
+
PROXY_CONFIG: utils.bytes.utf8.encode("proxy"),
|
|
19
|
+
MINT_AUTHORITY: utils.bytes.utf8.encode("ztoken_minter"),
|
|
20
|
+
};
|
|
21
|
+
export function deriveProxyConfigPda(chainId, programId) {
|
|
22
|
+
return PublicKey.findProgramAddressSync([PROXY_STREAM_PROGRAM_SEEDS.PROXY_CONFIG, Buffer.from(chainId)], translateAddress(programId));
|
|
23
|
+
}
|
|
24
|
+
export function deriveMintAuthorityPda(programId) {
|
|
25
|
+
return PublicKey.findProgramAddressSync([PROXY_STREAM_PROGRAM_SEEDS.MINT_AUTHORITY], translateAddress(programId));
|
|
26
|
+
}
|
|
27
|
+
export function deriveCheckAccountPda(hash, programId) {
|
|
28
|
+
return PublicKey.findProgramAddressSync([Buffer.from(hash)], translateAddress(programId));
|
|
29
|
+
}
|
|
30
|
+
export function deriveUserPda(chainId, walletHash, programId) {
|
|
31
|
+
return PublicKey.findProgramAddressSync([Buffer.from(chainId), Buffer.from(walletHash)], translateAddress(programId));
|
|
32
|
+
}
|
|
33
|
+
export function deriveUserVaultPda(userPda, programId) {
|
|
34
|
+
return PublicKey.findProgramAddressSync([userPda.toBuffer()], translateAddress(programId));
|
|
35
|
+
}
|
|
36
|
+
const STAKE_PROGRAM_SEEDS = {
|
|
37
|
+
LOCKUP: "zebec_lockup",
|
|
38
|
+
STAKE_VAULT: "stake_vault",
|
|
39
|
+
REWARD_VAULT: "reward_vault",
|
|
40
|
+
};
|
|
41
|
+
export function deriveStakeAddress(staker, lockup, nonce, programId) {
|
|
42
|
+
const [stakeAddress] = PublicKey.findProgramAddressSync([
|
|
43
|
+
translateAddress(staker).toBuffer(),
|
|
44
|
+
translateAddress(lockup).toBuffer(),
|
|
45
|
+
new BN(nonce.toString()).toArrayLike(Buffer, "le", 8),
|
|
46
|
+
], translateAddress(programId));
|
|
47
|
+
return stakeAddress;
|
|
48
|
+
}
|
|
49
|
+
export function deriveLockupAddress(name, programId) {
|
|
50
|
+
const [lockupAddress] = PublicKey.findProgramAddressSync([
|
|
51
|
+
utils.bytes.utf8.encode(STAKE_PROGRAM_SEEDS.LOCKUP),
|
|
52
|
+
utils.bytes.utf8.encode(name),
|
|
53
|
+
], translateAddress(programId));
|
|
54
|
+
return lockupAddress;
|
|
55
|
+
}
|
|
56
|
+
export function deriveUserNonceAddress(user, lockup, programId) {
|
|
57
|
+
const [userNonceAddress] = PublicKey.findProgramAddressSync([translateAddress(user).toBuffer(), translateAddress(lockup).toBuffer()], translateAddress(programId));
|
|
58
|
+
return userNonceAddress;
|
|
59
|
+
}
|
|
60
|
+
export function deriveStakeVaultAddress(lockup, programId) {
|
|
61
|
+
const [stakeVault] = PublicKey.findProgramAddressSync([
|
|
62
|
+
utils.bytes.utf8.encode(STAKE_PROGRAM_SEEDS.STAKE_VAULT),
|
|
63
|
+
translateAddress(lockup).toBuffer(),
|
|
64
|
+
], translateAddress(programId));
|
|
65
|
+
return stakeVault;
|
|
66
|
+
}
|
|
67
|
+
export function deriveRewardVaultAddress(lockup, programId) {
|
|
68
|
+
const [rewardVault] = PublicKey.findProgramAddressSync([
|
|
69
|
+
utils.bytes.utf8.encode(STAKE_PROGRAM_SEEDS.REWARD_VAULT),
|
|
70
|
+
translateAddress(lockup).toBuffer(),
|
|
71
|
+
], translateAddress(programId));
|
|
72
|
+
return rewardVault;
|
|
73
|
+
}
|
|
74
|
+
const CARD_PROGRAM_V2_SEEDS = {
|
|
75
|
+
CARD_CONFIG: "card_config",
|
|
76
|
+
TOKEN_FEE_MAP: "token_fee_map",
|
|
77
|
+
USER_CARD_PURCHASE: "user_card_purchase",
|
|
78
|
+
USER_PURCHASE_RECORD: "user_purchase_record",
|
|
79
|
+
};
|
|
80
|
+
export function deriveCardConfigPda(programId) {
|
|
81
|
+
return PublicKey.findProgramAddressSync([Buffer.from(utils.bytes.utf8.encode(CARD_PROGRAM_V2_SEEDS.CARD_CONFIG))], translateAddress(programId));
|
|
82
|
+
}
|
|
83
|
+
export function derivePartnerCardConfigPda(programId, partnershipName) {
|
|
84
|
+
return PublicKey.findProgramAddressSync([
|
|
85
|
+
Buffer.from(utils.bytes.utf8.encode(CARD_PROGRAM_V2_SEEDS.CARD_CONFIG)),
|
|
86
|
+
Buffer.from(utils.bytes.utf8.encode(partnershipName)),
|
|
87
|
+
], translateAddress(programId));
|
|
88
|
+
}
|
|
89
|
+
export function deriveTokenFeeMapPda(programId) {
|
|
90
|
+
return PublicKey.findProgramAddressSync([Buffer.from(utils.bytes.utf8.encode(CARD_PROGRAM_V2_SEEDS.TOKEN_FEE_MAP))], translateAddress(programId));
|
|
91
|
+
}
|
|
92
|
+
export function derivePartnerTokenFeeMapPda(cardPda, programId) {
|
|
93
|
+
return PublicKey.findProgramAddressSync([
|
|
94
|
+
Buffer.from(utils.bytes.utf8.encode(CARD_PROGRAM_V2_SEEDS.TOKEN_FEE_MAP)),
|
|
95
|
+
translateAddress(cardPda).toBuffer(),
|
|
96
|
+
], translateAddress(programId));
|
|
97
|
+
}
|
|
98
|
+
export function deriveCardPurchasePda(buyer, buyerCounter, programId) {
|
|
99
|
+
return PublicKey.findProgramAddressSync([
|
|
100
|
+
Buffer.from(utils.bytes.utf8.encode(CARD_PROGRAM_V2_SEEDS.USER_CARD_PURCHASE)),
|
|
101
|
+
translateAddress(buyer).toBuffer(),
|
|
102
|
+
new BN(buyerCounter.toString()).toArrayLike(Buffer, "le", 8),
|
|
103
|
+
], translateAddress(programId));
|
|
104
|
+
}
|
|
105
|
+
export function derivePartnerCardPurchasePda(buyer, cardPda, buyerCounter, programId) {
|
|
106
|
+
return PublicKey.findProgramAddressSync([
|
|
107
|
+
Buffer.from(utils.bytes.utf8.encode(CARD_PROGRAM_V2_SEEDS.USER_CARD_PURCHASE)),
|
|
108
|
+
translateAddress(buyer).toBuffer(),
|
|
109
|
+
translateAddress(cardPda).toBuffer(),
|
|
110
|
+
new BN(buyerCounter.toString()).toArrayLike(Buffer, "le", 8),
|
|
111
|
+
], translateAddress(programId));
|
|
112
|
+
}
|
|
113
|
+
export function deriveUserPurchaseRecordPda(user, programId) {
|
|
114
|
+
return PublicKey.findProgramAddressSync([
|
|
115
|
+
Buffer.from(utils.bytes.utf8.encode(CARD_PROGRAM_V2_SEEDS.USER_PURCHASE_RECORD)),
|
|
116
|
+
translateAddress(user).toBuffer(),
|
|
117
|
+
], translateAddress(programId));
|
|
118
|
+
}
|
|
119
|
+
export function derivePartnerUserPurchaseRecordPda(user, cardPda, programId) {
|
|
120
|
+
return PublicKey.findProgramAddressSync([
|
|
121
|
+
Buffer.from(utils.bytes.utf8.encode(CARD_PROGRAM_V2_SEEDS.USER_PURCHASE_RECORD)),
|
|
122
|
+
translateAddress(user).toBuffer(),
|
|
123
|
+
translateAddress(cardPda).toBuffer(),
|
|
124
|
+
], translateAddress(programId));
|
|
125
|
+
}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { ethers } from "ethers";
|
|
2
|
+
import { type OdysseyZebecCard, type Token, type Weth, type ZebecCard } from "../artifacts/index.js";
|
|
3
|
+
import type { CardFeeTier, CardPurchaseOfDay, EvmCardConfig } from "../types";
|
|
4
|
+
export declare class ZebecCardService {
|
|
5
|
+
readonly signer: ethers.Signer;
|
|
6
|
+
readonly chainId: number;
|
|
7
|
+
readonly zebecCard: ZebecCard | OdysseyZebecCard;
|
|
8
|
+
readonly usdcToken: Token;
|
|
9
|
+
readonly weth: Weth;
|
|
10
|
+
/**
|
|
11
|
+
* Create instance of ZebecCardService.
|
|
12
|
+
* @param signer ethers signer
|
|
13
|
+
* @param chainId chain ID supported by sdk
|
|
14
|
+
*/
|
|
15
|
+
constructor(signer: ethers.Signer, chainId: number);
|
|
16
|
+
/**
|
|
17
|
+
* Sets Native Fee in card config.
|
|
18
|
+
*
|
|
19
|
+
* Can only be invoked admin.
|
|
20
|
+
*
|
|
21
|
+
* @param params
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
24
|
+
setNativeFee(params: {
|
|
25
|
+
feeInPercent: string;
|
|
26
|
+
overrides?: ethers.Overrides;
|
|
27
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
28
|
+
/**
|
|
29
|
+
* Sets NonNative Fee in card config
|
|
30
|
+
*
|
|
31
|
+
* Can only be invoked admin.
|
|
32
|
+
*
|
|
33
|
+
* @param params
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
36
|
+
setNonNativeFee(params: {
|
|
37
|
+
feeInPercent: string;
|
|
38
|
+
overrides?: ethers.Overrides;
|
|
39
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
40
|
+
/**
|
|
41
|
+
* Sets Revenue Fee in card config
|
|
42
|
+
*
|
|
43
|
+
* Can only be invoked admin.
|
|
44
|
+
*
|
|
45
|
+
* @param params
|
|
46
|
+
* @returns
|
|
47
|
+
*/
|
|
48
|
+
setRevenueFee(params: {
|
|
49
|
+
feeInPercent: string;
|
|
50
|
+
overrides?: ethers.Overrides;
|
|
51
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
52
|
+
/**
|
|
53
|
+
* Sets Revenue vault address in card config
|
|
54
|
+
*
|
|
55
|
+
* Can only be invoked admin.
|
|
56
|
+
*
|
|
57
|
+
* @param params
|
|
58
|
+
* @returns
|
|
59
|
+
*/
|
|
60
|
+
setRevenueVault(params: {
|
|
61
|
+
vaultAddress: ethers.AddressLike;
|
|
62
|
+
overrides?: ethers.Overrides;
|
|
63
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
64
|
+
/**
|
|
65
|
+
* Sets commission vault address in card config
|
|
66
|
+
*
|
|
67
|
+
* Can only be invoked admin.
|
|
68
|
+
*
|
|
69
|
+
* @param params
|
|
70
|
+
* @returns
|
|
71
|
+
*/
|
|
72
|
+
setCommissionVault(params: {
|
|
73
|
+
vaultAddress: ethers.AddressLike;
|
|
74
|
+
overrides?: ethers.Overrides;
|
|
75
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
76
|
+
/**
|
|
77
|
+
* Sets card vault address in card config
|
|
78
|
+
*
|
|
79
|
+
* Can only be invoked admin.
|
|
80
|
+
*
|
|
81
|
+
*/
|
|
82
|
+
setCardVault(params: {
|
|
83
|
+
vaultAddress: ethers.AddressLike;
|
|
84
|
+
overrides?: ethers.Overrides;
|
|
85
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
86
|
+
/**
|
|
87
|
+
* Sets usdc address in card config
|
|
88
|
+
* Can only be invoked by admin
|
|
89
|
+
*/
|
|
90
|
+
setUsdcAddress(params: {
|
|
91
|
+
tokenAddress: ethers.AddressLike;
|
|
92
|
+
overrides?: ethers.Overrides;
|
|
93
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
94
|
+
/**
|
|
95
|
+
* Sets minimum card amount for purchasing card in card config
|
|
96
|
+
*/
|
|
97
|
+
setMinCardAmount(params: {
|
|
98
|
+
minCardAmount: string;
|
|
99
|
+
overrides?: ethers.Overrides;
|
|
100
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
101
|
+
/**
|
|
102
|
+
* Sets maximum card amount for purchasing card in card config
|
|
103
|
+
*/
|
|
104
|
+
setMaxCardAmount(params: {
|
|
105
|
+
maxCardAmount: string;
|
|
106
|
+
overrides?: ethers.Overrides;
|
|
107
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
108
|
+
/**
|
|
109
|
+
* Sets daily card purchase limit in card config
|
|
110
|
+
*/
|
|
111
|
+
setDailyCardPurchaseLimit(params: {
|
|
112
|
+
dailyCardPurchaseLimit: string;
|
|
113
|
+
overrides?: ethers.Overrides;
|
|
114
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
115
|
+
/**
|
|
116
|
+
* Updates fee for given min - max (range) amount and inserts if range in not found.
|
|
117
|
+
*/
|
|
118
|
+
setFee(params: {
|
|
119
|
+
minAmount: string;
|
|
120
|
+
maxAmount: string;
|
|
121
|
+
feePercent: string;
|
|
122
|
+
overrides?: ethers.Overrides;
|
|
123
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
124
|
+
/**
|
|
125
|
+
* Sets fee tiers only be invoked by admin
|
|
126
|
+
*/
|
|
127
|
+
setFeeTiers(params: {
|
|
128
|
+
feeTiers: CardFeeTier[];
|
|
129
|
+
overrides?: ethers.Overrides;
|
|
130
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
131
|
+
private _parseFeeTiers;
|
|
132
|
+
setCustomFee(params: {
|
|
133
|
+
tokenAddress: string;
|
|
134
|
+
fee: number | string;
|
|
135
|
+
overrides?: ethers.Overrides;
|
|
136
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
137
|
+
getCustomFee(params: {
|
|
138
|
+
tokenAddress: string;
|
|
139
|
+
overrides?: ethers.Overrides;
|
|
140
|
+
}): Promise<string>;
|
|
141
|
+
setReloadableFee(params: {
|
|
142
|
+
fee: string | number;
|
|
143
|
+
overrides?: ethers.Overrides;
|
|
144
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
145
|
+
getReloadableFee(): Promise<string>;
|
|
146
|
+
/**
|
|
147
|
+
* Gets user's card purchase
|
|
148
|
+
* @param params
|
|
149
|
+
* @returns
|
|
150
|
+
*/
|
|
151
|
+
getCardPurhcaseOfDay(params: {
|
|
152
|
+
userAddress: ethers.AddressLike;
|
|
153
|
+
}): Promise<CardPurchaseOfDay>;
|
|
154
|
+
/**
|
|
155
|
+
* Gets Zebec Instant Card contract configs
|
|
156
|
+
* @returns
|
|
157
|
+
*/
|
|
158
|
+
getCardConfig(): Promise<EvmCardConfig>;
|
|
159
|
+
/**
|
|
160
|
+
* Gets fee tiers
|
|
161
|
+
* @returns Array of fee tier
|
|
162
|
+
*/
|
|
163
|
+
getFeeTiers(): Promise<Array<CardFeeTier>>;
|
|
164
|
+
/**
|
|
165
|
+
* Gets admin adddress
|
|
166
|
+
* @returns
|
|
167
|
+
*/
|
|
168
|
+
getAdmin(): Promise<string>;
|
|
169
|
+
/**
|
|
170
|
+
* add allowance of given amount of given token to given spender
|
|
171
|
+
* @param params
|
|
172
|
+
* @returns
|
|
173
|
+
*/
|
|
174
|
+
approve(params: {
|
|
175
|
+
token: string;
|
|
176
|
+
spender: ethers.AddressLike;
|
|
177
|
+
amount: string;
|
|
178
|
+
overrides?: ethers.Overrides;
|
|
179
|
+
}): Promise<ethers.ContractTransactionResponse | null>;
|
|
180
|
+
/**
|
|
181
|
+
* Wrap ETH to Wrapped ETH
|
|
182
|
+
* @param param
|
|
183
|
+
* @returns
|
|
184
|
+
*/
|
|
185
|
+
wrapEth(params: {
|
|
186
|
+
amount: string;
|
|
187
|
+
overrides?: ethers.Overrides;
|
|
188
|
+
}): Promise<ethers.ContractTransactionResponse>;
|
|
189
|
+
}
|