@pooflabs/server 0.0.6 → 0.0.7

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.
@@ -1,3 +1,6 @@
1
1
  import { AuthProvider } from '@pooflabs/core';
2
+ export declare const SOLANA_DEVNET_RPC_URL = "https://idelle-8nxsep-fast-devnet.helius-rpc.com";
3
+ export declare const SOLANA_MAINNET_RPC_URL = "https://celestia-cegncv-fast-mainnet.helius-rpc.com";
4
+ export declare const SURFNET_RPC_URL = "https://surfpool.fly.dev";
2
5
  export declare function getAuthProvider(): Promise<AuthProvider>;
3
6
  export declare function matchAuthProvider(rpcUrl: string): Promise<AuthProvider>;
@@ -1,10 +1,9 @@
1
- import { Connection, Keypair, Transaction, VersionedTransaction } from '@solana/web3.js';
1
+ import { Keypair, Transaction, VersionedTransaction } from '@solana/web3.js';
2
2
  import type { AuthProvider, EVMTransaction, SolTransaction, TransactionResult, User, SetOptions } from '@pooflabs/core';
3
3
  export declare class SolanaKeypairProvider implements AuthProvider {
4
4
  private readonly networkUrl;
5
- private readonly connection;
6
5
  private readonly keypair;
7
- constructor(networkUrl?: string);
6
+ constructor(networkUrl?: string | null);
8
7
  login(): Promise<User | null>;
9
8
  restoreSession(): Promise<User | null>;
10
9
  logout(): Promise<void>;
@@ -14,6 +13,5 @@ export declare class SolanaKeypairProvider implements AuthProvider {
14
13
  private runTransactionInner;
15
14
  getNativeMethods(): Promise<{
16
15
  keypair: Keypair;
17
- connection: Connection;
18
16
  }>;
19
17
  }
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var core = require('@pooflabs/core');
4
+ var buffer = require('buffer');
4
5
  var web3_js = require('@solana/web3.js');
5
6
  var anchor = require('@coral-xyz/anchor');
6
7
  var nacl = require('tweetnacl');
@@ -82,9 +83,8 @@ async function fetchPriorityFee(rpcEndpoint, rawUnsignedTxBuffer) {
82
83
  }
83
84
  }
84
85
  class SolanaKeypairProvider {
85
- constructor(networkUrl = 'https://api.devnet.solana.com') {
86
+ constructor(networkUrl = null) {
86
87
  this.networkUrl = networkUrl;
87
- this.connection = new web3_js.Connection(this.networkUrl, 'confirmed');
88
88
  this.keypair = loadKeypairFromEnv();
89
89
  }
90
90
  /* ----------------------------------------------------------- *
@@ -98,7 +98,7 @@ class SolanaKeypairProvider {
98
98
  * ----------------------------------------------------------- */
99
99
  async signMessage(message) {
100
100
  const sig = nacl.sign.detached(new TextEncoder().encode(message), this.keypair.secretKey);
101
- return Buffer.from(sig).toString('base64');
101
+ return buffer.Buffer.from(sig).toString('base64');
102
102
  }
103
103
  /* ----------------------------------------------------------- *
104
104
  * Sign transaction
@@ -182,11 +182,24 @@ class SolanaKeypairProvider {
182
182
  }
183
183
  async runTransactionInner(sol, opts, wallet, kp, deduped) {
184
184
  var _a, _b, _c, _d;
185
- const anchorProvider = new anchor__namespace.AnchorProvider(this.connection, wallet, anchor__namespace.AnchorProvider.defaultOptions());
185
+ let rpcUrl = this.networkUrl;
186
+ if (this.networkUrl == null) {
187
+ if (sol.network === 'solana_devnet') {
188
+ rpcUrl = SOLANA_DEVNET_RPC_URL$1;
189
+ }
190
+ else if (sol.network === 'solana_mainnet') {
191
+ rpcUrl = SOLANA_MAINNET_RPC_URL$1;
192
+ }
193
+ else {
194
+ rpcUrl = SURFNET_RPC_URL;
195
+ }
196
+ }
197
+ const connection = new web3_js.Connection(rpcUrl, 'confirmed');
198
+ const anchorProvider = new anchor__namespace.AnchorProvider(connection, wallet, anchor__namespace.AnchorProvider.defaultOptions());
186
199
  const app_id = sol.appId;
187
200
  if (!app_id)
188
201
  throw new Error('app_id missing');
189
- let { tx, blockhash, lastValidBlockHeight } = await core.buildSetDocumentsTransaction(this.connection, sol.txArgs[0].idl, anchorProvider, kp.publicKey, {
202
+ let { tx, blockhash, lastValidBlockHeight } = await core.buildSetDocumentsTransaction(connection, sol.txArgs[0].idl, anchorProvider, kp.publicKey, {
190
203
  app_id,
191
204
  documents: sol.txArgs[0].setDocumentData,
192
205
  delete_paths: sol.txArgs[0].deletePaths,
@@ -205,7 +218,7 @@ class SolanaKeypairProvider {
205
218
  }
206
219
  // 3️⃣ Optional priority‑fee instruction
207
220
  const rawUnsigned = tx.serialize({ requireAllSignatures: false });
208
- const microLamports = await fetchPriorityFee(this.connection.rpcEndpoint, rawUnsigned);
221
+ const microLamports = await fetchPriorityFee(connection.rpcEndpoint, rawUnsigned);
209
222
  if (microLamports != null) {
210
223
  if (tx instanceof web3_js.Transaction) {
211
224
  tx.instructions.unshift(web3_js.ComputeBudgetProgram.setComputeUnitPrice({ microLamports }));
@@ -213,7 +226,7 @@ class SolanaKeypairProvider {
213
226
  }
214
227
  else if (tx instanceof web3_js.VersionedTransaction) {
215
228
  // Rebuild the transaction with the new priority fee
216
- const roundTwo = await core.buildSetDocumentsTransaction(this.connection, sol.txArgs[0].idl, anchorProvider, kp.publicKey, {
229
+ const roundTwo = await core.buildSetDocumentsTransaction(connection, sol.txArgs[0].idl, anchorProvider, kp.publicKey, {
217
230
  app_id,
218
231
  documents: sol.txArgs[0].setDocumentData,
219
232
  delete_paths: sol.txArgs[0].deletePaths,
@@ -229,13 +242,13 @@ class SolanaKeypairProvider {
229
242
  if ((opts === null || opts === void 0 ? void 0 : opts.shouldSubmitTx) === false) {
230
243
  return { signedTransaction: tx, blockNumber: 0, gasUsed: '0', data: '' };
231
244
  }
232
- const sig = await this.connection.sendRawTransaction(tx.serialize(), {
245
+ const sig = await connection.sendRawTransaction(tx.serialize(), {
233
246
  preflightCommitment: "confirmed",
234
247
  });
235
248
  const startTime = Date.now();
236
249
  const timeoutMs = 10 * 1000; // 10 seconds
237
250
  while (true) {
238
- const st = await this.connection.getSignatureStatus(sig);
251
+ const st = await connection.getSignatureStatus(sig);
239
252
  if (((_a = st === null || st === void 0 ? void 0 : st.value) === null || _a === void 0 ? void 0 : _a.confirmationStatus) === 'confirmed') {
240
253
  break;
241
254
  }
@@ -245,7 +258,7 @@ class SolanaKeypairProvider {
245
258
  }
246
259
  await new Promise(resolve => setTimeout(resolve, 500));
247
260
  }
248
- const info = await this.connection.getTransaction(sig, {
261
+ const info = await connection.getTransaction(sig, {
249
262
  maxSupportedTransactionVersion: 0,
250
263
  commitment: 'confirmed'
251
264
  });
@@ -258,32 +271,21 @@ class SolanaKeypairProvider {
258
271
  }
259
272
  /* ----------------------------------------------------------- */
260
273
  async getNativeMethods() {
261
- return { keypair: this.keypair, connection: this.connection };
274
+ return { keypair: this.keypair };
262
275
  }
263
276
  }
264
277
 
265
278
  let currentAuthProvider = null;
266
- const SOLANA_DEVNET_RPC_URL$1 = "https://api.devnet.solana.com";
279
+ const SOLANA_DEVNET_RPC_URL$1 = "https://idelle-8nxsep-fast-devnet.helius-rpc.com";
267
280
  const SOLANA_MAINNET_RPC_URL$1 = "https://celestia-cegncv-fast-mainnet.helius-rpc.com";
268
- const SURFNET_RPC_URL$1 = "https://surfpool.fly.dev";
281
+ const SURFNET_RPC_URL = "https://surfpool.fly.dev";
269
282
  async function getAuthProvider() {
270
283
  var _a;
271
284
  if (currentAuthProvider) {
272
285
  return currentAuthProvider;
273
286
  }
274
287
  const config = await core.getConfig();
275
- // Get the RPC URL from config if available
276
- let rpcUrl = '';
277
- if (config.chain === 'solana_devnet') {
278
- rpcUrl = SOLANA_DEVNET_RPC_URL$1;
279
- }
280
- else if (config.chain === 'solana_mainnet') {
281
- rpcUrl = SOLANA_MAINNET_RPC_URL$1;
282
- }
283
- else {
284
- rpcUrl = SURFNET_RPC_URL$1;
285
- }
286
- currentAuthProvider = await matchAuthProvider((_a = config.rpcUrl) !== null && _a !== void 0 ? _a : rpcUrl);
288
+ currentAuthProvider = await matchAuthProvider((_a = config.rpcUrl) !== null && _a !== void 0 ? _a : null);
287
289
  return currentAuthProvider;
288
290
  }
289
291
  async function matchAuthProvider(rpcUrl) {
@@ -293,7 +295,6 @@ async function matchAuthProvider(rpcUrl) {
293
295
  let authProviderInstance = null;
294
296
  const SOLANA_DEVNET_RPC_URL = "https://api.devnet.solana.com";
295
297
  const SOLANA_MAINNET_RPC_URL = "https://celestia-cegncv-fast-mainnet.helius-rpc.com";
296
- const SURFNET_RPC_URL = "https://surfpool.fly.dev";
297
298
  async function init(newConfig) {
298
299
  var _a;
299
300
  let defaultRpcUrl = '';
@@ -304,7 +305,7 @@ async function init(newConfig) {
304
305
  defaultRpcUrl = SOLANA_MAINNET_RPC_URL;
305
306
  }
306
307
  else {
307
- defaultRpcUrl = SURFNET_RPC_URL;
308
+ defaultRpcUrl = SOLANA_DEVNET_RPC_URL;
308
309
  }
309
310
  authProviderInstance = await matchAuthProvider((_a = newConfig.rpcUrl) !== null && _a !== void 0 ? _a : defaultRpcUrl);
310
311
  await core.init(Object.assign(Object.assign({}, newConfig), { authProvider: authProviderInstance, isServer: true }));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/auth/providers/solana-keypair-provider.ts","../src/auth/index.ts","../src/global.ts"],"sourcesContent":["import {\n ComputeBudgetProgram,\n Connection,\n Keypair,\n Transaction,\n VersionedTransaction\n} from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\nimport nacl from 'tweetnacl';\nimport bs58 from 'bs58';\n\nimport type {\n AuthProvider,\n EVMTransaction,\n SolTransaction,\n TransactionResult,\n User,\n SetOptions,\n} from '@pooflabs/core';\n\nimport {\n convertRemainingAccounts,\n buildSetDocumentsTransaction,\n} from '@pooflabs/core';\n\n/* ------------------------------------------------------------- *\n * REQUIRED ENV-VAR\n * ------------------------------------------------------------- */\nconst ENV_VAR = 'TAROBASE_SOLANA_KEYPAIR'; // base-58 or JSON array\n\nfunction loadKeypairFromEnv(): Keypair {\n const secret = process?.env?.[ENV_VAR];\n if (!secret) {\n throw new Error(\n `Missing ${ENV_VAR}. Set it to a base58 secret key or JSON array.`,\n );\n }\n\n try {\n const secretKey = secret.trim().startsWith('[')\n ? Uint8Array.from(JSON.parse(secret))\n : bs58.decode(secret.trim());\n\n return Keypair.fromSecretKey(secretKey);\n } catch (err) {\n throw new Error(\n `Unable to parse ${ENV_VAR}. Ensure it is valid base58 or a JSON array.`,\n );\n }\n}\n\n/* ──────────────────────────────────────────────────────────\n * Helper – fetch getPriorityFeeEstimate\n * ──────────────────────────────────────────────────────── */\nasync function fetchPriorityFee(rpcEndpoint: string, rawUnsignedTxBuffer: Uint8Array) {\n try {\n const res = await fetch(rpcEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: \"1\",\n method: \"getPriorityFeeEstimate\",\n params: [{\n transaction: bs58.encode(rawUnsignedTxBuffer), options: {\n recommended: true\n }\n }]\n })\n });\n const data = await res.json() as { result: { priorityFeeEstimate: number } };\n const fee = data?.result?.priorityFeeEstimate ?? null;\n console.log(\"Got fee from Helius\", fee);\n if (fee != null && fee > 0) {\n return Math.ceil(Number(fee) * 1.2);\n } else {\n console.log(\"No fee from Helius, using default 10000\");\n return Math.ceil(10000 * 1.2);\n }\n } catch (err) {\n console.warn(\"Priority‑fee estimate failed:\", err);\n return Math.ceil(10000 * 1.2);\n }\n}\n\nexport class SolanaKeypairProvider implements AuthProvider {\n private readonly connection: Connection;\n private readonly keypair: Keypair;\n\n constructor(\n private readonly networkUrl: string = 'https://api.devnet.solana.com',\n ) {\n this.connection = new Connection(this.networkUrl, 'confirmed');\n this.keypair = loadKeypairFromEnv();\n }\n\n /* ----------------------------------------------------------- *\n * (Auth stubs – fill in later if needed)\n * ----------------------------------------------------------- */\n async login(): Promise<User | null> { throw new Error('Not implemented'); }\n async restoreSession(): Promise<User | null> { throw new Error('Not implemented'); }\n async logout(): Promise<void> { throw new Error('Not implemented'); }\n\n /* ----------------------------------------------------------- *\n * Sign arbitrary message\n * ----------------------------------------------------------- */\n async signMessage(message: string): Promise<string> {\n const sig = nacl.sign.detached(\n new TextEncoder().encode(message),\n this.keypair.secretKey,\n );\n return Buffer.from(sig).toString('base64');\n }\n\n /* ----------------------------------------------------------- *\n * Sign transaction\n * ----------------------------------------------------------- */\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n if (transaction instanceof Transaction) {\n transaction.partialSign(this.keypair);\n } else if (transaction instanceof VersionedTransaction) {\n transaction.sign([this.keypair]);\n }\n return transaction;\n }\n\n /* ----------------------------------------------------------- *\n * Transaction runner\n * ----------------------------------------------------------- */\n async runTransaction(\n _evm?: EVMTransaction,\n sol?: SolTransaction,\n opts?: SetOptions,\n ): Promise<TransactionResult> {\n if (!sol) throw new Error('Solana transaction data required');\n\n const kp = this.keypair;\n\n const wallet: anchor.Wallet = {\n publicKey: kp.publicKey,\n signTransaction: async (tx: Transaction | VersionedTransaction) => {\n if (tx instanceof Transaction) {\n tx.partialSign(kp);\n } else if (tx instanceof VersionedTransaction) {\n tx.sign([kp]);\n }\n return tx;\n },\n signAllTransactions: async (txs: (Transaction | VersionedTransaction)[]) =>\n txs.map((t) => {\n if (t instanceof Transaction) {\n t.partialSign(kp);\n } else if (t instanceof VersionedTransaction) {\n t.sign([kp]);\n }\n return t;\n }),\n } as unknown as anchor.Wallet;\n\n /* de-dupe remaining accounts */\n const deduped = (() => {\n const fin: ReturnType<typeof convertRemainingAccounts> = [];\n for (const acc of convertRemainingAccounts(\n sol.txArgs[0].remainingAccounts,\n )) {\n const ex = fin.find((x) => x.pubkey.equals(acc.pubkey));\n if (ex) {\n ex.isSigner ||= acc.isSigner;\n ex.isWritable ||= acc.isWritable;\n } else fin.push(acc);\n }\n return fin;\n })();\n\n let retries = 0;\n let didPass = false;\n let delay = 3000;\n let toReturn: TransactionResult | null = null;\n let errorMessage = \"\";\n while (retries < 5) {\n try {\n toReturn = await this.runTransactionInner(sol, opts, wallet, kp, deduped);\n didPass = true;\n break;\n } catch (error: any) {\n console.log(\"Error building and sending transaction on retry:\", retries, error);\n // Wait 3 seconds before retrying\n await new Promise(resolve => setTimeout(resolve, delay));\n // Exponential backoff\n delay *= 2;\n retries++;\n errorMessage = error.message || JSON.stringify(error, null, 2);\n }\n }\n if (!didPass) {\n throw new Error(`Failed to send transaction after 5 retries: ${errorMessage}`);\n }\n return toReturn as TransactionResult;\n }\n\n private async runTransactionInner(sol: SolTransaction, opts: SetOptions | undefined, wallet: anchor.Wallet, kp: Keypair, deduped: ReturnType<typeof convertRemainingAccounts>): Promise<TransactionResult> {\n\n const anchorProvider = new anchor.AnchorProvider(\n this.connection,\n wallet,\n anchor.AnchorProvider.defaultOptions(),\n );\n\n const app_id = sol.appId;\n if (!app_id) throw new Error('app_id missing');\n\n let { tx, blockhash, lastValidBlockHeight } = await buildSetDocumentsTransaction(\n this.connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n sol.preInstructions,\n false,\n );\n\n // Refresh blockhash and lastValidBlockHeight\n if (tx instanceof Transaction) {\n tx.partialSign(kp);\n tx.recentBlockhash = blockhash;\n tx.lastValidBlockHeight = lastValidBlockHeight;\n tx.feePayer = kp.publicKey;\n } else if (tx instanceof VersionedTransaction) {\n tx.sign([kp]);\n tx.message.recentBlockhash = blockhash;\n }\n\n // 3️⃣ Optional priority‑fee instruction\n\n const rawUnsigned = tx.serialize({ requireAllSignatures: false });\n const microLamports = await fetchPriorityFee(\n this.connection.rpcEndpoint,\n rawUnsigned\n );\n\n if (microLamports != null) {\n if (tx instanceof Transaction) {\n tx.instructions.unshift(\n ComputeBudgetProgram.setComputeUnitPrice({ microLamports })\n );\n tx.partialSign(kp);\n } else if (tx instanceof VersionedTransaction) {\n // Rebuild the transaction with the new priority fee\n const roundTwo = await buildSetDocumentsTransaction(\n this.connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n [ComputeBudgetProgram.setComputeUnitPrice({ microLamports }), ...sol.preInstructions],\n false,\n );\n tx = roundTwo.tx as VersionedTransaction;\n blockhash = roundTwo.blockhash;\n lastValidBlockHeight = roundTwo.lastValidBlockHeight;\n tx.sign([kp]);\n tx.message.recentBlockhash = blockhash;\n }\n }\n\n if (opts?.shouldSubmitTx === false) {\n return { signedTransaction: tx, blockNumber: 0, gasUsed: '0', data: '' };\n }\n\n const sig = await this.connection.sendRawTransaction(tx.serialize(), {\n preflightCommitment: \"confirmed\",\n });\n\n const startTime = Date.now();\n const timeoutMs = 10 * 1000; // 10 seconds\n\n while (true) {\n const st = await this.connection.getSignatureStatus(sig);\n if (st?.value?.confirmationStatus === 'confirmed') {\n break;\n }\n\n // Check if we've exceeded the timeout\n if (Date.now() - startTime > timeoutMs) {\n throw new Error(`Transaction confirmation timeout after ${timeoutMs / 1000} seconds`);\n }\n\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n\n const info = await this.connection.getTransaction(sig, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n\n return {\n transactionSignature: sig,\n blockNumber: info?.slot ?? 0,\n gasUsed: info?.meta?.fee.toString() ?? '0',\n data: info?.meta,\n };\n }\n\n /* ----------------------------------------------------------- */\n async getNativeMethods() {\n return { keypair: this.keypair, connection: this.connection };\n }\n}\n","import { getConfig } from '@pooflabs/core';\nimport { AuthProvider } from '@pooflabs/core';\nimport { SolanaKeypairProvider } from './providers/solana-keypair-provider';\n\nlet currentAuthProvider: AuthProvider | null = null;\n\nconst SOLANA_DEVNET_RPC_URL = \"https://api.devnet.solana.com\";\nconst SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nconst SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function getAuthProvider(): Promise<AuthProvider> {\n if (currentAuthProvider) {\n return currentAuthProvider;\n }\n\n const config = await getConfig();\n\n // Get the RPC URL from config if available\n let rpcUrl = '';\n if (config.chain === 'solana_devnet') {\n rpcUrl = SOLANA_DEVNET_RPC_URL;\n } else if (config.chain === 'solana_mainnet') {\n rpcUrl = SOLANA_MAINNET_RPC_URL;\n } else {\n rpcUrl = SURFNET_RPC_URL;\n }\n\n currentAuthProvider = await matchAuthProvider(config.rpcUrl ?? rpcUrl);\n\n return currentAuthProvider;\n}\n\nexport async function matchAuthProvider(rpcUrl: string): Promise<AuthProvider> {\n return new SolanaKeypairProvider(rpcUrl);\n}","import { AuthProvider } from '@pooflabs/core';\nimport { matchAuthProvider } from './auth';\nimport { init as configInit, ClientConfig } from '@pooflabs/core';\nimport { Transaction, VersionedTransaction } from '@solana/web3.js';\n\nlet authProviderInstance: AuthProvider | null = null;\n\nconst SOLANA_DEVNET_RPC_URL = \"https://api.devnet.solana.com\";\nconst SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nconst SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function init(newConfig: Partial<ClientConfig>): Promise<void> {\n\n let defaultRpcUrl = '';\n if (newConfig.chain === 'solana_devnet') {\n defaultRpcUrl = SOLANA_DEVNET_RPC_URL;\n } else if (newConfig.chain === 'solana_mainnet') {\n defaultRpcUrl = SOLANA_MAINNET_RPC_URL;\n } else {\n defaultRpcUrl = SURFNET_RPC_URL;\n }\n authProviderInstance = await matchAuthProvider(newConfig.rpcUrl ?? defaultRpcUrl);\n await configInit({ ...newConfig, authProvider: authProviderInstance, isServer: true });\n}\n\nexport async function signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n if (!authProviderInstance) {\n throw new Error('Auth provider not initialized. Please call init() first.');\n }\n return await authProviderInstance.signTransaction(transaction);\n}"],"names":["Keypair","Connection","Transaction","VersionedTransaction","convertRemainingAccounts","anchor","buildSetDocumentsTransaction","ComputeBudgetProgram","SOLANA_DEVNET_RPC_URL","SOLANA_MAINNET_RPC_URL","SURFNET_RPC_URL","getConfig","configInit"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/auth/providers/solana-keypair-provider.ts","../src/auth/index.ts","../src/global.ts"],"sourcesContent":["import { Buffer } from 'buffer';\nimport {\n ComputeBudgetProgram,\n Connection,\n Keypair,\n Transaction,\n VersionedTransaction\n} from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\nimport nacl from 'tweetnacl';\nimport bs58 from 'bs58';\n\nimport type {\n AuthProvider,\n EVMTransaction,\n SolTransaction,\n TransactionResult,\n User,\n SetOptions,\n} from '@pooflabs/core';\n\nimport {\n convertRemainingAccounts,\n buildSetDocumentsTransaction,\n} from '@pooflabs/core';\nimport { SOLANA_DEVNET_RPC_URL, SOLANA_MAINNET_RPC_URL, SURFNET_RPC_URL } from '..';\n\n/* ------------------------------------------------------------- *\n * REQUIRED ENV-VAR\n * ------------------------------------------------------------- */\nconst ENV_VAR = 'TAROBASE_SOLANA_KEYPAIR'; // base-58 or JSON array\n\nfunction loadKeypairFromEnv(): Keypair {\n const secret = process?.env?.[ENV_VAR];\n if (!secret) {\n throw new Error(\n `Missing ${ENV_VAR}. Set it to a base58 secret key or JSON array.`,\n );\n }\n\n try {\n const secretKey = secret.trim().startsWith('[')\n ? Uint8Array.from(JSON.parse(secret))\n : bs58.decode(secret.trim());\n\n return Keypair.fromSecretKey(secretKey);\n } catch (err) {\n throw new Error(\n `Unable to parse ${ENV_VAR}. Ensure it is valid base58 or a JSON array.`,\n );\n }\n}\n\n/* ──────────────────────────────────────────────────────────\n * Helper – fetch getPriorityFeeEstimate\n * ──────────────────────────────────────────────────────── */\nasync function fetchPriorityFee(rpcEndpoint: string, rawUnsignedTxBuffer: Uint8Array) {\n try {\n const res = await fetch(rpcEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: \"1\",\n method: \"getPriorityFeeEstimate\",\n params: [{\n transaction: bs58.encode(rawUnsignedTxBuffer), options: {\n recommended: true\n }\n }]\n })\n });\n const data = await res.json() as { result: { priorityFeeEstimate: number } };\n const fee = data?.result?.priorityFeeEstimate ?? null;\n console.log(\"Got fee from Helius\", fee);\n if (fee != null && fee > 0) {\n return Math.ceil(Number(fee) * 1.2);\n } else {\n console.log(\"No fee from Helius, using default 10000\");\n return Math.ceil(10000 * 1.2);\n }\n } catch (err) {\n console.warn(\"Priority‑fee estimate failed:\", err);\n return Math.ceil(10000 * 1.2);\n }\n}\n\nexport class SolanaKeypairProvider implements AuthProvider {\n private readonly keypair: Keypair;\n\n constructor(\n private readonly networkUrl: string | null = null,\n ) {\n this.keypair = loadKeypairFromEnv();\n }\n\n /* ----------------------------------------------------------- *\n * (Auth stubs – fill in later if needed)\n * ----------------------------------------------------------- */\n async login(): Promise<User | null> { throw new Error('Not implemented'); }\n async restoreSession(): Promise<User | null> { throw new Error('Not implemented'); }\n async logout(): Promise<void> { throw new Error('Not implemented'); }\n\n /* ----------------------------------------------------------- *\n * Sign arbitrary message\n * ----------------------------------------------------------- */\n async signMessage(message: string): Promise<string> {\n const sig = nacl.sign.detached(\n new TextEncoder().encode(message),\n this.keypair.secretKey,\n );\n return Buffer.from(sig).toString('base64');\n }\n\n /* ----------------------------------------------------------- *\n * Sign transaction\n * ----------------------------------------------------------- */\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n if (transaction instanceof Transaction) {\n transaction.partialSign(this.keypair);\n } else if (transaction instanceof VersionedTransaction) {\n transaction.sign([this.keypair]);\n }\n return transaction;\n }\n\n /* ----------------------------------------------------------- *\n * Transaction runner\n * ----------------------------------------------------------- */\n async runTransaction(\n _evm?: EVMTransaction,\n sol?: SolTransaction,\n opts?: SetOptions,\n ): Promise<TransactionResult> {\n if (!sol) throw new Error('Solana transaction data required');\n\n const kp = this.keypair;\n\n const wallet: anchor.Wallet = {\n publicKey: kp.publicKey,\n signTransaction: async (tx: Transaction | VersionedTransaction) => {\n if (tx instanceof Transaction) {\n tx.partialSign(kp);\n } else if (tx instanceof VersionedTransaction) {\n tx.sign([kp]);\n }\n return tx;\n },\n signAllTransactions: async (txs: (Transaction | VersionedTransaction)[]) =>\n txs.map((t) => {\n if (t instanceof Transaction) {\n t.partialSign(kp);\n } else if (t instanceof VersionedTransaction) {\n t.sign([kp]);\n }\n return t;\n }),\n } as unknown as anchor.Wallet;\n\n /* de-dupe remaining accounts */\n const deduped = (() => {\n const fin: ReturnType<typeof convertRemainingAccounts> = [];\n for (const acc of convertRemainingAccounts(\n sol.txArgs[0].remainingAccounts,\n )) {\n const ex = fin.find((x) => x.pubkey.equals(acc.pubkey));\n if (ex) {\n ex.isSigner ||= acc.isSigner;\n ex.isWritable ||= acc.isWritable;\n } else fin.push(acc);\n }\n return fin;\n })();\n\n let retries = 0;\n let didPass = false;\n let delay = 3000;\n let toReturn: TransactionResult | null = null;\n let errorMessage = \"\";\n while (retries < 5) {\n try {\n toReturn = await this.runTransactionInner(sol, opts, wallet, kp, deduped);\n didPass = true;\n break;\n } catch (error: any) {\n console.log(\"Error building and sending transaction on retry:\", retries, error);\n // Wait 3 seconds before retrying\n await new Promise(resolve => setTimeout(resolve, delay));\n // Exponential backoff\n delay *= 2;\n retries++;\n errorMessage = error.message || JSON.stringify(error, null, 2);\n }\n }\n if (!didPass) {\n throw new Error(`Failed to send transaction after 5 retries: ${errorMessage}`);\n }\n return toReturn as TransactionResult;\n }\n\n private async runTransactionInner(sol: SolTransaction, opts: SetOptions | undefined, wallet: anchor.Wallet, kp: Keypair, deduped: ReturnType<typeof convertRemainingAccounts>): Promise<TransactionResult> {\n\n let rpcUrl = this.networkUrl;\n if(this.networkUrl == null) {\n if(sol.network === 'solana_devnet') {\n rpcUrl = SOLANA_DEVNET_RPC_URL;\n } else if(sol.network === 'solana_mainnet') {\n rpcUrl = SOLANA_MAINNET_RPC_URL;\n } else {\n rpcUrl = SURFNET_RPC_URL;\n }\n }\n const connection = new Connection(rpcUrl!, 'confirmed');\n \n const anchorProvider = new anchor.AnchorProvider(\n connection,\n wallet,\n anchor.AnchorProvider.defaultOptions(),\n );\n\n const app_id = sol.appId;\n if (!app_id) throw new Error('app_id missing');\n\n let { tx, blockhash, lastValidBlockHeight } = await buildSetDocumentsTransaction(\n connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n sol.preInstructions,\n false,\n );\n\n // Refresh blockhash and lastValidBlockHeight\n if (tx instanceof Transaction) {\n tx.partialSign(kp);\n tx.recentBlockhash = blockhash;\n tx.lastValidBlockHeight = lastValidBlockHeight;\n tx.feePayer = kp.publicKey;\n } else if (tx instanceof VersionedTransaction) {\n tx.sign([kp]);\n tx.message.recentBlockhash = blockhash;\n }\n\n // 3️⃣ Optional priority‑fee instruction\n\n const rawUnsigned = tx.serialize({ requireAllSignatures: false });\n const microLamports = await fetchPriorityFee(\n connection.rpcEndpoint,\n rawUnsigned\n );\n\n if (microLamports != null) {\n if (tx instanceof Transaction) {\n tx.instructions.unshift(\n ComputeBudgetProgram.setComputeUnitPrice({ microLamports })\n );\n tx.partialSign(kp);\n } else if (tx instanceof VersionedTransaction) {\n // Rebuild the transaction with the new priority fee\n const roundTwo = await buildSetDocumentsTransaction(\n connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n [ComputeBudgetProgram.setComputeUnitPrice({ microLamports }), ...sol.preInstructions],\n false,\n );\n tx = roundTwo.tx as VersionedTransaction;\n blockhash = roundTwo.blockhash;\n lastValidBlockHeight = roundTwo.lastValidBlockHeight;\n tx.sign([kp]);\n tx.message.recentBlockhash = blockhash;\n }\n }\n\n if (opts?.shouldSubmitTx === false) {\n return { signedTransaction: tx, blockNumber: 0, gasUsed: '0', data: '' };\n }\n\n const sig = await connection.sendRawTransaction(tx.serialize(), {\n preflightCommitment: \"confirmed\",\n });\n\n const startTime = Date.now();\n const timeoutMs = 10 * 1000; // 10 seconds\n\n while (true) {\n const st = await connection.getSignatureStatus(sig);\n if (st?.value?.confirmationStatus === 'confirmed') {\n break;\n }\n\n // Check if we've exceeded the timeout\n if (Date.now() - startTime > timeoutMs) {\n throw new Error(`Transaction confirmation timeout after ${timeoutMs / 1000} seconds`);\n }\n\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n\n const info = await connection.getTransaction(sig, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n\n return {\n transactionSignature: sig,\n blockNumber: info?.slot ?? 0,\n gasUsed: info?.meta?.fee.toString() ?? '0',\n data: info?.meta,\n };\n }\n\n /* ----------------------------------------------------------- */\n async getNativeMethods() {\n return { keypair: this.keypair };\n }\n}\n","import { getConfig } from '@pooflabs/core';\nimport { AuthProvider } from '@pooflabs/core';\nimport { SolanaKeypairProvider } from './providers/solana-keypair-provider';\n\nlet currentAuthProvider: AuthProvider | null = null;\n\nexport const SOLANA_DEVNET_RPC_URL = \"https://idelle-8nxsep-fast-devnet.helius-rpc.com\";\nexport const SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nexport const SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function getAuthProvider(): Promise<AuthProvider> {\n if (currentAuthProvider) {\n return currentAuthProvider;\n }\n\n const config = await getConfig();\n\n currentAuthProvider = await matchAuthProvider(config.rpcUrl ?? null);\n\n return currentAuthProvider;\n}\n\nexport async function matchAuthProvider(rpcUrl: string): Promise<AuthProvider> {\n return new SolanaKeypairProvider(rpcUrl);\n}","import { AuthProvider } from '@pooflabs/core';\nimport { matchAuthProvider } from './auth';\nimport { init as configInit, ClientConfig } from '@pooflabs/core';\nimport { Transaction, VersionedTransaction } from '@solana/web3.js';\n\nlet authProviderInstance: AuthProvider | null = null;\n\nconst SOLANA_DEVNET_RPC_URL = \"https://api.devnet.solana.com\";\nconst SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nconst SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function init(newConfig: Partial<ClientConfig>): Promise<void> {\n\n let defaultRpcUrl = '';\n if (newConfig.chain === 'solana_devnet') {\n defaultRpcUrl = SOLANA_DEVNET_RPC_URL;\n } else if (newConfig.chain === 'solana_mainnet') {\n defaultRpcUrl = SOLANA_MAINNET_RPC_URL;\n } else {\n defaultRpcUrl = SOLANA_DEVNET_RPC_URL;\n }\n authProviderInstance = await matchAuthProvider(newConfig.rpcUrl ?? defaultRpcUrl);\n await configInit({ ...newConfig, authProvider: authProviderInstance, isServer: true });\n}\n\nexport async function signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n if (!authProviderInstance) {\n throw new Error('Auth provider not initialized. Please call init() first.');\n }\n return await authProviderInstance.signTransaction(transaction);\n}"],"names":["Keypair","Buffer","Transaction","VersionedTransaction","convertRemainingAccounts","SOLANA_DEVNET_RPC_URL","SOLANA_MAINNET_RPC_URL","Connection","anchor","buildSetDocumentsTransaction","ComputeBudgetProgram","getConfig","configInit"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,7 +1,8 @@
1
1
  import { convertRemainingAccounts, buildSetDocumentsTransaction, getConfig, init as init$1 } from '@pooflabs/core';
2
2
  export * from '@pooflabs/core';
3
3
  export { get, getConfig, getFiles, getIdToken, runExpression, runExpressionMany, runQuery, runQueryMany, set, setFile, setMany, subscribe } from '@pooflabs/core';
4
- import { Connection, Transaction, VersionedTransaction, ComputeBudgetProgram, Keypair } from '@solana/web3.js';
4
+ import { Buffer } from 'buffer';
5
+ import { Transaction, VersionedTransaction, Connection, ComputeBudgetProgram, Keypair } from '@solana/web3.js';
5
6
  import * as anchor from '@coral-xyz/anchor';
6
7
  import nacl from 'tweetnacl';
7
8
  import bs58 from 'bs58';
@@ -63,9 +64,8 @@ async function fetchPriorityFee(rpcEndpoint, rawUnsignedTxBuffer) {
63
64
  }
64
65
  }
65
66
  class SolanaKeypairProvider {
66
- constructor(networkUrl = 'https://api.devnet.solana.com') {
67
+ constructor(networkUrl = null) {
67
68
  this.networkUrl = networkUrl;
68
- this.connection = new Connection(this.networkUrl, 'confirmed');
69
69
  this.keypair = loadKeypairFromEnv();
70
70
  }
71
71
  /* ----------------------------------------------------------- *
@@ -163,11 +163,24 @@ class SolanaKeypairProvider {
163
163
  }
164
164
  async runTransactionInner(sol, opts, wallet, kp, deduped) {
165
165
  var _a, _b, _c, _d;
166
- const anchorProvider = new anchor.AnchorProvider(this.connection, wallet, anchor.AnchorProvider.defaultOptions());
166
+ let rpcUrl = this.networkUrl;
167
+ if (this.networkUrl == null) {
168
+ if (sol.network === 'solana_devnet') {
169
+ rpcUrl = SOLANA_DEVNET_RPC_URL$1;
170
+ }
171
+ else if (sol.network === 'solana_mainnet') {
172
+ rpcUrl = SOLANA_MAINNET_RPC_URL$1;
173
+ }
174
+ else {
175
+ rpcUrl = SURFNET_RPC_URL;
176
+ }
177
+ }
178
+ const connection = new Connection(rpcUrl, 'confirmed');
179
+ const anchorProvider = new anchor.AnchorProvider(connection, wallet, anchor.AnchorProvider.defaultOptions());
167
180
  const app_id = sol.appId;
168
181
  if (!app_id)
169
182
  throw new Error('app_id missing');
170
- let { tx, blockhash, lastValidBlockHeight } = await buildSetDocumentsTransaction(this.connection, sol.txArgs[0].idl, anchorProvider, kp.publicKey, {
183
+ let { tx, blockhash, lastValidBlockHeight } = await buildSetDocumentsTransaction(connection, sol.txArgs[0].idl, anchorProvider, kp.publicKey, {
171
184
  app_id,
172
185
  documents: sol.txArgs[0].setDocumentData,
173
186
  delete_paths: sol.txArgs[0].deletePaths,
@@ -186,7 +199,7 @@ class SolanaKeypairProvider {
186
199
  }
187
200
  // 3️⃣ Optional priority‑fee instruction
188
201
  const rawUnsigned = tx.serialize({ requireAllSignatures: false });
189
- const microLamports = await fetchPriorityFee(this.connection.rpcEndpoint, rawUnsigned);
202
+ const microLamports = await fetchPriorityFee(connection.rpcEndpoint, rawUnsigned);
190
203
  if (microLamports != null) {
191
204
  if (tx instanceof Transaction) {
192
205
  tx.instructions.unshift(ComputeBudgetProgram.setComputeUnitPrice({ microLamports }));
@@ -194,7 +207,7 @@ class SolanaKeypairProvider {
194
207
  }
195
208
  else if (tx instanceof VersionedTransaction) {
196
209
  // Rebuild the transaction with the new priority fee
197
- const roundTwo = await buildSetDocumentsTransaction(this.connection, sol.txArgs[0].idl, anchorProvider, kp.publicKey, {
210
+ const roundTwo = await buildSetDocumentsTransaction(connection, sol.txArgs[0].idl, anchorProvider, kp.publicKey, {
198
211
  app_id,
199
212
  documents: sol.txArgs[0].setDocumentData,
200
213
  delete_paths: sol.txArgs[0].deletePaths,
@@ -210,13 +223,13 @@ class SolanaKeypairProvider {
210
223
  if ((opts === null || opts === void 0 ? void 0 : opts.shouldSubmitTx) === false) {
211
224
  return { signedTransaction: tx, blockNumber: 0, gasUsed: '0', data: '' };
212
225
  }
213
- const sig = await this.connection.sendRawTransaction(tx.serialize(), {
226
+ const sig = await connection.sendRawTransaction(tx.serialize(), {
214
227
  preflightCommitment: "confirmed",
215
228
  });
216
229
  const startTime = Date.now();
217
230
  const timeoutMs = 10 * 1000; // 10 seconds
218
231
  while (true) {
219
- const st = await this.connection.getSignatureStatus(sig);
232
+ const st = await connection.getSignatureStatus(sig);
220
233
  if (((_a = st === null || st === void 0 ? void 0 : st.value) === null || _a === void 0 ? void 0 : _a.confirmationStatus) === 'confirmed') {
221
234
  break;
222
235
  }
@@ -226,7 +239,7 @@ class SolanaKeypairProvider {
226
239
  }
227
240
  await new Promise(resolve => setTimeout(resolve, 500));
228
241
  }
229
- const info = await this.connection.getTransaction(sig, {
242
+ const info = await connection.getTransaction(sig, {
230
243
  maxSupportedTransactionVersion: 0,
231
244
  commitment: 'confirmed'
232
245
  });
@@ -239,32 +252,21 @@ class SolanaKeypairProvider {
239
252
  }
240
253
  /* ----------------------------------------------------------- */
241
254
  async getNativeMethods() {
242
- return { keypair: this.keypair, connection: this.connection };
255
+ return { keypair: this.keypair };
243
256
  }
244
257
  }
245
258
 
246
259
  let currentAuthProvider = null;
247
- const SOLANA_DEVNET_RPC_URL$1 = "https://api.devnet.solana.com";
260
+ const SOLANA_DEVNET_RPC_URL$1 = "https://idelle-8nxsep-fast-devnet.helius-rpc.com";
248
261
  const SOLANA_MAINNET_RPC_URL$1 = "https://celestia-cegncv-fast-mainnet.helius-rpc.com";
249
- const SURFNET_RPC_URL$1 = "https://surfpool.fly.dev";
262
+ const SURFNET_RPC_URL = "https://surfpool.fly.dev";
250
263
  async function getAuthProvider() {
251
264
  var _a;
252
265
  if (currentAuthProvider) {
253
266
  return currentAuthProvider;
254
267
  }
255
268
  const config = await getConfig();
256
- // Get the RPC URL from config if available
257
- let rpcUrl = '';
258
- if (config.chain === 'solana_devnet') {
259
- rpcUrl = SOLANA_DEVNET_RPC_URL$1;
260
- }
261
- else if (config.chain === 'solana_mainnet') {
262
- rpcUrl = SOLANA_MAINNET_RPC_URL$1;
263
- }
264
- else {
265
- rpcUrl = SURFNET_RPC_URL$1;
266
- }
267
- currentAuthProvider = await matchAuthProvider((_a = config.rpcUrl) !== null && _a !== void 0 ? _a : rpcUrl);
269
+ currentAuthProvider = await matchAuthProvider((_a = config.rpcUrl) !== null && _a !== void 0 ? _a : null);
268
270
  return currentAuthProvider;
269
271
  }
270
272
  async function matchAuthProvider(rpcUrl) {
@@ -274,7 +276,6 @@ async function matchAuthProvider(rpcUrl) {
274
276
  let authProviderInstance = null;
275
277
  const SOLANA_DEVNET_RPC_URL = "https://api.devnet.solana.com";
276
278
  const SOLANA_MAINNET_RPC_URL = "https://celestia-cegncv-fast-mainnet.helius-rpc.com";
277
- const SURFNET_RPC_URL = "https://surfpool.fly.dev";
278
279
  async function init(newConfig) {
279
280
  var _a;
280
281
  let defaultRpcUrl = '';
@@ -285,7 +286,7 @@ async function init(newConfig) {
285
286
  defaultRpcUrl = SOLANA_MAINNET_RPC_URL;
286
287
  }
287
288
  else {
288
- defaultRpcUrl = SURFNET_RPC_URL;
289
+ defaultRpcUrl = SOLANA_DEVNET_RPC_URL;
289
290
  }
290
291
  authProviderInstance = await matchAuthProvider((_a = newConfig.rpcUrl) !== null && _a !== void 0 ? _a : defaultRpcUrl);
291
292
  await init$1(Object.assign(Object.assign({}, newConfig), { authProvider: authProviderInstance, isServer: true }));
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/auth/providers/solana-keypair-provider.ts","../src/auth/index.ts","../src/global.ts"],"sourcesContent":["import {\n ComputeBudgetProgram,\n Connection,\n Keypair,\n Transaction,\n VersionedTransaction\n} from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\nimport nacl from 'tweetnacl';\nimport bs58 from 'bs58';\n\nimport type {\n AuthProvider,\n EVMTransaction,\n SolTransaction,\n TransactionResult,\n User,\n SetOptions,\n} from '@pooflabs/core';\n\nimport {\n convertRemainingAccounts,\n buildSetDocumentsTransaction,\n} from '@pooflabs/core';\n\n/* ------------------------------------------------------------- *\n * REQUIRED ENV-VAR\n * ------------------------------------------------------------- */\nconst ENV_VAR = 'TAROBASE_SOLANA_KEYPAIR'; // base-58 or JSON array\n\nfunction loadKeypairFromEnv(): Keypair {\n const secret = process?.env?.[ENV_VAR];\n if (!secret) {\n throw new Error(\n `Missing ${ENV_VAR}. Set it to a base58 secret key or JSON array.`,\n );\n }\n\n try {\n const secretKey = secret.trim().startsWith('[')\n ? Uint8Array.from(JSON.parse(secret))\n : bs58.decode(secret.trim());\n\n return Keypair.fromSecretKey(secretKey);\n } catch (err) {\n throw new Error(\n `Unable to parse ${ENV_VAR}. Ensure it is valid base58 or a JSON array.`,\n );\n }\n}\n\n/* ──────────────────────────────────────────────────────────\n * Helper – fetch getPriorityFeeEstimate\n * ──────────────────────────────────────────────────────── */\nasync function fetchPriorityFee(rpcEndpoint: string, rawUnsignedTxBuffer: Uint8Array) {\n try {\n const res = await fetch(rpcEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: \"1\",\n method: \"getPriorityFeeEstimate\",\n params: [{\n transaction: bs58.encode(rawUnsignedTxBuffer), options: {\n recommended: true\n }\n }]\n })\n });\n const data = await res.json() as { result: { priorityFeeEstimate: number } };\n const fee = data?.result?.priorityFeeEstimate ?? null;\n console.log(\"Got fee from Helius\", fee);\n if (fee != null && fee > 0) {\n return Math.ceil(Number(fee) * 1.2);\n } else {\n console.log(\"No fee from Helius, using default 10000\");\n return Math.ceil(10000 * 1.2);\n }\n } catch (err) {\n console.warn(\"Priority‑fee estimate failed:\", err);\n return Math.ceil(10000 * 1.2);\n }\n}\n\nexport class SolanaKeypairProvider implements AuthProvider {\n private readonly connection: Connection;\n private readonly keypair: Keypair;\n\n constructor(\n private readonly networkUrl: string = 'https://api.devnet.solana.com',\n ) {\n this.connection = new Connection(this.networkUrl, 'confirmed');\n this.keypair = loadKeypairFromEnv();\n }\n\n /* ----------------------------------------------------------- *\n * (Auth stubs – fill in later if needed)\n * ----------------------------------------------------------- */\n async login(): Promise<User | null> { throw new Error('Not implemented'); }\n async restoreSession(): Promise<User | null> { throw new Error('Not implemented'); }\n async logout(): Promise<void> { throw new Error('Not implemented'); }\n\n /* ----------------------------------------------------------- *\n * Sign arbitrary message\n * ----------------------------------------------------------- */\n async signMessage(message: string): Promise<string> {\n const sig = nacl.sign.detached(\n new TextEncoder().encode(message),\n this.keypair.secretKey,\n );\n return Buffer.from(sig).toString('base64');\n }\n\n /* ----------------------------------------------------------- *\n * Sign transaction\n * ----------------------------------------------------------- */\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n if (transaction instanceof Transaction) {\n transaction.partialSign(this.keypair);\n } else if (transaction instanceof VersionedTransaction) {\n transaction.sign([this.keypair]);\n }\n return transaction;\n }\n\n /* ----------------------------------------------------------- *\n * Transaction runner\n * ----------------------------------------------------------- */\n async runTransaction(\n _evm?: EVMTransaction,\n sol?: SolTransaction,\n opts?: SetOptions,\n ): Promise<TransactionResult> {\n if (!sol) throw new Error('Solana transaction data required');\n\n const kp = this.keypair;\n\n const wallet: anchor.Wallet = {\n publicKey: kp.publicKey,\n signTransaction: async (tx: Transaction | VersionedTransaction) => {\n if (tx instanceof Transaction) {\n tx.partialSign(kp);\n } else if (tx instanceof VersionedTransaction) {\n tx.sign([kp]);\n }\n return tx;\n },\n signAllTransactions: async (txs: (Transaction | VersionedTransaction)[]) =>\n txs.map((t) => {\n if (t instanceof Transaction) {\n t.partialSign(kp);\n } else if (t instanceof VersionedTransaction) {\n t.sign([kp]);\n }\n return t;\n }),\n } as unknown as anchor.Wallet;\n\n /* de-dupe remaining accounts */\n const deduped = (() => {\n const fin: ReturnType<typeof convertRemainingAccounts> = [];\n for (const acc of convertRemainingAccounts(\n sol.txArgs[0].remainingAccounts,\n )) {\n const ex = fin.find((x) => x.pubkey.equals(acc.pubkey));\n if (ex) {\n ex.isSigner ||= acc.isSigner;\n ex.isWritable ||= acc.isWritable;\n } else fin.push(acc);\n }\n return fin;\n })();\n\n let retries = 0;\n let didPass = false;\n let delay = 3000;\n let toReturn: TransactionResult | null = null;\n let errorMessage = \"\";\n while (retries < 5) {\n try {\n toReturn = await this.runTransactionInner(sol, opts, wallet, kp, deduped);\n didPass = true;\n break;\n } catch (error: any) {\n console.log(\"Error building and sending transaction on retry:\", retries, error);\n // Wait 3 seconds before retrying\n await new Promise(resolve => setTimeout(resolve, delay));\n // Exponential backoff\n delay *= 2;\n retries++;\n errorMessage = error.message || JSON.stringify(error, null, 2);\n }\n }\n if (!didPass) {\n throw new Error(`Failed to send transaction after 5 retries: ${errorMessage}`);\n }\n return toReturn as TransactionResult;\n }\n\n private async runTransactionInner(sol: SolTransaction, opts: SetOptions | undefined, wallet: anchor.Wallet, kp: Keypair, deduped: ReturnType<typeof convertRemainingAccounts>): Promise<TransactionResult> {\n\n const anchorProvider = new anchor.AnchorProvider(\n this.connection,\n wallet,\n anchor.AnchorProvider.defaultOptions(),\n );\n\n const app_id = sol.appId;\n if (!app_id) throw new Error('app_id missing');\n\n let { tx, blockhash, lastValidBlockHeight } = await buildSetDocumentsTransaction(\n this.connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n sol.preInstructions,\n false,\n );\n\n // Refresh blockhash and lastValidBlockHeight\n if (tx instanceof Transaction) {\n tx.partialSign(kp);\n tx.recentBlockhash = blockhash;\n tx.lastValidBlockHeight = lastValidBlockHeight;\n tx.feePayer = kp.publicKey;\n } else if (tx instanceof VersionedTransaction) {\n tx.sign([kp]);\n tx.message.recentBlockhash = blockhash;\n }\n\n // 3️⃣ Optional priority‑fee instruction\n\n const rawUnsigned = tx.serialize({ requireAllSignatures: false });\n const microLamports = await fetchPriorityFee(\n this.connection.rpcEndpoint,\n rawUnsigned\n );\n\n if (microLamports != null) {\n if (tx instanceof Transaction) {\n tx.instructions.unshift(\n ComputeBudgetProgram.setComputeUnitPrice({ microLamports })\n );\n tx.partialSign(kp);\n } else if (tx instanceof VersionedTransaction) {\n // Rebuild the transaction with the new priority fee\n const roundTwo = await buildSetDocumentsTransaction(\n this.connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n [ComputeBudgetProgram.setComputeUnitPrice({ microLamports }), ...sol.preInstructions],\n false,\n );\n tx = roundTwo.tx as VersionedTransaction;\n blockhash = roundTwo.blockhash;\n lastValidBlockHeight = roundTwo.lastValidBlockHeight;\n tx.sign([kp]);\n tx.message.recentBlockhash = blockhash;\n }\n }\n\n if (opts?.shouldSubmitTx === false) {\n return { signedTransaction: tx, blockNumber: 0, gasUsed: '0', data: '' };\n }\n\n const sig = await this.connection.sendRawTransaction(tx.serialize(), {\n preflightCommitment: \"confirmed\",\n });\n\n const startTime = Date.now();\n const timeoutMs = 10 * 1000; // 10 seconds\n\n while (true) {\n const st = await this.connection.getSignatureStatus(sig);\n if (st?.value?.confirmationStatus === 'confirmed') {\n break;\n }\n\n // Check if we've exceeded the timeout\n if (Date.now() - startTime > timeoutMs) {\n throw new Error(`Transaction confirmation timeout after ${timeoutMs / 1000} seconds`);\n }\n\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n\n const info = await this.connection.getTransaction(sig, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n\n return {\n transactionSignature: sig,\n blockNumber: info?.slot ?? 0,\n gasUsed: info?.meta?.fee.toString() ?? '0',\n data: info?.meta,\n };\n }\n\n /* ----------------------------------------------------------- */\n async getNativeMethods() {\n return { keypair: this.keypair, connection: this.connection };\n }\n}\n","import { getConfig } from '@pooflabs/core';\nimport { AuthProvider } from '@pooflabs/core';\nimport { SolanaKeypairProvider } from './providers/solana-keypair-provider';\n\nlet currentAuthProvider: AuthProvider | null = null;\n\nconst SOLANA_DEVNET_RPC_URL = \"https://api.devnet.solana.com\";\nconst SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nconst SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function getAuthProvider(): Promise<AuthProvider> {\n if (currentAuthProvider) {\n return currentAuthProvider;\n }\n\n const config = await getConfig();\n\n // Get the RPC URL from config if available\n let rpcUrl = '';\n if (config.chain === 'solana_devnet') {\n rpcUrl = SOLANA_DEVNET_RPC_URL;\n } else if (config.chain === 'solana_mainnet') {\n rpcUrl = SOLANA_MAINNET_RPC_URL;\n } else {\n rpcUrl = SURFNET_RPC_URL;\n }\n\n currentAuthProvider = await matchAuthProvider(config.rpcUrl ?? rpcUrl);\n\n return currentAuthProvider;\n}\n\nexport async function matchAuthProvider(rpcUrl: string): Promise<AuthProvider> {\n return new SolanaKeypairProvider(rpcUrl);\n}","import { AuthProvider } from '@pooflabs/core';\nimport { matchAuthProvider } from './auth';\nimport { init as configInit, ClientConfig } from '@pooflabs/core';\nimport { Transaction, VersionedTransaction } from '@solana/web3.js';\n\nlet authProviderInstance: AuthProvider | null = null;\n\nconst SOLANA_DEVNET_RPC_URL = \"https://api.devnet.solana.com\";\nconst SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nconst SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function init(newConfig: Partial<ClientConfig>): Promise<void> {\n\n let defaultRpcUrl = '';\n if (newConfig.chain === 'solana_devnet') {\n defaultRpcUrl = SOLANA_DEVNET_RPC_URL;\n } else if (newConfig.chain === 'solana_mainnet') {\n defaultRpcUrl = SOLANA_MAINNET_RPC_URL;\n } else {\n defaultRpcUrl = SURFNET_RPC_URL;\n }\n authProviderInstance = await matchAuthProvider(newConfig.rpcUrl ?? defaultRpcUrl);\n await configInit({ ...newConfig, authProvider: authProviderInstance, isServer: true });\n}\n\nexport async function signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n if (!authProviderInstance) {\n throw new Error('Auth provider not initialized. Please call init() first.');\n }\n return await authProviderInstance.signTransaction(transaction);\n}"],"names":["SOLANA_DEVNET_RPC_URL","SOLANA_MAINNET_RPC_URL","SURFNET_RPC_URL","configInit"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/auth/providers/solana-keypair-provider.ts","../src/auth/index.ts","../src/global.ts"],"sourcesContent":["import { Buffer } from 'buffer';\nimport {\n ComputeBudgetProgram,\n Connection,\n Keypair,\n Transaction,\n VersionedTransaction\n} from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\nimport nacl from 'tweetnacl';\nimport bs58 from 'bs58';\n\nimport type {\n AuthProvider,\n EVMTransaction,\n SolTransaction,\n TransactionResult,\n User,\n SetOptions,\n} from '@pooflabs/core';\n\nimport {\n convertRemainingAccounts,\n buildSetDocumentsTransaction,\n} from '@pooflabs/core';\nimport { SOLANA_DEVNET_RPC_URL, SOLANA_MAINNET_RPC_URL, SURFNET_RPC_URL } from '..';\n\n/* ------------------------------------------------------------- *\n * REQUIRED ENV-VAR\n * ------------------------------------------------------------- */\nconst ENV_VAR = 'TAROBASE_SOLANA_KEYPAIR'; // base-58 or JSON array\n\nfunction loadKeypairFromEnv(): Keypair {\n const secret = process?.env?.[ENV_VAR];\n if (!secret) {\n throw new Error(\n `Missing ${ENV_VAR}. Set it to a base58 secret key or JSON array.`,\n );\n }\n\n try {\n const secretKey = secret.trim().startsWith('[')\n ? Uint8Array.from(JSON.parse(secret))\n : bs58.decode(secret.trim());\n\n return Keypair.fromSecretKey(secretKey);\n } catch (err) {\n throw new Error(\n `Unable to parse ${ENV_VAR}. Ensure it is valid base58 or a JSON array.`,\n );\n }\n}\n\n/* ──────────────────────────────────────────────────────────\n * Helper – fetch getPriorityFeeEstimate\n * ──────────────────────────────────────────────────────── */\nasync function fetchPriorityFee(rpcEndpoint: string, rawUnsignedTxBuffer: Uint8Array) {\n try {\n const res = await fetch(rpcEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: \"1\",\n method: \"getPriorityFeeEstimate\",\n params: [{\n transaction: bs58.encode(rawUnsignedTxBuffer), options: {\n recommended: true\n }\n }]\n })\n });\n const data = await res.json() as { result: { priorityFeeEstimate: number } };\n const fee = data?.result?.priorityFeeEstimate ?? null;\n console.log(\"Got fee from Helius\", fee);\n if (fee != null && fee > 0) {\n return Math.ceil(Number(fee) * 1.2);\n } else {\n console.log(\"No fee from Helius, using default 10000\");\n return Math.ceil(10000 * 1.2);\n }\n } catch (err) {\n console.warn(\"Priority‑fee estimate failed:\", err);\n return Math.ceil(10000 * 1.2);\n }\n}\n\nexport class SolanaKeypairProvider implements AuthProvider {\n private readonly keypair: Keypair;\n\n constructor(\n private readonly networkUrl: string | null = null,\n ) {\n this.keypair = loadKeypairFromEnv();\n }\n\n /* ----------------------------------------------------------- *\n * (Auth stubs – fill in later if needed)\n * ----------------------------------------------------------- */\n async login(): Promise<User | null> { throw new Error('Not implemented'); }\n async restoreSession(): Promise<User | null> { throw new Error('Not implemented'); }\n async logout(): Promise<void> { throw new Error('Not implemented'); }\n\n /* ----------------------------------------------------------- *\n * Sign arbitrary message\n * ----------------------------------------------------------- */\n async signMessage(message: string): Promise<string> {\n const sig = nacl.sign.detached(\n new TextEncoder().encode(message),\n this.keypair.secretKey,\n );\n return Buffer.from(sig).toString('base64');\n }\n\n /* ----------------------------------------------------------- *\n * Sign transaction\n * ----------------------------------------------------------- */\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n if (transaction instanceof Transaction) {\n transaction.partialSign(this.keypair);\n } else if (transaction instanceof VersionedTransaction) {\n transaction.sign([this.keypair]);\n }\n return transaction;\n }\n\n /* ----------------------------------------------------------- *\n * Transaction runner\n * ----------------------------------------------------------- */\n async runTransaction(\n _evm?: EVMTransaction,\n sol?: SolTransaction,\n opts?: SetOptions,\n ): Promise<TransactionResult> {\n if (!sol) throw new Error('Solana transaction data required');\n\n const kp = this.keypair;\n\n const wallet: anchor.Wallet = {\n publicKey: kp.publicKey,\n signTransaction: async (tx: Transaction | VersionedTransaction) => {\n if (tx instanceof Transaction) {\n tx.partialSign(kp);\n } else if (tx instanceof VersionedTransaction) {\n tx.sign([kp]);\n }\n return tx;\n },\n signAllTransactions: async (txs: (Transaction | VersionedTransaction)[]) =>\n txs.map((t) => {\n if (t instanceof Transaction) {\n t.partialSign(kp);\n } else if (t instanceof VersionedTransaction) {\n t.sign([kp]);\n }\n return t;\n }),\n } as unknown as anchor.Wallet;\n\n /* de-dupe remaining accounts */\n const deduped = (() => {\n const fin: ReturnType<typeof convertRemainingAccounts> = [];\n for (const acc of convertRemainingAccounts(\n sol.txArgs[0].remainingAccounts,\n )) {\n const ex = fin.find((x) => x.pubkey.equals(acc.pubkey));\n if (ex) {\n ex.isSigner ||= acc.isSigner;\n ex.isWritable ||= acc.isWritable;\n } else fin.push(acc);\n }\n return fin;\n })();\n\n let retries = 0;\n let didPass = false;\n let delay = 3000;\n let toReturn: TransactionResult | null = null;\n let errorMessage = \"\";\n while (retries < 5) {\n try {\n toReturn = await this.runTransactionInner(sol, opts, wallet, kp, deduped);\n didPass = true;\n break;\n } catch (error: any) {\n console.log(\"Error building and sending transaction on retry:\", retries, error);\n // Wait 3 seconds before retrying\n await new Promise(resolve => setTimeout(resolve, delay));\n // Exponential backoff\n delay *= 2;\n retries++;\n errorMessage = error.message || JSON.stringify(error, null, 2);\n }\n }\n if (!didPass) {\n throw new Error(`Failed to send transaction after 5 retries: ${errorMessage}`);\n }\n return toReturn as TransactionResult;\n }\n\n private async runTransactionInner(sol: SolTransaction, opts: SetOptions | undefined, wallet: anchor.Wallet, kp: Keypair, deduped: ReturnType<typeof convertRemainingAccounts>): Promise<TransactionResult> {\n\n let rpcUrl = this.networkUrl;\n if(this.networkUrl == null) {\n if(sol.network === 'solana_devnet') {\n rpcUrl = SOLANA_DEVNET_RPC_URL;\n } else if(sol.network === 'solana_mainnet') {\n rpcUrl = SOLANA_MAINNET_RPC_URL;\n } else {\n rpcUrl = SURFNET_RPC_URL;\n }\n }\n const connection = new Connection(rpcUrl!, 'confirmed');\n \n const anchorProvider = new anchor.AnchorProvider(\n connection,\n wallet,\n anchor.AnchorProvider.defaultOptions(),\n );\n\n const app_id = sol.appId;\n if (!app_id) throw new Error('app_id missing');\n\n let { tx, blockhash, lastValidBlockHeight } = await buildSetDocumentsTransaction(\n connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n sol.preInstructions,\n false,\n );\n\n // Refresh blockhash and lastValidBlockHeight\n if (tx instanceof Transaction) {\n tx.partialSign(kp);\n tx.recentBlockhash = blockhash;\n tx.lastValidBlockHeight = lastValidBlockHeight;\n tx.feePayer = kp.publicKey;\n } else if (tx instanceof VersionedTransaction) {\n tx.sign([kp]);\n tx.message.recentBlockhash = blockhash;\n }\n\n // 3️⃣ Optional priority‑fee instruction\n\n const rawUnsigned = tx.serialize({ requireAllSignatures: false });\n const microLamports = await fetchPriorityFee(\n connection.rpcEndpoint,\n rawUnsigned\n );\n\n if (microLamports != null) {\n if (tx instanceof Transaction) {\n tx.instructions.unshift(\n ComputeBudgetProgram.setComputeUnitPrice({ microLamports })\n );\n tx.partialSign(kp);\n } else if (tx instanceof VersionedTransaction) {\n // Rebuild the transaction with the new priority fee\n const roundTwo = await buildSetDocumentsTransaction(\n connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n [ComputeBudgetProgram.setComputeUnitPrice({ microLamports }), ...sol.preInstructions],\n false,\n );\n tx = roundTwo.tx as VersionedTransaction;\n blockhash = roundTwo.blockhash;\n lastValidBlockHeight = roundTwo.lastValidBlockHeight;\n tx.sign([kp]);\n tx.message.recentBlockhash = blockhash;\n }\n }\n\n if (opts?.shouldSubmitTx === false) {\n return { signedTransaction: tx, blockNumber: 0, gasUsed: '0', data: '' };\n }\n\n const sig = await connection.sendRawTransaction(tx.serialize(), {\n preflightCommitment: \"confirmed\",\n });\n\n const startTime = Date.now();\n const timeoutMs = 10 * 1000; // 10 seconds\n\n while (true) {\n const st = await connection.getSignatureStatus(sig);\n if (st?.value?.confirmationStatus === 'confirmed') {\n break;\n }\n\n // Check if we've exceeded the timeout\n if (Date.now() - startTime > timeoutMs) {\n throw new Error(`Transaction confirmation timeout after ${timeoutMs / 1000} seconds`);\n }\n\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n\n const info = await connection.getTransaction(sig, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n\n return {\n transactionSignature: sig,\n blockNumber: info?.slot ?? 0,\n gasUsed: info?.meta?.fee.toString() ?? '0',\n data: info?.meta,\n };\n }\n\n /* ----------------------------------------------------------- */\n async getNativeMethods() {\n return { keypair: this.keypair };\n }\n}\n","import { getConfig } from '@pooflabs/core';\nimport { AuthProvider } from '@pooflabs/core';\nimport { SolanaKeypairProvider } from './providers/solana-keypair-provider';\n\nlet currentAuthProvider: AuthProvider | null = null;\n\nexport const SOLANA_DEVNET_RPC_URL = \"https://idelle-8nxsep-fast-devnet.helius-rpc.com\";\nexport const SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nexport const SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function getAuthProvider(): Promise<AuthProvider> {\n if (currentAuthProvider) {\n return currentAuthProvider;\n }\n\n const config = await getConfig();\n\n currentAuthProvider = await matchAuthProvider(config.rpcUrl ?? null);\n\n return currentAuthProvider;\n}\n\nexport async function matchAuthProvider(rpcUrl: string): Promise<AuthProvider> {\n return new SolanaKeypairProvider(rpcUrl);\n}","import { AuthProvider } from '@pooflabs/core';\nimport { matchAuthProvider } from './auth';\nimport { init as configInit, ClientConfig } from '@pooflabs/core';\nimport { Transaction, VersionedTransaction } from '@solana/web3.js';\n\nlet authProviderInstance: AuthProvider | null = null;\n\nconst SOLANA_DEVNET_RPC_URL = \"https://api.devnet.solana.com\";\nconst SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nconst SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function init(newConfig: Partial<ClientConfig>): Promise<void> {\n\n let defaultRpcUrl = '';\n if (newConfig.chain === 'solana_devnet') {\n defaultRpcUrl = SOLANA_DEVNET_RPC_URL;\n } else if (newConfig.chain === 'solana_mainnet') {\n defaultRpcUrl = SOLANA_MAINNET_RPC_URL;\n } else {\n defaultRpcUrl = SOLANA_DEVNET_RPC_URL;\n }\n authProviderInstance = await matchAuthProvider(newConfig.rpcUrl ?? defaultRpcUrl);\n await configInit({ ...newConfig, authProvider: authProviderInstance, isServer: true });\n}\n\nexport async function signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n if (!authProviderInstance) {\n throw new Error('Auth provider not initialized. Please call init() first.');\n }\n return await authProviderInstance.signTransaction(transaction);\n}"],"names":["SOLANA_DEVNET_RPC_URL","SOLANA_MAINNET_RPC_URL","configInit"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pooflabs/server",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "Server SDK for Poof API - Node.js/Backend implementation",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -46,13 +46,14 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "@coral-xyz/anchor": "^0.31.1",
49
- "@pooflabs/core": "0.0.7",
49
+ "@pooflabs/core": "0.0.10",
50
50
  "@solana-developers/helpers": "^2.8.1",
51
51
  "@solana/spl-token": "^0.4.12",
52
52
  "@solana/web3.js": "^1.69.0",
53
53
  "axios": "^1.9.0",
54
54
  "bn.js": "^5.1.2",
55
55
  "bs58": "^5.0.0",
56
+ "buffer": "^6.0.3",
56
57
  "lodash": "^4.17.13",
57
58
  "reconnecting-websocket": "^4.4.0",
58
59
  "tweetnacl": "^1.0.3"