{"version":3,"file":"RpcClient.mjs","sources":["../../../../src/plugins/rpcModule/RpcClient.ts"],"sourcesContent":["import {\n  AccountInfo,\n  Blockhash,\n  BlockhashWithExpiryBlockHeight,\n  Commitment,\n  ConfirmOptions,\n  GetLatestBlockhashConfig,\n  GetProgramAccountsConfig,\n  PublicKey,\n  RpcResponseAndContext,\n  SendOptions,\n  SignatureResult,\n  SolanaJSONRPCError,\n  SolanaJSONRPCErrorCode,\n  Transaction,\n  TransactionSignature,\n} from '@solana/web3.js';\n\nimport {\n  FailedToConfirmTransactionError,\n  FailedToConfirmTransactionWithResponseError,\n  FailedToSendTransactionError,\n  ConvergenceError,\n  ParsedProgramError,\n  UnknownProgramError,\n} from '../../errors';\nimport type { Convergence } from '../../Convergence';\nimport {\n  getSignerHistogram,\n  isErrorWithLogs,\n  lamports,\n  Program,\n  Signer,\n  SolAmount,\n  UnparsedAccount,\n  UnparsedMaybeAccount,\n} from '../../types';\nimport { TransactionBuilder, sleep, zipMap } from '../../utils';\n\nexport type ConfirmTransactionResponse = RpcResponseAndContext<SignatureResult>;\n\nexport type SendAndConfirmTransactionResponse = {\n  signature: TransactionSignature;\n  confirmResponse: ConfirmTransactionResponse;\n  blockhash: Blockhash;\n  lastValidBlockHeight: number;\n};\n\n/**\n * @group Modules\n */\nexport class RpcClient {\n  protected defaultFeePayer?: Signer;\n  protected lastContextSlot?: number; // max slot between all confirmed transactions\n  protected static contextRetryDelays = [\n    null,\n    null,\n    0.1,\n    0.1,\n    0.5,\n    0.5,\n    1,\n    1,\n    2,\n    2,\n  ]; // values in seconds\n\n  constructor(protected readonly convergence: Convergence) {}\n\n  async getTransactionSize(\n    transaction: Transaction | TransactionBuilder,\n    signers?: any\n  ) {\n    const prepared = await this.prepareTransaction(transaction, signers);\n    const tx = prepared.transaction;\n    const message = tx.compileMessage();\n\n    try {\n      // This method errors if tx too large\n      message.serialize();\n    } catch (err) {\n      return -1;\n    }\n    const wireTransaction = tx.serializeMessage();\n\n    return wireTransaction.length;\n  }\n\n  protected async prepareTransaction(\n    transaction: Transaction | TransactionBuilder,\n    signers: Signer[]\n  ): Promise<{\n    transaction: Transaction;\n    signers: Signer[];\n    blockhashWithExpiryBlockHeight: BlockhashWithExpiryBlockHeight;\n  }> {\n    let blockhashWithExpiryBlockHeight: BlockhashWithExpiryBlockHeight;\n    if (\n      !('records' in transaction) &&\n      transaction.recentBlockhash &&\n      transaction.lastValidBlockHeight\n    ) {\n      blockhashWithExpiryBlockHeight = {\n        blockhash: transaction.recentBlockhash,\n        lastValidBlockHeight: transaction.lastValidBlockHeight,\n      };\n    } else {\n      blockhashWithExpiryBlockHeight = await this.getLatestBlockhash();\n    }\n\n    if ('records' in transaction) {\n      signers = [...transaction.getSigners(), ...signers];\n      transaction = transaction.toTransaction(blockhashWithExpiryBlockHeight);\n    }\n\n    return { transaction, signers, blockhashWithExpiryBlockHeight };\n  }\n\n  async signTransaction(\n    transaction: Transaction,\n    signers: Signer[]\n  ): Promise<Transaction> {\n    const { keypairs, identities } = getSignerHistogram(signers);\n\n    // Keypair signers.\n    if (keypairs.length > 0) {\n      transaction.partialSign(...keypairs);\n    }\n\n    // Identity signers.\n    for (let i = 0; i < identities.length; i++) {\n      transaction = await identities[i].signTransaction(transaction);\n    }\n\n    return transaction;\n  }\n\n  async sendTransaction(\n    transaction: Transaction | TransactionBuilder,\n    sendOptions: SendOptions = {},\n    signers: Signer[] = []\n  ): Promise<TransactionSignature> {\n    const prepared = await this.prepareTransaction(transaction, signers);\n    transaction = prepared.transaction;\n    signers = prepared.signers;\n\n    const defaultFeePayer = this.getDefaultFeePayer();\n    if (!transaction.feePayer && defaultFeePayer) {\n      transaction.feePayer = defaultFeePayer.publicKey;\n      signers = [defaultFeePayer, ...signers];\n    }\n\n    transaction = await this.signTransaction(transaction, signers);\n    const rawTransaction = transaction.serialize();\n\n    return await this.sendRawTransaction(\n      rawTransaction,\n      sendOptions,\n      transaction\n    );\n  }\n\n  async sendAndConfirmRawTransaction(\n    rawTransaction: Buffer,\n    confirmOptions?: ConfirmOptions\n  ): Promise<SendAndConfirmTransactionResponse> {\n    const signature = await this.sendRawTransaction(\n      rawTransaction,\n      confirmOptions\n    );\n    const blockhashWithExpiryBlockHeight = await this.getLatestBlockhash();\n    const confirmResponse = await this.confirmTransaction(\n      signature,\n      blockhashWithExpiryBlockHeight,\n      confirmOptions?.commitment\n    );\n    return { signature, confirmResponse, ...blockhashWithExpiryBlockHeight };\n  }\n\n  async sendRawTransaction(\n    rawTransaction: Buffer,\n    sendOptions: SendOptions = {},\n    sourceTransaction?: Transaction\n  ) {\n    sendOptions.skipPreflight = this.convergence.skipPreflight;\n    if (sendOptions.preflightCommitment === undefined) {\n      sendOptions.preflightCommitment = this.convergence.connection.commitment;\n    }\n    if (sendOptions.minContextSlot === undefined) {\n      sendOptions.minContextSlot = this.lastContextSlot;\n    }\n\n    try {\n      return await this.retryGetAccountAction(() =>\n        this.convergence.connection.sendRawTransaction(\n          rawTransaction,\n          sendOptions\n        )\n      );\n    } catch (error) {\n      const transaction = sourceTransaction ?? Transaction.from(rawTransaction);\n      throw this.parseProgramError(error, transaction);\n    }\n  }\n\n  async serializeAndSendTransaction(\n    transaction: Transaction,\n    blockhashWithExpiryBlockHeight?: BlockhashWithExpiryBlockHeight,\n    confirmOptions?: ConfirmOptions\n  ): Promise<SendAndConfirmTransactionResponse> {\n    if (blockhashWithExpiryBlockHeight === undefined) {\n      if (typeof transaction.recentBlockhash !== 'string') {\n        throw Error('Recent blockhash have not been passed');\n      }\n\n      if (typeof transaction.lastValidBlockHeight !== 'number') {\n        throw Error('Last valid blockhash have not been passed');\n      }\n\n      blockhashWithExpiryBlockHeight = {\n        blockhash: transaction.recentBlockhash,\n        lastValidBlockHeight: transaction.lastValidBlockHeight,\n      };\n    } else {\n      if (\n        blockhashWithExpiryBlockHeight.blockhash !== transaction.recentBlockhash\n      ) {\n        throw Error(\n          'BlockhashWithExpiryBlockHeight passed does not correspond to transaction'\n        );\n      }\n    }\n\n    const rawTransaction = transaction.serialize();\n\n    const signature = await this.sendRawTransaction(\n      rawTransaction,\n      confirmOptions,\n      transaction\n    );\n    const confirmResponse = await this.confirmTransaction(\n      signature,\n      blockhashWithExpiryBlockHeight,\n      confirmOptions?.commitment\n    );\n    return { signature, confirmResponse, ...blockhashWithExpiryBlockHeight };\n  }\n\n  async confirmTransaction(\n    signature: TransactionSignature,\n    blockhashWithExpiryBlockHeight: BlockhashWithExpiryBlockHeight,\n    commitment?: Commitment\n  ): Promise<ConfirmTransactionResponse> {\n    let rpcResponse: ConfirmTransactionResponse;\n    try {\n      rpcResponse = await this.convergence.connection.confirmTransaction(\n        { signature, ...blockhashWithExpiryBlockHeight },\n        commitment\n      );\n    } catch (error) {\n      // TODO: Improve error handling details\n      throw new FailedToConfirmTransactionError(error as Error);\n    }\n\n    if (rpcResponse.value.err) {\n      // TODO: Improve error handling details\n      throw new FailedToConfirmTransactionWithResponseError(rpcResponse);\n    }\n\n    if (rpcResponse.context.slot) {\n      this.lastContextSlot = Math.max(\n        rpcResponse.context.slot,\n        this.lastContextSlot ?? -1\n      );\n    }\n\n    return rpcResponse;\n  }\n\n  async sendAndConfirmTransaction(\n    transaction: Transaction | TransactionBuilder,\n    signers: Signer[] = [],\n    confirmOptions?: ConfirmOptions\n  ): Promise<SendAndConfirmTransactionResponse> {\n    const prepared = await this.prepareTransaction(transaction, signers);\n    const { blockhashWithExpiryBlockHeight } = prepared;\n    transaction = prepared.transaction;\n    signers = prepared.signers;\n\n    const signature = await this.sendTransaction(\n      transaction,\n      confirmOptions,\n      signers\n    );\n\n    const confirmResponse = await this.confirmTransaction(\n      signature,\n      blockhashWithExpiryBlockHeight,\n      confirmOptions?.commitment\n    );\n\n    return { signature, confirmResponse, ...blockhashWithExpiryBlockHeight };\n  }\n\n  async getAccount(publicKey: PublicKey, commitment?: Commitment) {\n    const accountInfo = await this.retryGetAccountAction(() =>\n      this.convergence.connection.getAccountInfo(\n        publicKey,\n        this.expandGetAccountCommitment(commitment)\n      )\n    );\n\n    return this.getUnparsedMaybeAccount(publicKey, accountInfo);\n  }\n\n  async accountExists(publicKey: PublicKey, commitment?: Commitment) {\n    const balance = await this.retryGetAccountAction(() =>\n      this.convergence.connection.getBalance(\n        publicKey,\n        this.expandGetAccountCommitment(commitment)\n      )\n    );\n\n    return balance > 0;\n  }\n\n  async getMultipleAccounts(publicKeys: PublicKey[], commitment?: Commitment) {\n    const accountInfos = await this.retryGetAccountAction(() =>\n      this.convergence.connection.getMultipleAccountsInfo(\n        publicKeys,\n        this.expandGetAccountCommitment(commitment)\n      )\n    );\n\n    return zipMap(publicKeys, accountInfos, (publicKey, accountInfo) => {\n      return this.getUnparsedMaybeAccount(publicKey, accountInfo);\n    });\n  }\n\n  // sometimes fetching account data immediately after confirming a transaction would hit a different node\n  // that is slightly behind in the block history. In that case fetch would fail or return stale data\n  // To solve this issue we pass minContextSlot as fetch parameter and retry if node slot is behind\n  protected async retryGetAccountAction<T>(action: () => Promise<T>) {\n    for (const retryDelay of RpcClient.contextRetryDelays) {\n      try {\n        const result = await action();\n        return result;\n      } catch (e) {\n        // for some reason in some methods connection doesn't throw a valid SolanaJSONRPCError with correct error code\n        // it just a plain Error and encodes error as a part of the message\n        const isStringError =\n          e instanceof Error &&\n          e.message.includes('Minimum context slot has not been reached');\n        const isClassError =\n          e instanceof SolanaJSONRPCError &&\n          e.code ==\n            SolanaJSONRPCErrorCode.JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED;\n\n        if (isStringError || isClassError) {\n          if (retryDelay !== null) {\n            await sleep(retryDelay);\n          }\n\n          continue;\n        }\n\n        throw e;\n      }\n    }\n\n    throw Error('Max retries exceeded!');\n  }\n\n  protected expandGetAccountCommitment(commitment?: Commitment) {\n    return {\n      commitment,\n      minContextSlot: this.lastContextSlot,\n    };\n  }\n\n  async getProgramAccounts(\n    programId: PublicKey,\n    configOrCommitment?: GetProgramAccountsConfig | Commitment\n  ): Promise<UnparsedAccount[]> {\n    const accounts = await this.convergence.connection.getProgramAccounts(\n      programId,\n      configOrCommitment\n    );\n\n    return accounts.map(({ pubkey, account }) => ({\n      ...account,\n      publicKey: pubkey,\n      lamports: lamports(account.lamports),\n    }));\n  }\n\n  async getRent(bytes: number, commitment?: Commitment): Promise<SolAmount> {\n    const rent =\n      await this.convergence.connection.getMinimumBalanceForRentExemption(\n        bytes,\n        commitment\n      );\n\n    return lamports(rent);\n  }\n\n  async getLatestBlockhash(\n    commitmentOrConfig: Commitment | GetLatestBlockhashConfig = 'finalized'\n  ): Promise<BlockhashWithExpiryBlockHeight> {\n    return this.convergence.connection.getLatestBlockhash(commitmentOrConfig);\n  }\n\n  setDefaultFeePayer(payer: Signer) {\n    this.defaultFeePayer = payer;\n\n    return this;\n  }\n\n  getDefaultFeePayer(): Signer {\n    return this.defaultFeePayer\n      ? this.defaultFeePayer\n      : this.convergence.identity();\n  }\n\n  protected getUnparsedMaybeAccount(\n    publicKey: PublicKey,\n    accountInfo: AccountInfo<Buffer> | null\n  ): UnparsedMaybeAccount {\n    if (!accountInfo) {\n      return { publicKey, exists: false };\n    }\n\n    return {\n      ...accountInfo,\n      publicKey,\n      exists: true,\n      lamports: lamports(accountInfo.lamports),\n    };\n  }\n\n  protected parseProgramError(\n    error: unknown,\n    transaction: Transaction\n  ): ConvergenceError {\n    // Ensure the error as logs.\n    if (!isErrorWithLogs(error)) {\n      return new FailedToSendTransactionError(error as Error);\n    }\n\n    // Parse the instruction number.\n    const regex = /Error processing Instruction (\\d+):/;\n    const instruction: string | null = error.message.match(regex)?.[1] ?? null;\n\n    // Ensure there is an instruction number given to find the program.\n    if (!instruction) {\n      return new FailedToSendTransactionError(error);\n    }\n\n    // Get the program ID from the instruction in the transaction.\n    const instructionNumber: number = parseInt(instruction, 10);\n    const programId: PublicKey | null =\n      transaction.instructions?.[instructionNumber]?.programId ?? null;\n\n    // Ensure we were able to find a program ID for the instruction.\n    if (!programId) {\n      return new FailedToSendTransactionError(error);\n    }\n\n    // Find a registered program if any.\n    let program: Program;\n    try {\n      program = this.convergence.programs().get(programId);\n    } catch (_programNotFoundError) {\n      return new FailedToSendTransactionError(error);\n    }\n\n    // Ensure an error resolver exists on the program.\n    if (!program.errorResolver) {\n      return new UnknownProgramError(program, error);\n    }\n\n    // Finally, resolve the error.\n    const resolvedError = program.errorResolver(error);\n\n    return resolvedError\n      ? new ParsedProgramError(program, resolvedError)\n      : new UnknownProgramError(program, error);\n  }\n}\n"],"names":["RpcClient","convergence","_classCallCheck","_createClass","key","value","_getTransactionSize","_asyncToGenerator","_regeneratorRuntime","mark","_callee","transaction","signers","prepared","tx","message","wireTransaction","wrap","_callee$","_context","prev","next","prepareTransaction","sent","compileMessage","serialize","t0","abrupt","serializeMessage","length","stop","getTransactionSize","_x","_x2","apply","arguments","_prepareTransaction","_callee2","blockhashWithExpiryBlockHeight","_callee2$","_context2","recentBlockhash","lastValidBlockHeight","blockhash","getLatestBlockhash","concat","_toConsumableArray","getSigners","toTransaction","_x3","_x4","_signTransaction","_callee3","_getSignerHistogram","keypairs","identities","_transaction","i","_callee3$","_context3","getSignerHistogram","partialSign","signTransaction","_x5","_x6","_sendTransaction","_callee4","sendOptions","defaultFeePayer","rawTransaction","_args4","_callee4$","_context4","undefined","getDefaultFeePayer","feePayer","publicKey","sendRawTransaction","sendTransaction","_x7","_sendAndConfirmRawTransaction","_callee5","confirmOptions","signature","confirmResponse","_callee5$","_context5","confirmTransaction","commitment","_objectSpread","sendAndConfirmRawTransaction","_x8","_x9","_sendRawTransaction","_callee6","_this","sourceTransaction","_args6","_callee6$","_context6","skipPreflight","preflightCommitment","connection","minContextSlot","lastContextSlot","retryGetAccountAction","Transaction","from","parseProgramError","_x10","_serializeAndSendTransaction","_callee7","_callee7$","_context7","Error","serializeAndSendTransaction","_x11","_x12","_x13","_confirmTransaction","_callee8","rpcResponse","_this$lastContextSlot","_callee8$","_context8","FailedToConfirmTransactionError","err","FailedToConfirmTransactionWithResponseError","context","slot","Math","max","_x14","_x15","_x16","_sendAndConfirmTransaction","_callee9","_args9","_callee9$","_context9","sendAndConfirmTransaction","_x17","_getAccount","_callee10","_this2","accountInfo","_callee10$","_context10","getAccountInfo","expandGetAccountCommitment","getUnparsedMaybeAccount","getAccount","_x18","_x19","_accountExists","_callee11","_this3","balance","_callee11$","_context11","getBalance","accountExists","_x20","_x21","_getMultipleAccounts","_callee12","publicKeys","_this4","accountInfos","_callee12$","_context12","getMultipleAccountsInfo","zipMap","getMultipleAccounts","_x22","_x23","_retryGetAccountAction","_callee13","action","_iterator","_step","retryDelay","result","isStringError","isClassError","_callee13$","_context13","_createForOfIteratorHelper","contextRetryDelays","s","n","done","includes","SolanaJSONRPCError","code","SolanaJSONRPCErrorCode","JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED","sleep","t1","e","f","finish","_x24","_getProgramAccounts","_callee14","programId","configOrCommitment","accounts","_callee14$","_context14","getProgramAccounts","map","_ref","pubkey","account","lamports","_x25","_x26","_getRent","_callee15","bytes","rent","_callee15$","_context15","getMinimumBalanceForRentExemption","getRent","_x27","_x28","_getLatestBlockhash","_callee16","commitmentOrConfig","_args16","_callee16$","_context16","setDefaultFeePayer","payer","identity","exists","error","_error$message$match$","_error$message$match","_transaction$instruct","_transaction$instruct2","isErrorWithLogs","FailedToSendTransactionError","regex","instruction","match","instructionNumber","parseInt","instructions","program","programs","get","_programNotFoundError","errorResolver","UnknownProgramError","resolvedError","ParsedProgramError","_defineProperty"],"mappings":"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"}