import { PubSub } from 'graphql-subscriptions';
import { Entity } from '../entity/Entity';
export declare const pubsub: PubSub;
export declare const SUBSCRIPTION_TYPE_CREATE = "onCreate";
export declare const SUBSCRIPTION_TYPE_UPDATE = "onUpdate";
export declare const SUBSCRIPTION_TYPE_DELETE = "onDelete";
export declare const subscriptionTypes: string[];
export declare const defaultEntitySubscription: ({
    name: string;
    type: string;
    description: (typeName: string) => string;
    hasAttributes: boolean;
} | {
    name: string;
    description: (typeName: string) => string;
    type: string;
    hasAttributes?: undefined;
})[];
export declare type SubscriptionSetup = {
    name?: string;
    type?: string;
    description?: string;
    attributes?: string[];
    delimiter?: string;
    wildCard?: string;
    pattern?: string;
    preProcessor?: (entity?: Entity, id?: string | number, source?: any, input?: any, typeName?: string, entitySubscription?: Subscription, context?: any, info?: any) => Promise<string | null> | string | null;
    postProcessor?: (entity?: Entity, source?: any, input?: any, typeName?: string, entitySubscription?: Subscription, context?: any, info?: any) => Promise<object | null> | object | null;
};
export declare class Subscription {
    name: string;
    type: string;
    description: string;
    attributes: string[];
    delimiter?: string;
    wildCard?: string;
    pattern?: string;
    preProcessor: Function;
    postProcessor: Function;
    isTypeCreate?: boolean;
    isTypeDelete?: boolean;
    needsInstance?: boolean;
    ignoreRequired?: boolean;
    isTypeUpdate?: boolean;
    constructor(setup?: SubscriptionSetup);
    toString(): string;
}
export declare const isSubscription: (obj: unknown) => obj is Subscription;
export declare const processEntitySubscriptions: (entity: Entity, subscriptions: Subscription[]) => Subscription[];
