/ src / services / api / discovery.ts
discovery.ts
 1  
 2  
 3  export async function makeApiCall(url: string): Promise<Response> {
 4    const response = await fetch(url, {
 5      method: 'GET',
 6      headers: { 'Content-Type': 'application/json' }
 7    })
 8    
 9    return response
10  }
11  
12  import { getApiUrl, type NetworkType } from '../../lib/config'
13  
14  // Module-level network tracking
15  let currentNetworkType: NetworkType = 'mainnet';
16  
17  export function setCurrentNetwork(network: NetworkType) {
18    currentNetworkType = network;
19  }
20  
21  export async function getLatestBlockHeight(): Promise<number> {
22    const blockStateUrl = getApiUrl(currentNetworkType, '/block-state/block-height')
23    const response = await makeApiCall(blockStateUrl)
24    const latestHeight = await response.json()
25    
26    if (typeof latestHeight === 'number' && latestHeight > 0) {
27      return latestHeight
28    }
29    
30    return 0
31  }
32  
33  export async function getTotalTransactions(): Promise<number> {
34    const url = getApiUrl(currentNetworkType, '/node/transactions/count')
35    const response = await makeApiCall(url)
36    const total = await response.json()
37    
38    if (typeof total === 'number' && total >= 0) {
39      return total
40    }
41    
42    return 0
43  }
44  
45  export async function getTotalPayloadSize(): Promise<number> {
46    const url = getApiUrl(currentNetworkType, '/node/payloads/total-size')
47    const response = await makeApiCall(url)
48    const size = await response.json()
49    
50    if (typeof size === 'number' && size >= 0) {
51      return size
52    }
53    
54    return 0
55  }
56  
57  export async function getSuccessRate(): Promise<number> {
58    const url = getApiUrl(currentNetworkType, '/status/success-rate')
59    const response = await makeApiCall(url)
60    const rate = await response.json()
61    
62    if (typeof rate === 'number' && rate >= 0 && rate <= 1) {
63      return rate
64    }
65    
66    return 0
67  }
68  
69  
70