@fruitsjs/core
Version:
Principal package with functions and models for building Fruits Eco-Blockchain applications.
51 lines (44 loc) • 2.14 kB
text/typescript
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 {IssueAssetArgs} from '../../../typings/args';
import {signAndBroadcastTransaction} from '../transaction/signAndBroadcastTransaction';
import any = jasmine.any;
import {SignAndBroadcastTransactionIssueAsset} from "../transaction/signAndBroadcastTransactionIssueAsset";
import {AxiosRequestConfig} from "axios";
/**
*
* Use with [[ApiComposer]] and belongs to [[AssetApi]].
*
* See details at [[AssetApi.issueAsset]]
* @module core.api.factories
*
*/
export const issueAsset = (service: ChainService):
(args: IssueAssetArgs) => Promise<TransactionId> =>
async (args: IssueAssetArgs): Promise<TransactionId> => {
const {senderPrivateKey, senderPublicKey} = args;
const config: AxiosRequestConfig = {headers: {'Content-Type': 'application/json'}};
let parameters = {
name: args.name,
description: args.description,
quantityQNT: args.quantity,
decimals: args.decimals,
publicKey: senderPublicKey,
feeNQT: args.amountPlanck,
deadline: args.deadline || DefaultDeadline,
encryptToSelfMessageData: args.encryptToSelfMessageData,
encryptToSelfMessageNonce: args.encryptToSelfMessageNonce,
messageToEncryptToSelfIsText: args.messageToEncryptToSelfIsText,
referencedTransactionFullHash: args.referenceTransactionHash
};
const {unsignedTransactionBytes: unsignedHexMessage} = await service
.sendBodyString<TransactionResponse>('issueAsset', parameters, args.icon, config);
return SignAndBroadcastTransactionIssueAsset(service)({
senderPublicKey,
senderPrivateKey,
unsignedHexMessage
});
};