@ledgerhq/coin-mina
Version:
78 lines • 2.92 kB
JavaScript
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