import { type AbstractMixable, type AnyRecord, type Model, type PrimaryKey, type ResourceActionEvent, type ResourceActionEventForAction, type ResourceStoreActionEvent, type ResourceUpdateActionEvent } from '../Contracts';
import { Fluent } from '../Models';
import type { Repository } from '../Repositories';
declare const _default: <T extends AbstractMixable<Repository>>(Parent: T) => (abstract new (...args: import("../Contracts").Args) => {
    /**
     * Store multiple model's into the storage.
     */
    insert(models: Model[]): Promise<Model[]>;
    /**
     * Fill event model for successful resource store.
     */
    forResourceStore(params: ResourceStoreActionEvent): Fluent;
    /**
     * Fill event model for successful resource update.
     */
    forResourceUpdate(params: ResourceUpdateActionEvent): Fluent;
    /**
     * Fill event model for successful resource destroy.
     */
    forResourceDelete(params: ResourceActionEvent): Fluent;
    /**
     * Fill event model for successful resource restore.
     */
    forResourceRestore(params: ResourceActionEvent): Fluent;
    /**
     * Fill event model for successful action ran.
     */
    forActionRan(params: ResourceActionEventForAction): Fluent;
    /**
     * Get the default attributes for creating a new action event.
     */
    defaultAttributes(params: ResourceActionEvent): AnyRecord;
    /**
     * Delete resource events for ever.
     */
    flush(resourceName: string, key: PrimaryKey): Promise<Model[]>;
    /**
     * Limit query to the given resource.
     */
    scopeResource(resourceName: string, key: PrimaryKey): any;
    wheres: import("../Contracts").Where[];
    orders: import("../Contracts").Order[];
    modifiers: import("../Contracts").QueryModifierCallback[];
    _transaction?: import("../Contracts").Transaction;
    transaction<V>(callback: import("../Contracts").TransactionCallback<V, any>): Promise<V>;
    setTransaction(transaction?: import("../Contracts").Transaction): any;
    getTransaction(): import("../Contracts").Transaction | undefined;
    runningInTransaction(): boolean;
    prepareTransaction(): Promise<import("../Contracts").Transaction>;
    where(where: import("../Contracts").Where | import("../Contracts").Where[]): any;
    setWheres(wheres: import("../Contracts").Where[]): any;
    getWheres(): import("../Contracts").Where[];
    order(order: import("../Contracts").Order | import("../Contracts").Order[]): any;
    setOrders(orders: import("../Contracts").Order[]): any;
    getOrders(): import("../Contracts").Order[];
    modify<T_1>(modifier: import("../Contracts").QueryModifierCallback<T_1>): any;
    find(key: PrimaryKey): Promise<import("../Contracts").Optional<Model>>;
    whereKey(key: PrimaryKey): any;
    whereKeys(keys: Array<PrimaryKey>): any;
    fillModel(result: AnyRecord): Model;
    search(search: string, page?: number, perPage?: number): Promise<import("../Contracts").SearchCollection>;
    all(wheres?: import("../Contracts").Where[]): Promise<Model[]>;
    first(wheres?: import("../Contracts").Where[]): Promise<import("../Contracts").Optional<Model>>;
    store(model: Model): Promise<Model>;
    update(model: Model): Promise<Model>;
    delete(key: PrimaryKey): Promise<void>;
    model(): Model;
}) & T;
export default _default;
