@reservoir0x/relay-sdk
Version:
Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.
54 lines • 1.96 kB
JavaScript
import { getClient } from '../client.js';
import { executeSteps, adaptViemWallet, safeStructuredClone, APIError } from '../utils/index.js';
import {} from 'viem';
import { isViemWalletClient } from '../utils/viemWallet.js';
/**
* Claim app fees for a wallet and execute the returned steps
* @param parameters - {@link ClaimAppFeesParameters}
*/
export async function claimAppFees(parameters) {
const { wallet, chainId, currency, recipient, onProgress } = parameters;
const client = getClient();
if (!client.baseApiUrl || !client.baseApiUrl.length) {
throw new ReferenceError('RelayClient missing api url configuration');
}
let adaptedWallet;
if (wallet) {
adaptedWallet = isViemWalletClient(wallet)
? adaptViemWallet(wallet)
: wallet;
}
if (!adaptedWallet) {
throw new Error('AdaptedWallet is required to execute claim steps');
}
const address = await adaptedWallet.address();
const abortController = new AbortController();
const request = {
url: `${client.baseApiUrl}/app-fees/${address}/claim`,
method: 'post',
data: { chainId, currency, recipient: recipient || address },
signal: abortController.signal
};
try {
const res = await client.utils.axios.request(request);
if (res.status !== 200) {
throw new APIError(res?.data?.message, res.status, res.data);
}
const steps = res.data.steps || [];
const executeJson = safeStructuredClone({
steps
});
const result = await executeSteps(chainId, request, adaptedWallet, (data) => {
if (abortController.signal.aborted) {
return;
}
onProgress?.(data);
}, executeJson);
return { data: result, abortController };
}
catch (err) {
console.error(err);
throw err;
}
}
//# sourceMappingURL=claimAppFees.js.map