import { Channel } from './channel/base'; import { HookContext } from '@ihadeed/feathers'; declare const PUBLISHERS: unique symbol; declare const CHANNELS: unique symbol; declare const ALL_EVENTS: unique symbol; export declare const keys: { PUBLISHERS: typeof PUBLISHERS; CHANNELS: typeof CHANNELS; ALL_EVENTS: typeof ALL_EVENTS; }; export interface ChannelMixin { [CHANNELS]: { [key: string]: Channel; }; channel(...names: string[]): Channel; } export declare function channelMixin(): ChannelMixin; export declare type Event = string | (typeof ALL_EVENTS); export declare type Publisher = (data: T, hook: HookContext) => Channel | Channel[] | void | Promise; export interface PublishMixin { [PUBLISHERS]: { [ALL_EVENTS]?: Publisher; [key: string]: Publisher; }; publish(event: Event, publisher: Publisher): this; registerPublisher(event: Event, publisher: Publisher): this; } export declare function publishMixin(): PublishMixin; export {};