import { Ctor, FunctionDecorator, TypedPropertyDecorator } from '../types';
export declare abstract class Interception {
    /**
     * Calls a custom function each with new instance created.
     * @param fn A custom function.
     */
    static readonly init: <T>(fn: (o: any) => void) => (c: Ctor<T>) => Ctor<any>;
    /**
     * Provides an initial / default value.
     * @param val The initial value.
     */
    static readonly initial: <T>(val: T) => TypedPropertyDecorator<T>;
    /**
     * Intercepts the input of a function, preventing its execution.
     * @param fn A custom function.
     * @returns The result of the custom function.
     */
    static readonly input: (fn: (args: any[], o: any) => any) => FunctionDecorator;
    /**
     * Intercepts the output of a function, after it is executed.
     * @param fn A custom function.
     * @returns The result of the custom function.
     */
    static readonly output: <T>(fn: (val: T, args: any[], o: any) => T) => FunctionDecorator;
    private static readonly expose;
}
