PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-coin-baby/src/lib
Просмотр файла: transactionBuilderFactory.ts
import {
ContractCallBuilder,
CosmosTransaction,
CosmosTransactionBuilder,
CosmosTransferBuilder,
StakingActivateBuilder,
StakingDeactivateBuilder,
StakingRedelegateBuilder,
StakingWithdrawRewardsBuilder,
} from '@bitgo/abstract-cosmos';
import { BaseTransactionBuilderFactory, InvalidTransactionError, TransactionType } from '@bitgo/sdk-core';
import { BaseCoin as CoinConfig } from '@bitgo/statics';
import { EpochedStakingActivateBuilder } from './EpochedStakingActivateBuilder';
import { EpochedStakingDeactivateBuilder } from './EpochedStakingDeactivateBuilder';
import { EpochedStakingRedelegateBuilder } from './EpochedStakingRedelegateBuilder';
import { CustomTransactionBuilder } from './CustomTransactionBuilder';
import { BabylonSpecificMessages } from './iface';
import utils from './utils';
import { BabylonTransaction } from './BabylonTransaction';
export class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
constructor(_coinConfig: Readonly<CoinConfig>) {
super(_coinConfig);
}
/** @inheritdoc */
from(raw: string): CosmosTransactionBuilder<BabylonSpecificMessages> {
const tx = new BabylonTransaction(this._coinConfig, utils);
tx.enrichTransactionDetailsFromRawTransaction(raw);
try {
switch (tx.type) {
case TransactionType.Send:
return this.getTransferBuilder(tx);
case TransactionType.StakingActivate:
return this.getStakingActivateBuilder(tx);
case TransactionType.StakingDeactivate:
return this.getStakingDeactivateBuilder(tx);
case TransactionType.StakingWithdraw:
return this.getStakingWithdrawRewardsBuilder(tx);
case TransactionType.ContractCall:
return this.getContractCallBuilder(tx);
case TransactionType.StakingRedelegate:
return this.getStakingRedelegateBuilder(tx);
case TransactionType.CustomTx:
return this.getCustomTransactionBuilder(tx);
default:
throw new InvalidTransactionError('Invalid transaction');
}
} catch (e) {
throw new InvalidTransactionError('Invalid transaction: ' + e.message);
}
}
/** @inheritdoc */
getTransferBuilder(tx?: CosmosTransaction<BabylonSpecificMessages>): CosmosTransferBuilder<BabylonSpecificMessages> {
return this.initializeBuilder(tx, new CosmosTransferBuilder(this._coinConfig, utils));
}
/** @inheritdoc */
getStakingActivateBuilder(
tx?: CosmosTransaction<BabylonSpecificMessages>
): StakingActivateBuilder<BabylonSpecificMessages> {
return this.initializeBuilder(tx, new EpochedStakingActivateBuilder(this._coinConfig, utils));
}
/** @inheritdoc */
getStakingDeactivateBuilder(
tx?: CosmosTransaction<BabylonSpecificMessages>
): StakingDeactivateBuilder<BabylonSpecificMessages> {
return this.initializeBuilder(tx, new EpochedStakingDeactivateBuilder(this._coinConfig, utils));
}
/** @inheritdoc */
getStakingWithdrawRewardsBuilder(
tx?: CosmosTransaction<BabylonSpecificMessages>
): StakingWithdrawRewardsBuilder<BabylonSpecificMessages> {
return this.initializeBuilder(tx, new StakingWithdrawRewardsBuilder(this._coinConfig, utils));
}
getContractCallBuilder(
tx?: CosmosTransaction<BabylonSpecificMessages>
): ContractCallBuilder<BabylonSpecificMessages> {
return this.initializeBuilder(tx, new ContractCallBuilder(this._coinConfig, utils));
}
getStakingRedelegateBuilder(
tx?: CosmosTransaction<BabylonSpecificMessages>
): StakingRedelegateBuilder<BabylonSpecificMessages> {
return this.initializeBuilder(tx, new EpochedStakingRedelegateBuilder(this._coinConfig, utils));
}
getCustomTransactionBuilder(
tx?: CosmosTransaction<BabylonSpecificMessages>
): CosmosTransactionBuilder<BabylonSpecificMessages> {
return this.initializeBuilder(tx, new CustomTransactionBuilder(this._coinConfig, utils));
}
/** @inheritdoc */
getWalletInitializationBuilder(): void {
throw new Error('Method not implemented.');
}
/**
* 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 initializeBuilder<T extends CosmosTransactionBuilder<BabylonSpecificMessages>>(
tx: CosmosTransaction<BabylonSpecificMessages> | undefined,
builder: T
): T {
if (tx) {
builder.initBuilder(tx);
}
return builder;
}
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!