import { JavaObject } from '../java/lang/JavaObject';
import { Logger } from '../logger/Logger';
import { LogConsumerVector } from '../logger/LogConsumerVector';
export declare abstract class Service<T_IN, T_OUT> extends JavaObject {
    protected logger: Logger;
    protected log: LogConsumerVector;
    /**
     * Erstellt einen neuen Service, dessen Logger automatisch in einen Vector loggt.
     */
    protected constructor();
    /**
     * Diese Methode muss von dem erbenden Service impelemntiert werden
     * und handhabt das übergebene Input-Objekt und erzeugt das zugehörige
     * Output-Objekt.
     *
     * @param input   das Input-Objekt
     *
     * @return das Output-Objekt
     */
    abstract handle(input: T_IN | null): T_OUT | null;
    /**
     * Gibt die Logger-Instanz von diesem Service zurück.
     *
     * @return die Logger-Instanz.
     */
    getLogger(): Logger;
    /**
     * Gibt das Log dieses Services zurück.
     *
     * @return das Log dieses Services
     */
    getLog(): LogConsumerVector;
    isTranspiledInstanceOf(name: string): boolean;
}
export declare function cast_de_nrw_schule_svws_core_Service<T_IN, T_OUT>(obj: unknown): Service<T_IN, T_OUT>;
