import { type PrimaryFieldType } from "../../core";
import { Event } from "../../core/events";
import type { Entity, EntityData } from "../entities";
import type { RepoQuery } from "../../data/server/query";
export declare class MutatorInsertBefore extends Event<{
    entity: Entity;
    data: EntityData;
}, EntityData> {
    static slug: string;
    validate(data: EntityData): this;
}
export declare class MutatorInsertAfter extends Event<{
    entity: Entity;
    data: EntityData;
    changed: EntityData;
}> {
    static slug: string;
}
export declare class MutatorUpdateBefore extends Event<{
    entity: Entity;
    entityId: PrimaryFieldType;
    data: EntityData;
}, EntityData> {
    static slug: string;
    validate(data: EntityData): this;
}
export declare class MutatorUpdateAfter extends Event<{
    entity: Entity;
    entityId: PrimaryFieldType;
    data: EntityData;
    changed: EntityData;
}> {
    static slug: string;
}
export declare class MutatorDeleteBefore extends Event<{
    entity: Entity;
    entityId: PrimaryFieldType;
}> {
    static slug: string;
}
export declare class MutatorDeleteAfter extends Event<{
    entity: Entity;
    entityId: PrimaryFieldType;
    data: EntityData;
}> {
    static slug: string;
}
export declare const MutatorEvents: {
    MutatorInsertBefore: typeof MutatorInsertBefore;
    MutatorInsertAfter: typeof MutatorInsertAfter;
    MutatorUpdateBefore: typeof MutatorUpdateBefore;
    MutatorUpdateAfter: typeof MutatorUpdateAfter;
    MutatorDeleteBefore: typeof MutatorDeleteBefore;
    MutatorDeleteAfter: typeof MutatorDeleteAfter;
};
export declare class RepositoryFindOneBefore extends Event<{
    entity: Entity;
    options: RepoQuery;
}> {
    static slug: string;
}
export declare class RepositoryFindOneAfter extends Event<{
    entity: Entity;
    options: RepoQuery;
    data: EntityData;
}> {
    static slug: string;
}
export declare class RepositoryFindManyBefore extends Event<{
    entity: Entity;
    options: RepoQuery;
}> {
    static slug: string;
    static another: string;
}
export declare class RepositoryFindManyAfter extends Event<{
    entity: Entity;
    options: RepoQuery;
    data: EntityData;
}> {
    static slug: string;
}
export declare const RepositoryEvents: {
    RepositoryFindOneBefore: typeof RepositoryFindOneBefore;
    RepositoryFindOneAfter: typeof RepositoryFindOneAfter;
    RepositoryFindManyBefore: typeof RepositoryFindManyBefore;
    RepositoryFindManyAfter: typeof RepositoryFindManyAfter;
};
