import { Request, Response } from "express";
import { IMetaMetodo, ListaMetadataMetodo, MetadataMetodo } from "../metadata/metodo.metadata";
import { IFile, IMetodoParametri, MetodoParametri } from "./metodo/MetodoParametri";
import { IMetodoVettori, MetodoVettori } from "./metodo/MetodoVettori";
import { IMetodoEventi, MetodoEventi } from "./metodo/MetodoEventi";
import { IMetodoLimitazioni, MetodoLimitazioni } from "./metodo/MetodoLimitazioni";
import { IReturn, IParametriEstratti } from "./utility/utility";
import { IRaccoltaPercorsi } from "./metodo/utility";
import { IMetodoSpawProcess, MetodoSpawProcess } from "./metodo/MetodoSpawProcess";
export interface ITracciamentoQualita {
    id: string;
    inizio: number;
    fine?: number;
    differenza?: number;
    req?: any;
    res?: any;
}
export interface IExpressMetodo extends IMetaMetodo {
    metodoEventi?: IMetodoEventi;
    metodoParametri?: IMetodoParametri;
    metodoLimitazioni?: IMetodoLimitazioni;
    metodoVettori?: IMetodoVettori;
    /**
     * Attenzione! questo è da attivare solo sul metodo che determinera l'avvio del nuovo processo!
     */
    metodoSpawProcess?: IMetodoSpawProcess;
}
export declare class ExpressMetodo extends MetadataMetodo implements IExpressMetodo {
    metodoSpawProcess: MetodoSpawProcess;
    metodoEventi: MetodoEventi;
    metodoParametri: MetodoParametri;
    metodoLimitazioni: MetodoLimitazioni;
    metodoVettori: MetodoVettori;
    constructor(item: IExpressMetodo);
    Init(item: ExpressMetodo): void;
    Mergia(item: ExpressMetodo): void;
    GetThis(): this;
    ConfiguraRottaApplicazione(app: any, percorsi: IRaccoltaPercorsi): void;
    ConfiguraRotteHtml(app: any, percorsoTmp: string, contenuto: string): void;
    PrintStruttura(): string;
    ConfiguraRotteSwitch(app: any, percorsoTmp: string, middlew: any[]): void;
    ChiamataGenerica(req: Request, res: Response, id: ITracciamentoQualita, isFile?: IFile): Promise<void>;
    EseguiProcessoParallelo(metodoSpawProcess: MetodoSpawProcess, valoreValiabile: string, porta: number): void;
    Esegui(req: Request): Promise<IReturn | undefined>;
    EseguiMetodo(parametri: IParametriEstratti): Promise<{
        attore: any;
        result: any;
    }>;
    CostruisciCors_e_Helmet(corsOptions: any): void;
}
export declare class ListaExpressMetodo extends ListaMetadataMetodo {
    constructor(item?: ListaMetadataMetodo);
    Mergia(item: ListaExpressMetodo): void;
    CercaSeNoAggiungi(item: ExpressMetodo): ExpressMetodo;
    Cerca(item: ExpressMetodo): ExpressMetodo | undefined;
    AggiungiElemento(item: ExpressMetodo): ExpressMetodo;
    ConfiguraListaRotteApplicazione(app: any, percorsi: IRaccoltaPercorsi): void;
}
