PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-coin-algo/dist/src/lib
Просмотр файла: assetTransferBuilder.js
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AssetTransferBuilder = void 0;
const algosdk_1 = __importDefault(require("algosdk"));
const sdk_core_1 = require("@bitgo/sdk-core");
const transferBuilder_1 = require("./transferBuilder");
const txnSchema_1 = require("./txnSchema");
const utils_1 = __importDefault(require("./utils"));
class AssetTransferBuilder extends transferBuilder_1.TransferBuilder {
constructor(coinConfig) {
super(coinConfig);
}
/**
* Sets the token id.
* The token id uniquely identifies the asset.
*
* @param {number} id The token id.
* @returns {AssetTransferBuilder} This transaction builder.
*
* @see https://developer.algorand.org/docs/reference/transactions/#asset-transfer-transaction
*/
tokenId(id) {
if (id <= 0) {
throw new Error('Asset index must be a uint64 value');
}
this._tokenId = id;
return this;
}
/**
* Sets the parameters of the transaction builder to allowlist an asset.
*
* To allow list an asset, you send 0 units of the asset to yourself.
*
* This method sets the tokenId, sender, receiver, asset amount, and
* fee parameters to their respective values to allowlist and asset.
*
* @param {number} tokenId The unique identifier of the asset.
* @param {BaseAddress} userAddress The address of the user.
* @returns {AssetTransferBuilder} This transaction builder.
*/
allowListAsset(tokenId, userAddress) {
this.tokenId(tokenId);
this.sender(userAddress);
this.to(userAddress);
this.isFlatFee(true);
this.fee({ fee: '1000' });
this.amount(0);
return this;
}
buildAlgoTxn() {
return algosdk_1.default.makeAssetTransferTxnWithSuggestedParams(this._sender, this._to, this._closeRemainderTo, undefined, this._amount, this._note, this._tokenId, this.suggestedParams, this._reKeyTo);
}
get transactionType() {
return sdk_core_1.TransactionType.Send;
}
/** @inheritdoc */
fromImplementation(rawTransaction) {
const tx = super.fromImplementation(rawTransaction);
const algoTx = tx.getAlgoTransaction();
if (!algoTx) {
throw new sdk_core_1.InvalidTransactionError('Transaction is empty');
}
this._tokenId = algoTx.assetIndex;
this._amount = algoTx.amount || 0;
this._to = algosdk_1.default.encodeAddress(algoTx.to.publicKey);
return tx;
}
validateRawTransaction(rawTransaction) {
const { txn: algoTxn } = utils_1.default.decodeAlgoTxn(rawTransaction);
if (algoTxn.type !== algosdk_1.default.TransactionType.axfer) {
throw new sdk_core_1.InvalidTransactionError(`Invalid Transaction Type: ${algoTxn.type}. Expected ${algosdk_1.default.TransactionType.axfer}`);
}
this.validateFields(algoTxn.assetIndex, algoTxn.amount, algosdk_1.default.encodeAddress(algoTxn.to.publicKey));
}
/** @inheritdoc */
validateTransaction(txn) {
super.validateTransaction(txn);
this.validateFields(this._tokenId, this._amount, this._to);
}
validateFields(tokenId, assetAmount, receiver) {
let validationResult;
if (this._sender !== this._to) {
validationResult = txnSchema_1.AssetTransferTxnSchema.validate({
tokenId,
assetAmount,
receiver,
});
}
else {
validationResult = txnSchema_1.AssetToggleTxnSchema.validate({
tokenId,
receiver,
});
}
if (validationResult.error) {
throw new sdk_core_1.InvalidTransactionError(`Transaction validation failed: ${validationResult.error.message}`);
}
}
}
exports.AssetTransferBuilder = AssetTransferBuilder;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRUcmFuc2ZlckJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2Fzc2V0VHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLHNEQUE4QjtBQUM5Qiw4Q0FBd0Y7QUFDeEYsdURBQW9EO0FBRXBELDJDQUEyRTtBQUMzRSxvREFBNEI7QUFFNUIsTUFBYSxvQkFBcUIsU0FBUSxpQ0FBZTtJQUd2RCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsT0FBTyxDQUFDLEVBQVU7UUFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBRW5CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsY0FBYyxDQUFDLE9BQWUsRUFBRSxXQUF3QjtRQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRVMsWUFBWTtRQUNwQixPQUFPLGlCQUFPLENBQUMsdUNBQXVDLENBQ3BELElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLEdBQUcsRUFDUixJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLFNBQVMsRUFDVCxJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsUUFBUSxDQUNkLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLGNBQW1DO1FBQzlELE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksa0NBQXVCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxpQkFBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELHNCQUFzQixDQUFDLGNBQW1DO1FBQ3hELE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsZUFBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM3RCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssaUJBQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkQsTUFBTSxJQUFJLGtDQUF1QixDQUMvQiw2QkFBNkIsT0FBTyxDQUFDLElBQUksY0FBYyxpQkFBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FDdkYsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxpQkFBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixtQkFBbUIsQ0FBQyxHQUFnQjtRQUNsQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFUyxjQUFjLENBQUMsT0FBZSxFQUFFLFdBQTRCLEVBQUUsUUFBZ0I7UUFDdEYsSUFBSSxnQkFBZ0IsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzlCLGdCQUFnQixHQUFHLGtDQUFzQixDQUFDLFFBQVEsQ0FBQztnQkFDakQsT0FBTztnQkFDUCxXQUFXO2dCQUNYLFFBQVE7YUFDVCxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLGdCQUFnQixHQUFHLGdDQUFvQixDQUFDLFFBQVEsQ0FBQztnQkFDL0MsT0FBTztnQkFDUCxRQUFRO2FBQ1QsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLGtDQUF1QixDQUFDLGtDQUFrQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN4RyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdEhELG9EQXNIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgYWxnb3NkayBmcm9tICdhbGdvc2RrJztcbmltcG9ydCB7IEJhc2VBZGRyZXNzLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBBc3NldFRyYW5zZmVyVHhuU2NoZW1hLCBBc3NldFRvZ2dsZVR4blNjaGVtYSB9IGZyb20gJy4vdHhuU2NoZW1hJztcbmltcG9ydCBVdGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEFzc2V0VHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNmZXJCdWlsZGVyIHtcbiAgcHJpdmF0ZSBfdG9rZW5JZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG9rZW4gaWQuXG5cbiAgICogVGhlIHRva2VuIGlkIHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGFzc2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIHRva2VuIGlkLlxuICAgKiBAcmV0dXJucyB7QXNzZXRUcmFuc2ZlckJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5hbGdvcmFuZC5vcmcvZG9jcy9yZWZlcmVuY2UvdHJhbnNhY3Rpb25zLyNhc3NldC10cmFuc2Zlci10cmFuc2FjdGlvblxuICAgKi9cbiAgdG9rZW5JZChpZDogbnVtYmVyKTogdGhpcyB7XG4gICAgaWYgKGlkIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXNzZXQgaW5kZXggbXVzdCBiZSBhIHVpbnQ2NCB2YWx1ZScpO1xuICAgIH1cbiAgICB0aGlzLl90b2tlbklkID0gaWQ7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIHRvIGFsbG93bGlzdCBhbiBhc3NldC5cbiAgICpcbiAgICogVG8gYWxsb3cgbGlzdCBhbiBhc3NldCwgeW91IHNlbmQgMCB1bml0cyBvZiB0aGUgYXNzZXQgdG8geW91cnNlbGYuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIHRva2VuSWQsIHNlbmRlciwgcmVjZWl2ZXIsIGFzc2V0IGFtb3VudCwgYW5kXG4gICAqIGZlZSBwYXJhbWV0ZXJzIHRvIHRoZWlyIHJlc3BlY3RpdmUgdmFsdWVzIHRvIGFsbG93bGlzdCBhbmQgYXNzZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0b2tlbklkIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuXG4gICAqIEBwYXJhbSB7QmFzZUFkZHJlc3N9IHVzZXJBZGRyZXNzIFRoZSBhZGRyZXNzIG9mIHRoZSB1c2VyLlxuICAgKiBAcmV0dXJucyB7QXNzZXRUcmFuc2ZlckJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlci5cbiAgICovXG4gIGFsbG93TGlzdEFzc2V0KHRva2VuSWQ6IG51bWJlciwgdXNlckFkZHJlc3M6IEJhc2VBZGRyZXNzKTogdGhpcyB7XG4gICAgdGhpcy50b2tlbklkKHRva2VuSWQpO1xuICAgIHRoaXMuc2VuZGVyKHVzZXJBZGRyZXNzKTtcbiAgICB0aGlzLnRvKHVzZXJBZGRyZXNzKTtcbiAgICB0aGlzLmlzRmxhdEZlZSh0cnVlKTtcbiAgICB0aGlzLmZlZSh7IGZlZTogJzEwMDAnIH0pO1xuICAgIHRoaXMuYW1vdW50KDApO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRBbGdvVHhuKCk6IGFsZ29zZGsuVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBhbGdvc2RrLm1ha2VBc3NldFRyYW5zZmVyVHhuV2l0aFN1Z2dlc3RlZFBhcmFtcyhcbiAgICAgIHRoaXMuX3NlbmRlcixcbiAgICAgIHRoaXMuX3RvLFxuICAgICAgdGhpcy5fY2xvc2VSZW1haW5kZXJUbyxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMuX2Ftb3VudCxcbiAgICAgIHRoaXMuX25vdGUsXG4gICAgICB0aGlzLl90b2tlbklkLFxuICAgICAgdGhpcy5zdWdnZXN0ZWRQYXJhbXMsXG4gICAgICB0aGlzLl9yZUtleVRvXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IFVpbnQ4QXJyYXkgfCBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBzdXBlci5mcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIGNvbnN0IGFsZ29UeCA9IHR4LmdldEFsZ29UcmFuc2FjdGlvbigpO1xuICAgIGlmICghYWxnb1R4KSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGlzIGVtcHR5Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5fdG9rZW5JZCA9IGFsZ29UeC5hc3NldEluZGV4O1xuICAgIHRoaXMuX2Ftb3VudCA9IGFsZ29UeC5hbW91bnQgfHwgMDtcbiAgICB0aGlzLl90byA9IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyhhbGdvVHgudG8ucHVibGljS2V5KTtcblxuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IFVpbnQ4QXJyYXkgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB7IHR4bjogYWxnb1R4biB9ID0gVXRpbHMuZGVjb2RlQWxnb1R4bihyYXdUcmFuc2FjdGlvbik7XG4gICAgaWYgKGFsZ29UeG4udHlwZSAhPT0gYWxnb3Nkay5UcmFuc2FjdGlvblR5cGUuYXhmZXIpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgVHJhbnNhY3Rpb24gVHlwZTogJHthbGdvVHhuLnR5cGV9LiBFeHBlY3RlZCAke2FsZ29zZGsuVHJhbnNhY3Rpb25UeXBlLmF4ZmVyfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZUZpZWxkcyhhbGdvVHhuLmFzc2V0SW5kZXgsIGFsZ29UeG4uYW1vdW50LCBhbGdvc2RrLmVuY29kZUFkZHJlc3MoYWxnb1R4bi50by5wdWJsaWNLZXkpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHR4bjogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci52YWxpZGF0ZVRyYW5zYWN0aW9uKHR4bik7XG4gICAgdGhpcy52YWxpZGF0ZUZpZWxkcyh0aGlzLl90b2tlbklkLCB0aGlzLl9hbW91bnQsIHRoaXMuX3RvKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZUZpZWxkcyh0b2tlbklkOiBudW1iZXIsIGFzc2V0QW1vdW50OiBudW1iZXIgfCBiaWdpbnQsIHJlY2VpdmVyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgdmFsaWRhdGlvblJlc3VsdDtcbiAgICBpZiAodGhpcy5fc2VuZGVyICE9PSB0aGlzLl90bykge1xuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IEFzc2V0VHJhbnNmZXJUeG5TY2hlbWEudmFsaWRhdGUoe1xuICAgICAgICB0b2tlbklkLFxuICAgICAgICBhc3NldEFtb3VudCxcbiAgICAgICAgcmVjZWl2ZXIsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IEFzc2V0VG9nZ2xlVHhuU2NoZW1hLnZhbGlkYXRlKHtcbiAgICAgICAgdG9rZW5JZCxcbiAgICAgICAgcmVjZWl2ZXIsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBUcmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDogJHt2YWxpZGF0aW9uUmVzdWx0LmVycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=Выполнить команду
Для локальной разработки. Не используйте в интернете!