import {
KaleidoError,
APIError,
NetworkError,
ValidationError,
TimeoutError,
NotFoundError,
QuoteExpiredError,
NodeNotConfiguredError,
InsufficientBalanceError,
RateLimitError,
} from 'kaleidoswap-sdk';
try {
const quote = await client.maker.getQuote({ /* ... */ });
const order = await client.maker.createSwapOrder({ /* ... */ });
} catch (error) {
if (error instanceof QuoteExpiredError) {
// Get a fresh quote and retry
} else if (error instanceof InsufficientBalanceError) {
console.log(`Need ${error.requiredAmount}, have ${error.availableAmount}`);
} else if (error instanceof ValidationError) {
console.log(`Invalid request: ${error.message}`);
} else if (error instanceof RateLimitError) {
// Wait and retry
await new Promise(r => setTimeout(r, (error.retryAfter ?? 5) * 1000));
} else if (error instanceof NotFoundError) {
console.log('Resource not found');
} else if (error instanceof TimeoutError) {
console.log('Request timed out, retrying...');
} else if (error instanceof NetworkError) {
console.log('Network issue, check connectivity');
} else if (error instanceof NodeNotConfiguredError) {
console.log('Node not configured');
} else if (error instanceof APIError) {
console.log(`API error (${error.statusCode}): ${error.message}`);
} else if (error instanceof KaleidoError) {
console.log(`SDK error [${error.code}]: ${error.message}`);
}
}