export type InputOrigin = 'none' | 'default' | 'user'; export interface ProcessorArg { input: Input | undefined; inputOrigin: InputOrigin; } export interface UserPropertySpec { getDefaultInput?(): Input; transform?(arg: ProcessorArg): Output; } export interface PropertyCache { value: Type | undefined; invalid: boolean; } export declare class UserProperty { private _spec; private _userInputIsSet; private _userInput; private _inputCache; private _outputCache; constructor(_spec?: UserPropertySpec); set(value: Input): void; unset(): void; get inputAndOrigin(): ProcessorArg; get userInputIsSet(): boolean; get userInput(): Input | undefined; get hasDefaultInput(): boolean; get defaultInput(): Input | undefined; get input(): Input | undefined; get inputOrigin(): InputOrigin; resetInputCache(): void; get output(): Output; resetOutputCache(): void; }