class ApiClient {
private readonly apiUrl = "api.defindex.io";
constructor(private readonly apiKey: string) {}
private headers() {
return {
'Content-Type': 'application/json',
'Authorization': `Bearer ${this.apiKey}`
};
}
async postData(endpoint: string, vaultAddress: string, params: Record<string, any>) {
const res = await fetch(`https://${this.apiUrl}/vault/${vaultAddress}/${endpoint}`, {
method: 'POST', headers: this.headers(), body: JSON.stringify(params)
});
return res.json();
}
async getData(endpoint: string, vaultAddress: string, params?: Record<string, any>) {
const qs = params ? `?${new URLSearchParams(params)}` : '';
const res = await fetch(`https://${this.apiUrl}/vault/${vaultAddress}/${endpoint}${qs}`, {
method: 'GET', headers: this.headers()
});
return res.json();
}
async send(signedXdr: string) {
const res = await fetch(`https://${this.apiUrl}/send`, {
method: 'POST', headers: this.headers(), body: JSON.stringify({ xdr: signedXdr })
});
return res.json();
}
}