@ledgerhq/coin-mina
Version:
90 lines • 3.89 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.rosettaSubmitTransaction = exports.fetchTransactionMetadata = exports.rosettaGetBlockInfo = exports.fetchAccountTransactions = exports.fetchAccountBalance = exports.fetchNetworkStatus = void 0;
const live_network_1 = __importDefault(require("@ledgerhq/live-network"));
const config_1 = require("../../config");
const utils_1 = require("./utils");
const consts_1 = require("../../consts");
const getRosettaUrl = (route) => {
const currencyConfig = (0, config_1.getCoinConfig)();
return `${currencyConfig.infra.API_MINA_ROSETTA_NODE}${route || ""}`;
};
const fetchNetworkStatus = async () => {
const { data } = await (0, live_network_1.default)({
method: "POST",
url: getRosettaUrl("/network/status"),
data: (0, utils_1.addNetworkIdentifier)({}),
});
return data;
};
exports.fetchNetworkStatus = fetchNetworkStatus;
const fetchAccountBalance = async (address) => {
const { data } = await (0, live_network_1.default)({
method: "POST",
url: getRosettaUrl("/account/balance"),
data: (0, utils_1.addNetworkIdentifier)((0, utils_1.buildAccountIdentifier)(address)),
});
return data;
};
exports.fetchAccountBalance = fetchAccountBalance;
const fetchAccountTransactions = async (address, offset = 0) => {
const transactions = [];
let currentOffset = offset;
while (currentOffset !== undefined) {
const response = await (0, live_network_1.default)({
method: "POST",
url: getRosettaUrl("/search/transactions"),
data: {
...(0, utils_1.addNetworkIdentifier)((0, utils_1.buildAccountIdentifier)(address)),
offset: currentOffset,
limit: consts_1.MAX_TRANSACTIONS_PER_PAGE,
include_timestamp: true,
},
});
const { data } = response;
transactions.push(...data.transactions);
currentOffset = data.next_offset;
}
return transactions;
};
exports.fetchAccountTransactions = fetchAccountTransactions;
const rosettaGetBlockInfo = async (blockHeight) => {
const { data } = await (0, live_network_1.default)({
method: "POST",
url: getRosettaUrl("/block"),
data: (0, utils_1.addNetworkIdentifier)({ block_identifier: { index: blockHeight } }),
});
return data;
};
exports.rosettaGetBlockInfo = rosettaGetBlockInfo;
const rosettaPreprocess = async (from, to, feeNano, valueNano) => {
const payload = (0, utils_1.makeTransferPayload)(from, to, feeNano, valueNano);
const { data } = await (0, live_network_1.default)({
method: "POST",
url: getRosettaUrl("/construction/preprocess"),
data: (0, utils_1.addNetworkIdentifier)(payload),
});
return data;
};
const fetchTransactionMetadata = async (srcAddress, destAddress, feeNano, valueNano) => {
const options = await rosettaPreprocess(srcAddress, destAddress, feeNano, valueNano);
const payload = (0, utils_1.makeTransferPayload)(srcAddress, destAddress, feeNano, valueNano);
return await (0, live_network_1.default)({
method: "POST",
url: getRosettaUrl("/construction/metadata"),
data: (0, utils_1.addNetworkIdentifier)({ ...payload, ...options }),
});
};
exports.fetchTransactionMetadata = fetchTransactionMetadata;
const rosettaSubmitTransaction = async (blob) => {
return await (0, live_network_1.default)({
method: "POST",
url: getRosettaUrl("/construction/submit"),
data: (0, utils_1.addNetworkIdentifier)({ signed_transaction: blob }),
});
};
exports.rosettaSubmitTransaction = rosettaSubmitTransaction;
//# sourceMappingURL=index.js.map