import { Realtime } from "./types.js";

//#region src/components/realtime/channel.d.ts
type ChannelOptions<TName extends string | ((...args: never[]) => string), TTopics extends Realtime.TopicsConfig> = {
  name: TName;
  topics: TTopics;
};
type InferChannelReturn<TName extends string | ((...args: never[]) => string), TTopics extends Realtime.TopicsConfig> = TName extends string ? Realtime.ChannelInstance<TName, TTopics> & {
  $infer: { [K in keyof TTopics]: Realtime.InferTopicData<TTopics[K]> };
} : TName extends ((...args: infer TArgs) => string) ? Realtime.ChannelDef<(...args: TArgs) => string, TTopics> & {
  $infer: { [K in keyof TTopics]: Realtime.InferTopicData<TTopics[K]> };
  $params: TArgs[0];
} : never;
declare const channel: <const TName extends string | ((...args: never[]) => string), const TTopics extends Realtime.TopicsConfig>(options: ChannelOptions<TName, TTopics>) => InferChannelReturn<TName, TTopics>;
//#endregion
export { channel };
//# sourceMappingURL=channel.d.ts.map