PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-coin-algo/dist/src/lib
Просмотр файла: transferBuilder.js
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TransferBuilder = void 0;
const bignumber_js_1 = __importDefault(require("bignumber.js"));
const algosdk_1 = __importDefault(require("algosdk"));
const transactionBuilder_1 = require("./transactionBuilder");
const txnSchema_1 = require("./txnSchema");
const utils_1 = __importDefault(require("./utils"));
const sdk_core_1 = require("@bitgo/sdk-core");
class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
constructor(coinConfig) {
super(coinConfig);
}
buildAlgoTxn() {
return algosdk_1.default.makePaymentTxnWithSuggestedParams(this._sender, this._to, this._amount, this._closeRemainderTo, this._note, this.suggestedParams, this._reKeyTo);
}
get transactionType() {
return sdk_core_1.TransactionType.Send;
}
fromImplementation(rawTransaction) {
const tx = super.fromImplementation(rawTransaction);
const algoTx = tx.getAlgoTransaction();
if (algoTx) {
this.amount(algoTx.amount || 0);
this.to({ address: algosdk_1.default.encodeAddress(algoTx.to.publicKey) });
if (algoTx.closeRemainderTo) {
this.closeRemainderTo({ address: algosdk_1.default.encodeAddress(algoTx.closeRemainderTo.publicKey) });
}
}
return tx;
}
validateRawTransaction(rawTransaction) {
const { txn: algoTxn } = utils_1.default.decodeAlgoTxn(rawTransaction);
if (algoTxn.type !== algosdk_1.default.TransactionType.pay) {
throw new sdk_core_1.InvalidTransactionError(`Invalid Transaction Type: ${algoTxn.type}. Expected ${algosdk_1.default.TransactionType.pay}`);
}
}
validateTransaction(transaction) {
super.validateTransaction(transaction);
const validationResult = txnSchema_1.TransferTransactionSchema.validate({
to: this._to,
amount: this._amount,
closeRemainderTo: this._closeRemainderTo,
});
if (validationResult.error) {
throw new sdk_core_1.InvalidTransactionError(`Transaction validation failed: ${validationResult.error.message}`);
}
}
/**
* Sets the payment receiver.
*
* @param {BaseAddress} to The receiver account
* @returns {TransferBuilder} This transfer builder.
*
*/
to(to) {
this.validateAddress(to);
this._to = to.address;
return this;
}
/**
* Sets the amount of payment.
*
* @param {number} amount The amount of payment.
* @returns {TransferBuilder} This transfer builder.
*/
amount(amount) {
this.validateValue(new bignumber_js_1.default(amount.toString()));
this._amount = amount;
return this;
}
/**
* Sets address to transfer remainder amount on closing.
*
* @param {BaseAddress} closeRemainderTo The address for receiving remainder amount
* @returns {TransferBuilder} This transfer builder.
*
*/
closeRemainderTo(closeRemainderTo) {
this.validateAddress(closeRemainderTo);
this._closeRemainderTo = closeRemainderTo.address;
return this;
}
}
exports.TransferBuilder = TransferBuilder;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0VBQXFDO0FBRXJDLHNEQUE4QjtBQUU5Qiw2REFBMEQ7QUFFMUQsMkNBQXdEO0FBQ3hELG9EQUE0QjtBQUM1Qiw4Q0FBd0Y7QUFFeEYsTUFBYSxlQUFnQixTQUFRLHVDQUFrQjtJQUtyRCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRVMsWUFBWTtRQUNwQixPQUFPLGlCQUFPLENBQUMsaUNBQWlDLENBQzlDLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLEdBQUcsRUFDUixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsUUFBUSxDQUNkLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVTLGtCQUFrQixDQUFDLGNBQW1DO1FBQzlELE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakUsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0YsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxjQUFtQztRQUN4RCxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLGVBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFN0QsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGlCQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pELE1BQU0sSUFBSSxrQ0FBdUIsQ0FDL0IsNkJBQTZCLE9BQU8sQ0FBQyxJQUFJLGNBQWMsaUJBQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQ3JGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFdBQXdCO1FBQzFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxNQUFNLGdCQUFnQixHQUFHLHFDQUF5QixDQUFDLFFBQVEsQ0FBQztZQUMxRCxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDcEIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtTQUN6QyxDQUFDLENBQUM7UUFFSCxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxrQ0FBa0MsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEcsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxFQUFFLENBQUMsRUFBZTtRQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUV0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxNQUF1QjtRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBRXRCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLGdCQUE2QjtRQUM1QyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztRQUVsRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQXRHRCwwQ0FzR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IGFsZ29zZGsgZnJvbSAnYWxnb3Nkayc7XG5cbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2ZlclRyYW5zYWN0aW9uU2NoZW1hIH0gZnJvbSAnLi90eG5TY2hlbWEnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQmFzZUFkZHJlc3MsIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF90bzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2Ftb3VudDogbnVtYmVyIHwgYmlnaW50O1xuICBwcm90ZWN0ZWQgX2Nsb3NlUmVtYWluZGVyVG8/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEFsZ29UeG4oKTogYWxnb3Nkay5UcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIGFsZ29zZGsubWFrZVBheW1lbnRUeG5XaXRoU3VnZ2VzdGVkUGFyYW1zKFxuICAgICAgdGhpcy5fc2VuZGVyLFxuICAgICAgdGhpcy5fdG8sXG4gICAgICB0aGlzLl9hbW91bnQsXG4gICAgICB0aGlzLl9jbG9zZVJlbWFpbmRlclRvLFxuICAgICAgdGhpcy5fbm90ZSxcbiAgICAgIHRoaXMuc3VnZ2VzdGVkUGFyYW1zLFxuICAgICAgdGhpcy5fcmVLZXlUb1xuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IFVpbnQ4QXJyYXkgfCBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBzdXBlci5mcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIGNvbnN0IGFsZ29UeCA9IHR4LmdldEFsZ29UcmFuc2FjdGlvbigpO1xuICAgIGlmIChhbGdvVHgpIHtcbiAgICAgIHRoaXMuYW1vdW50KGFsZ29UeC5hbW91bnQgfHwgMCk7XG4gICAgICB0aGlzLnRvKHsgYWRkcmVzczogYWxnb3Nkay5lbmNvZGVBZGRyZXNzKGFsZ29UeC50by5wdWJsaWNLZXkpIH0pO1xuICAgICAgaWYgKGFsZ29UeC5jbG9zZVJlbWFpbmRlclRvKSB7XG4gICAgICAgIHRoaXMuY2xvc2VSZW1haW5kZXJUbyh7IGFkZHJlc3M6IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyhhbGdvVHguY2xvc2VSZW1haW5kZXJUby5wdWJsaWNLZXkpIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IFVpbnQ4QXJyYXkgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB7IHR4bjogYWxnb1R4biB9ID0gVXRpbHMuZGVjb2RlQWxnb1R4bihyYXdUcmFuc2FjdGlvbik7XG5cbiAgICBpZiAoYWxnb1R4bi50eXBlICE9PSBhbGdvc2RrLlRyYW5zYWN0aW9uVHlwZS5wYXkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgVHJhbnNhY3Rpb24gVHlwZTogJHthbGdvVHhuLnR5cGV9LiBFeHBlY3RlZCAke2FsZ29zZGsuVHJhbnNhY3Rpb25UeXBlLnBheX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIudmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IFRyYW5zZmVyVHJhbnNhY3Rpb25TY2hlbWEudmFsaWRhdGUoe1xuICAgICAgdG86IHRoaXMuX3RvLFxuICAgICAgYW1vdW50OiB0aGlzLl9hbW91bnQsXG4gICAgICBjbG9zZVJlbWFpbmRlclRvOiB0aGlzLl9jbG9zZVJlbWFpbmRlclRvLFxuICAgIH0pO1xuXG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYXltZW50IHJlY2VpdmVyLlxuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2VBZGRyZXNzfSB0byBUaGUgcmVjZWl2ZXIgYWNjb3VudFxuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyfSBUaGlzIHRyYW5zZmVyIGJ1aWxkZXIuXG4gICAqXG4gICAqL1xuICB0byh0bzogQmFzZUFkZHJlc3MpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh0byk7XG4gICAgdGhpcy5fdG8gPSB0by5hZGRyZXNzO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYW1vdW50IG9mIHBheW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhbW91bnQgVGhlIGFtb3VudCBvZiBwYXltZW50LlxuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyfSBUaGlzIHRyYW5zZmVyIGJ1aWxkZXIuXG4gICAqL1xuICBhbW91bnQoYW1vdW50OiBudW1iZXIgfCBiaWdpbnQpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihhbW91bnQudG9TdHJpbmcoKSkpO1xuICAgIHRoaXMuX2Ftb3VudCA9IGFtb3VudDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYWRkcmVzcyB0byB0cmFuc2ZlciByZW1haW5kZXIgYW1vdW50IG9uIGNsb3NpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzZUFkZHJlc3N9IGNsb3NlUmVtYWluZGVyVG8gVGhlIGFkZHJlc3MgZm9yIHJlY2VpdmluZyByZW1haW5kZXIgYW1vdW50XG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IFRoaXMgdHJhbnNmZXIgYnVpbGRlci5cbiAgICpcbiAgICovXG4gIGNsb3NlUmVtYWluZGVyVG8oY2xvc2VSZW1haW5kZXJUbzogQmFzZUFkZHJlc3MpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyhjbG9zZVJlbWFpbmRlclRvKTtcbiAgICB0aGlzLl9jbG9zZVJlbWFpbmRlclRvID0gY2xvc2VSZW1haW5kZXJUby5hZGRyZXNzO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiJdfQ==Выполнить команду
Для локальной разработки. Не используйте в интернете!