import * as Generator from '@postxl/generator';
import { WithBackend } from '../backend-core';
import { WithRepositories } from '../backend-repositories';
import { WithBase } from '../base';
import { WithTypes } from '../types';
type ContextRequirements = WithRepositories<WithTypes<WithBackend<WithBase<Generator.Context>>>>;
export type ContextResult = WithView<ContextRequirements>;
export type ModelResult = Generator.InferModelContext<ContextResult>;
export type ModelContextResult = Generator.InferModelContext<ContextResult>;
export type WithView<Context> = Generator.ExtendContextAndModel<Context, {
    view: ViewContext;
}, {
    view: ModelContextView;
}>;
export type ViewContext = {
    module: Generator.ImportableItem;
    /**
     * The central view service that gathers and exposes all model view services
     */
    service: Generator.ImportableClass;
};
export type ModelContextView = {
    /**
     * The view service for the model
     */
    service: Generator.ImportableClass & {
        variableName: Generator.VariableName;
    };
};
export declare const generatorId: string & import("zod").$brand<"PXL.GeneratorInterfaceId">;
export declare const generator: Generator.GeneratorInterface;
export {};
