import type { Component } from "../types/component.js";
import type { Overrides } from "../types/overrides.js";
import type { RootPaywall } from "../types/paywall.js";
import type { PackageInfo, VariableDictionary } from "../types/variables.js";
/**
 * Given an instance of PaywallData, returns the id of the first package marked as `is_selected_by_default` if any.
 * If none are marked, returns the first package encountered in traversal order (root stack, then sticky footer).
 * @param paywallData
 * @returns the id of the first package marked as `is_selected_by_default`, otherwise the first package id, or undefined
 */
export declare function findSelectedPackageId({ stack, sticky_footer, }: RootPaywall): string | undefined;
export declare const getActiveStateProps: <T extends Component>(selectedState: boolean, overrides?: Overrides<T>) => Partial<T>;
export declare const getHoverStateProps: <T extends Component>(hoverState: boolean, overrides?: Overrides<T>) => Partial<T>;
export declare const getFocusStateProps: <T extends Component>(focusState: boolean, overrides?: Overrides<T>) => Partial<T>;
export declare const getErrorStateProps: <T extends Component>(errorState: boolean, overrides?: Overrides<T>) => Partial<T>;
export declare const getIntroOfferStateProps: <T extends Component>(hasIntroOffer: boolean, overrides?: Overrides<T>) => Partial<T>;
export declare const getPromoOfferStateProps: <T extends Component>(hasPromoOffer: boolean, overrides?: Overrides<T>) => Partial<T>;
export type VisibilityContext = {
    selectedPackageId: string | undefined;
    packageInfo: PackageInfo | undefined;
    variables: VariableDictionary;
};
/**
 * Evaluates visibility for an element.
 *
 * A component is considered visible unless:
 * - baseVisible is explicitly false, or
 * - an override sets `visible: false` in its properties and all of its
 *   conditions are satisfied by the current context.
 *
 * If baseVisible is undefined or null, the component defaults to visible.
 */
export declare const evaluateVisibilityConditions: <T extends Component>(context: VisibilityContext, overrides?: Overrides<T>, baseVisible?: boolean | null) => boolean;
