import { OpenApi } from "../OpenApi";
import { IHttpMigrateRoute } from "./IHttpMigrateRoute";
/**
 * Document of migration.
 *
 * The `IHttpMigrateApplication` interface is an application migrated from
 * {@link OpenAPI.IDocument OpenAPI document} for supporting the OpenAPI generator
 * libraries which compose RPC (Remote Procedure Call) functions from the
 * {@link OpenAPI.IOperation OpenAPI operations}.
 *
 * As the `IHttpMigrateApplication` and {@link IHttpMigrateRoute} have a lot of special
 * stories, when you're developing OpenAPI generator library, please read
 * their descriptions carefully including the description of properties.
 *
 * @author Jeongho Nam - https://github.com/samchon
 */
export interface IHttpMigrateApplication {
    /**
     * List of routes for migration.
     */
    routes: IHttpMigrateRoute[];
    /**
     * List of errors occurred during the migration.
     */
    errors: IHttpMigrateApplication.IError[];
    /**
     * Source OpenAPI document.
     */
    document: () => OpenApi.IDocument;
}
export declare namespace IHttpMigrateApplication {
    /**
     * Error of migration in the operation level.
     */
    interface IError {
        /**
         * Target operation causing the error.
         */
        operation: () => OpenApi.IOperation;
        /**
         * Method of the operation.
         *
         * If the {@link OpenApi.IOperation.method} is not one of below type
         * values, the operation would be ignored in the migration process for
         * the RPC (Remote Procedure Call) function.
         */
        method: "head" | "get" | "post" | "put" | "patch" | "delete";
        /**
         * Original path from the OpenAPI document.
         */
        path: string;
        /**
         * List of error messages (reasons).
         */
        messages: string[];
    }
}
