@dynamic-labs-wallet/node-svm 0.0.122 → 0.0.123

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/index.cjs.js CHANGED
@@ -92,8 +92,8 @@ class DynamicSvmWalletClient extends node.DynamicWalletClient {
92
92
  });
93
93
  // Wait for the ceremony to complete before proceeding
94
94
  await ceremonyCompletePromise;
95
- if (!rawPublicKey || !(rawPublicKey instanceof Uint8Array)) {
96
- throw new Error('Raw public key is not a Uint8Array');
95
+ if (!rawPublicKey || !(rawPublicKey instanceof Uint8Array || typeof rawPublicKey === 'string')) {
96
+ throw new Error('Raw public key is not a Uint8Array or string' + typeof rawPublicKey);
97
97
  }
98
98
  if (!externalServerKeyShares) {
99
99
  throw new Error('Error creating wallet account');
@@ -107,7 +107,7 @@ class DynamicSvmWalletClient extends node.DynamicWalletClient {
107
107
  });
108
108
  return {
109
109
  accountAddress,
110
- rawPublicKey: rawPublicKey,
110
+ rawPublicKey,
111
111
  externalServerKeyShares
112
112
  };
113
113
  } catch (error) {
@@ -117,9 +117,10 @@ class DynamicSvmWalletClient extends node.DynamicWalletClient {
117
117
  }
118
118
  // Function to properly derive account address
119
119
  async deriveAccountAddress(rawPublicKey) {
120
- const pubKey = new web3_js.PublicKey(rawPublicKey);
121
- const fromKey = pubKey.toBase58();
122
- const accountAddress = fromKey;
120
+ const pubKeyBytes = typeof rawPublicKey === 'string' ? Buffer.from(rawPublicKey, 'hex') : rawPublicKey;
121
+ // Create PublicKey from bytes and convert to base58
122
+ const pubKey = new web3_js.PublicKey(pubKeyBytes);
123
+ const accountAddress = pubKey.toBase58();
123
124
  return {
124
125
  accountAddress
125
126
  };
@@ -130,7 +131,7 @@ class DynamicSvmWalletClient extends node.DynamicWalletClient {
130
131
  * @param message The message to sign (Uint8Array)
131
132
  * @param accountAddress Solana address (base58 encoded)
132
133
  * @param password The password for encrypted backup shares
133
- */ async signMessage({ message, accountAddress, password = undefined, signedSessionId }) {
134
+ */ async signMessage({ message, accountAddress, password = undefined, signedSessionId, externalServerKeyShares }) {
134
135
  await this.verifyPassword({
135
136
  accountAddress,
136
137
  password,
@@ -146,8 +147,10 @@ class DynamicSvmWalletClient extends node.DynamicWalletClient {
146
147
  accountAddress: accountAddress,
147
148
  chainName: this.chainName,
148
149
  password,
149
- signedSessionId
150
+ signedSessionId,
151
+ externalServerKeyShares
150
152
  });
153
+ // Use PublicKey to encode signature
151
154
  const base58Signature = new web3_js.PublicKey(signatureEd25519).toBase58();
152
155
  return base58Signature;
153
156
  } catch (error) {
@@ -155,7 +158,8 @@ class DynamicSvmWalletClient extends node.DynamicWalletClient {
155
158
  throw error;
156
159
  }
157
160
  }
158
- async signTransaction({ senderAddress, transaction, password = undefined, signedSessionId }) {
161
+ //todo:should txn just be a string?
162
+ async signTransaction({ senderAddress, transaction, password = undefined, signedSessionId, externalServerKeyShares }) {
159
163
  await this.verifyPassword({
160
164
  accountAddress: senderAddress,
161
165
  password,
@@ -178,7 +182,8 @@ class DynamicSvmWalletClient extends node.DynamicWalletClient {
178
182
  accountAddress: senderAddress,
179
183
  chainName: this.chainName,
180
184
  password,
181
- signedSessionId
185
+ signedSessionId,
186
+ externalServerKeyShares
182
187
  });
183
188
  if (!signatureEd25519) {
184
189
  throw new Error('Signature is undefined');
@@ -204,20 +209,18 @@ class DynamicSvmWalletClient extends node.DynamicWalletClient {
204
209
  * @param accountAddress The account address to export the private key for
205
210
  * @param password The password for encrypted backup shares
206
211
  * @returns The private key
207
- */ async exportPrivateKey({ accountAddress, password = undefined, signedSessionId }) {
212
+ */ async exportPrivateKey({ accountAddress, password = undefined, signedSessionId, externalServerKeyShares }) {
208
213
  const { derivedPrivateKey } = await this.exportKey({
209
214
  accountAddress,
210
215
  chainName: this.chainName,
211
216
  password,
212
- signedSessionId
217
+ signedSessionId,
218
+ externalServerKeyShares
213
219
  });
214
220
  if (!derivedPrivateKey) {
215
221
  throw new Error('Derived private key is undefined');
216
222
  }
217
- const encodedPrivateKey = new web3_js.PublicKey(derivedPrivateKey).toBase58();
218
- return {
219
- derivedPrivateKey: encodedPrivateKey
220
- };
223
+ return derivedPrivateKey;
221
224
  }
222
225
  /**
223
226
  * Exports the private key for a given account address
@@ -240,20 +243,18 @@ class DynamicSvmWalletClient extends node.DynamicWalletClient {
240
243
  * @param privateKey The private key to convert
241
244
  * @returns The hex string
242
245
  */ decodePrivateKeyForSolana(privateKey) {
243
- const decoded = new web3_js.PublicKey(privateKey).toBase58();
246
+ const decoded = new web3_js.PublicKey(privateKey).toBuffer();
244
247
  const slicedBytes = decoded.slice(0, 32);
245
248
  return Buffer.from(slicedBytes).toString('hex');
246
249
  }
247
250
  getPublicKeyFromPrivateKey(privateKey) {
248
- const privateKeyBytes = new web3_js.PublicKey(privateKey).toBase58();
249
- const keypair = web3_js.Keypair.fromSecretKey(Buffer.from(privateKeyBytes));
251
+ const privateKeyBytes = new web3_js.PublicKey(privateKey).toBuffer();
252
+ const keypair = web3_js.Keypair.fromSecretKey(privateKeyBytes);
250
253
  const publicKeyBase58 = keypair.publicKey.toBase58();
251
254
  return publicKeyBase58;
252
255
  }
253
256
  encodePublicKey(publicKey) {
254
- const pubKey = new web3_js.PublicKey(publicKey);
255
- const fromKey = pubKey.toBase58();
256
- return fromKey;
257
+ return new web3_js.PublicKey(publicKey).toBase58();
257
258
  }
258
259
  /**
259
260
  * Imports the private key for a given account address
package/index.esm.js CHANGED
@@ -90,8 +90,8 @@ class DynamicSvmWalletClient extends DynamicWalletClient {
90
90
  });
91
91
  // Wait for the ceremony to complete before proceeding
92
92
  await ceremonyCompletePromise;
93
- if (!rawPublicKey || !(rawPublicKey instanceof Uint8Array)) {
94
- throw new Error('Raw public key is not a Uint8Array');
93
+ if (!rawPublicKey || !(rawPublicKey instanceof Uint8Array || typeof rawPublicKey === 'string')) {
94
+ throw new Error('Raw public key is not a Uint8Array or string' + typeof rawPublicKey);
95
95
  }
96
96
  if (!externalServerKeyShares) {
97
97
  throw new Error('Error creating wallet account');
@@ -105,7 +105,7 @@ class DynamicSvmWalletClient extends DynamicWalletClient {
105
105
  });
106
106
  return {
107
107
  accountAddress,
108
- rawPublicKey: rawPublicKey,
108
+ rawPublicKey,
109
109
  externalServerKeyShares
110
110
  };
111
111
  } catch (error) {
@@ -115,9 +115,10 @@ class DynamicSvmWalletClient extends DynamicWalletClient {
115
115
  }
116
116
  // Function to properly derive account address
117
117
  async deriveAccountAddress(rawPublicKey) {
118
- const pubKey = new PublicKey(rawPublicKey);
119
- const fromKey = pubKey.toBase58();
120
- const accountAddress = fromKey;
118
+ const pubKeyBytes = typeof rawPublicKey === 'string' ? Buffer.from(rawPublicKey, 'hex') : rawPublicKey;
119
+ // Create PublicKey from bytes and convert to base58
120
+ const pubKey = new PublicKey(pubKeyBytes);
121
+ const accountAddress = pubKey.toBase58();
121
122
  return {
122
123
  accountAddress
123
124
  };
@@ -128,7 +129,7 @@ class DynamicSvmWalletClient extends DynamicWalletClient {
128
129
  * @param message The message to sign (Uint8Array)
129
130
  * @param accountAddress Solana address (base58 encoded)
130
131
  * @param password The password for encrypted backup shares
131
- */ async signMessage({ message, accountAddress, password = undefined, signedSessionId }) {
132
+ */ async signMessage({ message, accountAddress, password = undefined, signedSessionId, externalServerKeyShares }) {
132
133
  await this.verifyPassword({
133
134
  accountAddress,
134
135
  password,
@@ -144,8 +145,10 @@ class DynamicSvmWalletClient extends DynamicWalletClient {
144
145
  accountAddress: accountAddress,
145
146
  chainName: this.chainName,
146
147
  password,
147
- signedSessionId
148
+ signedSessionId,
149
+ externalServerKeyShares
148
150
  });
151
+ // Use PublicKey to encode signature
149
152
  const base58Signature = new PublicKey(signatureEd25519).toBase58();
150
153
  return base58Signature;
151
154
  } catch (error) {
@@ -153,7 +156,8 @@ class DynamicSvmWalletClient extends DynamicWalletClient {
153
156
  throw error;
154
157
  }
155
158
  }
156
- async signTransaction({ senderAddress, transaction, password = undefined, signedSessionId }) {
159
+ //todo:should txn just be a string?
160
+ async signTransaction({ senderAddress, transaction, password = undefined, signedSessionId, externalServerKeyShares }) {
157
161
  await this.verifyPassword({
158
162
  accountAddress: senderAddress,
159
163
  password,
@@ -176,7 +180,8 @@ class DynamicSvmWalletClient extends DynamicWalletClient {
176
180
  accountAddress: senderAddress,
177
181
  chainName: this.chainName,
178
182
  password,
179
- signedSessionId
183
+ signedSessionId,
184
+ externalServerKeyShares
180
185
  });
181
186
  if (!signatureEd25519) {
182
187
  throw new Error('Signature is undefined');
@@ -202,20 +207,18 @@ class DynamicSvmWalletClient extends DynamicWalletClient {
202
207
  * @param accountAddress The account address to export the private key for
203
208
  * @param password The password for encrypted backup shares
204
209
  * @returns The private key
205
- */ async exportPrivateKey({ accountAddress, password = undefined, signedSessionId }) {
210
+ */ async exportPrivateKey({ accountAddress, password = undefined, signedSessionId, externalServerKeyShares }) {
206
211
  const { derivedPrivateKey } = await this.exportKey({
207
212
  accountAddress,
208
213
  chainName: this.chainName,
209
214
  password,
210
- signedSessionId
215
+ signedSessionId,
216
+ externalServerKeyShares
211
217
  });
212
218
  if (!derivedPrivateKey) {
213
219
  throw new Error('Derived private key is undefined');
214
220
  }
215
- const encodedPrivateKey = new PublicKey(derivedPrivateKey).toBase58();
216
- return {
217
- derivedPrivateKey: encodedPrivateKey
218
- };
221
+ return derivedPrivateKey;
219
222
  }
220
223
  /**
221
224
  * Exports the private key for a given account address
@@ -238,20 +241,18 @@ class DynamicSvmWalletClient extends DynamicWalletClient {
238
241
  * @param privateKey The private key to convert
239
242
  * @returns The hex string
240
243
  */ decodePrivateKeyForSolana(privateKey) {
241
- const decoded = new PublicKey(privateKey).toBase58();
244
+ const decoded = new PublicKey(privateKey).toBuffer();
242
245
  const slicedBytes = decoded.slice(0, 32);
243
246
  return Buffer.from(slicedBytes).toString('hex');
244
247
  }
245
248
  getPublicKeyFromPrivateKey(privateKey) {
246
- const privateKeyBytes = new PublicKey(privateKey).toBase58();
247
- const keypair = Keypair.fromSecretKey(Buffer.from(privateKeyBytes));
249
+ const privateKeyBytes = new PublicKey(privateKey).toBuffer();
250
+ const keypair = Keypair.fromSecretKey(privateKeyBytes);
248
251
  const publicKeyBase58 = keypair.publicKey.toBase58();
249
252
  return publicKeyBase58;
250
253
  }
251
254
  encodePublicKey(publicKey) {
252
- const pubKey = new PublicKey(publicKey);
253
- const fromKey = pubKey.toBase58();
254
- return fromKey;
255
+ return new PublicKey(publicKey).toBase58();
255
256
  }
256
257
  /**
257
258
  * Imports the private key for a given account address
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@dynamic-labs-wallet/node-svm",
3
- "version": "0.0.122",
3
+ "version": "0.0.123",
4
4
  "license": "MIT",
5
5
  "dependencies": {
6
- "@dynamic-labs-wallet/node": "0.0.122",
6
+ "@dynamic-labs-wallet/node": "0.0.123",
7
7
  "@solana/web3.js": "^1.98.2"
8
8
  },
9
9
  "publishConfig": {
@@ -22,10 +22,10 @@ export declare class DynamicSvmWalletClient extends DynamicWalletClient {
22
22
  signedSessionId: string;
23
23
  }): Promise<{
24
24
  accountAddress: string;
25
- rawPublicKey: Uint8Array;
25
+ rawPublicKey: Uint8Array | string;
26
26
  externalServerKeyShares: ServerKeyShare[];
27
27
  }>;
28
- deriveAccountAddress(rawPublicKey: Uint8Array): Promise<{
28
+ deriveAccountAddress(rawPublicKey: string | Uint8Array): Promise<{
29
29
  accountAddress: string;
30
30
  }>;
31
31
  /**
@@ -35,17 +35,19 @@ export declare class DynamicSvmWalletClient extends DynamicWalletClient {
35
35
  * @param accountAddress Solana address (base58 encoded)
36
36
  * @param password The password for encrypted backup shares
37
37
  */
38
- signMessage({ message, accountAddress, password, signedSessionId, }: {
38
+ signMessage({ message, accountAddress, password, signedSessionId, externalServerKeyShares, }: {
39
39
  message: string;
40
40
  accountAddress: string;
41
41
  password?: string;
42
42
  signedSessionId: string;
43
+ externalServerKeyShares: ServerKeyShare[];
43
44
  }): Promise<string>;
44
- signTransaction({ senderAddress, transaction, password, signedSessionId, }: {
45
+ signTransaction({ senderAddress, transaction, password, signedSessionId, externalServerKeyShares, }: {
45
46
  senderAddress: string;
46
47
  transaction: VersionedTransaction | Transaction;
47
48
  password?: string;
48
49
  signedSessionId: string;
50
+ externalServerKeyShares: ServerKeyShare[];
49
51
  }): Promise<VersionedTransaction | Transaction>;
50
52
  /**
51
53
  * Exports the private key for a given account address
@@ -54,13 +56,12 @@ export declare class DynamicSvmWalletClient extends DynamicWalletClient {
54
56
  * @param password The password for encrypted backup shares
55
57
  * @returns The private key
56
58
  */
57
- exportPrivateKey({ accountAddress, password, signedSessionId, }: {
59
+ exportPrivateKey({ accountAddress, password, signedSessionId, externalServerKeyShares, }: {
58
60
  accountAddress: string;
59
61
  password?: string;
60
62
  signedSessionId: string;
61
- }): Promise<{
62
- derivedPrivateKey: string;
63
- }>;
63
+ externalServerKeyShares: ServerKeyShare[];
64
+ }): Promise<string>;
64
65
  /**
65
66
  * Exports the private key for a given account address
66
67
  *
@@ -100,7 +101,7 @@ export declare class DynamicSvmWalletClient extends DynamicWalletClient {
100
101
  signedSessionId: string;
101
102
  }): Promise<{
102
103
  accountAddress: string;
103
- rawPublicKey: Uint8Array | undefined;
104
+ rawPublicKey: Uint8Array | string | undefined;
104
105
  externalServerKeyShares: ServerKeyShare[];
105
106
  }>;
106
107
  getSvmWallets(): Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EAGzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,WAAW,EACX,oBAAoB,EAErB,MAAM,iBAAiB,CAAC;AAIzB,qBAAa,sBAAuB,SAAQ,mBAAmB;IAC7D,QAAQ,CAAC,SAAS,SAAS;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;gBAEZ,EACV,aAAa,EACb,UAAU,EACV,kBAAkB,GACnB,EAAE;QACD,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B;IAQD;;;;;OAKG;IACG,mBAAmB,CAAC,EACxB,wBAAwB,EACxB,QAAoB,EACpB,OAAO,EACP,eAAe,GAChB,EAAE;QACD,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,UAAU,GAAG,MAAM,CAAC;QAClC,uBAAuB,EAAE,cAAc,EAAE,CAAC;KAC3C,CAAC;IAsEI,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU;;;IAc5D;;;;;;OAMG;IACG,WAAW,CAAC,EAChB,OAAO,EACP,cAAc,EACd,QAAoB,EACpB,eAAe,EACf,uBAAuB,GACxB,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,uBAAuB,EAAE,cAAc,EAAE,CAAC;KAC3C;IAiCK,eAAe,CAAC,EACpB,aAAa,EACb,WAAW,EACX,QAAoB,EACpB,eAAe,EACf,uBAAuB,GACxB,EAAE;QACD,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,oBAAoB,GAAG,WAAW,CAAC;QAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,uBAAuB,EAAE,cAAc,EAAE,CAAC;KAC3C,GAAG,OAAO,CAAC,oBAAoB,GAAG,WAAW,CAAC;IAmD/C;;;;;;OAMG;IACG,gBAAgB,CAAC,EACrB,cAAc,EACd,QAAoB,EACpB,eAAe,EACf,uBAAuB,GACxB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,uBAAuB,EAAE,cAAc,EAAE,CAAC;KAC3C;IAeD;;;;;OAKG;IACG,uBAAuB,CAAC,EAC5B,SAAS,EACT,cAAc,GACf,EAAE;QACD,SAAS,EAAE,mBAAmB,EAAE,CAAC;QACjC,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB;;;IASD;;;;;OAKG;IACH,yBAAyB,CAAC,UAAU,EAAE,MAAM;IAM5C,0BAA0B,CAAC,UAAU,EAAE,MAAM;IAQ7C,eAAe,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM;IAI9C;;;;;;;;OAQG;IACG,gBAAgB,CAAC,EACrB,UAAU,EACV,SAAS,EACT,wBAAwB,EACxB,QAAoB,EACpB,OAAO,EACP,eAAe,GAChB,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;QAC9C,uBAAuB,EAAE,cAAc,EAAE,CAAC;KAC3C,CAAC;IA+DI,aAAa;CAOpB"}