interface FunctionData {
    name: string;
    params: unknown[];
}
export interface AdapterResult {
    value: {
        [keys: string]: unknown;
    } | null;
    error: string | null;
}
/**
 *Ajax通信用アダプタ
 *
 * @export
 * @class Adapter
 */
export declare class Adapter {
    private handle;
    private scriptUrl;
    private keyName;
    private functionSet;
    /**
     *Creates an instance of Adapter.
     * @param {string} [scriptUrl] 通信先アドレス
     * @param {string} [keyName] セッション情報記憶用キー
     * @memberof Adapter
     */
    constructor(scriptUrl?: string, keyName?: string);
    getKeyName(): string;
    /**
     *サーバに対して命令を単独実行
     *呼び出し内容をまとめない
     * @param {string} funcName ファンクション名(className.functionName)
     * @param {...unknown[]} params パラメータ
     * @returns {Promise<never>}
     * @memberof Adapter
     */
    execAlone(funcName: string, ...params: unknown[]): Promise<never>;
    /**
     *戻り値をバイナリとして受け取る(ファイルダウンロード用)
     *命令は単独実行される
     * @param {string} funcName
     * @param {...unknown[]} params
     * @returns {Promise<never>}
     * @memberof Adapter
     */
    execBinary(funcName: string, ...params: unknown[]): Promise<never>;
    /**
     *複数のファンクションの実行
     *
     * @param {FunctionData[][]} functions
     * @returns {Promise<any>}
     * @memberof Adapter
     */
    exec(functions: FunctionData[][]): Promise<never[]>;
    /**
     *単一ファンクションの実行
     *
     * @param {string} funcName ファンクション名
     * @param {...unknown[]} params パラメータ
     * @returns {Promise<any>}
     * @memberof Adapter
     */
    exec(funcName: string, ...params: unknown[]): Promise<never>;
    /**
     *同じタイミングで発生した複数命令をプールして同時に実行する
     *
     * @private
     * @memberof Adapter
     */
    private callSend;
    /**
     *命令の実行と受け取り処理
     *
     * @private
     * @param {FunctionSet[]} functionSet
     * @param {boolean} [binary]
     * @returns
     * @memberof Adapter
     */
    private send;
    /**
     *Jsonデータ送受信とPromise化
     *
     * @static
     * @param {string} url
     * @param {unknown} [data]
     * @param {{ [key: string]: string }} [headers]
     * @param {boolean} [binary]
     * @returns {Promise<unknown>}
     * @memberof Adapter
     */
    static sendJsonAsync(url: string, data?: unknown, headers?: {
        [key: string]: string;
    }, binary?: boolean): Promise<unknown>;
    /**
     *Jsonデータの送受信
     *
     * @private
     * @static
     * @param {string} url
     * @param {unknown} data
     * @param {Function} proc
     * @param {{ [key: string]: string }} [headers]
     * @returns {void}
     * @memberof Adapter
     */
    private static sendJson;
    /**
     *Jsonデータの送信とblobの受け取り
     *
     * @private
     * @static
     * @param {string} url
     * @param {unknown} data
     * @param {Function} proc
     * @param {{ [key: string]: string }} [headers]
     * @returns {void}
     * @memberof Adapter
     */
    private static sendJsonToBinary;
    /**
     *ファイルのアップロード
     *パラメータはURLに設定される
     *
     * @param {Blob} buffer
     * @param {string} funcName
     * @param {...unknown[]} params
     * @returns
     * @memberof Adapter
     */
    upload(buffer: Blob, funcName: string, ...params: unknown[]): Promise<unknown>;
    /**
     *ファイル送信
     *
     * @static
     * @param {string} url
     * @param {Blob} buffer
     * @param {(result: never) => void} proc
     * @param {({ [key: string]: string | number })} params
     * @returns
     * @memberof Adapter
     */
    static sendFile(url: string, buffer: Blob, proc: (result: never) => void, params: {
        [key: string]: string | number;
    }): XMLHttpRequest | null;
}
export {};
