UNPKG

@payburner/keyburner-sidewinder-core

Version:
145 lines 8.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CreateTokenTransactionProcessor = void 0; const npm_1 = require("@payburner/keyburner-sidewinder-model/dist/npm"); const TransactionProcessorBase_1 = require("./TransactionProcessorBase"); const CommonErrorCodes_1 = require("../model/CommonErrorCodes"); class CreateTokenTransactionProcessor extends TransactionProcessorBase_1.TransactionProcessorBase { constructor(globalAccountService, tokenService) { super(globalAccountService, tokenService); } doProcess(decodedTransaction, items) { const self = this; return new Promise((resolve, reject) => { console.log('Processing create token: ' + decodedTransaction.id); if (typeof decodedTransaction.payload.initial_amount !== 'undefined' && typeof decodedTransaction.payload.initial_amount !== 'number') { resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_SETUP_MALFORMED_INITIAL_AMOUNT); return; } const createTokenTransaction = decodedTransaction.payload; self.getTokenService().getToken(createTokenTransaction.environment, createTokenTransaction.token_symbol) .then((token) => { resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_ALREADY_EXISTS); }).catch((error) => { if (typeof createTokenTransaction.maximum_transfer_amount !== 'undefined' && typeof createTokenTransaction.minimum_transfer_amount !== 'undefined' && (createTokenTransaction.minimum_transfer_amount) > (createTokenTransaction.maximum_transfer_amount)) { resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_SETUP_MINIMUM_TRANSFER_AMOUNTER_GREATER_THAN_MAXIMUM_TRANSFER_AMOUNT); return; } if (typeof createTokenTransaction.minimum_transfer_amount !== 'undefined' && (createTokenTransaction.minimum_transfer_amount) <= 0) { resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_SETUP_MINIMUM_TRANSFER_AMOUNT_LESS_THAN_OR_EQUAL_ZERO); return; } if (typeof createTokenTransaction.maximum_transfer_amount !== 'undefined' && (createTokenTransaction.maximum_transfer_amount) <= 0) { resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_SETUP_MAXIMUM_TRANSFER_AMOUNT_LESS_THAN_OR_EQUAL_ZERO); return; } if (typeof createTokenTransaction.initial_amount === 'undefined' && typeof createTokenTransaction.underlying_address === 'undefined') { resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_SETUP_NO_INITIAL_AMOUNT_AND_NO_UNDERLYING); return; } if (typeof createTokenTransaction.initial_amount !== 'undefined' && (createTokenTransaction.initial_amount) <= 0) { resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_SETUP_INITIAL_LESS_THAN_OR_EQUAL_TO_ZERO); return; } if (createTokenTransaction.decimal_precision < 0 || createTokenTransaction.decimal_precision > 10) { resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_SETUP_INVALID_DECIMAL_PRECISION); return; } if ((createTokenTransaction.transaction_fee) < 0) { resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_SETUP_INVALID_TRANSACTION_FEE); return; } if ((typeof createTokenTransaction.onramp_fee_multiplier !== 'undefined' || typeof createTokenTransaction.offramp_fee_multiplier !== 'undefined') && (typeof createTokenTransaction.underlying_address === 'undefined' || createTokenTransaction.underlying_address === null)) { resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_SETUP_ON_OFF_RAMP_FEES_BUT_NO_UNDERLYING); return; } console.log('The token ' + createTokenTransaction.token_symbol + ' does not exist. Creating.'); const token = { token_uri: npm_1.AccountUtils.calculateTokenId(createTokenTransaction.environment, createTokenTransaction.token_symbol), token_symbol: createTokenTransaction.token_symbol, environment: createTokenTransaction.environment, token_issuer_address: decodedTransaction.address, initial_amount: this.formatInt(createTokenTransaction.initial_amount), transaction_fee: this.formatInt(createTokenTransaction.transaction_fee), allow_transfers_between_accounts: createTokenTransaction.allow_transfers_between_accounts, is_permissioned: createTokenTransaction.is_permissioned, maximum_balance: this.formatInt(createTokenTransaction.maximum_balance), minimum_transfer_amount: this.formatInt(createTokenTransaction.minimum_transfer_amount), maximum_transfer_amount: this.formatInt(createTokenTransaction.maximum_transfer_amount), frozen: createTokenTransaction.frozen, decimal_precision: this.formatInt(createTokenTransaction.decimal_precision), underlying_currency: createTokenTransaction.underlying_currency, underlying_account_id: createTokenTransaction.underlying_address }; if (typeof createTokenTransaction.underlying_address !== 'undefined' && createTokenTransaction.underlying_address !== null) { if (typeof createTokenTransaction.onramp_fee_multiplier !== 'undefined' && createTokenTransaction.onramp_fee_multiplier !== null) { token.onramp_fee_multiplier = createTokenTransaction.onramp_fee_multiplier; } else { token.onramp_fee_multiplier = 0; } if (typeof createTokenTransaction.offramp_fee_multiplier !== 'undefined' && createTokenTransaction.offramp_fee_multiplier !== null) { token.offramp_fee_multiplier = createTokenTransaction.offramp_fee_multiplier; } else { token.offramp_fee_multiplier = 0; } if (typeof createTokenTransaction.underlying_currency_multiplier !== 'undefined' && createTokenTransaction.underlying_currency_multiplier !== null) { token.underlying_currency_multiplier = createTokenTransaction.underlying_currency_multiplier; } else { token.underlying_currency_multiplier = 1; } } else { { token.underlying_currency_multiplier = 1; token.onramp_fee_multiplier = 0; token.offramp_fee_multiplier = 0; } } items.push({ Put: { TableName: 'sidewinder_token', Item: token, ConditionExpression: "attribute_not_exists(token_uri)" } }); let ownerAccount = { token_account_id: npm_1.AccountUtils.calculateTokenAccountId(token.environment, token.token_symbol, decodedTransaction.address), token_symbol: token.token_symbol, account_owner_address: decodedTransaction.address, environment: token.environment, sequence: 0, available_balance: createTokenTransaction.initial_amount, total_balance: createTokenTransaction.initial_amount, over_balance: 0, locked_balance: 0, frozen: false }; items.push({ Put: { TableName: 'sidewinder_token_account', Item: ownerAccount, ConditionExpression: "attribute_not_exists(token_account_id)" } }); resolve({ status: 200 }); }).catch((error) => { resolve({ status: 500, error }); }); }); } formatInt(input) { return typeof input !== 'undefined' ? parseInt((input).toFixed(0)) : undefined; } getTransactionType() { return npm_1.TransactionTypes.CreateToken; } } exports.CreateTokenTransactionProcessor = CreateTokenTransactionProcessor; //# sourceMappingURL=CreateTokenTransactionProcessor.js.map