import { AutoBeInterfaceAuthorization, AutoBeOpenApi, AutoBeTestScenario } from "@autobe/interface";
import { HashMap } from "tstl";
import { IValidation } from "typia";
export declare namespace AutoBeTestScenarioProgrammer {
    /**
     * Create a HashMap associating endpoints with operations.
     *
     * @param operations - Array of operations to associate
     * @returns HashMap with endpoint as key and operation as value
     */
    const associate: (operations: AutoBeOpenApi.IOperation[]) => HashMap<AutoBeOpenApi.IEndpoint, AutoBeOpenApi.IOperation>;
    /**
     * Fulfill test scenario with missing authentication dependencies.
     *
     * Automatically adds missing authentication operations (join/login) to the
     * scenario's dependencies based on authorization actor requirements.
     *
     * Authentication correction rules:
     *
     * - Single actor: Adds join operation if missing
     * - Multiple actors: Adds join + login operations for each actor if missing
     *
     * This function mutates the scenario by prepending auth dependencies to
     * ensure they execute before all other operations (correct execution order).
     *
     * Duplicate prevention: Tracks existing join/login operations in dependencies
     * to avoid adding them twice.
     *
     * @param props - Fulfillment configuration
     * @param props.dict - Endpoint to operation lookup map
     * @param props.authorizations - Available authorization configurations
     * @param props.operation - Target operation being tested
     * @param props.scenario - Scenario to fulfill (will be mutated)
     */
    const fulfill: (props: {
        dict: HashMap<AutoBeOpenApi.IEndpoint, AutoBeOpenApi.IOperation>;
        authorizations: AutoBeInterfaceAuthorization[];
        operation: AutoBeOpenApi.IOperation;
        scenario: AutoBeTestScenario;
    }) => void;
    /**
     * Validate test scenario complete request.
     *
     * Validates:
     *
     * - Scenario endpoint matches target operation
     * - All dependency endpoints exist in document operations
     * - No self-referencing dependencies (operation depending on itself)
     *
     * Note: This function performs pure validation only. Call fulfill() before
     * validation to ensure authentication dependencies are present.
     *
     * @param props - Validation configuration
     */
    const validate: (props: {
        errors: IValidation.IError[];
        dict: HashMap<AutoBeOpenApi.IEndpoint, AutoBeOpenApi.IOperation>;
        operation: AutoBeOpenApi.IOperation;
        scenario: AutoBeTestScenario;
        accessor: string;
    }) => void;
}
