import type { UIEvent } from '@devvit/protos/types/devvit/ui/events/v1alpha/event.js'; import type { Form } from '@devvit/protos/types/devvit/ui/form_builder/v1alpha/form.js'; import type { Severity } from '@reddit/faceplate/types.js'; import type { ReactiveController, ReactiveElement } from 'lit'; import type { DevvitUIEffectEvent } from '../dispatcher/events.js'; export type EffectMessage = { onEvent?(event: UIEvent): void; } & ({ effectName: 'devvit:formEffect'; form: Form; } | { effectName: 'devvit:navigateToEffect'; url: string; } | { effectName: 'devvit:toastEffect'; message: string; level: Severity; }); /** * Manages communications to the devvit-ui-effect Event bus. All effects should * subclass `EffectHandler`. Most events are in response to effects. Events that * are user initiated, not effect initiated, should invoke * `DevvitBlocksWebView.postEvent()`. */ export declare abstract class EffectHandler implements ReactiveController { #private; protected readonly host: ReactiveElement; constructor(host: ReactiveElement); hostConnected(): void; hostDisconnected(): void; /** * Effect callback. Effects are side-effects (messages from the web view) of * running the web view wrapped in DOM events. * * @arg ev Any `devvit-ui-effect` event. The subclass must filter. */ protected abstract onEvent(ev: DevvitUIEffectEvent): void; } //# sourceMappingURL=effect-handler.d.ts.map