import { ISbCustomFetch, ISbError, ISbResponse, ISbStoriesParams } from './interfaces';
export interface ResponseFn {
    (arg?: ISbResponse | any): any;
}
export interface ISbFetch {
    baseURL: string;
    timeout?: number;
    headers: Headers;
    responseInterceptor?: ResponseFn;
    fetch?: typeof fetch;
}
declare class SbFetch {
    private baseURL;
    private timeout?;
    private headers;
    private responseInterceptor?;
    private fetch;
    private ejectInterceptor?;
    private url;
    private parameters;
    private fetchOptions;
    constructor($c: ISbFetch);
    /**
     *
     * @param url string
     * @param params ISbStoriesParams
     * @returns Promise<ISbResponse | Error>
     */
    get(url: string, params: ISbStoriesParams): Promise<ISbResponse | ISbError>;
    post(url: string, params: ISbStoriesParams): Promise<ISbResponse | ISbError>;
    put(url: string, params: ISbStoriesParams): Promise<ISbResponse | ISbError>;
    delete(url: string, params?: ISbStoriesParams): Promise<ISbResponse | ISbError>;
    private _responseHandler;
    private _methodHandler;
    setFetchOptions(fetchOptions?: ISbCustomFetch): void;
    eject(): void;
    /**
     * Normalizes error messages from different response structures
     * @param data The response data that might contain error information
     * @returns A normalized error message string
     */
    private _normalizeErrorMessage;
    private _statusHandler;
}
export default SbFetch;
