/**
 * Type of the Computed decorator / constructor function.
 *
 * @publicApi
 */
export interface ComputedDecorator {
    /**
     * Derive a lazily evaluated value from other values on the class instance.
     *
     * @usageNotes
     *
     * ```typescript
     * export interface MyState {
     *    firstName: string
     *    lastName: string
     * }
     *
     * // this example is not memoized
     * export const $fullName = () => (state: MyState) => state.firstName + " " + state.lastName
     *
     * @Component()
     * export class MyComponent implements MyState {
     *    @Computed<string>($fullName)
     *    readonly fullName: string
     * }
     *
     * ```
     *
     * Use factory functions when creating memoized selectors so that each instance of the class gets its own cache. For example:
     *
     * ```typescript
     * // This example uses createSelector from @ngrx/store
     * const $myState = (state: MyState) => state
     * const $fullName = createSelector(
     * $myState,
     * state => state.firstName + " " + state.lastName,
     * )
     * // Don't do this!
     * const $selectFullName = () => $fullName
     * // Wrap call to createSelector inside factory
     * const $selectFullName = () =>
     * createSelector(
     * $myState,
     * state => state.firstName + " " + state.lastName,
     * )
     * ```
     *
     * @Annotation
     * @publicApi
     */
    <T>(selectorFactory: () => (state: any) => T): any;
    new <T>(selectorFactory: () => (state: any) => T): any;
}
/**
 * Type of the Computed metadata.
 *
 * @publicApi
 */
export interface Computed {
    /**
     * A selector factory function that will create a new selector for each class instance that
     * calculates the value of the decorated property.
     */
    selectorFactory: <T>() => (state: any) => T;
}
/**
 * @Annotation
 * @publicApi
 */
export declare const Computed: ComputedDecorator;
/**
 * Type of the NgOnChangesDecorator decorator / constructor function.
 *
 * @publicApi
 */
export interface NgOnChangesDecorator {
    /**
     * NgOnChanges lifecycle hook decorator
     *
     * @usageNotes
     *
     * ```ts
     * export type MyProps = Pick<MyComponent, "firstName", "lastName">
     *
     * @Component()
     * export class MyComponent extends NgObservable implements MyProps {
     *     @Input() firstName: string
     *     @Input() lastName: string
     *
     *     @NgOnChanges()
     *     public runOnChanges(changes: TypedChanges<MyProps>) {
     *        // Will be called after OnChanges hook
     *     }
     * }
     * ```
     *
     * @Annotation
     * @publicApi
     */
    (): void;
    new (): void;
}
/**
 * Type of the NgOnChanges metadata.
 *
 * @publicApi
 */
export interface NgOnChanges {
}
/**
 * @Annotation
 * @publicApi
 */
export declare const NgOnChanges: any;
/**
 * Type of the NgOnChangesDecorator decorator / constructor function.
 *
 * @publicApi
 */
export interface NgOnInitDecorator {
    /**
     * NgOnInit lifecycle hook decorator
     *
     * @usageNotes
     *
     * ```ts
     * @Component()
     * export class MyComponent extends NgObservable {
     *     @NgOnInit()
     *     public runOnInit() {
     *        // Will be called after OnInit hook
     *     }
     * }
     * ```
     *
     * @Annotation
     * @publicApi
     */
    (): void;
    new (): void;
}
/**
 * Type of the NgOnInit metadata.
 *
 * @publicApi
 */
export interface NgOnInit {
}
/**
 * @Annotation
 * @publicApi
 */
export declare const NgOnInit: any;
/**
 * Type of the NgOnChangesDecorator decorator / constructor function.
 *
 * @publicApi
 */
export interface NgDoCheckDecorator {
    /**
     * NgDoCheck lifecycle hook decorator
     *
     * @usageNotes
     *
     * ```ts
     * @Component()
     * export class MyComponent extends NgObservable {
     *     @NgDoCheck()
     *     public runDoCheck() {
     *        // Will be called after DoCheck hook
     *     }
     * }
     * ```
     *
     * @Annotation
     * @publicApi
     */
    (): void;
    new (): void;
}
/**
 * Type of the NgDoCheck metadata.
 *
 * @publicApi
 */
export interface NgDoCheck {
}
/**
 * @Annotation
 * @publicApi
 */
export declare const NgDoCheck: any;
/**
 * Type of the NgOnChangesDecorator decorator / constructor function.
 *
 * @publicApi
 */
export interface NgAfterContentInitDecorator {
    /**
     * NgAfterContentInit lifecycle hook decorator
     *
     * @usageNotes
     *
     * ```ts
     * @Component()
     * export class MyComponent extends NgObservable {
     *     @NgAfterContentInit()
     *     public runAfterContentInit() {
     *        // Will be called after AfterContentInit hook
     *     }
     * }
     * ```
     *
     * @Annotation
     * @publicApi
     */
    (): void;
    new (): void;
}
/**
 * Type of the NgAfterContentInit metadata.
 *
 * @publicApi
 */
export interface NgAfterContentInit {
}
/**
 * @Annotation
 * @publicApi
 */
export declare const NgAfterContentInit: any;
/**
 * Type of the NgOnChangesDecorator decorator / constructor function.
 *
 * @publicApi
 */
export interface NgAfterContentCheckedDecorator {
    /**
     * NgAfterContentChecked lifecycle hook decorator
     *
     * @usageNotes
     *
     * ```ts
     * @Component()
     * export class MyComponent extends NgObservable {
     *     @NgAfterContentChecked()
     *     public runAfterContentChecked() {
     *        // Will be called after AfterContentChecked hook
     *     }
     * }
     * ```
     *
     * @Annotation
     * @publicApi
     */
    (): void;
    new (): void;
}
/**
 * Type of the NgAfterContentChecked metadata.
 *
 * @publicApi
 */
export interface NgAfterContentChecked {
}
/**
 * @Annotation
 * @publicApi
 */
export declare const NgAfterContentChecked: any;
/**
 * Type of the NgOnChangesDecorator decorator / constructor function.
 *
 * @publicApi
 */
export interface NgAfterViewInitDecorator {
    /**
     * NgAfterViewInit lifecycle hook decorator
     *
     * @usageNotes
     *
     * ```ts
     * @Component()
     * export class MyComponent extends NgObservable {
     *     @NgAfterViewInit()
     *     public runAfterViewInit() {
     *        // Will be called after AfterViewInit hook
     *     }
     * }
     * ```
     *
     * @Annotation
     * @publicApi
     */
    (): void;
    new (): void;
}
/**
 * Type of the NgAfterViewInit metadata.
 *
 * @publicApi
 */
export interface NgAfterViewInit {
}
/**
 * @Annotation
 * @publicApi
 */
export declare const NgAfterViewInit: any;
/**
 * Type of the NgOnChangesDecorator decorator / constructor function.
 *
 * @publicApi
 */
export interface NgAfterViewCheckedDecorator {
    /**
     * NgAfterViewChecked lifecycle hook decorator
     *
     * @usageNotes
     *
     * ```ts
     * @Component()
     * export class MyComponent extends NgObservable {
     *     @NgAfterViewChecked()
     *     public runAfterViewChecked() {
     *        // Will be called after AfterViewChecked hook
     *     }
     * }
     * ```
     *
     * @Annotation
     * @publicApi
     */
    (): void;
    new (): void;
}
/**
 * Type of the NgAfterViewChecked metadata.
 *
 * @publicApi
 */
export interface NgAfterViewChecked {
}
/**
 * @Annotation
 * @publicApi
 */
export declare const NgAfterViewChecked: any;
/**
 * Type of the NgOnChangesDecorator decorator / constructor function.
 *
 * @publicApi
 */
export interface NgOnDestroyDecorator {
    /**
     * NgOnDestroy lifecycle hook decorator
     *
     * @usageNotes
     *
     * ```ts
     * @Component()
     * export class MyComponent extends NgObservable {
     *     @NgOnDestroy()
     *     public runOnDestroy() {
     *        // Will be called after OnDestroy hook
     *     }
     * }
     * ```
     *
     * @Annotation
     * @publicApi
     */
    (): void;
    new (): void;
}
/**
 * Type of the NgOnDestroy metadata.
 *
 * @publicApi
 */
export interface NgOnDestroy {
}
/**
 * @Annotation
 * @publicApi
 */
export declare const NgOnDestroy: any;
