@zebec-network/zebec-vault-sdk 1.1.0 → 2.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/README.md CHANGED
@@ -1,219 +1,219 @@
1
- # Zebec Vault Sdk
2
-
3
- ## Installation
4
-
5
- ```bash
6
- yarn add @zebec-network/zebec-vault-sdk
7
- ```
8
-
9
- ```bash
10
- npm install @zebec-network/zebec-vault-sdk
11
- ```
12
-
13
- ## Dependency Map
14
-
15
- ![Vault SDK Dependency Map](./assets/VaultSDKDependencyMap.png)
16
-
17
- ## Development
18
-
19
- To build the package
20
-
21
- ```bash
22
- yarn build
23
- ```
24
-
25
- To run specific test filess
26
-
27
- ```bash
28
- yarn test <test file path> -f "<regex for test name>"
29
- // example:
30
- // yarn test ./test/<filename>.test.ts
31
- ```
32
-
33
- ## publish
34
-
35
- Build package and bump package version to specific need and publish
36
-
37
- ```bash
38
- npm publish --access public
39
- ```
40
-
41
- ## Usage
42
-
43
- ### Create Vault Instance
44
-
45
- ```ts
46
- const network = "devnet";
47
- const wallet = <Anchor wallet>;
48
- const connection = <Connection Instance>;
49
- const provider = createAnchorProvider(connection, wallet);
50
- const service = await ZebecVaultService.create(provider, network);
51
- ```
52
-
53
- ### Create Vault
54
-
55
- ```ts
56
- const vaultKeypair = Keypair.generate();
57
- console.log("Vault Keypair:", vaultKeypair.publicKey.toBase58());
58
- const payload = await service.createVault({
59
- vaultKeypair,
60
- });
61
-
62
- const signature = await payload.execute({ commitment: "finalized" });
63
- console.log("Signature:", signature);
64
- ```
65
-
66
- ### Get Vault Info of User
67
-
68
- ```ts
69
- const vaultsInfo = await service.getVaultsInfoOfUser(wallet.publicKey);
70
- console.log("vaults info:", JSON.stringify(vaultsInfo, null, 2));
71
- const vault = vaultsInfo[0].vault;
72
- ```
73
-
74
- ### Deposit Sol
75
-
76
- ```ts
77
- const vault = <vault public key>;
78
- const amount = 2;
79
- const payload = await service.depositSol({ amount, vault });
80
- const signature = await payload.execute({ commitment: "finalized" });
81
- ```
82
-
83
- ### Withdraw Sol
84
-
85
- ```ts
86
- const vault = <vault public key>;
87
- const amount = 0.01;
88
- const payload = await service.withdrawSol({ amount, vault });
89
- const signature = await payload.execute({ commitment: "finalized" });
90
- ```
91
-
92
- ### Deposit Token
93
-
94
- ```ts
95
- const tokenMint = "De31sBPcDejCVpZZh1fq8SNs7AcuWcBKuU3k2jqnkmKc";
96
- const vault = <vault public key>;
97
- const amount = 1000
98
- const payload = await service.depositToken({ amount, vault, tokenMint });
99
- const signature = await payload.execute({ commitment: "finalized" });
100
- ```
101
-
102
- ### Withdraw Token
103
-
104
- ```ts
105
- const vault = <vault public key>;
106
- const tokenMint = "De31sBPcDejCVpZZh1fq8SNs7AcuWcBKuU3k2jqnkmKc";
107
- const amount = 1;
108
- const payload = await service.withdrawToken({ amount, vault, tokenMint });
109
- const signature = await payload.execute({ commitment: "finalized" });
110
- ```
111
-
112
- ### Execute Proposal Direct
113
-
114
- ```ts
115
- const proposer = <wallet public key>;
116
- const vault = <vault public key>;
117
-
118
- const memoInstruction = new TransactionInstruction({
119
- keys: [],
120
- programId: MEMO_PROGRAM_ID,
121
- data: Buffer.from("This is test memo", "utf8"),
122
- });
123
- const actions = [memoInstruction];
124
-
125
- const payload = await service.executeProposalDirect({
126
- actions,
127
- proposer,
128
- vault,
129
- });
130
-
131
- const signature = await payload.execute({ commitment: "finalized" });
132
- console.log("Execute Proposal Direct Signature:", signature);
133
- ```
134
-
135
- ### Create Proposal
136
-
137
- ```ts
138
- const proposer = <wallet public key>;
139
- const receiver = <wallet public Key>;
140
- const vault = <vault public key>;
141
-
142
- const [vaultSigner] = deriveVaultSigner(vault, service.programId);
143
- const name = "Transfer Funds";
144
- const ix = SystemProgram.transfer({
145
- fromPubkey: vaultSigner,
146
- toPubkey: receiver,
147
- lamports: Number(parseSol(1)),
148
- });
149
- const actions = [ix];
150
- const proposalKeypair = Keypair.generate();
151
-
152
- const createProposalPayload = await service.createProposal({
153
- actions,
154
- name,
155
- proposer,
156
- vault,
157
- proposalKeypair,
158
- });
159
-
160
- const signature = await createProposalPayload.execute({ commitment: "finalized" });
161
- ```
162
-
163
- ### Append Actions
164
-
165
- ```ts
166
- const proposal = <proposal public key>;
167
-
168
- const ixB = new TransactionInstruction({
169
- keys: [],
170
- programId: MEMO_PROGRAM_ID,
171
- data: Buffer.from("This is test memo", "utf8"),
172
- });
173
- const actionsB = [ixB];
174
-
175
- const appendActionsPayload = await service.appendActions({
176
- actions: actionsB,
177
- proposal,
178
- });
179
-
180
- const appendActionsSignature = await appendActionsPayload.execute({ commitment: "confirmed" });
181
- ```
182
-
183
- ### Execute Proposal
184
-
185
- ```ts
186
- const proposal = <proposal public key>;
187
- const payload = await service.executeProposal({
188
- proposal,
189
- });
190
-
191
- const signature = await payload.execute({ commitment: "confirmed" });
192
- console.log("Execute Proposal Signature:", signature);
193
- ```
194
-
195
- ### Delete Proposal
196
-
197
- ```ts
198
- const proposal = <proposal public key>;
199
-
200
- const deleteProposalPayload = await service.deleteProposal({ proposal });
201
- const deleteProposalSignature = await deleteProposalPayload.execute({
202
- commitment: "confirmed",
203
- });
204
- console.log("Delete Proposal Signature:", deleteProposalSignature);
205
- ```
206
-
207
- ### Get Proposals Info of a Vault
208
-
209
- ```ts
210
- const vault = <vault public key>;
211
-
212
- const proposalsInfo = await service.getProposalsInfoOfVault(vault);
213
- ```
214
-
215
- ### Get All Vaults Info
216
-
217
- ```ts
218
- const vaultsInfo = await service.getAllVaultsInfo();
219
- ```
1
+ # Zebec Vault Sdk
2
+
3
+ ## Installation
4
+
5
+ ```bash
6
+ yarn add @zebec-network/zebec-vault-sdk
7
+ ```
8
+
9
+ ```bash
10
+ npm install @zebec-network/zebec-vault-sdk
11
+ ```
12
+
13
+ ## Dependency Map
14
+
15
+ ![Vault SDK Dependency Map](./assets/VaultSDKDependencyMap.png)
16
+
17
+ ## Development
18
+
19
+ To build the package
20
+
21
+ ```bash
22
+ yarn build
23
+ ```
24
+
25
+ To run specific test filess
26
+
27
+ ```bash
28
+ yarn test <test file path> -f "<regex for test name>"
29
+ // example:
30
+ // yarn test ./test/<filename>.test.ts
31
+ ```
32
+
33
+ ## publish
34
+
35
+ Build package and bump package version to specific need and publish
36
+
37
+ ```bash
38
+ npm publish --access public
39
+ ```
40
+
41
+ ## Usage
42
+
43
+ ### Create Vault Instance
44
+
45
+ ```ts
46
+ const network = "devnet";
47
+ const wallet = <Anchor wallet>;
48
+ const connection = <Connection Instance>;
49
+ const provider = createAnchorProvider(connection, wallet);
50
+ const service = await ZebecVaultService.create(provider, network);
51
+ ```
52
+
53
+ ### Create Vault
54
+
55
+ ```ts
56
+ const vaultKeypair = Keypair.generate();
57
+ console.log("Vault Keypair:", vaultKeypair.publicKey.toBase58());
58
+ const payload = await service.createVault({
59
+ vaultKeypair,
60
+ });
61
+
62
+ const signature = await payload.execute({ commitment: "finalized" });
63
+ console.log("Signature:", signature);
64
+ ```
65
+
66
+ ### Get Vault Info of User
67
+
68
+ ```ts
69
+ const vaultsInfo = await service.getVaultsInfoOfUser(wallet.publicKey);
70
+ console.log("vaults info:", JSON.stringify(vaultsInfo, null, 2));
71
+ const vault = vaultsInfo[0].vault;
72
+ ```
73
+
74
+ ### Deposit Sol
75
+
76
+ ```ts
77
+ const vault = <vault public key>;
78
+ const amount = 2;
79
+ const payload = await service.depositSol({ amount, vault });
80
+ const signature = await payload.execute({ commitment: "finalized" });
81
+ ```
82
+
83
+ ### Withdraw Sol
84
+
85
+ ```ts
86
+ const vault = <vault public key>;
87
+ const amount = 0.01;
88
+ const payload = await service.withdrawSol({ amount, vault });
89
+ const signature = await payload.execute({ commitment: "finalized" });
90
+ ```
91
+
92
+ ### Deposit Token
93
+
94
+ ```ts
95
+ const tokenMint = "De31sBPcDejCVpZZh1fq8SNs7AcuWcBKuU3k2jqnkmKc";
96
+ const vault = <vault public key>;
97
+ const amount = 1000
98
+ const payload = await service.depositToken({ amount, vault, tokenMint });
99
+ const signature = await payload.execute({ commitment: "finalized" });
100
+ ```
101
+
102
+ ### Withdraw Token
103
+
104
+ ```ts
105
+ const vault = <vault public key>;
106
+ const tokenMint = "De31sBPcDejCVpZZh1fq8SNs7AcuWcBKuU3k2jqnkmKc";
107
+ const amount = 1;
108
+ const payload = await service.withdrawToken({ amount, vault, tokenMint });
109
+ const signature = await payload.execute({ commitment: "finalized" });
110
+ ```
111
+
112
+ ### Execute Proposal Direct
113
+
114
+ ```ts
115
+ const proposer = <wallet public key>;
116
+ const vault = <vault public key>;
117
+
118
+ const memoInstruction = new TransactionInstruction({
119
+ keys: [],
120
+ programId: MEMO_PROGRAM_ID,
121
+ data: Buffer.from("This is test memo", "utf8"),
122
+ });
123
+ const actions = [memoInstruction];
124
+
125
+ const payload = await service.executeProposalDirect({
126
+ actions,
127
+ proposer,
128
+ vault,
129
+ });
130
+
131
+ const signature = await payload.execute({ commitment: "finalized" });
132
+ console.log("Execute Proposal Direct Signature:", signature);
133
+ ```
134
+
135
+ ### Create Proposal
136
+
137
+ ```ts
138
+ const proposer = <wallet public key>;
139
+ const receiver = <wallet public Key>;
140
+ const vault = <vault public key>;
141
+
142
+ const [vaultSigner] = deriveVaultSigner(vault, service.programId);
143
+ const name = "Transfer Funds";
144
+ const ix = SystemProgram.transfer({
145
+ fromPubkey: vaultSigner,
146
+ toPubkey: receiver,
147
+ lamports: Number(parseSol(1)),
148
+ });
149
+ const actions = [ix];
150
+ const proposalKeypair = Keypair.generate();
151
+
152
+ const createProposalPayload = await service.createProposal({
153
+ actions,
154
+ name,
155
+ proposer,
156
+ vault,
157
+ proposalKeypair,
158
+ });
159
+
160
+ const signature = await createProposalPayload.execute({ commitment: "finalized" });
161
+ ```
162
+
163
+ ### Append Actions
164
+
165
+ ```ts
166
+ const proposal = <proposal public key>;
167
+
168
+ const ixB = new TransactionInstruction({
169
+ keys: [],
170
+ programId: MEMO_PROGRAM_ID,
171
+ data: Buffer.from("This is test memo", "utf8"),
172
+ });
173
+ const actionsB = [ixB];
174
+
175
+ const appendActionsPayload = await service.appendActions({
176
+ actions: actionsB,
177
+ proposal,
178
+ });
179
+
180
+ const appendActionsSignature = await appendActionsPayload.execute({ commitment: "confirmed" });
181
+ ```
182
+
183
+ ### Execute Proposal
184
+
185
+ ```ts
186
+ const proposal = <proposal public key>;
187
+ const payload = await service.executeProposal({
188
+ proposal,
189
+ });
190
+
191
+ const signature = await payload.execute({ commitment: "confirmed" });
192
+ console.log("Execute Proposal Signature:", signature);
193
+ ```
194
+
195
+ ### Delete Proposal
196
+
197
+ ```ts
198
+ const proposal = <proposal public key>;
199
+
200
+ const deleteProposalPayload = await service.deleteProposal({ proposal });
201
+ const deleteProposalSignature = await deleteProposalPayload.execute({
202
+ commitment: "confirmed",
203
+ });
204
+ console.log("Delete Proposal Signature:", deleteProposalSignature);
205
+ ```
206
+
207
+ ### Get Proposals Info of a Vault
208
+
209
+ ```ts
210
+ const vault = <vault public key>;
211
+
212
+ const proposalsInfo = await service.getProposalsInfoOfVault(vault);
213
+ ```
214
+
215
+ ### Get All Vaults Info
216
+
217
+ ```ts
218
+ const vaultsInfo = await service.getAllVaultsInfo();
219
+ ```
@@ -24,6 +24,18 @@ export type ZebecVault = {
24
24
  },
25
25
  {
26
26
  name: "vault";
27
+ pda: {
28
+ seeds: [
29
+ {
30
+ kind: "const";
31
+ value: [122, 101, 98, 101, 99, 95, 117, 115, 101, 114, 95, 118, 97, 117, 108, 116];
32
+ },
33
+ {
34
+ kind: "account";
35
+ path: "proposer";
36
+ }
37
+ ];
38
+ };
27
39
  relations: ["proposal"];
28
40
  },
29
41
  {
@@ -57,6 +69,18 @@ export type ZebecVault = {
57
69
  },
58
70
  {
59
71
  name: "vault";
72
+ pda: {
73
+ seeds: [
74
+ {
75
+ kind: "const";
76
+ value: [122, 101, 98, 101, 99, 95, 117, 115, 101, 114, 95, 118, 97, 117, 108, 116];
77
+ },
78
+ {
79
+ kind: "account";
80
+ path: "proposer";
81
+ }
82
+ ];
83
+ };
60
84
  },
61
85
  {
62
86
  name: "proposal";
@@ -91,7 +115,18 @@ export type ZebecVault = {
91
115
  {
92
116
  name: "vault";
93
117
  writable: true;
94
- signer: true;
118
+ pda: {
119
+ seeds: [
120
+ {
121
+ kind: "const";
122
+ value: [122, 101, 98, 101, 99, 95, 117, 115, 101, 114, 95, 118, 97, 117, 108, 116];
123
+ },
124
+ {
125
+ kind: "account";
126
+ path: "payer";
127
+ }
128
+ ];
129
+ };
95
130
  },
96
131
  {
97
132
  name: "systemProgram";
@@ -119,6 +154,18 @@ export type ZebecVault = {
119
154
  },
120
155
  {
121
156
  name: "vault";
157
+ pda: {
158
+ seeds: [
159
+ {
160
+ kind: "const";
161
+ value: [122, 101, 98, 101, 99, 95, 117, 115, 101, 114, 95, 118, 97, 117, 108, 116];
162
+ },
163
+ {
164
+ kind: "account";
165
+ path: "proposer";
166
+ }
167
+ ];
168
+ };
122
169
  relations: ["proposal"];
123
170
  },
124
171
  {
@@ -140,6 +187,18 @@ export type ZebecVault = {
140
187
  {
141
188
  name: "vault";
142
189
  writable: true;
190
+ pda: {
191
+ seeds: [
192
+ {
193
+ kind: "const";
194
+ value: [122, 101, 98, 101, 99, 95, 117, 115, 101, 114, 95, 118, 97, 117, 108, 116];
195
+ },
196
+ {
197
+ kind: "account";
198
+ path: "depositor";
199
+ }
200
+ ];
201
+ };
143
202
  },
144
203
  {
145
204
  name: "vaultSigner";
@@ -184,6 +243,18 @@ export type ZebecVault = {
184
243
  },
185
244
  {
186
245
  name: "vault";
246
+ pda: {
247
+ seeds: [
248
+ {
249
+ kind: "const";
250
+ value: [122, 101, 98, 101, 99, 95, 117, 115, 101, 114, 95, 118, 97, 117, 108, 116];
251
+ },
252
+ {
253
+ kind: "account";
254
+ path: "depositor";
255
+ }
256
+ ];
257
+ };
187
258
  },
188
259
  {
189
260
  name: "vaultSigner";
@@ -421,6 +492,18 @@ export type ZebecVault = {
421
492
  },
422
493
  {
423
494
  name: "vault";
495
+ pda: {
496
+ seeds: [
497
+ {
498
+ kind: "const";
499
+ value: [122, 101, 98, 101, 99, 95, 117, 115, 101, 114, 95, 118, 97, 117, 108, 116];
500
+ },
501
+ {
502
+ kind: "account";
503
+ path: "caller";
504
+ }
505
+ ];
506
+ };
424
507
  relations: ["proposal"];
425
508
  },
426
509
  {
@@ -452,6 +535,18 @@ export type ZebecVault = {
452
535
  },
453
536
  {
454
537
  name: "vault";
538
+ pda: {
539
+ seeds: [
540
+ {
541
+ kind: "const";
542
+ value: [122, 101, 98, 101, 99, 95, 117, 115, 101, 114, 95, 118, 97, 117, 108, 116];
543
+ },
544
+ {
545
+ kind: "account";
546
+ path: "proposer";
547
+ }
548
+ ];
549
+ };
455
550
  },
456
551
  {
457
552
  name: "vaultSigner";
@@ -495,7 +590,18 @@ export type ZebecVault = {
495
590
  },
496
591
  {
497
592
  name: "vault";
498
- writable: true;
593
+ pda: {
594
+ seeds: [
595
+ {
596
+ kind: "const";
597
+ value: [122, 101, 98, 101, 99, 95, 117, 115, 101, 114, 95, 118, 97, 117, 108, 116];
598
+ },
599
+ {
600
+ kind: "account";
601
+ path: "withdrawer";
602
+ }
603
+ ];
604
+ };
499
605
  },
500
606
  {
501
607
  name: "vaultSigner";
@@ -540,6 +646,18 @@ export type ZebecVault = {
540
646
  },
541
647
  {
542
648
  name: "vault";
649
+ pda: {
650
+ seeds: [
651
+ {
652
+ kind: "const";
653
+ value: [122, 101, 98, 101, 99, 95, 117, 115, 101, 114, 95, 118, 97, 117, 108, 116];
654
+ },
655
+ {
656
+ kind: "account";
657
+ path: "withdrawer";
658
+ }
659
+ ];
660
+ };
543
661
  },
544
662
  {
545
663
  name: "vaultSigner";
@@ -1476,6 +1594,13 @@ export type ZebecVault = {
1476
1594
  }
1477
1595
  ];
1478
1596
  constants: [
1597
+ {
1598
+ name: "userVaultPrefix";
1599
+ type: {
1600
+ array: ["u8", 16];
1601
+ };
1602
+ value: "[122, 101, 98, 101, 99, 95, 117, 115, 101, 114, 95, 118, 97, 117, 108, 116]";
1603
+ },
1479
1604
  {
1480
1605
  name: "vaultSignerPrefix";
1481
1606
  type: {