export declare const DEV_SHELL_CRITERIA_SIGNALS: readonly ["datastore", "iwp", "analytics", "playtime"]; export type DevShellCriteriaSignal = (typeof DEV_SHELL_CRITERIA_SIGNALS)[number]; export declare const DEV_SHELL_CRITERIA_OPS: readonly ["gte", "lte", "eq"]; export type DevShellCriteriaOp = (typeof DEV_SHELL_CRITERIA_OPS)[number]; export declare const DEV_SHELL_CRITERIA_METRICS: readonly ["count", "lix"]; export type DevShellCriteriaMetric = (typeof DEV_SHELL_CRITERIA_METRICS)[number]; /** The only two documents a `datastore` criteria may read. `{userId}` resolves to the simulated player. */ export declare const DEV_SHELL_CRITERIA_KEY_TEMPLATES: readonly ["player:{userId}", "mp:player:{userId}"]; export type DevShellCriteriaKeyTemplate = (typeof DEV_SHELL_CRITERIA_KEY_TEMPLATES)[number]; /** A `datastore` criteria's `field`: a dot-path of letters, digits and underscores. */ export declare const DEV_SHELL_CRITERIA_FIELD_PATTERN: RegExp; /** Shaped exactly as registration stores it — the same JSON `helix achievement register` sends. */ export type DevShellAchievementCriteria = { signal: DevShellCriteriaSignal; op: DevShellCriteriaOp; value: number; eventName?: string; key?: DevShellCriteriaKeyTemplate; field?: string; metric?: DevShellCriteriaMetric; }; /** * The stored evidence a measurement re-derives from. The caller (the simulator) pre-filters * `completedPurchases` to settled rows that resolve to a seeded WORLD product — listing purchases are * marketplace, not IWP, and never count. */ export type DevShellCriteriaEvidence = { userId: string; documents: Record; completedPurchases: Array<{ priceLix: number; }>; playtimeSeconds: number; analyticsCounts: Record; }; /** * Measure one criteria against the evidence, or null when it cannot be measured (fail-closed). * Counts measure 0 when nothing happened yet — zero events is a real measurement; a missing document * field is not. */ export declare function measureDevShellCriteria(criteria: DevShellAchievementCriteria, evidence: DevShellCriteriaEvidence): number | null; export declare function devShellCriteriaSatisfied(measured: number | null, criteria: DevShellAchievementCriteria): boolean; /** One-line render for the debug menu's progress print — same shape as the CLI's `list` column. */ export declare function formatDevShellCriteria(criteria: DevShellAchievementCriteria | null | undefined): string;