import { type KitBlueprint, type KitInvokePolicy, type KitOwnerIdKind } from './core.js'; /** Options for {@link plotBlueprint}. */ export interface PlotBlueprintOptions { /** Plot container type name. Defaults to `'Plot'`. */ typeName?: string; /** * Runtime permission keys buying/renting grants on the plot's grid. * Defaults to `['access', 'update_voxel_data']`. */ permissionKeys?: string[]; /** Currency property on the wallet container. Defaults to `'gold'`. */ currencyProperty?: string; /** * Property on the wallet container mirroring its owner's user id (the * standard kit convention, since expressions can't read container * ownership). Defaults to `'owner_user_id'`. */ walletOwnerProperty?: string; /** * Also generate `rent_plot`: a TTL grant priced by the plot's `rent_price` * property, expiring after `rent_ttl_seconds`. Defaults to false. */ rentable?: boolean; /** * Extra policy rule AND'ed into `buy_plot` — e.g. * `featureGate('land_owner')` to sell land only to a paid tier. */ buyPolicyExtra?: KitInvokePolicy; /** Extra policy rule AND'ed into `rent_plot`. */ rentPolicyExtra?: KitInvokePolicy; /** * How the `owner_user_id` mirrors are typed on the plot AND the wallet * (see the kit owner-mirroring convention). Defaults to `'int'` (the kit * standard); set `'string'` for models that mirrored owners as strings * (e.g. Blocks with Friends) — generated guards then compare via * `to_string($caller_user_id)`, buying writes the owner as a string, and * an empty string means "for sale". */ ownerIdKind?: KitOwnerIdKind; } /** Names derived by {@link plotBlueprint} for a given plot type. */ export interface PlotNames { plotType: string; buyFn: string; rentFn: string; evictFn: string; } /** Compute the type/function names a plot blueprint (and its runtime helper) uses. */ export declare function plotNames(typeName?: string): PlotNames; /** * Blueprint for **sellable/rentable land**: a `Plot` container mapping a world * [grid](../../domains/gameApps.js) to a price, whose `buy`/`rent` functions * consume currency AND grant runtime grid permissions in one transaction (via * permission effects) — the canonical read+write permission loop. Buying sets * the plot's `owner_user_id`; renting grants with a TTL; `evict` revokes. * The grants are enforced by the replication layer on movement/voxel writes * immediately at commit. Requires game-api v0.13.11+ (effects) — pair with * chunk-permission locks (v0.13.12+) for doors that honor the purchase. * * Runtime counterpart: `client.kit(appId).plots`. */ export declare function plotBlueprint(options?: PlotBlueprintOptions): KitBlueprint; //# sourceMappingURL=plots.d.ts.map