UNPKG

1inch-agent-kit

Version:

AI Agent Kit for 1inch - Connect any LLM to 1inch DeFi protocols

86 lines 3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OneInchFetcher = void 0; const axios_1 = __importDefault(require("axios")); /** * HTTP client for 1inch API calls with retry logic and error handling */ class OneInchFetcher { constructor(apiKey, baseURL = 'https://api.1inch.dev') { this.apiKey = apiKey; this.client = axios_1.default.create({ baseURL, timeout: 30000, headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json', }, }); // Add response interceptor for error handling this.client.interceptors.response.use((response) => response, (error) => { if (error.response?.data) { const oneInchError = { statusCode: error.response.status, error: error.response.data.error || 'Unknown error', description: error.response.data.description || 'No description provided', requestId: error.response.data.requestId || 'No request ID', }; throw new Error(`1inch API Error: ${oneInchError.error} - ${oneInchError.description} (Request ID: ${oneInchError.requestId})`); } throw error; }); } /** * Make a GET request to the 1inch API */ async get(endpoint, params) { try { const response = await this.client.get(endpoint, { params }); return response.data; } catch (error) { throw this.handleError(error); } } /** * Make a POST request to the 1inch API */ async post(endpoint, data) { try { const response = await this.client.post(endpoint, data); return response.data; } catch (error) { throw this.handleError(error); } } /** * Handle and format errors */ handleError(error) { if (axios_1.default.isAxiosError(error)) { if (error.response?.status === 401) { return new Error('Invalid 1inch API key'); } if (error.response?.status === 429) { return new Error('Rate limit exceeded. Please try again later.'); } if (error.response?.status && error.response.status >= 500) { return new Error('1inch API server error. Please try again later.'); } return new Error(`HTTP Error: ${error.response?.status} - ${error.message}`); } return error; } /** * Get the underlying axios instance for advanced usage */ getClient() { return this.client; } } exports.OneInchFetcher = OneInchFetcher; //# sourceMappingURL=fetcher.js.map