PHP WebShell

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

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

import { BaseCoin as CoinConfig } from '@bitgo/statics';
import { BaseKey, BuildTransactionError, TransactionType } from '@bitgo/sdk-core';
import { TransactionBuilder } from './transactionBuilder';
import { Transaction } from './transaction';
import * as NearAPI from 'near-api-js';
import assert from 'assert';
import BN from 'bn.js';
import BigNumber from 'bignumber.js';

export class TransferBuilder extends TransactionBuilder {
  private _amount: string;

  constructor(_coinConfig: Readonly<CoinConfig>) {
    super(_coinConfig);
  }

  /**
   * Initialize the transaction builder fields using the decoded transaction data
   *
   * @param {Transaction} tx the transaction data
   */
  initBuilder(tx: Transaction): void {
    super.initBuilder(tx);
    this._amount = tx.nearTransaction.actions[0].transfer.deposit.toString();
  }

  /** @inheritdoc */
  protected async buildImplementation(): Promise<Transaction> {
    assert(this._amount, new BuildTransactionError('amount is required before building transfer'));
    super.actions([NearAPI.transactions.transfer(new BN(this._amount))]);
    const tx = await super.buildImplementation();
    tx.setTransactionType(TransactionType.Send);
    return tx;
  }

  /** @inheritdoc */
  protected signImplementation(key: BaseKey): Transaction {
    const tx = super.signImplementation(key);
    tx.setTransactionType(TransactionType.Send);
    return tx;
  }

  /**
   * Sets the amount of this transaction.
   *
   * @param {string} value the amount to be sent in yocto (1 Near = 1e24 yoctos)
   * @returns {TransactionBuilder} This transaction builder
   */
  public amount(value: string): this {
    this.validateValue(new BigNumber(value));
    this._amount = value;
    return this;
  }
}

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


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