UNPKG

@ledgerhq/coin-mina

Version:
78 lines 2.92 kB
import network from "@ledgerhq/live-network"; import { getCoinConfig } from "../../config"; import { addNetworkIdentifier, buildAccountIdentifier, makeTransferPayload } from "./utils"; import { MAX_TRANSACTIONS_PER_PAGE } from "../../consts"; const getRosettaUrl = (route) => { const currencyConfig = getCoinConfig(); return `${currencyConfig.infra.API_MINA_ROSETTA_NODE}${route || ""}`; }; export const fetchNetworkStatus = async () => { const { data } = await network({ method: "POST", url: getRosettaUrl("/network/status"), data: addNetworkIdentifier({}), }); return data; }; export const fetchAccountBalance = async (address) => { const { data } = await network({ method: "POST", url: getRosettaUrl("/account/balance"), data: addNetworkIdentifier(buildAccountIdentifier(address)), }); return data; }; export const fetchAccountTransactions = async (address, offset = 0) => { const transactions = []; let currentOffset = offset; while (currentOffset !== undefined) { const response = await network({ method: "POST", url: getRosettaUrl("/search/transactions"), data: { ...addNetworkIdentifier(buildAccountIdentifier(address)), offset: currentOffset, limit: MAX_TRANSACTIONS_PER_PAGE, include_timestamp: true, }, }); const { data } = response; transactions.push(...data.transactions); currentOffset = data.next_offset; } return transactions; }; export const rosettaGetBlockInfo = async (blockHeight) => { const { data } = await network({ method: "POST", url: getRosettaUrl("/block"), data: addNetworkIdentifier({ block_identifier: { index: blockHeight } }), }); return data; }; const rosettaPreprocess = async (from, to, feeNano, valueNano) => { const payload = makeTransferPayload(from, to, feeNano, valueNano); const { data } = await network({ method: "POST", url: getRosettaUrl("/construction/preprocess"), data: addNetworkIdentifier(payload), }); return data; }; export const fetchTransactionMetadata = async (srcAddress, destAddress, feeNano, valueNano) => { const options = await rosettaPreprocess(srcAddress, destAddress, feeNano, valueNano); const payload = makeTransferPayload(srcAddress, destAddress, feeNano, valueNano); return await network({ method: "POST", url: getRosettaUrl("/construction/metadata"), data: addNetworkIdentifier({ ...payload, ...options }), }); }; export const rosettaSubmitTransaction = async (blob) => { return await network({ method: "POST", url: getRosettaUrl("/construction/submit"), data: addNetworkIdentifier({ signed_transaction: blob }), }); }; //# sourceMappingURL=index.js.map