PHP WebShell

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

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

import algosdk from 'algosdk';
import { BaseCoin as CoinConfig } from '@bitgo/statics';

import { KeyRegistrationBuilder } from './keyRegistrationBuilder';
import { TransferBuilder } from './transferBuilder';
import { TransactionBuilder } from './transactionBuilder';
import { AssetTransferBuilder } from './assetTransferBuilder';
import Utils from './utils';
import { BaseTransactionBuilderFactory, NotSupported } from '@bitgo/sdk-core';

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

  getTransferBuilder(): TransferBuilder {
    return new TransferBuilder(this._coinConfig);
  }

  getAssetTransferBuilder(): AssetTransferBuilder {
    return new AssetTransferBuilder(this._coinConfig);
  }

  getKeyRegistrationBuilder(): KeyRegistrationBuilder {
    return new KeyRegistrationBuilder(this._coinConfig);
  }

  from(rawTxn: string | Uint8Array): TransactionBuilder {
    const builder = this.getBuilder(rawTxn);
    builder.from(rawTxn);

    return builder;
  }

  private getBuilder(rawTxn: string | Uint8Array): TransactionBuilder {
    const decodeTxn = Utils.decodeAlgoTxn(rawTxn);
    const algoTxn = decodeTxn.txn;
    if (algoTxn.type == algosdk.TransactionType.keyreg) {
      return this.getWalletInitializationBuilder();
    } else if (algoTxn.type == algosdk.TransactionType.pay) {
      return this.getTransferBuilder();
    } else if (algoTxn.type == algosdk.TransactionType.axfer) {
      return this.getAssetTransferBuilder();
    } else {
      throw new NotSupported('Transaction cannot be parsed or has an unsupported transaction type');
    }
  }

  public getWalletInitializationBuilder(): KeyRegistrationBuilder {
    return new KeyRegistrationBuilder(this._coinConfig);
  }
}

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


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