@ledgerhq/coin-ton
Version:
101 lines • 3.65 kB
JavaScript
import network from "@ledgerhq/live-network";
import { Address } from "@ton/ton";
import { getCoinConfig } from "../../config";
const getTonUrl = (path) => {
const currencyConfig = getCoinConfig();
return `${currencyConfig.infra.API_TON_ENDPOINT}${path ?? ""}`;
};
const fetch = async (path) => {
const url = getTonUrl(path);
const { data } = await network({
method: "GET",
url,
});
return data;
};
const send = async (path, data) => {
const url = getTonUrl(path);
const { data: dataResponse } = await network({
method: "POST",
url,
data: JSON.stringify(data),
headers: { "Content-Type": "application/json" },
});
return dataResponse;
};
export async function fetchLastBlockNumber() {
const data = await fetch("/masterchainInfo");
return data.last.seqno;
}
export async function fetchTransactions(addr, opts) {
const address = Address.parse(addr);
const urlAddr = address.toString({ bounceable: false, urlSafe: true });
let url = `/transactions?account=${urlAddr}&limit=256`;
if (opts?.startLt != null)
url += `&start_lt=${opts.startLt}`;
if (opts?.endLt != null)
url += `&end_lt=${opts.endLt}`;
return await fetch(url);
}
export async function fetchAccountInfo(addr) {
const address = Address.parse(addr);
const urlAddr = address.toString({ bounceable: false, urlSafe: true });
const data = await fetch(`/account?address=${urlAddr}`);
if (data.status === "uninit" || data.status === "nonexist") {
return {
balance: data.balance,
last_transaction_lt: data.last_transaction_lt,
last_transaction_hash: data.last_transaction_hash,
status: data.status,
seqno: 0,
};
}
const { seqno } = await fetch(`/wallet?address=${urlAddr}`);
return {
balance: data.balance,
last_transaction_lt: data.last_transaction_lt,
last_transaction_hash: data.last_transaction_hash,
status: data.status,
seqno: seqno || 0,
};
}
export async function fetchJettonTransactions(addr, opts) {
const address = Address.parse(addr);
const urlAddr = address.toString({ bounceable: false, urlSafe: true });
let url = `/jetton/transfers?address=${urlAddr}&limit=256`;
if (opts?.jettonMaster != null)
url += `&jetton_master=${opts.jettonMaster}`;
if (opts?.startLt != null)
url += `&start_lt=${opts.startLt}`;
if (opts?.endLt != null)
url += `&end_lt=${opts.endLt}`;
return (await fetch(url)).jetton_transfers;
}
export async function fetchJettonWallets(opts) {
let url = `/jetton/wallets?limit=256`;
if (opts?.jettonMaster != null)
url += `&jetton_address=${opts.jettonMaster}`;
if (opts?.address != null) {
const address = Address.parse(opts.address);
const urlAddr = address.toString({ bounceable: false, urlSafe: true });
url += `&owner_address=${urlAddr}`;
}
return (await fetch(url)).jetton_wallets;
}
export async function estimateFee(address, body, initCode, initData) {
return (await send("/estimateFee", {
address,
body,
init_code: initCode,
init_data: initData,
ignore_chksig: true,
})).source_fees;
}
export async function broadcastTx(bocBase64) {
return (await send("/message", { boc: bocBase64 })).message_hash;
}
export async function fetchAdjacentTransactions(txHash, dir = "in") {
const url = `/adjacentTransactions?hash=${encodeURIComponent(txHash)}&direction=${dir}`;
return await fetch(url);
}
//# sourceMappingURL=api.js.map