UNPKG

@fruitsjs/core

Version:

Principal package with functions and models for building Fruits Eco-Blockchain applications.

46 lines (37 loc) 1.72 kB
import {ChainService} from '../../../service/chainService'; import {TransactionId} from '../../../typings/transactionId'; import {TransactionResponse} from '../../../typings/transactionResponse'; import {DefaultDeadline} from '../../../constants'; import {createParametersFromAttachment} from '../../../internal/createParametersFromAttachment'; import {signAndBroadcastTransaction} from '../transaction/signAndBroadcastTransaction'; import {CancelOrderArgs} from '../../../typings/args'; interface GenericCancelOrderArgs extends CancelOrderArgs { type: 'bid' | 'ask'; } /** * @ignore * This is an internal helper * See details at [[AssetApi.cancelAskOrder]] [[AssetApi.cancelBidOrder]] * @module core.api.factories */ export const cancelOrder = (service: ChainService): (args: GenericCancelOrderArgs) => Promise<TransactionId> => async (args: GenericCancelOrderArgs): Promise<TransactionId> => { const {senderPrivateKey, senderPublicKey} = args; let parameters = { order: args.order, publicKey: senderPublicKey, feeNQT: args.feePlanck, deadline: args.deadline || DefaultDeadline, }; if (args.attachment) { parameters = createParametersFromAttachment(args.attachment, parameters); } const method = args.type === 'ask' ? 'cancelAskOrder' : 'cancelBidOrder'; const {unsignedTransactionBytes: unsignedHexMessage} = await service.send<TransactionResponse>(method, parameters); return signAndBroadcastTransaction(service)({ senderPublicKey, senderPrivateKey, unsignedHexMessage }); };