/** Base class for authorization resources defining abilities for a model. */
export default class AuthorizationBaseResource {
    /**
     * Model class.
      @type {typeof import("../database/record/index.js").default | undefined} */
    static ModelClass: typeof import("../database/record/index.js").default | undefined;
    /**
     * Runs model class.
     * @returns {typeof import("../database/record/index.js").default | undefined} - Model class handled by this resource.
     */
    static modelClass(): typeof import("../database/record/index.js").default | undefined;
    /**
     * Runs constructor.
     * @param {object} args - Resource args.
     * @param {import("./ability.js").default} [args.ability] - Ability instance.
     * @param {import("../configuration-types.js").VelociousLooseObject} [args.context] - Ability context.
     * @param {import("../configuration-types.js").VelociousLooseObject} [args.locals] - Ability locals.
     */
    constructor({ ability, context, locals }: {
        ability?: import("./ability.js").default | undefined;
        context?: import("../configuration-types.js").VelociousLooseObject | undefined;
        locals?: import("../configuration-types.js").VelociousLooseObject | undefined;
    });
    ability: import("./ability.js").default | undefined;
    context: import("../configuration-types.js").VelociousLooseObject;
    locals: import("../configuration-types.js").VelociousLooseObject;
    /**
     * Runs can.
     * @template {typeof import("../database/record/index.js").default} MC
     * @param {string | string[]} actions - Ability action(s).
     * @param {import("./ability.js").AbilityConditionsType<MC>} [conditions] - Conditions.
     * @returns {void} - No return value.
     */
    can<MC extends typeof import("../database/record/index.js").default>(actions: string | string[], conditions?: import("./ability.js").AbilityConditionsType<MC>): void;
    /**
     * Runs cannot.
     * @template {typeof import("../database/record/index.js").default} MC
     * @param {string | string[]} actions - Ability action(s).
     * @param {import("./ability.js").AbilityConditionsType<MC>} [conditions] - Conditions.
     * @returns {void} - No return value.
     */
    cannot<MC extends typeof import("../database/record/index.js").default>(actions: string | string[], conditions?: import("./ability.js").AbilityConditionsType<MC>): void;
    /**
     * Runs required ability.
     * @returns {import("./ability.js").default} - Ability instance.
     */
    requiredAbility(): import("./ability.js").default;
    /**
     * Runs required model class.
     * @returns {typeof import("../database/record/index.js").default} - Model class handled by this resource.
     */
    requiredModelClass(): typeof import("../database/record/index.js").default;
    /**
     * Runs assert resource conditions signature.
     * @param {object} args - Signature args.
     * @param {?} args.conditions - Conditions value.
     * @param {"can" | "cannot"} args.methodName - Method name.
     * @returns {void}
     */
    assertResourceConditionsSignature({ conditions, methodName }: {
        conditions: unknown;
        methodName: "can" | "cannot";
    }): void;
    /**
     * Runs get context.
     * @returns {import("../configuration-types.js").VelociousLooseObject} - Ability context.
     */
    getContext(): import("../configuration-types.js").VelociousLooseObject;
    /**
     * Runs get locals.
     * @returns {import("../configuration-types.js").VelociousLooseObject} - Ability locals.
     */
    getLocals(): import("../configuration-types.js").VelociousLooseObject;
    /**
     * Runs current user.
     * @returns {import("../configuration-types.js").VelociousLooseObject | null | undefined} - Current user from context.
     */
    currentUser(): import("../configuration-types.js").VelociousLooseObject | null | undefined;
    /**
     * Runs request.
     * @returns {import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default | undefined} - Request from context.
     */
    request(): import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default | undefined;
    /**
     * Runs params.
     * @returns {import("../configuration-types.js").VelociousLooseObject | undefined} - Params from context.
     */
    params(): import("../configuration-types.js").VelociousLooseObject | undefined;
    /**
     * Runs abilities.
     * @returns {void} - Implement in subclasses to define abilities.
     */
    abilities(): void;
}
//# sourceMappingURL=base-resource.d.ts.map