@signumjs/core
Version:
Principal package with functions and models for building Signum Network applications.
185 lines • 9.01 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApiSettings = void 0;
exports.composeApi = composeApi;
/**
* Copyright (c) 2019 Burst Apps Team
* Modified (c) 2021,2022,2023,2024 Signum Network
*/
const service_1 = require("../service");
const apiComposer_1 = require("./apiComposer");
const block_1 = require("./factories/block");
const network_1 = require("./factories/network");
const message_1 = require("./factories/message");
const account_1 = require("./factories/account");
const alias_1 = require("./factories/alias");
const contract_1 = require("./factories/contract");
const transaction_1 = require("./factories/transaction");
const asset_1 = require("./factories/asset");
/**
* Settings for API used in {@link composeApi}
*
* */
class ApiSettings {
nodeHost;
reliableNodeHosts;
httpClientOptions;
httpClient;
apiVersion;
/**
* @param nodeHost {string} The url of the peer/node
* @param reliableNodeHosts A list of node/peer hosts that can be chosen of,
* usually a list of reliable/trusted nodes. This is necessary for the automatic node selection.
* @param httpClientOptions {any} The optional request configuration for the passed Http client
* @param httpClient {Http} It's possible to add a custom Http client adapter. Default is an Axios based implementation
* @param apiVersion {ApiVersion} For future usage.
* The default implementation uses axios. In case of a custom client pass your own options.
* see [Axios Configuration](https://github.com/axios/axios#request-config)
*/
constructor(nodeHost, reliableNodeHosts, httpClientOptions, httpClient, apiVersion) {
this.nodeHost = nodeHost;
this.reliableNodeHosts = reliableNodeHosts;
this.httpClientOptions = httpClientOptions;
this.httpClient = httpClient;
this.apiVersion = apiVersion;
}
}
exports.ApiSettings = ApiSettings;
/**
* Composes the API, i.e. setup the environment and mounts the API structure
* with its functions.
*
* ```ts
* const api = composeApi(new ApiSettings('https://europe.signum.network')), // one of the mainnet nodes
* ```
*
* Note, that this method mounts the __entire__ API, i.e. all available methods. One may also customize the API composition
* using {@link ApiComposer}.
*
* @param settings necessary execution context
* @return The _complete_ API
*
*/
function composeApi(settings) {
const serviceSettings = { ...settings };
const service = new service_1.ChainService(serviceSettings);
return apiComposer_1.ApiComposer
.create(service)
.withBlockApi({
getBlockByTimestamp: block_1.getBlockByTimestamp,
getBlockByHeight: block_1.getBlockByHeight,
getBlockById: block_1.getBlockById,
getBlockId: block_1.getBlockId,
getBlocks: block_1.getBlocks,
})
.withNetworkApi({
getBlockchainStatus: network_1.getBlockchainStatus,
getMiningInfo: network_1.getMiningInfo,
getServerStatus: network_1.getServerStatus,
getSuggestedFees: network_1.getSuggestedFees,
getPeers: network_1.getPeers,
getPeer: network_1.getPeer,
getTime: network_1.getTime,
getNetworkInfo: network_1.getNetworkInfo
})
.withTransactionApi({
broadcastTransaction: transaction_1.broadcastTransaction,
cancelSubscription: transaction_1.cancelSubscription,
createSubscription: transaction_1.createSubscription,
getDistributionAmountsFromTransaction: transaction_1.getDistributionAmountsFromTransaction,
getSubscription: transaction_1.getSubscription,
getTransaction: transaction_1.getTransaction,
getTransactionByFullHash: transaction_1.getTransactionByFullHash,
getUnconfirmedTransactions: transaction_1.getUnconfirmedTransactions,
parseTransactionBytes: transaction_1.parseTransactionBytes,
sendAmountToMultipleRecipients: transaction_1.sendAmountToMultipleRecipients,
sendAmountToSingleRecipient: transaction_1.sendAmountToSingleRecipient,
sendSameAmountToMultipleRecipients: transaction_1.sendSameAmountToMultipleRecipients,
signAndBroadcastTransaction: transaction_1.signAndBroadcastTransaction,
getSubscriptionPayments: transaction_1.getSubscriptionPayments,
})
.withMessageApi({
sendMessage: message_1.sendMessage,
sendEncryptedMessage: message_1.sendEncryptedMessage,
})
.withAccountApi({
addCommitment: account_1.addCommitment,
removeCommitment: account_1.removeCommitment,
getAccountTransactions: account_1.getAccountTransactions,
getAccountTransactionsFromSenderToRecipient: account_1.getAccountTransactionsFromSenderToRecipient,
getAccountTransactionsBetweenSenderAndRecipient: account_1.getAccountTransactionsBetweenSenderAndRecipient,
getAccountTransactionsFromSender: account_1.getAccountTransactionsFromSender,
getAccountTransactionsToRecipient: account_1.getAccountTransactionsToRecipient,
getUnconfirmedAccountTransactions: account_1.getUnconfirmedAccountTransactions,
getAccountBalance: account_1.getAccountBalance,
generateSendTransactionQRCode: account_1.generateSendTransactionQRCode,
generateSendTransactionQRCodeAddress: account_1.generateSendTransactionQRCodeAddress,
setAlias: account_1.setAlias,
getAccount: account_1.getAccount,
getAccountBlocks: account_1.getAccountBlocks,
getAccountBlockIds: account_1.getAccountBlockIds,
setAccountInfo: account_1.setAccountInfo,
setRewardRecipient: account_1.setRewardRecipient,
getAccountSubscriptions: account_1.getAccountSubscriptions,
getSubscriptionsToAccount: account_1.getSubscriptionsToAccount,
getRewardRecipient: account_1.getRewardRecipient,
getTradeHistoryPerAccount: asset_1.getTradeHistoryPerAccount
}).withAliasApi({
getAliasByName: alias_1.getAliasByName,
getAliasById: alias_1.getAliasById,
setAlias: account_1.setAlias,
getAliasesOnSale: alias_1.getAliasesOnSale,
buyAlias: alias_1.buyAlias,
sellAlias: alias_1.sellAlias,
getAliases: alias_1.getAliases,
searchAliasesByName: alias_1.searchAliasesByName,
getTopLevelDomains: alias_1.getTopLevelDomains,
buyTopLevelDomain: alias_1.buyTopLevelDomain
}).withContractApi({
getContract: contract_1.getContract,
getContractsByAccount: contract_1.getContractsByAccount,
getAllContractIds: contract_1.getAllContractIds,
publishContract: contract_1.publishContract,
publishContractByReference: contract_1.publishContractByReference,
callContractMethod: contract_1.callContractMethod,
getSingleContractMapValue: contract_1.getSingleContractMapValue,
getContractMapValuesByFirstKey: contract_1.getContractMapValuesByFirstKey,
getAllContractsByCodeHash: contract_1.getAllContractsByCodeHash
}).withAssetApi({
getAsset: asset_1.getAsset,
getAllTrades: asset_1.getAllTrades,
getAssetTrades: asset_1.getAssetTrades,
getAssetTradesPerAccount: asset_1.getAssetTradesPerAccount,
getAssetTradesPerAsset: asset_1.getAssetTradesPerAsset,
getAllAssets: asset_1.getAllAssets,
issueAsset: asset_1.issueAsset,
mintAsset: asset_1.mintAsset,
burnAsset: asset_1.burnAsset,
transferAsset: asset_1.transferAsset,
transferAssetOwnership: asset_1.transferAssetOwnership,
transferMultipleAssets: asset_1.transferMultipleAssets,
placeAskOrder: asset_1.placeAskOrder,
placeBidOrder: asset_1.placeBidOrder,
cancelAskOrder: asset_1.cancelAskOrder,
cancelBidOrder: asset_1.cancelBidOrder,
getAssetHolders: asset_1.getAssetHolders,
getAssetTransfers: asset_1.getAssetTransfers,
getAssetTransfersPerAccount: asset_1.getAssetTransfersPerAccount,
getAssetTransfersPerAsset: asset_1.getAssetTransfersPerAsset,
addAssetTreasuryAccount: asset_1.addAssetTreasuryAccount,
distributeToAssetHolders: asset_1.distributeToAssetHolders,
getOpenBidOrders: asset_1.getOpenBidOrders,
getOpenAskOrders: asset_1.getOpenAskOrders,
getOpenBidOrdersPerAsset: asset_1.getOpenBidOrdersPerAsset,
getOpenAskOrdersPerAsset: asset_1.getOpenAskOrdersPerAsset,
getOpenBidOrdersPerAccount: asset_1.getOpenBidOrdersPerAccount,
getOpenAskOrdersPerAccount: asset_1.getOpenAskOrdersPerAccount,
getTradeHistoryPerAccount: asset_1.getTradeHistoryPerAccount,
getAssetsByIssuer: asset_1.getAssetsByIssuer,
getAssetsByOwner: asset_1.getAssetsByOwner,
getAssetsByName: asset_1.getAssetsByName,
calculateDistributionFee: asset_1.calculateDistributionFee,
})
.compose();
}
//# sourceMappingURL=composeApi.js.map