@swaptoshi/dex-module
Version:
Klayr decentralized exchange (dex) on-chain module
28 lines • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.verifyValidCrossTransfer = verifyValidCrossTransfer;
const codec_1 = require("@klayr/codec");
const constants_1 = require("../../constants");
const pool_1 = require("../../stores/pool");
const schema_1 = require("../../schema");
const INVALID_TRANSFER_RECIPIENTS = [constants_1.POSITION_MANAGER_ADDRESS, constants_1.ROUTER_ADDRESS];
async function verifyValidCrossTransfer(context) {
var _a, _b, _c;
if (context.ccm.module === 'token' && context.ccm.crossChainCommand === 'transferCrossChain') {
const params = codec_1.codec.decode(schema_1.crossChainTokenTransferMessageParams, context.ccm.params);
if (INVALID_TRANSFER_RECIPIENTS.findIndex(t => t.equals(params.recipientAddress)) >= 0) {
await ((_a = this._tokenMethod) === null || _a === void 0 ? void 0 : _a.transfer(context.getMethodContext(), params.recipientAddress, params.senderAddress, params.tokenID, params.amount));
}
}
if (context.ccm.module === 'nft' && context.ccm.crossChainCommand === 'crossChainTransfer') {
const params = codec_1.codec.decode(schema_1.crossChainNFTTransferMessageParamsSchema, context.ccm.params);
if (INVALID_TRANSFER_RECIPIENTS.findIndex(t => t.equals(params.recipientAddress)) >= 0) {
await ((_b = this._nftMethod) === null || _b === void 0 ? void 0 : _b.transfer(context.getMethodContext(), params.recipientAddress, params.senderAddress, params.nftID));
}
const poolStore = this.stores.get(pool_1.PoolStore);
if (await poolStore.has(context, params.recipientAddress)) {
await ((_c = this._nftMethod) === null || _c === void 0 ? void 0 : _c.transfer(context.getMethodContext(), params.recipientAddress, params.senderAddress, params.nftID));
}
}
}
//# sourceMappingURL=verifyValidCrossTransfer.js.map