import { type KitBlueprint, type KitOwnerIdKind, type KitTrustedAuthority } from './core.js'; /** Options for {@link progressionBlueprint}. */ export interface ProgressionBlueprintOptions { /** * Prefix applied to the container type names (`'Pvp'` → `PvpProgress` / * `PvpSkillDef` / …) and, snake-cased, to the function names * (`pvp_grant_xp`, …). Defaults to none. */ typePrefix?: string; /** * Who may grant XP. Trusted grants should be `'server'` (the default), * `'automation'` (e.g. an event automation on a `mob_died` function), or * `'host'` — never plain players. */ xpAuthority?: KitTrustedAuthority; /** * Who may adjust the competitive rating (the match layer's * `applyMatchResult` calls this). Defaults to `'host'`. */ ratingAuthority?: KitTrustedAuthority; /** * The XP curve: an expression over `$level` returning the TOTAL xp required * to reach that level. Evaluated via the read-only `fn:` helper-call * pattern (`fn:xp_for_level(self.level + 1)`), so the curve lives in ONE * `internal` function and every reader stays in sync. Defaults to * `'100 * $level * $level'`. */ xpForLevelExpression?: string; /** Skill points granted per level-up. Defaults to 1. */ skillPointsPerLevel?: number; /** Initial competitive rating for new players. Defaults to 1000. */ initialRating?: number; /** Owner-mirror typing (see the kit convention). Defaults to `'int'`. */ ownerIdKind?: KitOwnerIdKind; } /** Names derived by {@link progressionBlueprint} for a given prefix. */ export interface ProgressionNames { progressType: string; skillDefType: string; skillRankType: string; achievementDefType: string; achievementUnlockType: string; xpForLevelFn: string; grantXpFn: string; buySkillFn: string; unlockAchievementFn: string; adjustRatingFn: string; } /** Compute the type/function names a progression blueprint (and its runtime helper) uses. */ export declare function progressionNames(typePrefix?: string): ProgressionNames; /** * Blueprint for **character progression**: per-player `Progress` (xp / level / * skill points / rating), an admin `SkillDef` catalog with prerequisite * chains bought into per-player `SkillRank`s, threshold `AchievementDef`s * unlocked into `AchievementUnlock`s, and an ELO-style `adjust_rating` hook * for the match layer. * * Level-ups are computed server-side inside `grant_xp` using the `fn:` * helper pattern: the XP curve lives in ONE `internal` function * (`xp_for_level`, not directly invocable) that mutation expressions call as * `fn:xp_for_level(self.level + 1)`. Ordered mutations see earlier writes, * so xp is applied first, then the skill-point award, then the level bump — * one level per grant (call repeatedly for multi-level jumps). * * Runtime counterpart: `client.kit(appId).progression`. */ export declare function progressionBlueprint(options?: ProgressionBlueprintOptions): KitBlueprint; //# sourceMappingURL=progression.d.ts.map