/** * `payments.menuItem` — single drop-in entry for `botMenu({ items: […] })`. * * Label, style, and submenu adapt to the user's current state via live * resolvers reading `ctx.session.pay.*` (see `bot/CLAUDE.md` § "Snapshot * vs live derives"). The plugin owns the whole submenu — bot author * just adds `payments.menuItem` to their items array. * * Submenu shape (v1): * * /settings → 💎 VIP * ├── ── tier cards ── * │ [💎 VIP — 500 ⭐] buy / current state via style * │ [🌟 VIP Max — 2000 ⭐] * ├── ── credits packs (if axis used) ── * │ [💬 +100 — 100 ⭐] * │ [💬 +500 — 400 ⭐] * ├── ── perks (if axis used) ── * │ [🎁 Voice mode — 1500 ⭐] hidden when owned * ├── ── manage (when vip active) ── * │ [⛔ Cancel renewal] or [↩️ Resume renewal] when canceled * ├── 💬 Help / refunds → ctx.send(paysupport blurb) * ├── ⬅️ Back ✖️ Close (botMenu auto-renders these in submenus) * * What's deliberately NOT here yet: * * - Per-charge **History** view + in-menu refund request. The compliance * surface (`/paysupport` + admin-mediated refund) is fulfilled by * the admin commands and the message-side flow in `refund.ts`. The * history UI is a v2 follow-up (see CLAUDE.md §"Open follow-ups"). * * - Deep-link `require()` → exact rung. v1 opens VIP root; deep-linking * needs menu-state encoding in callback data. */ import type { MenuItem } from "../menu.js"; import type { BotPaymentsConfig, ProductCatalog } from "./types.js"; export declare const buildPaymentsMenuItem: (args: { cfg: BotPaymentsConfig; catalog: ProductCatalog; }) => MenuItem; //# sourceMappingURL=menu-item.d.ts.map