PHP WebShell

Текущая директория: /opt/BitGoJS/modules/sdk-coin-icp/src/lib

Просмотр файла: transactionBuilderFactory.ts

import { BaseTransactionBuilderFactory, InvalidTransactionError, MethodNotImplementedError } from '@bitgo/sdk-core';
import { BaseCoin as CoinConfig } from '@bitgo/statics';
import { Transaction } from './transaction';
import { TransactionBuilder } from './transactionBuilder';
import { TransferBuilder } from './transferBuilder';
import { Utils } from './utils';
import { OperationType, ParsedTransaction } from './iface';

export class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
  constructor(_coinConfig: Readonly<CoinConfig>) {
    super(_coinConfig);
  }

  /** @inheritdoc */
  async from(rawTransaction: string): Promise<TransactionBuilder> {
    const transaction = new Transaction(this._coinConfig, new Utils());
    await transaction.fromRawTransaction(rawTransaction);
    try {
      switch (transaction.icpTransactionData.transactionType) {
        case OperationType.TRANSACTION:
          return this.getTransferBuilder(transaction);
        default:
          throw new InvalidTransactionError('Invalid transaction');
      }
    } catch (e) {
      throw new InvalidTransactionError('Invalid transaction: ' + e.message);
    }
  }

  /**
   * Initialize the builder with the given transaction
   *
   * @param {Transaction | undefined} tx - the transaction used to initialize the builder
   * @param {TransactionBuilder} builder - the builder to be initialized
   * @returns {TransactionBuilder} the builder initialized
   */
  private static initializeBuilder<T extends TransactionBuilder>(tx: Transaction | undefined, builder: T): T {
    if (tx) {
      builder.initBuilder(tx);
    }
    return builder;
  }

  /** @inheritdoc */
  getTransferBuilder(tx?: Transaction): TransferBuilder {
    return TransactionBuilderFactory.initializeBuilder(tx, new TransferBuilder(this._coinConfig, new Utils()));
  }

  parseTransaction(rawTransaction: string, isSigned: boolean): Promise<ParsedTransaction> {
    if (!rawTransaction) {
      throw new InvalidTransactionError('Transaction is empty');
    }
    const transaction = new Transaction(this._coinConfig, new Utils());
    if (isSigned) {
      return transaction.parseSignedTransaction(rawTransaction);
    }
    return transaction.parseUnsignedTransaction(rawTransaction);
  }

  /** @inheritdoc */
  getWalletInitializationBuilder(): void {
    throw new MethodNotImplementedError();
  }
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!