import { AutoBeOpenApi, AutoBeRealizeAuthorization, AutoBeRealizeCollectorFunction, AutoBeRealizeTransformerFunction } from "@autobe/interface";
import { IValidation } from "typia";
import { AutoBeContext } from "../../../context/AutoBeContext";
import { IAutoBeRealizeScenarioResult } from "../structures/IAutoBeRealizeScenarioResult";
export declare namespace AutoBeRealizeOperationProgrammer {
    /**
     * Check if the operation is a public auth operation (login, join, refresh).
     * These operations must be publicly accessible and should not have auth
     * decorators.
     */
    function isPublicAuthOperation(operation: AutoBeOpenApi.IOperation): boolean;
    function getName(operation: AutoBeOpenApi.IOperation): string;
    function getScenario(props: {
        authorizations: AutoBeRealizeAuthorization[];
        operation: AutoBeOpenApi.IOperation;
    }): IAutoBeRealizeScenarioResult;
    function getAdditional(props: {
        authorizations: AutoBeRealizeAuthorization[];
        collectors: AutoBeRealizeCollectorFunction[];
        transformers: AutoBeRealizeTransformerFunction[];
    }): Record<string, string>;
    function replaceImportStatements(ctx: AutoBeContext, props: {
        operation: AutoBeOpenApi.IOperation;
        schemas: Record<string, AutoBeOpenApi.IJsonSchemaDescriptive>;
        code: string;
        payload?: string;
    }): Promise<string>;
    function writeTemplate(props: {
        authorizations: AutoBeRealizeAuthorization[];
        schemas: Record<string, AutoBeOpenApi.IJsonSchemaDescriptive>;
        operation: AutoBeOpenApi.IOperation;
        collectors: AutoBeRealizeCollectorFunction[];
        transformers: AutoBeRealizeTransformerFunction[];
    }): string;
    function writeStructures(ctx: AutoBeContext, operation: AutoBeOpenApi.IOperation): Promise<Record<string, string>>;
    /**
     * Resolves transformers relevant to an operation, including neighbor
     * transformers for composite response types (e.g., dashboard endpoints).
     * Falls back to direct top-level match for simple response types.
     */
    function getLocalTransformers(props: {
        operation: AutoBeOpenApi.IOperation;
        schemas: Record<string, AutoBeOpenApi.IJsonSchemaDescriptive>;
        transformers: AutoBeRealizeTransformerFunction[];
    }): AutoBeRealizeTransformerFunction[];
    function validateEmptyCode(props: {
        functionName: string;
        draft: string;
        revise: {
            final: string | null;
        };
    }): IValidation.IError[];
    /**
     * Validates that Transformer.select() and Transformer.transform() are always
     * used as a pair in operation code. Using one without the other causes type
     * mismatches: select() shapes the Prisma payload for transform(), so they
     * must appear together.
     */
    function validateSelectTransformContract(props: {
        draft: string;
        revise: {
            final: string | null;
        };
    }): IValidation.IError[];
}
