import { Observable } from 'rxjs'; import { DataStoreToken } from './DataStoreToken'; import { MetadataSubjectContext } from './MetadataSubjectContext'; export type ObservedPredicate = Observable; export type Constructor = Function; export type PredicateIdentifier = string | IMetadataSubject; export type ConstructorDecorator = (target: Constructor) => void; export declare const getPredicateMetadata: (constructor: Constructor) => PredicateIdentifier[]; export declare const setPredicateMetadata: (constructor: Constructor, metadata: PredicateIdentifier[]) => void; export interface IMetadataSubject { createObservable(context: MetadataSubjectContext): Observable; } export type KeysOf = (keyof T)[]; export type MetadataSubjectAction = (target: Constructor, context: MetadataSubjectContext) => Observable; export declare function createMetadataDecorator(action: MetadataSubjectAction): ConstructorDecorator; export declare function createPredicateDecorator(token: DataStoreToken, keys?: KeysOf): ConstructorDecorator; export declare const waitForCache: typeof createPredicateDecorator; export declare class PredicateMetadataSubject implements IMetadataSubject { readonly token: DataStoreToken; readonly keys: KeysOf; constructor(token: DataStoreToken, keys: KeysOf); createObservable(context: MetadataSubjectContext): Observable; }