@zebec-network/zebec-vault-sdk 3.0.0 → 4.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.
@@ -943,6 +943,11 @@ export type ZebecStream = {
943
943
  writable: true;
944
944
  signer: true;
945
945
  },
946
+ {
947
+ name: "feePayer";
948
+ writable: true;
949
+ signer: true;
950
+ },
946
951
  {
947
952
  name: "receiver";
948
953
  },
@@ -697,6 +697,11 @@
697
697
  "writable": true,
698
698
  "signer": true
699
699
  },
700
+ {
701
+ "name": "fee_payer",
702
+ "writable": true,
703
+ "signer": true
704
+ },
700
705
  {
701
706
  "name": "receiver"
702
707
  },
@@ -2,4 +2,6 @@ export type RpcNetwork = "mainnet-beta" | "devnet";
2
2
  export declare const ZEBEC_VAULT_PROGRAM_ID: Record<RpcNetwork, string>;
3
3
  export declare const TEN_BIGNUM: BigNumber;
4
4
  export declare const JUPITER_AGGREGATOR_PROGRAM_ID = "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4";
5
- export declare const CARD_LOOKUP_TABLE_ADDRESS = "CgPARkLEbygMJ8C9Z1u6MP57gvdnUERCxdhmR9bTFUSJ";
5
+ export declare const CARD_LOOKUP_TABLE_ADDRESS: Record<RpcNetwork, string>;
6
+ export declare const JUPITER_SWAP_API = "https://lite-api.jup.ag/swap/v1/swap";
7
+ export declare const STAKE_LOOKUP_TABLE_ADDRESS: Record<RpcNetwork, string>;
package/dist/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CARD_LOOKUP_TABLE_ADDRESS = exports.JUPITER_AGGREGATOR_PROGRAM_ID = exports.TEN_BIGNUM = exports.ZEBEC_VAULT_PROGRAM_ID = void 0;
3
+ exports.STAKE_LOOKUP_TABLE_ADDRESS = exports.JUPITER_SWAP_API = exports.CARD_LOOKUP_TABLE_ADDRESS = exports.JUPITER_AGGREGATOR_PROGRAM_ID = exports.TEN_BIGNUM = exports.ZEBEC_VAULT_PROGRAM_ID = void 0;
4
4
  const bignumber_js_1 = require("bignumber.js");
5
5
  exports.ZEBEC_VAULT_PROGRAM_ID = {
6
6
  "mainnet-beta": "ANqQ8QaAMAyLrY2LVLKALP7pBWRvdTrSF94PBTAvCyim",
@@ -8,4 +8,12 @@ exports.ZEBEC_VAULT_PROGRAM_ID = {
8
8
  };
9
9
  exports.TEN_BIGNUM = (0, bignumber_js_1.BigNumber)(10);
10
10
  exports.JUPITER_AGGREGATOR_PROGRAM_ID = "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4";
11
- exports.CARD_LOOKUP_TABLE_ADDRESS = "CgPARkLEbygMJ8C9Z1u6MP57gvdnUERCxdhmR9bTFUSJ";
11
+ exports.CARD_LOOKUP_TABLE_ADDRESS = {
12
+ "mainnet-beta": "CgPARkLEbygMJ8C9Z1u6MP57gvdnUERCxdhmR9bTFUSJ",
13
+ devnet: "CgPARkLEbygMJ8C9Z1u6MP57gvdnUERCxdhmR9bTFUSJ",
14
+ };
15
+ exports.JUPITER_SWAP_API = "https://lite-api.jup.ag/swap/v1/swap";
16
+ exports.STAKE_LOOKUP_TABLE_ADDRESS = {
17
+ "mainnet-beta": "C4R2sL6yj7bzKfbdfwCfH68DZZ3QnzdmedE9wQqTfAAA",
18
+ devnet: "C4R2sL6yj7bzKfbdfwCfH68DZZ3QnzdmedE9wQqTfAAA",
19
+ };
@@ -0,0 +1,30 @@
1
+ export declare class AmountOutOfRangeError extends Error {
2
+ readonly minRange: string;
3
+ readonly maxRange: string;
4
+ readonly value: string;
5
+ name: string;
6
+ constructor(minRange: string, maxRange: string, value: string);
7
+ }
8
+ export declare class DailyCardLimitReachedError extends Error {
9
+ readonly dailyCardLimit: string;
10
+ readonly requestedAmount: string;
11
+ name: string;
12
+ constructor(dailyCardLimit: string, requestedAmount: string);
13
+ }
14
+ export declare class InvalidUsdcAddressError extends Error {
15
+ readonly mintAddress: string;
16
+ name: string;
17
+ constructor(mintAddress: string);
18
+ }
19
+ export declare class NotEnoughBalanceError extends Error {
20
+ name: string;
21
+ constructor(message: string);
22
+ }
23
+ export declare class QuoteResponseError extends Error {
24
+ name: string;
25
+ constructor(message: string);
26
+ }
27
+ export declare class AssociatedTokenAccountDoesNotExistsError extends Error {
28
+ name: string;
29
+ constructor(message: string);
30
+ }
package/dist/errors.js ADDED
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AssociatedTokenAccountDoesNotExistsError = exports.QuoteResponseError = exports.NotEnoughBalanceError = exports.InvalidUsdcAddressError = exports.DailyCardLimitReachedError = exports.AmountOutOfRangeError = void 0;
4
+ class AmountOutOfRangeError extends Error {
5
+ minRange;
6
+ maxRange;
7
+ value;
8
+ name = "AmountOutOfRangeError";
9
+ constructor(minRange, maxRange, value) {
10
+ super("Amount out of range: " + value + "; Must be within " + minRange + "-" + maxRange);
11
+ this.minRange = minRange;
12
+ this.maxRange = maxRange;
13
+ this.value = value;
14
+ }
15
+ }
16
+ exports.AmountOutOfRangeError = AmountOutOfRangeError;
17
+ class DailyCardLimitReachedError extends Error {
18
+ dailyCardLimit;
19
+ requestedAmount;
20
+ name = "DailyCardLimitReachedError";
21
+ constructor(dailyCardLimit, requestedAmount) {
22
+ super("Daily card limit reached. Limit: " + dailyCardLimit + " Requested: " + requestedAmount);
23
+ this.dailyCardLimit = dailyCardLimit;
24
+ this.requestedAmount = requestedAmount;
25
+ }
26
+ }
27
+ exports.DailyCardLimitReachedError = DailyCardLimitReachedError;
28
+ class InvalidUsdcAddressError extends Error {
29
+ mintAddress;
30
+ name = "InvalidUsdcAddressError";
31
+ constructor(mintAddress) {
32
+ super("Invalid USDC address: " + mintAddress);
33
+ this.mintAddress = mintAddress;
34
+ }
35
+ }
36
+ exports.InvalidUsdcAddressError = InvalidUsdcAddressError;
37
+ class NotEnoughBalanceError extends Error {
38
+ name = "NotEnoughBalanceError";
39
+ constructor(message) {
40
+ super(message);
41
+ }
42
+ }
43
+ exports.NotEnoughBalanceError = NotEnoughBalanceError;
44
+ class QuoteResponseError extends Error {
45
+ name = "QuoteResponseError";
46
+ constructor(message) {
47
+ super(message);
48
+ }
49
+ }
50
+ exports.QuoteResponseError = QuoteResponseError;
51
+ class AssociatedTokenAccountDoesNotExistsError extends Error {
52
+ name = "AssociatedTokenAccountDoesNotExistsError";
53
+ constructor(message) {
54
+ super(message);
55
+ }
56
+ }
57
+ exports.AssociatedTokenAccountDoesNotExistsError = AssociatedTokenAccountDoesNotExistsError;
package/dist/pda.d.ts CHANGED
@@ -8,3 +8,8 @@ export declare function deriveCardPurchasePda(buyer: Address, buyerCounter: bigi
8
8
  export declare function deriveUserPurchaseRecordPda(user: Address, programId: Address): [PublicKey, number];
9
9
  export declare function deriveStreamConfigPda(programId: Address): [PublicKey, number];
10
10
  export declare function deriveStreamVaultPda(metatadata: Address, 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;
package/dist/pda.js CHANGED
@@ -8,6 +8,11 @@ exports.deriveCardPurchasePda = deriveCardPurchasePda;
8
8
  exports.deriveUserPurchaseRecordPda = deriveUserPurchaseRecordPda;
9
9
  exports.deriveStreamConfigPda = deriveStreamConfigPda;
10
10
  exports.deriveStreamVaultPda = deriveStreamVaultPda;
11
+ exports.deriveStakeAddress = deriveStakeAddress;
12
+ exports.deriveLockupAddress = deriveLockupAddress;
13
+ exports.deriveUserNonceAddress = deriveUserNonceAddress;
14
+ exports.deriveStakeVaultAddress = deriveStakeVaultAddress;
15
+ exports.deriveRewardVaultAddress = deriveRewardVaultAddress;
11
16
  const anchor_1 = require("@coral-xyz/anchor");
12
17
  const web3_js_1 = require("@solana/web3.js");
13
18
  const VAULT_PROGRAM_V1_SEEDS = {
@@ -44,12 +49,41 @@ function deriveCardPurchasePda(buyer, buyerCounter, programId) {
44
49
  function deriveUserPurchaseRecordPda(user, programId) {
45
50
  return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(CARD_PROGRAM_V2_SEEDS.USER_PURCHASE_RECORD), (0, anchor_1.translateAddress)(user).toBuffer()], (0, anchor_1.translateAddress)(programId));
46
51
  }
47
- const SEEDS = {
52
+ const STREAM_PROGRAM_SEEDS = {
48
53
  STREAM_CONFIG: anchor_1.utils.bytes.utf8.encode("config"),
49
54
  };
50
55
  function deriveStreamConfigPda(programId) {
51
- return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(SEEDS.STREAM_CONFIG)], (0, anchor_1.translateAddress)(programId));
56
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(STREAM_PROGRAM_SEEDS.STREAM_CONFIG)], (0, anchor_1.translateAddress)(programId));
52
57
  }
53
58
  function deriveStreamVaultPda(metatadata, programId) {
54
59
  return web3_js_1.PublicKey.findProgramAddressSync([(0, anchor_1.translateAddress)(metatadata).toBuffer()], (0, anchor_1.translateAddress)(programId));
55
60
  }
61
+ const STAKE_PROGRAM_SEEDS = {
62
+ LOCKUP: anchor_1.utils.bytes.utf8.encode("zebec_lockup"),
63
+ STAKE_VAULT: anchor_1.utils.bytes.utf8.encode("stake_vault"),
64
+ REWARD_VAULT: anchor_1.utils.bytes.utf8.encode("reward_vault"),
65
+ };
66
+ function deriveStakeAddress(staker, lockup, nonce, programId) {
67
+ const [stakeAddress] = web3_js_1.PublicKey.findProgramAddressSync([
68
+ (0, anchor_1.translateAddress)(staker).toBuffer(),
69
+ (0, anchor_1.translateAddress)(lockup).toBuffer(),
70
+ new anchor_1.BN(nonce.toString()).toArrayLike(Buffer, "le", 8),
71
+ ], (0, anchor_1.translateAddress)(programId));
72
+ return stakeAddress;
73
+ }
74
+ function deriveLockupAddress(name, programId) {
75
+ const [lockupAddress] = web3_js_1.PublicKey.findProgramAddressSync([STAKE_PROGRAM_SEEDS.LOCKUP, anchor_1.utils.bytes.utf8.encode(name)], (0, anchor_1.translateAddress)(programId));
76
+ return lockupAddress;
77
+ }
78
+ function deriveUserNonceAddress(user, lockup, programId) {
79
+ const [userNonceAddress] = web3_js_1.PublicKey.findProgramAddressSync([(0, anchor_1.translateAddress)(user).toBuffer(), (0, anchor_1.translateAddress)(lockup).toBuffer()], (0, anchor_1.translateAddress)(programId));
80
+ return userNonceAddress;
81
+ }
82
+ function deriveStakeVaultAddress(lockup, programId) {
83
+ const [stakeVault] = web3_js_1.PublicKey.findProgramAddressSync([STAKE_PROGRAM_SEEDS.STAKE_VAULT, (0, anchor_1.translateAddress)(lockup).toBuffer()], (0, anchor_1.translateAddress)(programId));
84
+ return stakeVault;
85
+ }
86
+ function deriveRewardVaultAddress(lockup, programId) {
87
+ const [rewardVault] = web3_js_1.PublicKey.findProgramAddressSync([STAKE_PROGRAM_SEEDS.REWARD_VAULT, (0, anchor_1.translateAddress)(lockup).toBuffer()], (0, anchor_1.translateAddress)(programId));
88
+ return rewardVault;
89
+ }
package/dist/service.d.ts CHANGED
@@ -1,16 +1,17 @@
1
1
  import { Address, BN, Program, Provider } from "@coral-xyz/anchor";
2
- import { AccountMeta, Connection, Keypair, PublicKey, Signer, TransactionInstruction } from "@solana/web3.js";
3
- import { TransactionPayload } from "@zebec-network/solana-common";
4
- import { ZebecCardV2Idl, ZebecStreamIdl, ZebecVaultV1Idl } from "./artifacts";
2
+ import { AccountMeta, Commitment, Connection, Keypair, PublicKey, Signer, TransactionInstruction } from "@solana/web3.js";
3
+ import { MultiTransactionPayload, TransactionPayload } from "@zebec-network/solana-common";
4
+ import { ZebecCardV2Idl, ZebecStakeIdlV1, ZebecStreamIdl, ZebecVaultV1Idl } from "./artifacts";
5
5
  import { RpcNetwork } from "./constants";
6
- import { Numeric, ProposalAction, ProposalInfo, VaultInfo } from "./types";
6
+ import { CancelStreamParams, ChangeStreamReceiverParams, createMultipleStreamFromVaultParams, CreateSilverCardInstructionData, CreateSilverCardParams, CreateStreamFromVaultParams, LoadCarbonCardInstructionData, LoadCarbonCardParams, Numeric, PauseResumeStreamParams, ProposalAction, ProposalInfo, StakeInstructionData, StakeUserNonceInfo, StreamMetadataInfo, SwapAndCreateSilverCardParams, SwapAndLoadCarbonCardParams, TokenFeeRecord, VaultInfo, WithdrawStreamParams } from "./types";
7
7
  export declare class ZebecVaultService {
8
8
  readonly provider: Provider;
9
9
  readonly vaultV1Program: Program<ZebecVaultV1Idl>;
10
10
  readonly cardV2Program: Program<ZebecCardV2Idl>;
11
11
  readonly streamProgram: Program<ZebecStreamIdl>;
12
+ readonly stakeProgram: Program<ZebecStakeIdlV1>;
12
13
  readonly network: RpcNetwork;
13
- constructor(provider: Provider, vaultV1Program: Program<ZebecVaultV1Idl>, cardV2Program: Program<ZebecCardV2Idl>, streamProgram: Program<ZebecStreamIdl>, network: RpcNetwork);
14
+ constructor(provider: Provider, vaultV1Program: Program<ZebecVaultV1Idl>, cardV2Program: Program<ZebecCardV2Idl>, streamProgram: Program<ZebecStreamIdl>, stakeProgram: Program<ZebecStakeIdlV1>, network: RpcNetwork);
14
15
  static create(provider: Provider, network: RpcNetwork): ZebecVaultService;
15
16
  getCreateVaultInstruction(payer: PublicKey, owner: PublicKey, signerBump: number): Promise<TransactionInstruction>;
16
17
  getDepositSolInstruction(depositor: PublicKey, amount: BN): Promise<TransactionInstruction>;
@@ -22,37 +23,6 @@ export declare class ZebecVaultService {
22
23
  getDeleteProposalInstruction(proposal: PublicKey): Promise<TransactionInstruction>;
23
24
  getExecuteProposalInstruction(caller: PublicKey, proposal: PublicKey, remainingAccounts: AccountMeta[]): Promise<TransactionInstruction>;
24
25
  getExecuteProposalDirectInstruction(proposer: PublicKey, actions: ProposalAction[], remainingAccounts: AccountMeta[]): Promise<TransactionInstruction>;
25
- getSwapAndCreateSilverCardInstruction(cardVault: PublicKey, cardVaultAta: PublicKey, inputMint: PublicKey, inputMintProgram: PublicKey, outputMint: PublicKey, revenueVault: PublicKey, revenueVaultAta: PublicKey, vaultOwner: PublicKey, data: {
26
- currency: string;
27
- emailHash: number[];
28
- index: BN;
29
- swapData: Buffer;
30
- }, remainingAccounts: AccountMeta[]): Promise<TransactionInstruction>;
31
- getSwapAndLoadCarbonCardInstruction(cardVault: PublicKey, cardVaultAta: PublicKey, inputMint: PublicKey, inputMintProgram: PublicKey, outputMint: PublicKey, revenueVault: PublicKey, revenueVaultAta: PublicKey, vaultOwner: PublicKey, data: {
32
- currency: string;
33
- emailHash: number[];
34
- index: BN;
35
- swapData: Buffer;
36
- reloadCardId: string;
37
- }, remainingAccounts: AccountMeta[]): Promise<TransactionInstruction>;
38
- getCreateStreamFromVaultInstruction(vaultOwner: PublicKey, vault: PublicKey, vaultSigner: PublicKey, vaultSignerAta: PublicKey, receiver: PublicKey, receiverAta: PublicKey, streamToken: PublicKey, streamMetadata: PublicKey, streamConfig: PublicKey, withdrawAccount: PublicKey, streamVault: PublicKey, streamVaultAta: PublicKey, zebecStreamProgram: PublicKey, streamData: {
39
- amount: BN;
40
- automaticWithdrawal: boolean;
41
- cancelableByRecipient: boolean;
42
- cancelableBySender: boolean;
43
- canTopup: boolean;
44
- cliffPercentage: BN;
45
- duration: BN;
46
- isPausable: boolean;
47
- rateUpdatable: boolean;
48
- startNow: boolean;
49
- startTime: BN;
50
- autoWithdrawFrequency: BN;
51
- streamName: Uint8Array | Buffer;
52
- transferableByRecipient: boolean;
53
- transferableBySender: boolean;
54
- numberOfWithdrawls: BN;
55
- }): Promise<TransactionInstruction>;
56
26
  createVault(params: {
57
27
  payer?: Address;
58
28
  }): Promise<TransactionPayload>;
@@ -64,12 +34,14 @@ export declare class ZebecVaultService {
64
34
  withdrawer?: Address;
65
35
  amount: Numeric;
66
36
  }): Promise<TransactionPayload>;
67
- depositToken(params: {
37
+ deposit(params: {
68
38
  depositor?: Address;
69
39
  tokenMint: Address;
70
40
  amount: Numeric;
71
41
  }): Promise<TransactionPayload>;
72
- withdrawToken(params: {
42
+ private getWrapSolInstructions;
43
+ private getUnwrapWsolInstruction;
44
+ withdraw(params: {
73
45
  withdrawer?: Address;
74
46
  tokenMint: Address;
75
47
  amount: Numeric;
@@ -101,96 +73,81 @@ export declare class ZebecVaultService {
101
73
  partialSigners?: Signer[];
102
74
  addressLookupTables?: Address[];
103
75
  }): Promise<TransactionPayload>;
76
+ getVaultInfoOfUser(user?: Address): Promise<VaultInfo | null>;
77
+ getAllVaultsInfo(): Promise<VaultInfo[]>;
78
+ getProposalsInfoOfVault(vaultAddress: Address): Promise<ProposalInfo[]>;
79
+ getCreateSilverCardInstruction(feePayer: PublicKey, cardVault: PublicKey, cardVaultAta: PublicKey, inputMint: PublicKey, revenueVault: PublicKey, revenueVaultAta: PublicKey, usdcToken: PublicKey, user: PublicKey, createSilverCardData: CreateSilverCardInstructionData): Promise<TransactionInstruction>;
80
+ getLoadCarbonCardInstruction(feePayer: PublicKey, cardVault: PublicKey, cardVaultAta: PublicKey, inputMint: PublicKey, revenueVault: PublicKey, revenueVaultAta: PublicKey, usdcToken: PublicKey, user: PublicKey, createCarbonCardData: LoadCarbonCardInstructionData): Promise<TransactionInstruction>;
81
+ getSwapAndCreateSilverCardInstruction(cardVault: PublicKey, cardVaultAta: PublicKey, inputMint: PublicKey, inputMintProgram: PublicKey, outputMint: PublicKey, revenueVault: PublicKey, revenueVaultAta: PublicKey, vaultOwner: PublicKey, data: {
82
+ currency: string;
83
+ emailHash: number[];
84
+ index: BN;
85
+ swapData: Buffer;
86
+ }, remainingAccounts: AccountMeta[]): Promise<TransactionInstruction>;
87
+ getSwapAndLoadCarbonCardInstruction(cardVault: PublicKey, cardVaultAta: PublicKey, inputMint: PublicKey, inputMintProgram: PublicKey, outputMint: PublicKey, revenueVault: PublicKey, revenueVaultAta: PublicKey, vaultOwner: PublicKey, data: {
88
+ currency: string;
89
+ emailHash: number[];
90
+ index: BN;
91
+ swapData: Buffer;
92
+ reloadCardId: string;
93
+ }, remainingAccounts: AccountMeta[]): Promise<TransactionInstruction>;
94
+ private _checkAmountIsWithinDailyCardLimit;
95
+ private _checkAmountIsWithinProviderRange;
96
+ getNextCardIndex(): Promise<bigint>;
97
+ createSilverCard(params: CreateSilverCardParams): Promise<TransactionPayload>;
98
+ loadCarbonCard(params: LoadCarbonCardParams): Promise<TransactionPayload>;
104
99
  swapAndCreateSilverCard(params: SwapAndCreateSilverCardParams): Promise<TransactionPayload>;
105
100
  swapAndLoadCarbonCard(params: SwapAndLoadCarbonCardParams): Promise<TransactionPayload>;
106
- createstreamFromVault(params: CreateStreamFromVaultParams): Promise<TransactionPayload>;
101
+ getCardCustomTokenFees(): Promise<TokenFeeRecord[]>;
102
+ getCreateStreamFromVaultInstruction(vaultOwner: PublicKey, vault: PublicKey, vaultSigner: PublicKey, vaultSignerAta: PublicKey, receiver: PublicKey, receiverAta: PublicKey, streamToken: PublicKey, streamMetadata: PublicKey, streamConfig: PublicKey, withdrawAccount: PublicKey, streamVault: PublicKey, streamVaultAta: PublicKey, zebecStreamProgram: PublicKey, streamData: {
103
+ amount: BN;
104
+ automaticWithdrawal: boolean;
105
+ cancelableByRecipient: boolean;
106
+ cancelableBySender: boolean;
107
+ canTopup: boolean;
108
+ cliffPercentage: BN;
109
+ duration: BN;
110
+ isPausable: boolean;
111
+ rateUpdatable: boolean;
112
+ startNow: boolean;
113
+ startTime: BN;
114
+ autoWithdrawFrequency: BN;
115
+ streamName: Uint8Array | Buffer;
116
+ transferableByRecipient: boolean;
117
+ transferableBySender: boolean;
118
+ numberOfWithdrawls: BN;
119
+ }): Promise<TransactionInstruction>;
120
+ getPauseResumeStreamInstruction(streamMetadata: PublicKey, user: PublicKey): Promise<TransactionInstruction>;
121
+ getCancelStreamInstruction(feePayer: PublicKey, otherParty: PublicKey, otherPartyAta: PublicKey, signer: PublicKey, signerAta: PublicKey, streamMetadata: PublicKey, streamToken: PublicKey, streamVault: PublicKey, streamVaultAta: PublicKey): Promise<TransactionInstruction>;
122
+ getWithdrawStreamInstruction(receiver: PublicKey, receiverAta: PublicKey, streamMetadata: PublicKey, streamToken: PublicKey, streamVault: PublicKey, streamVaultAta: PublicKey, withdrawer: PublicKey, feePayer: PublicKey): Promise<TransactionInstruction>;
123
+ getChangeStreamReceiverInstruction(streamMetadata: PublicKey, newRecipient: PublicKey, signer: PublicKey): Promise<TransactionInstruction>;
124
+ createStreamFromVault(params: CreateStreamFromVaultParams): Promise<TransactionPayload>;
125
+ createMultipleStreamFromVault(params: createMultipleStreamFromVaultParams): Promise<MultiTransactionPayload>;
126
+ cancelStream(params: CancelStreamParams): Promise<TransactionPayload>;
127
+ pauseResumeStream(params: PauseResumeStreamParams): Promise<TransactionPayload>;
128
+ changeStreamReceiver(params: ChangeStreamReceiverParams): Promise<TransactionPayload>;
129
+ withdrawStream(params: WithdrawStreamParams): Promise<TransactionPayload>;
130
+ getStreamMetadataInfo(streamMetadata: Address, commitment?: Commitment): Promise<StreamMetadataInfo>;
131
+ getStakeInstruction(feePayer: PublicKey, lockup: PublicKey, stakeToken: PublicKey, stakeVault: PublicKey, staker: PublicKey, userNonce: PublicKey, stakePda: PublicKey, stakeVaultTokenAccount: PublicKey, data: StakeInstructionData): Promise<TransactionInstruction>;
132
+ getUnstakeInstruction(feePayer: PublicKey, feeVault: PublicKey, lockup: PublicKey, stakePda: PublicKey, rewardToken: PublicKey, rewardVault: PublicKey, stakeToken: PublicKey, stakeVault: PublicKey, staker: PublicKey, stakerTokenAccount: PublicKey, nonce: BN): Promise<TransactionInstruction>;
133
+ stake(params: {
134
+ lockupName: string;
135
+ vaultOwner?: Address;
136
+ amount: Numeric;
137
+ lockPeriod: number;
138
+ nonce: bigint;
139
+ }): Promise<TransactionPayload>;
140
+ unstake(params: {
141
+ lockupName: string;
142
+ nonce: bigint;
143
+ vaultOwner?: Address;
144
+ }): Promise<TransactionPayload>;
145
+ getStakeUserNonceInfo(lockupName: string, vaultOwnerAddress: Address, commitment?: Commitment): Promise<StakeUserNonceInfo | null>;
107
146
  private _createTransactionPayload;
108
- getVaultInfoOfUser(user?: Address): Promise<VaultInfo | null>;
109
- getAllVaultsInfo(): Promise<VaultInfo[]>;
110
- getProposalsInfoOfVault(vault: Address): Promise<ProposalInfo[]>;
147
+ private _createMultiTransactionPayload;
111
148
  get vaultV1ProgramId(): PublicKey;
112
149
  get cardV2ProgramId(): PublicKey;
113
150
  get streamProgramId(): PublicKey;
151
+ get stakeProgramId(): PublicKey;
114
152
  get connection(): Connection;
115
153
  }
116
- export type SwapAndCreateSilverCardParams = {
117
- quoteInfo: QuoteInfo;
118
- vaultOwnerAddress: Address;
119
- nextCardCounter: bigint;
120
- emailHash: Buffer;
121
- currency: string;
122
- wrapAndUnwrapSol?: boolean;
123
- };
124
- export type SwapAndLoadCarbonCardParams = {
125
- quoteInfo: QuoteInfo;
126
- nextCardCounter: bigint;
127
- emailHash: Buffer;
128
- currency: string;
129
- reloadCardId: string;
130
- vaultOwnerAddress: Address;
131
- };
132
- /**
133
- * Juptier quote info
134
- */
135
- export type QuoteInfo = {
136
- inputMint: string;
137
- inAmount: string;
138
- outputMint: string;
139
- outAmount: string;
140
- otherAmountThreshold: string;
141
- swapMode: "ExactIn" | "ExactOut";
142
- slippageBps: number;
143
- platformFee: {
144
- amount: string;
145
- feeBps: number;
146
- } | null;
147
- priceImpactPct: string;
148
- routePlan: RouteInfo[];
149
- contextSlot: number;
150
- timeTaken: number;
151
- swapUsdValue: string;
152
- simplerRouteUsed: boolean;
153
- mostReliableAmmsQuoteReport: {
154
- info: Record<string, string>;
155
- };
156
- } | {
157
- error: string;
158
- };
159
- /**
160
- * Jupiter quote routes info
161
- */
162
- export type RouteInfo = {
163
- swapInfo: {
164
- ammKey: string;
165
- label: string;
166
- inputMint: string;
167
- outputMint: string;
168
- inAmount: string;
169
- outAmount: string;
170
- feeAmount: string;
171
- feeMint: string;
172
- };
173
- percent: number;
174
- bps: number;
175
- };
176
- export type CreateStreamFromVaultParams = {
177
- sender: Address;
178
- receiver: Address;
179
- streamToken: Address;
180
- amount: Numeric;
181
- automaticWithdrawal: boolean;
182
- cancelableByRecipient: boolean;
183
- cancelableBySender: boolean;
184
- cliffPercentage: Numeric;
185
- duration: number;
186
- isPausable: boolean;
187
- startNow: boolean;
188
- startTime: number;
189
- autoWithdrawFrequency: number;
190
- streamName: string;
191
- transferableByRecipient: boolean;
192
- transferableBySender: boolean;
193
- canTopup: boolean;
194
- rateUpdatable: boolean;
195
- streamMetadataKeypair?: Keypair;
196
- };