import { HGrid, HDict, HaysonDict, HList } from 'haystack-core';
import { ClientServiceConfig } from './ClientServiceConfig';
/**
 * The commit op type.
 */
export declare enum CommitType {
    Add = "add",
    Update = "update",
    Remove = "remove"
}
/**
 * Extended non-standard Haystack ops.
 */
export declare class ExtOpsService {
    #private;
    /**
     * Constructs a service object.
     *
     * @param serviceConfig Service configuration.
     */
    constructor(serviceConfig: ClientServiceConfig);
    /**
     * Asynchronously load the defs library using this service.
     *
     * Please note, this will overwrite any existing defs loaded.
     *
     * @returns A promise that's resolved once the defs have been loaded.
     */
    loadDefs(): Promise<void>;
    /**
     * @returns True if the defs have been loaded using this service.
     */
    isDefsLoaded(): boolean;
    /**
     * @returns A promise that resolves to the service's defs.
     */
    private requestDefs;
    /**
     * Commit changes to the database. The caller must have 'admin' permissions
     * in order to use this op.
     *
     * The commit type can be one of the following...
     *
     * - add: adds new records into the database and returns a grid with the newly minted
     * record identifiers. As a general rule you should not have an id column in your commit grid.
     * However if you wish to predefine the id of the records, you can specify an id column in the commit grid.
     * - update: modified existing records, the records must have both an id and mod column
     * - remove: removes existing records, the records should have only an id and mod column
     *
     * https://skyfoundry.com/doc/docSkySpark/Ops#commit
     *
     * @param type The commit operation type (add, update or remove).
     * @param data The data to commit.
     */
    commit(type: CommitType, data: HDict | HaysonDict | HDict[] | HaysonDict[] | HGrid | HList<HDict>): Promise<HGrid>;
    /**
     * Evalulate a haystack filter request and return the result.
     *
     * This operation will automatically attempt to batch network calls
     * together to optimize client network requests.
     *
     * @param filter The haystack filter.
     * @returns The result of the filter query.
     */
    read(filter: string): Promise<HGrid>;
    /**
     * Used when evaluating batched eval requests.
     *
     * @param exprs The expressions to evaluate.
     * @returns The evalulated expression responses.
     */
    private batchEval;
    /**
     * Evaluate some code server side and return the response.
     *
     * This operation will automatically attempt to batch network calls
     * together to optimize client network requests.
     *
     * https://skyfoundry.com/doc/docSkySpark/Ops#eval
     *
     * @param expr The expression to evaluate.
     * @returns The evaluated expression response.
     */
    eval(expr: string): Promise<HGrid>;
    /**
     * Evaluate some code server side and return the response.
     *
     * https://skyfoundry.com/doc/docSkySpark/Ops#eval
     *
     * @param expr The expression to evaluate.
     * @returns The evaluated expression response.
     */
    private doEval;
    /**
     * Evalulate all the expressions and return the grids.
     *
     * https://skyfoundry.com/doc/docSkySpark/Ops#evalAll
     *
     * @param exprs The expressions to evaluate.
     * @returns The evalulated expression responses.
     * @throws Any fetch or grid responses.
     */
    evalAll(exprs: string[]): Promise<HGrid[]>;
    /**
     * Evalulate all the expressions and return the grids.
     *
     * https://skyfoundry.com/doc/docSkySpark/Ops#evalAll
     *
     * @param exprs The expressions to evaluate.
     * @returns The evalulated expression responses.
     */
    private doEvalAll;
}
