import type { ResolvedBannerConfig } from '@redocly/config';
export declare const SpecificityTier: {
    readonly CatchAll: 0;
    readonly DoubleWildcard: 1;
    readonly SingleWildcard: 2;
    readonly ExactMatch: 3;
};
export type SpecificityTier = (typeof SpecificityTier)[keyof typeof SpecificityTier];
export type Specificity = {
    tier: SpecificityTier;
    literalSegments: number;
};
/**
 * Returns a structured specificity for a target pattern.
 * Higher tier = more specific. Within a tier, more literal
 * (non-wildcard) path segments wins.
 */
export declare function getTargetSpecificity(target: string | undefined): Specificity;
/**
 * Compares two specificities. Returns a positive number if `left` is more
 * specific, negative if `right` is, and 0 when equal.
 */
export declare function compareSpecificity(left: Specificity, right: Specificity): number;
export declare function isBannerWithinTimeRange(banner: Pick<ResolvedBannerConfig, 'startAt' | 'endAt'>, now?: number): boolean;
/**
 * Returns the soonest banner visibility transition strictly after `now`,
 * considering every `startAt` and `endAt` across `banners`.
 */
export declare function getNextBannerTransition(banners: Pick<ResolvedBannerConfig, 'startAt' | 'endAt'>[], now?: number): number | undefined;
/**
 * Checks if a slug matches a target pattern
 */
export declare function matchesBannerTarget(slug: string, target: string | undefined): boolean;
/**
 * Returns the most specific matching banner for a slug.
 */
export declare function getBannerForSlug(banners: ResolvedBannerConfig[], slug: string, dismissedBanners?: Set<string>, now?: number): ResolvedBannerConfig | undefined;
//# sourceMappingURL=match-banner-target.d.ts.map