export declare interface INudgeManager {
    on<U extends keyof CfNudgeEvents>(
        event: U, listener: CfNudgeEvents[U]
    ): this;

    emit<U extends keyof CfNudgeEvents>(
        event: U, ...args: Parameters<CfNudgeEvents[U]>
    ): boolean;
}

export enum NudgeManagerAction {
    Shown = 'shown',
    Error = 'error',
    Block = 'block',
    Discard = 'discard',
    Open = 'open',
    Expired = "expired",
    Action = 'action'
}

export interface CfNudgeEvents {
    [NudgeManagerAction.Shown]: (id: number) => void;
    [NudgeManagerAction.Block]: (id: number) => void;
    [NudgeManagerAction.Discard]: (id: number) => void;
    [NudgeManagerAction.Open]: (id: number) => void;
    [NudgeManagerAction.Expired]: (id: number) => void;
}
