import { DecoderFct } from '@iotize/common/converter/api';
import { ServiceCallType, TapResponse } from '@iotize/tap';
import { MultiRequestFrame } from '../generated/models';
declare type ExecuteMutlipleCallItem<BodyType, ReturnType> = ServiceCallType<BodyType, ReturnType> | {
    call: ServiceCallType<BodyType, ReturnType>;
    expectedResponseStatus: number;
};
declare module '../generated/service' {
    interface InterfaceService {
        test<T extends ExecuteMutlipleCallItem<any, any>[]>(input: T): any;
        executeMultipleCalls<T1>(calls: [ExecuteMutlipleCallItem<any, T1>]): Promise<[TapResponse<T1>]>;
        executeMultipleCalls<T1, T2>(calls: [
            ExecuteMutlipleCallItem<any, T1>,
            ExecuteMutlipleCallItem<any, T2>
        ]): Promise<[TapResponse<T1>, TapResponse<T2>]>;
        executeMultipleCalls<T1, T2, T3>(calls: [
            ExecuteMutlipleCallItem<any, T1>,
            ExecuteMutlipleCallItem<any, T2>,
            ExecuteMutlipleCallItem<any, T3>
        ]): Promise<[TapResponse<T1>, TapResponse<T2>, TapResponse<T3>]>;
        executeMultipleCalls<T1, T2, T3, T4>(calls: [
            ExecuteMutlipleCallItem<any, T1>,
            ExecuteMutlipleCallItem<any, T2>,
            ExecuteMutlipleCallItem<any, T3>,
            ExecuteMutlipleCallItem<any, T4>
        ]): Promise<[
            TapResponse<T1>,
            TapResponse<T2>,
            TapResponse<T3>,
            TapResponse<T4>
        ]>;
        executeMultipleCalls<T1, T2, T3, T4, T5>(calls: [
            ExecuteMutlipleCallItem<any, T1>,
            ExecuteMutlipleCallItem<any, T2>,
            ExecuteMutlipleCallItem<any, T3>,
            ExecuteMutlipleCallItem<any, T4>,
            ExecuteMutlipleCallItem<any, T5>
        ]): Promise<[
            TapResponse<T1>,
            TapResponse<T2>,
            TapResponse<T3>,
            TapResponse<T4>,
            TapResponse<T5>
        ]>;
        executeMultipleCalls<T1, T2, T3, T4, T5, T6>(calls: [
            ExecuteMutlipleCallItem<any, T1>,
            ExecuteMutlipleCallItem<any, T2>,
            ExecuteMutlipleCallItem<any, T3>,
            ExecuteMutlipleCallItem<any, T4>,
            ExecuteMutlipleCallItem<any, T5>,
            ExecuteMutlipleCallItem<any, T6>
        ]): Promise<[
            TapResponse<T1>,
            TapResponse<T2>,
            TapResponse<T3>,
            TapResponse<T4>,
            TapResponse<T5>,
            TapResponse<T6>
        ]>;
        executeMultipleCalls<T1, T2, T3, T4, T5, T6, T7>(calls: [
            ExecuteMutlipleCallItem<any, T1>,
            ExecuteMutlipleCallItem<any, T2>,
            ExecuteMutlipleCallItem<any, T3>,
            ExecuteMutlipleCallItem<any, T4>,
            ExecuteMutlipleCallItem<any, T5>,
            ExecuteMutlipleCallItem<any, T6>,
            ExecuteMutlipleCallItem<any, T7>
        ]): Promise<[
            TapResponse<T1>,
            TapResponse<T2>,
            TapResponse<T3>,
            TapResponse<T4>,
            TapResponse<T5>,
            TapResponse<T6>,
            TapResponse<T7>
        ]>;
        executeMultipleCalls<T extends ExecuteMutlipleCallItem<any, any>[]>(calls: T): Promise<TapResponse<unknown>[]>;
    }
}
export declare function createMultiRequestItems(calls: ExecuteMutlipleCallItem<any, any>[], defaultExpectedResponseStatus?: MultiRequestFrame.ExpectedResponseStatus): {
    requestItem: MultiRequestFrame.RequestItem;
    responseBodyDecoder?: DecoderFct<Uint8Array, unknown>;
}[];
export {};
