import { OperationContext, Store, StoreParameters } from "../index.js";
import { CoreModel } from "../models/coremodel.js";
import { WebdaTest } from "../test.js";
import { StoreEvents } from "./store.js";
/**
 * Fake model that refuse the half of the items
 */
export declare class PermissionModel extends CoreModel {
    order: number;
    canAct(ctx: OperationContext, _action: string): Promise<string | boolean>;
}
declare abstract class StoreTest extends WebdaTest {
    abstract getIdentStore(): Store<any>;
    abstract getUserStore(): Store<any>;
    /**
     * By default no testing index
     * @returns
     */
    getIndex(): Promise<CoreModel>;
    /**
     * Recreate index if needed
     */
    recreateIndex(): Promise<void>;
    before(): Promise<void>;
    getModelClass(): any;
    /**
     * Get the base of documents to query
     */
    getQueryDocuments(): any[];
    /**
     * Fill the Store with data to be queried
     */
    fillForQuery(): Promise<Store>;
    query(): Promise<Store<CoreModel, StoreParameters, StoreEvents>>;
    /**
     * Simplify model
     * @param model
     * @returns
     */
    mapQueryModel(model: any): {
        order: any;
        teamId: any;
        state: any;
    };
    queryOrder(): Promise<void>;
    mapper(): Promise<void>;
    collection(): Promise<void>;
    getAll(): Promise<void>;
    crud(): Promise<void>;
    assertLastUpdateNotEqual(d1: any, d2: any, msg: any): void;
    exists(): Promise<void>;
    incrementAttribute(): Promise<void>;
    removeAttribute(): Promise<void>;
    setAttribute(): Promise<void>;
    deleteAsync(): Promise<void>;
    delete(): Promise<void>;
    deleteConcurrent(): Promise<void>;
    conditionUpdate(): Promise<void>;
    update(delay?: number): Promise<void>;
    upsertItem(): Promise<void>;
    put(): Promise<void>;
    httpCRUD(url?: string): Promise<void>;
    modelActions(url?: string): Promise<void>;
}
export { StoreTest };
