import {IApiParamsCollection} from "./IApiParamsCollection";
import {IApi} from "./IApi";
import {ObjectMapping, ResolveParams, ResponseHandlerFunction, SendHandlerResponse} from "./TypeDefine";
import {ISendResponse} from "./ISendResponse";

interface IApiHandler<T extends IApiParamsCollection | undefined | string[]> {

    send(args: ResolveParams<T>): Promise<ISendResponse<any>>;

    sendHandler(args: ResolveParams<T>, responseHandlerFunction: ResponseHandlerFunction): Promise<SendHandlerResponse>;

    sendNotSuccessTips(args: ResolveParams<T>): Promise<SendHandlerResponse>;

    getURL(): string;

    composeURL(args: ResolveParams<T>): string;

    clearCache(): void
}

export {IApiHandler}