import type { DropContext, Scope, StatContext } from './types.js';
/**
 * Returns true if `scope` matches the given `DropContext`.
 *
 * Empty scope = global match. All declared fields are AND-ed. The optional
 * `match` predicate runs last.
 */
export declare function matchesScopeForDrop(scope: Scope | undefined, ctx: DropContext): boolean;
/**
 * Returns true if `scope` is valid for stat resolution.
 *
 * Drop-only scoped effects never match stat resolution. Any of `items`,
 * `dropKinds`, `specialCropTypes`, `tags`, or `match` causes outright rejection.
 */
export declare function matchesScopeForStat(scope: Scope | undefined, ctx: StatContext): boolean;
/**
 * Returns true if `scope` is structurally "global Overbloom-shaped":
 * no crop/feast/season narrowing, optionally `tags: ['overbloom']` only.
 *
 * Used by `getStat(Stat.Overbloom)` to decide which Overbloom-related
 * `add-rare-pct` effects count toward the scalar total.
 */
export declare function isGlobalOverbloomScope(scope: Scope | undefined): boolean;
