UNPKG

@ledgerhq/coin-ton

Version:
101 lines 3.65 kB
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