/**
 * ModelScopeDescriptor type.
 * @typedef {object} ModelScopeDescriptor
 * @property {true} [velociousModelScopeDescriptor] - Internal marker.
 * @property {(...args: Array<?>) => ?} callback - Scope callback.
 * @property {typeof import("../database/record/index.js").default | typeof import("../frontend-models/base.js").default} modelClass - Owning model class.
 * @property {Array<?>} scopeArgs - Scope arguments.
 */
/**
 * Runs the defineModelScope helper.
 * @param {object} args - Definition arguments.
 * @param {(...args: Array<?>) => ?} args.callback - Scope callback.
 * @param {typeof import("../database/record/index.js").default | typeof import("../frontend-models/base.js").default} args.modelClass - Owning model class.
 * @param {() => ?} args.startQuery - Factory that returns a fresh query for the owning model class.
 * @returns {((...args: Array<?>) => ?) & {scope: (...args: Array<?>) => ModelScopeDescriptor}} - Scope helper.
 */
export function defineModelScope({ callback, modelClass, startQuery }: {
    callback: (...args: Array<unknown>) => unknown;
    modelClass: typeof import("../database/record/index.js").default | typeof import("../frontend-models/base.js").default;
    startQuery: () => unknown;
}): ((...args: Array<unknown>) => unknown) & {
    scope: (...args: Array<unknown>) => ModelScopeDescriptor;
};
/**
 * Runs the isModelScopeDescriptor helper.
 * @param {?} value - Candidate descriptor.
 * @returns {value is ModelScopeDescriptor} - Whether the value is a scope descriptor.
 */
export function isModelScopeDescriptor(value: unknown): value is ModelScopeDescriptor;
/**
 * ModelScopeDescriptor type.
 */
export type ModelScopeDescriptor = {
    /**
     * - Internal marker.
     */
    velociousModelScopeDescriptor?: true | undefined;
    /**
     * - Scope callback.
     */
    callback: (...args: Array<unknown>) => unknown;
    /**
     * - Owning model class.
     */
    modelClass: typeof import("../database/record/index.js").default | typeof import("../frontend-models/base.js").default;
    /**
     * - Scope arguments.
     */
    scopeArgs: Array<unknown>;
};
//# sourceMappingURL=model-scope.d.ts.map