import type { Trim } from "./utils/trim.def"; import type { PascalCase } from "./utils/pascal-case.def"; export interface Options { crossTab?: boolean; } export declare type Listener = Payload extends void ? (handler: () => void) => void : (handler: (payload: Payload) => void) => void; export declare type Emitter = ((payload: Payload) => void) & { broadcast: (payload: Payload) => void; }; interface Base { listener: { prefix: "use"; suffix: "Listener"; fn: Listener; }; emitter: { prefix: "emit"; suffix: ""; fn: Emitter; }; } declare type FuncName = `${Prefix}${PascalCase>}${Suffix}`; export declare type CreatedEvent = { [Property in keyof Base as FuncName[Property]["prefix"], Base[Property]["suffix"], EventName>]: Base[Property]["fn"]; }; export {};