import { AxiosRequestConfig } from 'axios';
/**
 * Options for configuring the API client
 */
export interface APIClientOptions {
    baseUrl?: string;
    defaultTimeout?: number;
    enableRetry?: boolean;
    maxRetries?: number;
}
/**
 * HTTP client for Guild API
 * Handles authentication, error handling, and request formatting
 */
export declare class GuildAPIClient {
    private client;
    private baseUrl;
    private enableRetry;
    private maxRetries;
    constructor(options?: APIClientOptions);
    /**
     * Make an HTTP request with automatic auth header injection
     * @param method - HTTP method
     * @param endpoint - API endpoint path
     * @param config - Axios request configuration
     * @returns Response data
     * @throws Error with specific error codes for proper error handling
     */
    request<T = unknown>(method: string, endpoint: string, config?: AxiosRequestConfig): Promise<T>;
    /**
     * Make a GET request
     */
    get<T = unknown>(endpoint: string, config?: AxiosRequestConfig): Promise<T>;
    /**
     * Make a POST request
     */
    post<T = unknown>(endpoint: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
    /**
     * Make a PUT request
     */
    put<T = unknown>(endpoint: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
    /**
     * Make a PATCH request
     */
    patch<T = unknown>(endpoint: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
    /**
     * Make a DELETE request
     */
    delete<T = unknown>(endpoint: string, config?: AxiosRequestConfig): Promise<T>;
    /**
     * Fetch all items from a paginated endpoint by paging through results.
     * Use for display commands or ID-based lookups where you need the complete list.
     *
     * @param endpoint - API endpoint path (may include query params)
     * @returns Flat array of all items across all pages
     */
    fetchAll<T>(endpoint: string): Promise<T[]>;
}
//# sourceMappingURL=api-client.d.ts.map