import { Application, HookContext } from '@feathersjs/feathers'; import { Channel } from './channel/base'; 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 type Event = string | typeof ALL_EVENTS; export type Publisher = (data: T, context: 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 {};