import type { NormalizedEvent } from '../events/types';
import type { TileConfig } from '../types';
import type { ActiveNotification, TileNotificationRule } from './types';
/**
 * Result of matching an event against tile notification rules.
 * Includes both the resolved notification and the original rule
 * so callers can access rule-level settings (e.g., cooldown).
 */
export interface MatchResult {
    notification: ActiveNotification;
    rule: TileNotificationRule;
}
/**
 * Replace {{props.x}} placeholders in a template string with values
 * from the event props. Leaves placeholders intact when the referenced
 * prop is missing or props is undefined.
 */
export declare function interpolateTemplate(template: string, props: Record<string, unknown> | undefined): string;
/**
 * Given a NormalizedEvent and a list of tile configs, find the first
 * matching notification rule and return a MatchResult containing
 * both the resolved ActiveNotification and the original rule.
 * Returns null when no rules match.
 */
export declare function matchEvent(event: NormalizedEvent, tiles: TileConfig[]): MatchResult | null;
