type HTTPMethods = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'TRACE' | 'CONNECT';
type InjectableFuncProps<Injectables> = Injectables;
type InjectableFunc<Injectables> = (p: InjectableFuncProps<Injectables>) => Exclude<InjectableValue<Injectables>, InjectableFunc<Injectables>>;
type InjectableObject<Injectables> = (p: InjectableFuncProps<Injectables>) => Record<string, Exclude<InjectableValue<Injectables>, InjectableFunc<Injectables>>>;
type InjectableValue<Injectables> = string | number | boolean | null | InjectableFunc<Injectables>;
interface RequestCaller<Injectables> {
    query?: Record<string, InjectableValue<Injectables>> | InjectableObject<Injectables>;
    method?: HTTPMethods;
    headers?: Record<string, InjectableValue<Injectables>> | InjectableObject<Injectables>;
    body?: string | object | FormData | Record<string, InjectableValue<Injectables>> | InjectableValue<Injectables> | any[];
}
type ResponseTypes = string | ArrayBuffer | any;
interface Result<RequestOptions, Data extends ResponseTypes> {
    request: {
        url: string;
        requestOptions: RequestOptions;
    };
    headers: RequestInit['headers'];
    ok: boolean;
    redirected: boolean;
    status: number;
    statusText: string;
    data: Data;
}
interface RequestOptions {
    method: RequestInit['method'];
    headers: RequestInit['headers'];
    body?: string | FormData;
}
declare class SolidFetch<Injectables extends Record<string, any>> {
    #private;
    injectables: () => Injectables | Record<string, any>;
    interceptedReq: any[];
    interceptedRes: any[];
    interceptedErr: any[];
    globalQuery: any;
    globalHeaders: any;
    constructor({ initInjectables, interceptedReq, interceptedRes, interceptedErr, globalQuery, globalHeaders, }: {
        initInjectables?: {} | undefined;
        interceptedReq?: never[] | undefined;
        interceptedRes?: never[] | undefined;
        interceptedErr?: never[] | undefined;
        globalQuery?: {} | undefined;
        globalHeaders?: {} | undefined;
    });
    setConfig(config: Partial<SolidFetch<Injectables>>): void;
    setInjectables(newInjectables: Partial<Injectables>): void;
    getInjectables(): Injectables;
    resolveDynamic(dynamicParams: any): {};
    generateRequest(pathStructure: any, ...dynamicParams: any): any;
    request<Data extends ResponseTypes = any>(pathStructure: TemplateStringsArray, ...dynamicParams: Array<InjectableValue<Injectables>>): ({ method, query: rawQuery, headers: rawHeaders, body, }?: RequestCaller<Injectables>) => Promise<Result<RequestOptions, Data>>;
}
export default SolidFetch;
