@cowprotocol/cow-sdk
Version:
<p align="center"> <img width="400" src="https://github.com/cowprotocol/cow-sdk/raw/main/docs/images/CoW.png" /> </p>
50 lines (49 loc) • 1.95 kB
TypeScript
import { BackoffOptions } from 'exponential-backoff';
import { RateLimiter, RateLimiterOpts } from 'limiter';
/**
* Error thrown when the CoW Protocol OrderBook API returns an error.
*/
export declare class OrderBookApiError<T = unknown> extends Error {
readonly response: Response;
readonly body: T;
/**
* Error thrown when the CoW Protocol OrderBook API returns an error.
* @param response The response from the CoW Protocol OrderBook API.
* @param body The body of the response.
* @constructor
*/
constructor(response: Response, body: T);
}
/**
* The default backoff options for CoW Protocol's API
* @see {@link Backoff configuration: https://www.npmjs.com/package/@insertish/exponential-backoff}
*/
export declare const DEFAULT_BACKOFF_OPTIONS: BackoffOptions;
/**
* The default rate limiter options for CoW Protocol's API.
*
* **CAUTION**: The CoW Protocol OrderBook API is limited to 5 requests per second per IP.
*/
export declare const DEFAULT_LIMITER_OPTIONS: RateLimiterOpts;
/**
* Describe the parameters for a fetch request.
*/
export interface FetchParams {
path: string;
method: 'GET' | 'POST' | 'DELETE' | 'PUT';
body?: unknown;
query?: URLSearchParams;
}
/**
* Helper function to make a rate-limited request to an API.
* @param baseUrl The base URL of the API.
* @param path The path of the request.
* @param query The query parameters of the request.
* @param method The HTTP method of the request.
* @param body The body of the request.
* @param rateLimiter The rate limiter to use.
* @param backoffOpts The backoff options to use.
* @returns The response of the request.
* @throws If the API returns an error or if the request fails.
*/
export declare function request<T>(baseUrl: string, { path, query, method, body }: FetchParams, rateLimiter: RateLimiter, backoffOpts: BackoffOptions): Promise<T>;