import { Options, Headers, Method } from "got";
import { Client } from "openid-client";
import type { ApiClientConfig, MutualTLSOptions } from "./schema/config";
interface RetryOptions {
    limit?: number;
    methods?: Method[];
    statusCodes?: number[];
    maxRetryAfter?: number;
}
interface RequestOptions extends Pick<Options, "method" | "headers" | "searchParams" | "json" | "form"> {
    searchParams?: any;
    body?: Record<string, any>;
    formData?: any;
    returnStatus?: boolean;
    cc?: {
        scope: string;
        sub?: string;
    };
    options?: ExtraOptions;
    retry?: RetryOptions;
}
interface Links {
    next?: string;
    prev?: string;
    self: string;
}
declare type Version = "v2.0" | "v2" | "v3" | "v3.0";
export declare type Request = <T>(url: string, opts?: RequestOptions) => Promise<T>;
export interface RequestsParams {
    config: ApiClientConfig;
    request: Request;
}
export interface SearchParams {
    limit?: number;
    offset?: number;
    counterpartiesVersion?: string;
    showTransactionData?: boolean;
    showPerformanceScore?: boolean;
}
export interface ApiResponse<T> {
    data: T;
    links?: Links;
    meta?: object;
}
export interface ExtraOptions {
    token?: string;
    headers?: Headers;
    version?: Version;
    retry?: RetryOptions;
}
export declare const addVersionToUrl: (url: string, apiVersioning: boolean, version?: Version) => string;
declare const _default: ({ client, options: { timeout, apiVersioning, mTLS, retry }, }: {
    client: Client;
    options: {
        timeout?: number | undefined;
        apiVersioning: boolean;
        mTLS?: MutualTLSOptions | undefined;
        retry?: RetryOptions | undefined;
    };
}) => <T>(url: string, opts?: RequestOptions) => Promise<T>;
export default _default;
//# sourceMappingURL=request.d.ts.map