import SimpleSchema from 'simpl-schema';
import { QueryMeta } from '../util/subscription-dependency-context';
export interface SubscriptionModel {
    [key: string]: SubscriptionPubModel;
}
export interface SubscriptionPubModel {
    check?: SimpleSchema;
    function: (...parameters: any[]) => Promise<any | any[]>;
    collections: string[];
    user_specific?: boolean;
}
export interface ActiveSubscriptionModel {
    publication: string;
    subscriptionKey: string;
    subscriptionData: any[];
    collections: string[];
    clients: ActiveSubscriptionClientModel[];
    cacheId: number;
    running: boolean;
    runAgain: boolean;
    collectionDependencies: Map<string, Set<string>>;
    collectionFilters: Map<string, any[]>;
    watchAllCollections: Set<string>;
    collectionQueryMeta: Map<string, QueryMeta[]>;
}
export interface ActiveSubscriptionClientModel {
    id_user: string;
    messageId: number;
    id_socket: string;
    messageRoute: string;
}
