HatchedDocs
Reference

SDK (JavaScript / TypeScript)

Complete method reference for @hatched/sdk-js — HatchedClient, resources, error classes.

Package: @hatched/sdk-js

pnpm add @hatched/sdk-js

HatchedClient

Official Hatched SDK client for JavaScript/TypeScript.

Server-side (secret key):

const hatched = new HatchedClient({
  apiKey: process.env.HATCHED_API_KEY!,
});
const egg = await hatched.eggs.create({ userId: 'user_designer_priya' });
await hatched.eggs.updateStatus(egg.eggId, 'ready');
const op = await hatched.eggs.hatch(egg.eggId);

Browser (publishable key, scoped):

const hatched = new HatchedClient({
  publishableKey: 'hatch_pk_xxxxxxxx',
});
const buddy = await hatched.buddies.get('bdy_abc');

HatchedClient.health()

health()

Health check; returns API status metadata.

HatchedClient.getRateLimitInfo()

getRateLimitInfo()

Latest X-RateLimit-* snapshot from the most recent response.

HatchedClient.getLastRequestId()

getLastRequestId(): string | null

Request id of the most recent response (for support correlation).

HatchedClient.getLastRetryMetadata()

getLastRetryMetadata()

Retry metadata from the most recent request. attempts === 1 means the call succeeded on the first try; higher means at least one retry happened. Useful for tracing and observability:

await hatched.events.send({ eventId, userId: 'user_42', type: 'lesson_completed' });
const retry = hatched.getLastRetryMetadata();
if (retry && retry.attempts > 1) {
  logger.info({ attempts: retry.attempts, reasons: retry.reasons });
}

EggsResource

EggsResource.create()

create(params: CreateEggParams, signal?: AbortSignal): Promise<Egg>

Creates a new pending egg bound to an external user. New eggs start in waiting; call updateStatus(eggId, 'ready') before hatch(). Pass ensure: true during a first-run bootstrap to reuse the user's existing waiting/ready egg instead of creating one.

@example

// Greenwave Learning Co. — a new instructional designer joins the workspace.
const egg = await hatched.eggs.create({ userId: 'user_designer_priya' });
await hatched.eggs.updateStatus(egg.eggId, 'ready');

// Multi-audience workspace: bind the buddy to the right audience up front
// so audience-scoped widgets (streak/badges/marketplace) resolve.
await hatched.eggs.create({ userId: 'user_rep_amir', audience: 'sales_rep', ensure: true });

EggsResource.get()

get(eggId: string, signal?: AbortSignal): Promise<Egg>

Fetches the canonical state of a single egg.

EggsResource.list()

list(params: ListEggsParams = {}): Promise<Egg[]>

Lists eggs with optional filters.

EggsResource.updateStatus()

updateStatus(eggId: string, status: 'ready' | 'cancelled', signal?: AbortSignal): Promise<EggStatusChange>

Transitions an egg to ready or cancelled. The API only permits ready and cancelled terminal statuses via this endpoint.

EggsResource.hatch()

hatch(eggId: string, signal?: AbortSignal): Promise<HatchResult>

Kicks off an async hatch operation. Poll the returned operationId via operations.wait() to resolve when the buddy art is ready. The egg must already be in ready status.

BuddiesResource

BuddiesResource.get()

get(buddyId: string, signal?: AbortSignal): Promise<Buddy>

Fetches a buddy by id.

BuddiesResource.list()

list(params: BuddyListParams = {}): Promise<BuddyList>

Lists buddies with optional filters.

@example

// Greenwave Learning Co. — list the first page of active buddies.
const { data: buddies } = await hatched.buddies.list({
  status: 'active',
  limit: 25,
});

BuddiesResource.updateName()

updateName(buddyId: string, name: string, signal?: AbortSignal): Promise<Buddy>

BuddiesResource.archive()

archive(buddyId: string, signal?: AbortSignal): Promise<Buddy>

BuddiesResource.updateSkills()

updateSkills(buddyId: string, updates: SkillUpdate[], signal?: AbortSignal)

BuddiesResource.earn()

earn(buddyId: string, params: EarnCoinsParams, idempotencyKey?: string, signal?: AbortSignal)

Adds coins to a buddy's ledger for a given reason. Alias: BuddiesResource.earnCoins.

BuddiesResource.spend()

spend(buddyId: string, params: SpendCoinsParams, idempotencyKey?: string, signal?: AbortSignal)

Debits coins from a buddy's ledger. Fails with InsufficientBalanceError if the buddy doesn't have enough.

BuddiesResource.awardBadge()

awardBadge(buddyId: string, badgeKey: string, reason?: string, signal?: AbortSignal)

BuddiesResource.getBadges()

getBadges(buddyId: string, signal?: AbortSignal): Promise<{ badges: Badge[] }>

BuddiesResource.equip()

equip(buddyId: string, params: EquipItemsParams, signal?: AbortSignal): Promise<EquipItemsResult>

Equips or unequips items on a buddy.

BuddiesResource.rerenderAppearance()

rerenderAppearance(buddyId: string, signal?: AbortSignal): Promise<RerenderAppearanceResult>

Regenerate the buddy's bare stage base image. Use after a hard generation failure or when appearance.status === 'failed' with code: 'needs_rerender'. Equipped items are removed from the rendered set; re-equip after the appearance returns to ready.

BuddiesResource.purchaseItem()

purchaseItem(buddyId: string, itemId: string, idempotencyKey?: string, signal?: AbortSignal)

BuddiesResource.getPurchasedItems()

getPurchasedItems(buddyId: string, signal?: AbortSignal)

BuddiesResource.getEvolution()

getEvolution(buddyId: string, signal?: AbortSignal)

BuddiesResource.evolve()

evolve(buddyId: string, signal?: AbortSignal)

Starts the async operation that advances a ready buddy to its next evolution stage. Use after events.send() returns effects.evolutionReady === true when auto-evolve is disabled.

BuddiesResource.getProgression()

getProgression(buddyId: string, signal?: AbortSignal)

BuddiesResource.tokens()

tokens(buddyId: string, signal?: AbortSignal): Promise<TokensSummary>

Typed token balances for a buddy, grouped into primary (spendable) and progression (accumulate-only). Returns null for either slot if the customer has not configured that kind.

BuddiesResource.evolutions()

evolutions(buddyId: string, params: { page?: number; limit?: number; signal?: AbortSignal } = {}): Promise<{
    data: BuddyEvolutionRecord[];
    pagination: { page: number; limit: number; total: number };
  }>

Paginated stage-transition timeline for a buddy (includes both prod and demo evolutions).

BuddiesResource.getUserSummary()

getUserSummary(userId: string, signal?: AbortSignal)

BuddiesResource.prestigeStatus()

prestigeStatus(signal?: AbortSignal): Promise<PrestigeStatus>

F4.3 Prestige Loop — whether the widget buddy can prestige right now. A widget-token endpoint: available: false means the tenant has not enabled the prestige loop; canPrestige: false carries the blocking reason. Read this to decide whether to surface a Prestige CTA.

BuddiesResource.prestige()

prestige(signal?: AbortSignal): Promise<PrestigeResult>

F4.3 Prestige Loop — prestige the widget buddy: reset it to evolution stage 0 in exchange for an incremented prestige level and a permanent prestige aura (Yu-kai Ch.9 #66 Crowning). A widget-token endpoint. Throws when the buddy fails any precondition (prestige_not_available).

EventsResource

EventsResource.send()

send(params: SendEventParams, signal?: AbortSignal): Promise<EventEffects>

Ingests a domain event. The same eventId returning twice yields the cached effect without re-applying rules.

@example

// Greenwave Learning Co. — Priya completed the week's module review.
const effects = await hatched.events.send({
  eventId: 'lesson_module_review_user_designer_priya_2026_05_03',
  userId: 'user_designer_priya',
  type: 'lesson_completed',
  properties: { score: 94, module: 'module_review_week_4' },
});

EventsResource.sendBatch()

sendBatch(events: SendEventParams[], signal?: AbortSignal): Promise<{ results: EventEffects[] }>

Sends a batch of events in a single call.

OperationsResource

OperationsResource.get()

get(operationId: string, signal?: AbortSignal): Promise<Operation<TResult>>

Fetches an operation's current status.

OperationsResource.wait()

wait(operationId: string, options: WaitOptions = {}): Promise<Operation<TResult>>

Polls an operation until it reaches a terminal status (completed, failed, or cancelled).

@throws Error if the operation doesn't finish before timeoutMs elapses. @example

await hatched.eggs.updateStatus(egg.eggId, 'ready');
const op = await hatched.eggs.hatch(egg.eggId);
const finished = await hatched.operations.wait(op.operationId);

OperationsResource.waitForCompletion()

waitForCompletion(operationId: string, options: { timeout?: number; interval?: number; signal?: AbortSignal } = {}): Promise<Operation<TResult>>

@deprecated Use OperationsResource.wait instead.

WidgetSessionsResource

WidgetSessionsResource.create()

create(params: CreateSessionParams, signal?: AbortSignal): Promise<SessionToken>

Mints a short-lived widget session token for browser/interactive widgets. Never ship a secret API key to the browser — always go through this endpoint.

WidgetSessionsResource.revoke()

revoke(sessionId: string, signal?: AbortSignal): Promise<void>

EmbedTokensResource

EmbedTokensResource.create()

create(params: CreateEmbedTokenParams, signal?: AbortSignal): Promise<EmbedToken>

Mints a signed token for a read-only embedded widget.

WebhooksResource

WebhooksResource.list()

list(signal?: AbortSignal): Promise<WebhookEndpoint[]>

Lists webhook endpoints registered for the current customer.

WebhooksResource.create()

create(params: CreateWebhookParams, signal?: AbortSignal): Promise<WebhookEndpoint>

Registers a new webhook endpoint.

WebhooksResource.delete()

delete(endpointId: string, signal?: AbortSignal): Promise<void>

Deletes a webhook endpoint.

WebhooksResource.deliveries()

deliveries(params: ListDeliveriesParams): Promise<Page<WebhookDelivery>>

Lists recent deliveries for a given endpoint.

WebhooksResource.replay()

replay(endpointId: string, deliveryId: string, signal?: AbortSignal): Promise<unknown>

Replays a specific delivery attempt.

WebhooksResource.rotateSecret()

rotateSecret(endpointId: string, signal?: AbortSignal): Promise<{ secret: string }>

Rotates the signing secret on a webhook endpoint. Returns the new plaintext secret — store it before the response goes out of scope.

Recommended rollout: deploy your handler with verifySignature set to accept BOTH the old and new secret simultaneously, then call rotateSecret(). After every host has the new secret in its environment, remove the old one from the verifier list. See the rotation playbook.

WebhooksResource.redeliver()

redeliver(endpointId: string, deliveryId: string, signal?: AbortSignal): Promise<unknown>

Re-enqueues a stored webhook delivery.

WebhooksResource.verifySignature()

static verifySignature(rawBody: string | Buffer, signatureHeader: string, secret: string | readonly string[], options: VerifySignatureOptions = {}): boolean

Verifies the X-Hatched-Signature header for a webhook payload.

Hatched signs ${timestamp}.${rawBody} with HMAC-SHA256 and sends:

  • X-Hatched-Signature: sha256=<hex>
  • X-Hatched-Timestamp: <unix_seconds> ← pass via options.timestamp

Pass the raw request body bytes (not the parsed JSON) — any reformatting will invalidate the signature. Prefer the framework adapters in @hatched/sdk-js/webhooks, which extract both headers and the raw body for you.

secret accepts either a single string or an array — pass an array during a secret-rotation window so the verifier accepts payloads signed by either the previous or the new secret.

@example

const valid = WebhooksResource.verifySignature(
  rawBody,
  req.headers['x-hatched-signature'],
  process.env.HATCHED_WEBHOOK_SECRET!,
  { timestamp: req.headers['x-hatched-timestamp'] },
);
if (!valid) return new Response('invalid signature', { status: 400 });

HatchedError

Base class for every error raised by the Hatched SDK. Every subclass carries the HTTP status, stable error code, optional details payload, and the request id the API echoed back for support correlation.

No public methods.

AuthError

Shared base for 401/403 responses.

No public methods.

UnauthorizedError

No public methods.

ForbiddenError

No public methods.

PublishableKeyScopeError

Raised when a request uses a publishable key for an operation the publishable key is not scoped for (e.g. mutation endpoints).

No public methods.

WidgetTokenScopeError

Raised when a widget-token client tries to call a non-widget-token mutation. Widget tokens are scoped to one buddy/session.

No public methods.

NotFoundError

No public methods.

ValidationError

No public methods.

RateLimitError

No public methods.

InsufficientBalanceError

No public methods.

TooManyItemsError

Raised when an equip request asks the buddy to wear more items than the image compositing pipeline can reliably render. The current cap is four — the SDK surfaces max and attempted on details so callers can show a precise error to the end-user.

No public methods.

CategoryConflictError

Raised when an equip request tries to put two items in the same category slot (e.g. two head items). Only the accessory category allows stacking.

No public methods.

ConflictError

No public methods.

ConfigVersionMismatchError

Raised when a buddy is pinned to a config version that does not match the one the caller expected (e.g. after a migration race).

No public methods.

NoPublishedConfigError

Raised by POST /eggs (and the bootstrap flow) when the customer has not published a config version yet. details.publish_url points at the dashboard publish page.

No public methods.

ActiveEggLimitError

Raised when POST /eggs would exceed the per-user active-egg cap. details.active lists the existing eggs (id + status) so you can hatch or cancel one — or retry the create with ?ensure=true to reuse one.

No public methods.

UpstreamImageError

No public methods.

CreditInsufficientError

Raised when an AI / generative request cannot be authorised because the customer has no available credits across any pool. The details object includes the amount required and what remains in each pool, plus a URL the caller can redirect to so the end-customer can top up.

No public methods.

EventQuotaExceededError

Raised when a POST /events call would push the customer over the monthly event quota allowed by their plan. reset_at is an ISO timestamp for the first of the next UTC month; callers should back off until then or upgrade.

No public methods.

PlanFeatureLockedError

Raised when the customer's plan does not include the requested feature (e.g. a Free tier customer trying to use the marketplace API). The SDK surfaces which plan is required so callers can prompt an upgrade.

No public methods.

PlayersResource

Player Zero — the reserved per-workspace demo player (user_id "player-0").

Every dashboard widget preview binds to this buddy, and it is the recommended first test user during integration: send events as player-0 and watch them land without polluting real user data.

PlayersResource.zero()

zero(signal?: AbortSignal): Promise<PlayerZeroResult>

Create-or-get the workspace demo player. Idempotent: a second call returns the existing buddy with created: false. Instant — returns a safe placeholder image first, then Hatched queues a background base render so Player Zero settles into the workspace's visual style.

@example

const { buddy } = await hatched.players.zero();
await hatched.events.ingest({
  userId: buddy.userId, // "player-0"
  type: 'lesson.completed',
  eventId: 'evt_demo_1',
});

PlayersResource.zeroStatus()

zeroStatus(signal?: AbortSignal): Promise<PlayerZeroStatus>

Read Player Zero's status without provisioning it. Never creates the player — safe for polling (e.g. an activation checklist).

GatesResource

Generic spend-to-unlock primitive. Customers define gates in their dashboard (gate_key, token_key, cost, metadata). A buddy calls unlock to spend the configured token cost and flip the gate open — idempotent: repeat calls return alreadyUnlocked: true without touching the economy.

GatesResource.list()

list(signal?: AbortSignal): Promise<{ gates: TokenGate[] }>

Lists gates configured on this customer. Secret-key only.

GatesResource.unlock()

unlock(buddyId: string, gateKey: string, signal?: AbortSignal): Promise<UnlockResult>

Buddy spends gate.cost of gate.tokenKey to unlock gateKey. Fails with InsufficientBalanceError if the buddy lacks tokens and with ValidationError('progression_not_spendable') if the gate references a progression token.

GatesResource.unlocks()

unlocks(buddyId: string, signal?: AbortSignal): Promise<{ unlocks: BuddyUnlock[] }>

List gates a buddy has unlocked.

PathsResource

Guided journey primitive — a path is an ordered list of steps; each step holds an ordered list of sub-steps with an optional completion condition. Sub-step completions advance the buddy through the path automatically (rule-engine) or manually via completeSubStep.

The HttpClient auto-converts wire snake_case → camelCase on every response, so resource methods read camelCase fields directly without an intermediate DTO mapping layer.

PathsResource.list()

list(audience?: string, signal?: AbortSignal): Promise<PathDefinition[]>

PathsResource.get()

get(definitionId: string, signal?: AbortSignal): Promise<PathDefinitionWithSteps>

PathsResource.create()

create(params: CreatePathDefinitionParams, signal?: AbortSignal): Promise<PathDefinition>

PathsResource.update()

update(definitionId: string, params: UpdatePathDefinitionParams, signal?: AbortSignal): Promise<PathDefinition>

PathsResource.delete()

delete(definitionId: string, signal?: AbortSignal): Promise<void>

PathsResource.setActive()

setActive(definitionId: string, isActive: boolean, signal?: AbortSignal): Promise<PathDefinition>

Atomic single-active activation: deactivates every other path on the same (customer, audience) in a single transaction.

PathsResource.addStep()

addStep(definitionId: string, params: CreatePathStepParams, signal?: AbortSignal): Promise<PathStep>

PathsResource.updateStep()

updateStep(definitionId: string, stepId: string, params: UpdatePathStepParams, signal?: AbortSignal): Promise<PathStep>

PathsResource.deleteStep()

deleteStep(definitionId: string, stepId: string, signal?: AbortSignal): Promise<void>

PathsResource.reorderSteps()

reorderSteps(definitionId: string, ordering: Array<{ id: string; ordinal: number }>, signal?: AbortSignal): Promise<PathStep[]>

PathsResource.addSubStep()

addSubStep(definitionId: string, stepId: string, params: CreatePathSubStepParams, signal?: AbortSignal): Promise<PathSubStep>

PathsResource.updateSubStep()

updateSubStep(definitionId: string, stepId: string, subStepId: string, params: UpdatePathSubStepParams, signal?: AbortSignal): Promise<PathSubStep>

PathsResource.deleteSubStep()

deleteSubStep(definitionId: string, stepId: string, subStepId: string, signal?: AbortSignal): Promise<void>

PathsResource.reorderSubSteps()

reorderSubSteps(definitionId: string, stepId: string, ordering: Array<{ id: string; ordinal: number }>, signal?: AbortSignal): Promise<PathSubStep[]>

PathsResource.getForBuddy()

getForBuddy(buddyId: string, pathKey: string, signal?: AbortSignal): Promise<PathRuntimePayload>

PathsResource.completeSubStep()

completeSubStep(buddyId: string, pathKey: string, subStepKey: string, signal?: AbortSignal): Promise<ManualCompleteResult>

Manually mark a sub-step complete. Idempotent on (buddy, sub-step). Returns cascade flags so callers can paint celebrations without an extra round-trip.

MarketplaceResource

MarketplaceResource.list()

list(params: MarketplaceListParams = {}): Promise<MarketplaceListResponse>

Lists widget marketplace items visible to the current buddy/session.

MarketplaceResource.gift()

gift(params: GiftItemParams): Promise<GiftItemResult>

F2.4 Social Treasure — gift a marketplace item to a teammate. The current buddy pays; the item lands in the recipient's inventory with gift metadata. Works for gift-only and ordinary items alike. Throws a 402-class error when the sender is short on coins; returns duplicate: true when the same gift is re-sent inside the 60s accident-click window.

MarketplaceResource.previewOutfit()

previewOutfit(slotItemMap: SlotItemMap, signal?: AbortSignal): Promise<OutfitPreviewResponse>

Previews a slot-to-item outfit without mutating the buddy. Returns a ready cached variant or a pending variant id for polling.

MarketplaceResource.compositionStatus()

compositionStatus(variantId: string, signal?: AbortSignal): Promise<CompositionStatusResponse>

Polls an outfit composition variant until it is ready or failed.

MarketplaceResource.listOutfits()

listOutfits(signal?: AbortSignal): Promise<OutfitListResponse>

Lists saved outfits for the current buddy/session.

MarketplaceResource.saveOutfit()

saveOutfit(params: SaveOutfitParams, idempotencyKey?: string, signal?: AbortSignal): Promise<OutfitSummary>

Saves a named outfit for the current buddy/session.

MarketplaceResource.activateOutfit()

activateOutfit(outfitId: string, signal?: AbortSignal): Promise<ActivateOutfitResponse>

Activates a saved outfit and delegates to the equip pipeline.

MarketplaceResource.deleteOutfit()

deleteOutfit(outfitId: string, signal?: AbortSignal): Promise<DeleteOutfitResponse>

Deletes a saved outfit for the current buddy/session.

BadgesResource

BadgesResource.list()

list(params: BadgeListParams = {}): Promise<BadgeListResponse>

Lists the current widget buddy's earned and locked badge catalog.

LeaderboardResource

LeaderboardResource.get()

get(params: LeaderboardParams = {}): Promise<LeaderboardResponse>

Returns the current widget buddy's leaderboard in top, around-me, or hybrid mode. Pass scope: 'team' to restrict to the buddy's active team roster.

NextBestActionResource

NextBestActionResource.get()

get(signal?: AbortSignal): Promise<NextBestActionResponse>

HTCH-26 — Returns the single highest-priority next-best-action for the widget session's buddy. Cached server-side for 30s per buddy.

TeamsResource

F2.1 Teams — widget-token resource. Lets an embedded buddy see its team and leave it. Admin team CRUD lives in the dashboard, not the SDK.

TeamsResource.me()

me(signal?: AbortSignal): Promise<MyTeamResponse>

The current widget buddy's team, role and members (PII-filtered).

TeamsResource.leave()

leave(teamId: string, signal?: AbortSignal): Promise<{ left: boolean }>

Leave a team. A sole lead is rejected with a single_lead_cannot_leave conflict until another lead is promoted.

KudosResource

F2.3 Kudos — widget-token resource. Lets an embedded buddy send peer recognition and read its recent received / given kudos. A send 429s when the workspace daily cap is reached; the thrown error carries retry_after_seconds.

KudosResource.send()

send(params: SendKudosParams): Promise<SentKudos>

Send a kudos to a teammate.

@example

// Greenwave Learning Co. — a senior designer recognises a junior's question.
await hatched.kudos.send({
  toBuddyId: 'buddy_priya_buddy',
  kudoTypeKey: 'patient_teacher',
  message: 'Your follow-up on the module review walkthrough was exactly the prompt I needed.',
});

KudosResource.types()

types(signal?: AbortSignal): Promise<KudoTypeView[]>

The effective kudo taxonomy for the composer's type picker.

KudosResource.received()

received(limit = 10, signal?: AbortSignal): Promise<KudosFeedEntry[]>

The buddy's most recent received kudos (Trophy Shelf).

KudosResource.given()

given(limit = 10, signal?: AbortSignal): Promise<GivenKudosResponse>

The buddy's most recent sent kudos plus the lifetime assist count.

GroupQuestsResource

F2.5 Group Quest — widget-token resource. Lets an embedded buddy list the active quests visible to it, opt in (join) and reconsider (leave).

Gated by the group_quest plan feature — calls 403 with plan_feature_locked on a workspace whose plan does not entitle Group Quest.

GroupQuestsResource.list()

list(signal?: AbortSignal): Promise<ActiveGroupQuest[]>

The active quests visible to the current buddy.

GroupQuestsResource.join()

join(questId: string, signal?: AbortSignal): Promise<JoinGroupQuestResult>

Join a quest. Idempotent — a second join returns already_joined: true with no further write.

GroupQuestsResource.leave()

leave(questId: string, signal?: AbortSignal): Promise<LeaveGroupQuestResult>

Leave a quest. The buddy's prior contribution stays counted toward the team's progress — only the roster membership is removed.

AdminGroupQuestsResource

F2.5 Group Quest — tenant admin resource (secret key / dashboard JWT). Backs the Planner "Group Quest" drawer: CRUD, the publish transition, and the manual forceResolve watchdog override.

AdminGroupQuestsResource.list()

list(params: { status?: GroupQuestStatus; teamId?: string } = {}, signal?: AbortSignal): Promise<AdminGroupQuest[]>

List the tenant's quests, optionally filtered by status / team.

AdminGroupQuestsResource.create()

create(params: CreateGroupQuestParams, signal?: AbortSignal): Promise<AdminGroupQuest>

Create a quest (always starts as a draft).

AdminGroupQuestsResource.update()

update(questId: string, params: UpdateGroupQuestParams, signal?: AbortSignal): Promise<AdminGroupQuest>

Patch a quest — draft fields, active deadline-extension, or cancel.

AdminGroupQuestsResource.publish()

publish(questId: string, signal?: AbortSignal): Promise<AdminGroupQuest>

Publish a draft quest (draft → active).

AdminGroupQuestsResource.delete()

delete(questId: string, signal?: AbortSignal): Promise<void>

Delete a quest — only draft or cancelled quests may be removed.

AdminGroupQuestsResource.forceResolve()

forceResolve(questId: string, signal?: AbortSignal): Promise<ForceResolveResult>

HTCH-56 — manually resolve an active quest now, overriding the cron watchdog. Distributes rewards on a hit, closes blame-free on a miss.

MentorResource

F2.6 Mentorship (visibility-only) — widget-token resource. The buddy toggles its own mentor availability, reads a team's available mentors, and self-reports mentoring hours. Hatched counts status and renders a contact deep link; it never matches, pairs, or messages.

MentorResource.setAvailability()

setAvailability(params: { available: boolean; signal?: AbortSignal }): Promise<{ available: boolean }>

Toggle the current buddy's mentor availability flag.

MentorResource.teamMentors()

teamMentors(teamId: string, signal?: AbortSignal): Promise<MentorDirectoryEntry[]>

List a team's available mentors with contact deep links.

MentorResource.logSession()

logSession(params: LogSessionParams): Promise<LogSessionResult>

Self-report a mentoring session (honor system).

MentorResource.sessionsForMe()

sessionsForMe(signal?: AbortSignal): Promise<MentorSessionsResponse>

The buddy's recent mentor sessions plus all-time / season hour totals.

BragResource

HTCH-60 — F2.7 Brag Button — widget-token resource.

Records the share funnel (consent modal opened → channel clicked → post sent → dismissed) and dispatches a Slack/Teams webhook post. Every call here corresponds to an explicit user action in the consent modal — there is no auto-share path (Codex ethics rule).

BragResource.recordTelemetry()

recordTelemetry(params: RecordBragTelemetryParams): Promise<BragTelemetryResult>

Record one brag funnel event for the HTCH-61 Planner telemetry tab. Best-effort — the server never fails the share flow on a telemetry write.

BragResource.sendSlackPost()

sendSlackPost(params: SendBragSlackPostParams): Promise<BragSlackPostResult>

Send a Win-State brag to the tenant's configured Slack/Teams incoming webhook. Only call this after the user pressed "Send" in the consent modal. Throws webhook_failed when delivery times out or is rejected.

TeamEventsResource

HTCH-63 — F2.11 SeeSaw Bump feed — teamEvents sub-resource.

Lists the buddy's team feed and toggles the idempotent 👏 clap. Clapping is one-per-buddy; a repeat call unclaps. Self-clap is rejected with a 400 self_clap_forbidden.

TeamEventsResource.list()

list(params: ListTeamEventsParams = {}): Promise<TeamEventsPage>

The buddy's team feed — cursor-paginated, newest first.

TeamEventsResource.clap()

clap(eventId: string, signal?: AbortSignal): Promise<ClapResult>

Toggle a 👏 clap on a feed item. Idempotent — a repeat call unclaps.

FeedResource

HTCH-63 — F2.11 SeeSaw Bump feed — top-level feed resource.

Namespaces the teamEvents sub-resource so the public surface reads client.feed.teamEvents.list(...) / client.feed.teamEvents.clap(id).

No public methods.

SocialNormsResource

HTCH-62 — F2.9 Social Norm — widget-token resource.

Reads the buddy's positive-framing team norms for today. Yu-kai Ch.9, the Petrified Forest study: negative descriptive norms are structurally forbidden, and norms below the believability floor are silently skipped server-side. A buddy with no active team gets an empty norms array.

SocialNormsResource.today()

today(signal?: AbortSignal): Promise<SocialNormsTodayResponse>

The current widget buddy's positive-framing team norms for today.

CausesResource

F2.12 Symbolic Cause Counter — tenant admin resource (secret key / dashboard JWT). Backs the Planner "Humanity Hero — Cause Counter" drawer: CRUD plus the 30-day believability simulation.

CausesResource.list()

list(signal?: AbortSignal): Promise<AdminCause[]>

List the tenant's cause definitions.

CausesResource.create()

create(params: CreateCauseParams, signal?: AbortSignal): Promise<AdminCause>

Create a cause definition (disabled by default).

CausesResource.update()

update(causeId: string, params: UpdateCauseParams, signal?: AbortSignal): Promise<AdminCause>

Patch a cause definition.

CausesResource.delete()

delete(causeId: string, signal?: AbortSignal): Promise<void>

Delete a cause definition.

CausesResource.preview30Days()

preview30Days(causeId: string, signal?: AbortSignal): Promise<CausePreview>

Project how many symbolic units the current config would have produced from the last 30 days of eligible events — the believability simulation shown in the Planner drawer.

FoundingCohortResource

F2.13 Founding Cohort — tenant admin resource (secret key / dashboard JWT). Backs the Planner "Founding Cohort" drawer: the eligibility preview, the one-shot retroactive backfill, and the assignment history. The cohort config itself is read and written through the feature-config surface.

FoundingCohortResource.preview()

preview(signal?: AbortSignal): Promise<FoundingCohortPreview>

Project how many buddies the current config would mark.

FoundingCohortResource.backfill()

backfill(signal?: AbortSignal): Promise<FoundingCohortBackfillResult>

Retroactively mark every currently-eligible buddy (idempotent).

FoundingCohortResource.listAudit()

listAudit(page = 1, signal?: AbortSignal): Promise<{
    entries: FoundingCohortAuditEntry[];
    page: number;
    has_more: boolean;
  }>

Paginated Founding Cohort assignment history.

FlashSalesResource

F3.9 Marketplace FOMO — tenant admin resource (secret key / dashboard JWT). Backs the Planner "Marketplace FOMO" drawer: list, schedule and cancel flash sales. The API runs a once-a-minute cron that starts scheduled sales and ends running ones; at most one sale runs per tenant at a time.

FlashSalesResource.list()

list(signal?: AbortSignal): Promise<FlashSale[]>

List the tenant's flash sales — scheduled, running and recently ended.

FlashSalesResource.schedule()

schedule(params: ScheduleFlashSaleParams): Promise<FlashSale>

Schedule a flash sale. Rejects a past start time or an overlapping window.

FlashSalesResource.cancel()

cancel(saleId: string, signal?: AbortSignal): Promise<FlashSale>

Cancel a scheduled or running sale. A running sale's temporary discounts are cleared and flash_sale.ended fires, exactly as a natural end would.

LotteryResource

F3.11 Lottery (Rolling Reward) — tenant admin resource (secret key / dashboard JWT). Backs the Planner "Lottery" drawer: list and CRUD, the past-draw history, the live "Next draw" preview and a non-persisted draw simulation. The API runs a once-a-minute cron that resolves due draws.

LotteryResource.list()

list(signal?: AbortSignal): Promise<LotteryDefinition[]>

List the tenant's lottery definitions (active and paused).

LotteryResource.create()

create(params: CreateLotteryParams): Promise<LotteryDefinition>

Create a lottery definition.

LotteryResource.update()

update(lotteryId: string, params: UpdateLotteryParams): Promise<LotteryDefinition>

Update a lottery definition.

LotteryResource.delete()

delete(lotteryId: string, signal?: AbortSignal): Promise<void>

Soft-delete a lottery — past draws stay queryable.

LotteryResource.draws()

draws(lotteryId: string, signal?: AbortSignal): Promise<LotteryDraw[]>

Past draw history for a lottery, newest first.

LotteryResource.previewNextDraw()

previewNextDraw(lotteryId: string, signal?: AbortSignal): Promise<LotteryNextDrawPreview>

Current-period entry count and the next scheduled draw time.

LotteryResource.simulateDraw()

simulateDraw(lotteryId: string, signal?: AbortSignal): Promise<SimulatedLotteryDraw>

Simulate a draw with the current entries — grants nothing.

EventBadgesResource

F3.13 Event-Triggered Badge (Yu-kai Ch.11 #30 Easter Egg) — tenant admin resource (secret key / dashboard JWT). Backs the Planner "Surprise badge campaign" drawer: list with grant counts, create, update and delete. A campaign binds a badge to a time window; any buddy active inside the window earns the badge once.

EventBadgesResource.list()

list(signal?: AbortSignal): Promise<EventBadgeCampaign[]>

List the tenant's campaigns, newest window first, with grant counts.

EventBadgesResource.create()

create(params: CreateEventBadgeParams): Promise<EventBadgeDefinition>

Create an event-triggered badge campaign.

EventBadgesResource.update()

update(campaignId: string, params: UpdateEventBadgeParams): Promise<EventBadgeDefinition>

Update an event-triggered badge campaign.

EventBadgesResource.delete()

delete(campaignId: string, signal?: AbortSignal): Promise<void>

Delete an event-triggered badge campaign.

ProfileTemplatesResource

F3.14 Profile Page Editor v2 (Yu-kai Ch.7 #11 Meaningful Choices) — tenant admin resource (secret key / dashboard JWT). Backs the Planner "Profile Page v2" drawer: the template gallery + CRUD, and the bulk-apply wizard that assigns a template to many buddies in one call. Plan-gated on profile_pages_v2 (GROWTH+).

ProfileTemplatesResource.list()

list(signal?: AbortSignal): Promise<ProfileTemplateList>

List the gallery — built-in system templates plus the tenant's own.

ProfileTemplatesResource.create()

create(params: CreateProfileTemplateParams): Promise<ProfileTemplate>

Create a custom profile-page template.

ProfileTemplatesResource.update()

update(templateId: string, params: UpdateProfileTemplateParams): Promise<ProfileTemplate>

Update a custom profile-page template.

ProfileTemplatesResource.delete()

delete(templateId: string, signal?: AbortSignal): Promise<void>

Delete a custom template — its buddies revert to the tenant default.

ProfileTemplatesResource.applyBulk()

applyBulk(params: BulkApplyProfileTemplateParams): Promise<{ applied: number }>

Assign a template to many buddies in one statement.

LeaguesResource

F4.1 LEAGUES — end-user widget resource. Reads the widget buddy's live league standing, the season-long Boss Fight challenge and, after a season closes, the personalized season-closing highlights. Backs the league widget and the season-closing ceremony.

LeaguesResource.me()

me(signal?: AbortSignal): Promise<LeagueWidgetSnapshot>

The widget buddy's live league standing for the active season.

LeaguesResource.bossFightProgress()

bossFightProgress(signal?: AbortSignal): Promise<BossFightProgressView>

The season-long Boss Fight challenge for the widget buddy — F4.2. The buddy's progress toward the season target, the deadline and the challenge leaderboard. An unavailable view means there is no active boss fight.

LeaguesResource.seasonHighlights()

seasonHighlights(seasonId: string, signal?: AbortSignal): Promise<LeagueSeasonHighlightsSnapshot>

The buddy's personalized season-closing highlights for a finalized season — best week, kudos sent, items collected and cohort role.

LeaguesResource.latestSeasonHighlights()

latestSeasonHighlights(signal?: AbortSignal): Promise<LeagueSeasonHighlightsSnapshot>

The buddy's latest finalized season-closing highlights. Useful for widgets that should show the most recent ceremony without first resolving a concrete season id.

HexadSurveyResource

HTCH-142 — Marczewski Hexad survey, widget-token scoped. The buddy fetches the question catalog, submits Likert answers, reads their own stored response, or withdraws consent (DELETE /me).

The API is intentionally minimal — admin-only operations (audience recompute, aggregate views) are exposed through the dashboard, not the SDK. A widget-token client cannot reach them.

HexadSurveyResource.questions()

questions(signal?: AbortSignal): Promise<HexadSurveyQuestionsResponse>

Question catalog + current consent version.

HexadSurveyResource.submit()

submit(params: SubmitHexadSurveyParams): Promise<HexadSurveySubmitResult>

UPSERT the buddy's response — re-takes overwrite in place.

HexadSurveyResource.me()

me(signal?: AbortSignal): Promise<HexadSurveyMyResponse>

The buddy's latest survey row, or { response: null } when none.

HexadSurveyResource.deleteMine()

deleteMine(signal?: AbortSignal): Promise<void>

Withdraw consent: deletes the raw answers + derived scores. The next nightly aggregation absorbs the lower response count; audience-level aggregates are preserved.

AuthResource

client.auth.whoami() lets a tenant verify a key during onboarding, CI, or --health style scripts without performing a side-effectful call. It returns the identity of the calling credential, the plan, and the full capability list — no separate dashboard round-trip needed.

AuthResource.whoami()

whoami(signal?: AbortSignal): Promise<WhoamiResult>

NotificationsResource

HTCH-75 — F3.1 Notification primitive — widget-token resource. The HTCH-76 banner widget polls list (which folds in the unread badge count and the vacation paused_until) plus unreadCount, and drives the buddy's reads, dismissals and snoozes. The primitive is universally entitled — every Faz 3+ feature that emits a message writes into this one feed.

NotificationsResource.list()

list(params: ListNotificationsParams = {}): Promise<NotificationFeedPage>

The buddy's notification feed — cursor-paginated, newest first.

NotificationsResource.unreadCount()

unreadCount(signal?: AbortSignal): Promise<UnreadCountResult>

The unread, non-dismissed notification count for the badge.

NotificationsResource.dismissAll()

dismissAll(signal?: AbortSignal): Promise<DismissAllResult>

Read + dismiss every notification for the buddy in one call.

NotificationsResource.markRead()

markRead(id: string, signal?: AbortSignal): Promise<Notification>

Mark a single notification read. Returns the updated notification.

NotificationsResource.dismiss()

dismiss(id: string, signal?: AbortSignal): Promise<DismissResult>

Read + dismiss a single notification (HTCH-76).

NotificationsResource.snooze()

snooze(id: string, hours?: number, signal?: AbortSignal): Promise<Notification>

Snooze a notification for a number of hours, clamped server-side to the 1–24h band. hours defaults to 1 when omitted. Returns the updated notification.

MysteryBoxResource

HTCH-83 — F3.6 Mystery Box (Yu-kai Ch.11 Skinner Box) — widget-token resource. A once-a-day box: read getState to render it (eligible / capped / locked), then claim on tap. The daily cap of 1 is a hard-coded addiction guardrail that resets at UTC midnight; a claim past the cap throws a 409 whose body carries next_eligible_at. The draw is deterministically seeded per (buddy, UTC day), so it cannot be re-rolled.

MysteryBoxResource.getState()

getState(signal?: AbortSignal): Promise<MysteryBoxState>

The Mystery Box state for the current buddy.

MysteryBoxResource.claim()

claim(signal?: AbortSignal): Promise<MysteryBoxClaimResult>

Open the Mystery Box. Throws a 409 (mystery_box_daily_cap) when the daily cap is already spent.

CouncilResource

HTCH-108 — F4.6 Council Elitism — widget-token resource. A Council member proposes user-facing narrative copy and tracks their own submissions (Yu-kai Ch.7 #2 Elitism + #1 Narrative co-creation). Membership is the gate: submitProposal rejects non-members with not_council_member, and a non-enterprise tenant never has members. Over the weekly quota a submit throws a 429 (rate_limited).

CouncilResource.listMyProposals()

listMyProposals(signal?: AbortSignal): Promise<MyProposalsView>

The buddy's own narrative proposals plus their Council standing and remaining weekly quota.

CouncilResource.submitProposal()

submitProposal(params: SubmitProposalParams): Promise<Proposal>

Submit a narrative proposal. Council members only.

FreeLunchResource

HTCH-44 — F1.10 Free Lunch (Yu-kai #24) — widget-token resource. The buddy widget polls getNotification on mount to surface the unexpected welcome credit banner; dismissing it posts acknowledge, which closes the granted → seen → dismissed funnel so the banner does not reappear.

FreeLunchResource.getNotification()

getNotification(signal?: AbortSignal): Promise<FreeLunchNotification>

The buddy's most recent unacknowledged Free Lunch grant, or has_pending: false when there is nothing to show.

FreeLunchResource.acknowledge()

acknowledge(id: string, signal?: AbortSignal): Promise<FreeLunchAcknowledgeResult>

Acknowledge a Free Lunch banner so it does not reappear.

BeginnersLuckResource

HTCH-43 — Beginner's Luck reveal — widget-token resource. The hatch ceremony calls getResult once when the act-5 celebration mounts. The evaluation is idempotent (HTCH-41), so a refresh mid-ceremony resolves to the same outcome.

BeginnersLuckResource.getResult()

getResult(signal?: AbortSignal): Promise<BeginnersLuckResult>

Idempotently evaluate Beginner's Luck for the buddy's first hatch and return the winner-only reveal payload.

WidgetActivationResource

Loader-level activation beacons for widget-token clients. The CDN loader calls this after a widget mounts so activation emails, referrals and product analytics do not count a copied snippet until it really rendered.

WidgetActivationResource.recordRendered()

recordRendered(params: RecordWidgetRenderedParams = {}): Promise<WidgetRenderedResult>

Record that one or more widgets rendered successfully.

Configuration

These shapes describe the object passed to new HatchedClient({ ... }). The three auth-mode variants (ApiKeyConfig, PublishableKeyConfig, WidgetTokenConfig) are mutually exclusive — pick one and the other key fields are forbidden.

ApiKeyConfig

export interface ApiKeyConfig extends BaseConfig {
  /** Secret API key (hatch_live_*, hatch_test_*). Server-only. */
  apiKey: string;
  publishableKey?: never;
  widgetToken?: never;
}

PublishableKeyConfig

export interface PublishableKeyConfig extends BaseConfig {
  /** Browser-safe publishable key (hatch_pk_*). Scoped auth. */
  publishableKey: string;
  apiKey?: never;
  widgetToken?: never;
}

WidgetTokenConfig

export interface WidgetTokenConfig extends BaseConfig {
  /** Widget embed/session token minted by the server. Browser-safe, buddy-scoped. */
  widgetToken: string;
  apiKey?: never;
  publishableKey?: never;
}

HatchedClientConfig

export type HatchedClientConfig =
  | ApiKeyConfig
  | PublishableKeyConfig
  | WidgetTokenConfig;

Functions

Top-level helpers exported from @hatched/sdk-js. These are framework-agnostic utilities you can call without a HatchedClient instance.

paginate()

paginate(fetchPage: (page: number) => Promise<OffsetPage<T>>, options: PaginateOptions = {}): AsyncIterableIterator<T>

Walks an offset-paginated list endpoint, yielding each row as it arrives. fetchPage receives a 1-indexed page number and must return the offset envelope { data, meta }. For cursor-paginated endpoints, use paginateCursor instead.

@example

for await (const buddy of paginate(
  (page) => hatched.buddies.list({ page, limit: 100, status: 'active' }),
)) {
  if (buddy.id === target) break; // early-exit; iterator stops paging
}

paginateCursor()

paginateCursor(fetchPage: (cursor?: string) => Promise<CursorPage<T>>, options: PaginateOptions = {}): AsyncIterableIterator<T>

Walks a cursor-paginated list endpoint. fetchPage is invoked with undefined on the first call and the server-returned nextCursor on each subsequent call. Iteration stops automatically when pagination.nextCursor === null.

Cursor pagination is Hatched's canonical shape for new list endpoints — it's stable under concurrent writes and supports unbounded streams. For legacy offset endpoints, use paginate.

@example

for await (const op of paginateCursor(
  (cursor) => hatched.operations.list({ cursor, limit: 100 }),
)) {
  console.log(op.id);
}

collect()

collect(fetchPage: (page: number) => Promise<OffsetPage<T>>, options: PaginateOptions = {}): Promise<T[]>

Drains an offset-paginated list endpoint into a single array. Convenient for one-off scripts; prefer paginate in long-running code so you don't hold the entire result set in memory.

For cursor-paginated endpoints, use collectCursor.

@example

const allActive = await collect(
  (page) => hatched.buddies.list({ page, limit: 100, status: 'active' }),
);

collectCursor()

collectCursor(fetchPage: (cursor?: string) => Promise<CursorPage<T>>, options: PaginateOptions = {}): Promise<T[]>

Drains a cursor-paginated list endpoint into a single array. Convenient for one-off scripts; prefer paginateCursor in long-running code so you don't hold the entire result set in memory.

@example

const allOps = await collectCursor(
  (cursor) => hatched.operations.list({ cursor, limit: 100 }),
);

consoleLogger()

consoleLogger(): SdkLogger

Default logger — writes to console.warn for warn/error and to console.log for debug/info. Used when the host hasn't provided a logger but debug is on, or when the SDK needs to surface a warn-level message and the host left logger undefined.

verifyExpressRequest()

verifyExpressRequest(req: MinimalExpressRequest, secret: string | readonly string[], options: VerifyAdapterOptions = {}): VerifyResult

Verify the signature on an incoming Express request and return the parsed raw payload plus Hatched metadata headers. Pass req directly — the adapter reads req.headers, req.body (Buffer from express.raw()), or req.rawBody fallback.

verifyFastifyRequest()

verifyFastifyRequest(req: MinimalFastifyRequest, secret: string | readonly string[], options: VerifyAdapterOptions = {}): VerifyResult

verifyHonoRequest()

verifyHonoRequest(c: MinimalHonoContext, secret: string | readonly string[], options: VerifyAdapterOptions = {}): Promise<VerifyResult>

verifyNextAppRequest()

verifyNextAppRequest(req: MinimalFetchRequest, secret: string | readonly string[], options: VerifyAdapterOptions = {}): Promise<VerifyResult>

App Router (Route Handlers): pass the Request you received in POST(req).

verifyNextPagesRequest()

verifyNextPagesRequest(req: MinimalPagesRequest, rawBody: Buffer | string, secret: string | readonly string[], options: VerifyAdapterOptions = {}): VerifyResult

Pages Router (API Routes): pass (req) plus the raw body you captured yourself. Because Next disables raw bytes by default, read them with something like getRawBody(req) from the raw-body npm package.

Constants

Frozen exported values. Use them in switch statements and comparisons instead of re-typing string literals — the type system catches typos and renames.

ErrorCode

Canonical Hatched API error code strings, surfaced as a typed object so consumers can switch on err.code without re-typing literals.

Each value matches the error.code field in the API's JSON error envelope and the code property on every HatchedError subclass.

@example

import { ErrorCode, HatchedError } from '@hatched/sdk-js';

try {
  await hatched.events.send({ eventId, userId: 'user_42', type: 'lesson_completed' });
} catch (err) {
  if (err instanceof HatchedError) {
    switch (err.code) {
      case ErrorCode.EventQuotaExceeded: showUpgradeBanner(); break;
      case ErrorCode.RateLimited: queueRetry(err.retryAfter); break;
      case ErrorCode.PlanFeatureLocked: hideFeature(); break;
      default: throw err;
    }
  }
}

Adding new codes here is additive only — codes are part of the public contract and never renamed within a major version. If a new code ships, add a key to this object in a minor release.

export const ErrorCode = {
  // 400 — bad request
  BadRequest: 'bad_request',
  InsufficientBalance: 'insufficient_balance',
  TooManyItems: 'too_many_items',
  CategoryConflict: 'category_conflict',
  MissingAudience: 'missing_audience',
  UnknownAudience: 'unknown_audience',

  // 422 — validation
  ValidationFailed: 'validation_failed',

  // 401 / 403 — auth & scope
  Unauthorized: 'unauthorized',
  Forbidden: 'forbidden',
  PublishableKeyScope: 'publishable_key_scope',
  WidgetTokenScope: 'widget_token_scope',
  PlanFeatureLocked: 'plan_feature_locked',
  CapabilityDisabled: 'capability_disabled',

  // 402 — billing
  PaymentRequired: 'payment_required',
  CreditInsufficient: 'credit_insufficient',
  EventQuotaExceeded: 'event_quota_exceeded',
  OnboardingCapReached: 'onboarding_cap_reached',

  // 404 — not found
  ResourceNotFound: 'resource_not_found',
  NotFound: 'not_found',

  // 409 — conflicts
  Conflict: 'conflict',
  ConfigVersionMismatch: 'config_version_mismatch',
  NoPublishedConfig: 'no_published_config',
  ActiveEggLimit: 'active_egg_limit',
  IdempotencyKeyConflict: 'idempotency_key_conflict',

  // 429 — throttling
  RateLimited: 'rate_limited',

  // 502 — upstream
  UpstreamImageError: 'upstream_image_error',
  BadGateway: 'bad_gateway',

  // 503 — service unavailable
  ServiceUnavailable: 'service_unavailable',
  OnboardingExtractFailed: 'onboarding_extract_failed',

  // 500 — internal
  InternalServerError: 'internal_server_error',
} as const;

Types

NoPublishedConfigDetails

export interface NoPublishedConfigDetails {
  customerId?: string;
  customer_id?: string;
  publishUrl?: string;
  publish_url?: string;
  docsUrl?: string;
  docs_url?: string;
}

ActiveEggLimitEgg

export interface ActiveEggLimitEgg {
  eggId: string;
  status: string;
  createdAt: string;
}

ActiveEggLimitDetails

export interface ActiveEggLimitDetails {
  max?: number;
  active?: ActiveEggLimitWireEgg[];
}

CreditInsufficientDetails

export interface CreditInsufficientDetails {
  required?: number;
  available?: number;
  welcome?: number;
  paid?: number;
  promo?: number;
  upgrade_url?: string;
  top_up_url?: string;
}

EventQuotaExceededDetails

export interface EventQuotaExceededDetails {
  used?: number;
  limit?: number;
  reset_at?: string;
  upgrade_url?: string;
}

PlanFeatureLockedDetails

export interface PlanFeatureLockedDetails {
  feature?: string;
  required_plan?: string;
  current_plan?: string;
  upgrade_url?: string;
}

SdkLogger

Pluggable logger for the SDK.

The SDK emits four kinds of log lines:

  • debug — Request/response traces. Only emitted when HatchedClientConfig.debug === true.
  • info — Reserved; the SDK does not currently emit info lines, but downstream extensions (custom middleware) may.
  • warn — Non-fatal observations the SDK wants the operator to see regardless of debug: a literal-looking secret key, a retry hint, an unrecognized rate-limit header.
  • error — Reserved for unrecoverable conditions the SDK is about to throw. Errors are still thrown — logging is in addition.

All methods are optional. Provide only the ones you care about; the SDK checks for the method before calling it. This means you can pass a Pino/Winston/Bunyan instance directly without writing an adapter, as long as it has compatible debug / info / warn / error methods.

@example

import pino from 'pino';
const log = pino({ name: 'hatched' });
const hatched = new HatchedClient({
  apiKey: process.env.HATCHED_API_KEY!,
  logger: log,
});

@example

// Minimal "ignore debug, send warnings to Sentry" adapter
const hatched = new HatchedClient({
  apiKey: process.env.HATCHED_API_KEY!,
  debug: false,
  logger: {
    warn: (msg, fields) => Sentry.captureMessage(msg, { extra: fields }),
  },
});
export interface SdkLogger {
  debug?(message: string, fields?: Record<string, unknown>): void;
  info?(message: string, fields?: Record<string, unknown>): void;
  warn?(message: string, fields?: Record<string, unknown>): void;
  error?(message: string, fields?: Record<string, unknown>): void;
}

FetchLike

export type FetchLike = (input: string, init?: RequestInit) => Promise<Response>;

HttpClientConfig

export interface HttpClientConfig {
  baseUrl: string;
  apiKey?: string;
  publishableKey?: string;
  widgetToken?: string;
  timeout: number;
  maxRetries: number;
  debug: boolean;
  fetch?: FetchLike;
  userAgent: string;
  logger?: SdkLogger;
}

RateLimitSnapshot

export interface RateLimitSnapshot {
  limit?: number;
  remaining?: number;
  reset?: number;
  retryAfter?: number;
}

RetryMetadata

Snapshot of what the SDK retried while serving the most recent request.

attempts is always 1 for a request that succeeded on the first try; > 1 means at least one retry happened. reasons lists the trigger for each retry ('5xx', '429', '408', 'network'). totalDelayMs is the cumulative time spent in backoff waits, not including the requests themselves.

The snapshot is overwritten on every request. Read it immediately after the call returns, or pipe it into your tracing/observability layer via the logger config.

export interface RetryMetadata {
  attempts: number;
  reasons: Array<'5xx' | '429' | '408' | 'network'>;
  totalDelayMs: number;
  totalElapsedMs: number;
}

RequestOptions

export interface RequestOptions {
  headers?: Record<string, string>;
  idempotent?: boolean;
  signal?: AbortSignal;
  /** When false, skips automatic camelCase → snake_case mapping on the body. */
  mapCase?: boolean;
  /** Query parameters (camelCase; converted to snake_case on the wire). */
  query?: Record<string, string | number | boolean | undefined>;
  /**
   * Whether this endpoint accepts publishable keys. When `false` (default
   * for mutations) and the client is initialised with a publishable key,
   * the SDK throws `PublishableKeyScopeError` without a network round-trip.
   */
  allowPublishable?: boolean;
  /** Whether this endpoint accepts a widget embed/session token. */
  allowWidgetToken?: boolean;
}

EggStatus

export type EggStatus = 'waiting' | 'ready' | 'hatching' | 'hatched' | 'cancelled';

CreateEggParams

export interface CreateEggParams {
  /** The external user id that owns the egg. */
  userId: string;
  /**
   * Binds the egg — and the buddy it hatches into — to a named audience.
   * Audience-scoped content (streaks, badges, marketplace items) is keyed by
   * audience, so a buddy born in the wrong audience makes those widgets 404 or
   * render empty. Single-audience workspaces can omit this (the server binds the
   * sole configured audience automatically); multi-audience workspaces must set
   * it. This is shorthand for `metadata.audience` and takes precedence over it.
   */
  audience?: string;
  /** Free-form metadata attached to the egg. */
  metadata?: Record<string, unknown>;
  /**
   * When true, return the user's most recent `waiting`/`ready` egg if one
   * already exists instead of creating a new one (idempotent first-run
   * bootstrap; avoids hitting the per-user active-egg cap on retries).
   */
  ensure?: boolean;
}

Egg

export interface Egg {
  eggId: string;
  userId: string;
  status: EggStatus;
  visualVariant: number;
  configVersionId: string;
  /** The buddy hatched from this egg. Non-null once `status === 'hatched'`. */
  buddyId: string | null;
  metadata: Record<string, unknown>;
  createdAt: string;
}

EggStatusChange

export interface EggStatusChange {
  eggId: string;
  status: EggStatus;
  previousStatus: EggStatus;
}

HatchResult

export interface HatchResult {
  operationId: string;
  status: string;
}

ListEggsParams

export interface ListEggsParams {
  userId?: string;
  status?: EggStatus;
  page?: number;
  limit?: number;
  signal?: AbortSignal;
}

AuraTier

export type AuraTier = 'mythic' | 'legendary' | 'epic' | 'rare' | 'common';

Buddy

export interface Buddy {
  id: string;
  customerId: string;
  userId: string;
  audience: string;
  name: string;
  configVersionId: string;
  evolutionStage: number;
  coins: number;
  status: 'active' | 'archived';
  skills: Record<string, number>;
  tokens: Record<string, number>;
  progression?: BuddyProgression;
  imageUrl: string | null;
  baseImageUrl: string | null;
  thumbUrl: string | null;
  equippedItems: BuddyEquippedItem[];
  appearance?: BuddyAppearance;
  auraTier?: AuraTier;
  /** HTCH-27 — true when the buddy has no equipped items. */
  isNaked?: boolean;
  /** HTCH-105 — F4.4 true when the buddy holds the mentor role. */
  isMentor?: boolean;
  createdAt: string;
  updatedAt: string;
}

BuddyProgression

export interface BuddyProgression {
  /** Player-facing XP. Currently maps to totalSkillLevel. */
  xp: number;
  totalSkillLevel: number;
  badgeCount: number;
  itemCount: number;
  currentStreak: number;
  longestStreak: number;
  customCounters: Record<string, number>;
}

BuddyEquippedItem

export interface BuddyEquippedItem {
  itemId: string;
  name: string;
  imageUrl: string | null;
}

Badge

export interface Badge {
  badgeKey: string;
  label: string;
  description: string | null;
  /**
   * HTCH-16 user-facing "How to earn" copy. Distinct from `description`
   * (admin-internal) — the badges widget renders this in the locked-tile
   * tooltip. Falls back to `description` when null.
   */
  criteriaCopy: string | null;
  iconUrl: string | null;
  awardedAt: string;
  coinReward: number;
  alreadyAwarded: boolean;
}

BuddyAppearanceStatus

export type BuddyAppearanceStatus = 'ready' | 'pending' | 'awaiting_credits' | 'failed';

BuddyAppearance

export interface BuddyAppearance {
  status: BuddyAppearanceStatus;
  operationId: string | null;
  desiredEquippedItemIds: string[];
  renderedEquippedItemIds: string[];
  retryable: boolean;
  message: string | null;
  error: Record<string, unknown> | null;
}

BuddyListParams

export interface BuddyListParams {
  userId?: string;
  status?: string;
  evolutionStage?: number;
  page?: number;
  limit?: number;
  sort?: string;
  order?: 'asc' | 'desc';
  signal?: AbortSignal;
}

SkillUpdate

export interface SkillUpdate {
  key: string;
  action: 'increase' | 'decrease' | 'set';
  amount?: number;
  value?: number;
}

EarnCoinsParams

export interface EarnCoinsParams {
  amount: number;
  reason: string;
  referenceId?: string;
  /**
   * Token key to earn. Defaults to the customer's `primary` token. Passing
   * a progression token grants progress; passing any other configured token
   * key is accepted by the rule engine. Omit to earn the default coin / primary.
   */
  token?: string;
}

SpendCoinsParams

export interface SpendCoinsParams {
  amount: number;
  reason: string;
  itemId?: string;
  /**
   * Token key to spend. Defaults to the customer's `primary` token. Spending
   * a progression token fails with ValidationError('progression_not_spendable').
   */
  token?: string;
}

TokenBalance

export interface TokenBalance {
  /** Canonical `primary` or `progression` identifier. */
  kind: 'primary' | 'progression';
  /** Customer-defined token key (e.g. `gems`, `xp`). */
  key: string;
  /** Human-readable label for display. */
  label: string;
  /** Current balance. */
  balance: number;
  /** Lifetime earned (earn ledger sum). */
  lifetimeEarned: number;
  /** Lifetime spent (spend ledger sum) — always 0 for progression. */
  lifetimeSpent: number;
}

TokensSummary

export interface TokensSummary {
  primary: TokenBalance | null;
  progression: TokenBalance | null;
}

BuddyEvolutionRecord

export interface BuddyEvolutionRecord {
  id: string;
  buddyId: string;
  fromStage: number;
  toStage: number;
  triggeredByEventId: string | null;
  imageUrl: string | null;
  source: 'prod' | 'demo' | 'auto';
  metadata: Record<string, unknown>;
  occurredAt: string;
}

EquipItemsParams

export interface EquipItemsParams {
  equip?: string[];
  unequip?: string[];
}

EquipItemsResult

export interface EquipItemsResult {
  accepted: boolean;
  operationId: string | null;
  status: 'pending' | 'completed' | string;
  appearanceStatus: BuddyAppearanceStatus | string;
  cached: boolean;
}

RerenderAppearanceResult

export interface RerenderAppearanceResult {
  accepted: boolean;
  operationId: string;
  status: 'pending' | string;
  appearanceStatus: BuddyAppearanceStatus | string;
}

BuddyList

export interface BuddyList {
  data: Buddy[];
  meta: { total: number; page: number; limit: number };
}

PrestigeBlockReason

Why a buddy cannot prestige right now — F4.3 Prestige Loop.

export type PrestigeBlockReason =
  | 'disabled'
  | 'not_max_stage'
  | 'appearance_pending'
  | 'cooldown_active'
  | 'champion_required';

PrestigeAuraTint

The permanent prestige aura ladder.

export type PrestigeAuraTint = 'none' | 'silver' | 'gold' | 'rainbow';

PrestigeStatus

GET /widget/buddy/prestige payload — whether the widget buddy can prestige and, when it cannot, the reason.

export interface PrestigeStatus {
  /** False when the tenant has not enabled the prestige loop. */
  available: boolean;
  canPrestige: boolean;
  reason: PrestigeBlockReason | null;
  prestigeLevel: number;
  evolutionStage: number;
  maxEvolutionStage: number;
  /** When `cooldown_active`, the ISO instant the cooldown clears. */
  cooldownEndsAt: string | null;
}

PrestigeResult

POST /widget/buddy/prestige success payload.

export interface PrestigeResult {
  prestigeLevel: number;
  fromEvolutionStage: number;
  evolutionStage: number;
  auraTint: PrestigeAuraTint;
  prestigedAt: string;
  seasonId: string | null;
  /** The buddy's image after the reset (reverted to its clean base). */
  imageUrl: string;
}

SendEventParams

export interface SendEventParams {
  /** Stable id used for idempotency. Re-sending the same eventId is a no-op. */
  eventId: string;
  /** External user id the event belongs to. */
  userId: string;
  /** Event type (e.g. `lesson_completed`, `workout_finished`). */
  type: string;
  /**
   * Audience (role) this event belongs to. Required for customers with 2+
   * audiences; omit for single-audience customers and the server applies
   * the implicit default. Lowercase, snake_case, max 32 chars.
   */
  audience?: string;
  /** When the event occurred. Defaults to "now" server-side if omitted. */
  occurredAt?: Date | string;
  /** Arbitrary key-value payload forwarded to the rule engine. */
  properties?: Record<string, unknown>;
}

EventStreakUpdate

Per-streak progression entry returned alongside coin/badge effects when a tracked event advances a streak. The HTTP client deep-converts snake_case → camelCase, so SDK consumers see camelCase keys here.

export interface EventStreakUpdate {
  definitionKey: string;
  label: string;
  icon: string;
  current: number;
  longest: number;
  milestoneHit: number | null;
  hero: boolean;
}

EventPathSubStepCompletion

Per-path completion delta produced when a tracked event closes a sub-step.

export interface EventPathSubStepCompletion {
  pathKey: string;
  stepKey: string;
  subStepKey: string;
  rewardCoins: number;
  rewardBadgeKey: string | null;
}

EventPathStepCompletion

export interface EventPathStepCompletion {
  pathKey: string;
  stepKey: string;
  rewardCoins: number;
  rewardBadgeKey: string | null;
}

EventPathCompletion

export interface EventPathCompletion {
  pathKey: string;
}

EventPathUpdate

export interface EventPathUpdate {
  pathKey: string;
  subStepCompleted?: EventPathSubStepCompletion;
  stepCompleted?: EventPathStepCompletion;
  pathCompleted?: EventPathCompletion;
}

EventEffects

export interface EventEffects {
  coins?: number;
  badgesAwarded?: string[];
  badgesReady?: string[];
  tokens?: string[];
  /** Present when the event was accepted but produced no user-visible effect. */
  debugReason?: 'no_active_buddies_for_user' | 'no_matching_rules' | string;
  /**
   * True when the buddy has met the next evolution condition. If the
   * customer's config does not auto-evolve, call `buddies.evolve(buddyId)`
   * server-side and wait on the returned operation.
   */
  evolutionReady?: boolean;
  streakMilestones?: number[];
  /** Per-streak deltas (current/longest, milestone hits) for active streaks. */
  streakUpdates?: EventStreakUpdate[];
  /**
   * Path widget reconciliation deltas. Each entry covers one sub-step
   * completion plus optional step / path roll-up flags so the host page
   * can paint celebrations without an extra round-trip.
   */
  pathUpdates?: EventPathUpdate[];
}

OperationStatus

export type OperationStatus =
  | 'pending'
  | 'processing'
  | 'completed'
  | 'failed'
  | 'cancelled';

Operation

export interface Operation<TResult = unknown> {
  operationId: string;
  /** Alias for {@link Operation.operationId} for callers that prefer `id`. */
  id: string;
  type: string;
  status: OperationStatus;
  result?: TResult;
  error?: string;
  createdAt: string;
  updatedAt: string;
}

WaitOptions

export interface WaitOptions {
  /** Maximum total time to wait, in milliseconds. Default 30_000. */
  timeoutMs?: number;
  /** Poll interval, in milliseconds. Default 2000. */
  intervalMs?: number;
  /** External abort signal. */
  signal?: AbortSignal;
}

PlayerZeroBuddy

export interface PlayerZeroBuddy {
  id: string;
  userId: string;
  name: string;
  audience: string;
  evolutionStage: number;
  imageUrl: string | null;
}

PlayerZeroResult

export interface PlayerZeroResult {
  /** False when Player Zero already existed and was returned as-is. */
  created: boolean;
  buddy: PlayerZeroBuddy;
}

PlayerZeroStatus

export interface PlayerZeroStatus {
  exists: boolean;
  /** True once the demo player's hatch ceremony has completed. */
  hatched: boolean;
  buddyId: string | null;
}

CreateSessionParams

export interface CreateSessionParams {
  buddyId: string;
  userId: string;
  scopes: string[];
  ttlSeconds?: number;
}

SessionToken

export interface SessionToken {
  token: string;
  sessionId: string;
  expiresAt: string;
  scopes: string[];
}

CreateEmbedTokenParams

export interface CreateEmbedTokenParams {
  buddyId: string;
  userId: string;
  ttlSeconds?: number;
}

EmbedToken

export interface EmbedToken {
  token: string;
  expiresAt: string;
  mode: 'read-only';
}

WebhookEvent

Every webhook event a customer can subscribe to.

The canonical source is the API's WEBHOOK_EVENTS list in apps/api/src/webhooks/webhook-events.ts (the @IsIn(WEBHOOK_EVENTS) validation on CreateWebhookConfigDto). This union MUST stay in sync with that list — copy names verbatim, do not invent them. Subscribing to a name not in this union is rejected by the API at config-create time.

Grouped by domain for readability; entries are sorted alphabetically within each group.

export type WebhookEvent =
  // appearance
  | 'appearance.composed'
  // badge
  | 'badge.awarded'
  | 'badge.ready'
  | 'event_badge.awarded'
  // beginner's luck
  | 'beginners_luck.day_3'
  | 'beginners_luck.day_7_complete'
  | 'beginners_luck.evaluated'
  // booster
  | 'booster.consumed_event'
  | 'booster.granted'
  // buddy
  | 'buddy.aura_tier_changed'
  | 'buddy.ceremony_completed'
  | 'buddy.config_migrated'
  | 'buddy.evolved'
  | 'buddy.first_outfit_saved'
  | 'buddy.founding_cohort_awarded'
  | 'buddy.hatched'
  | 'buddy.prestiged'
  // cause (Humanity Hero)
  | 'cause.threshold_reached'
  // celebration (White Hat)
  | 'celebration.milestone_acknowledged'
  | 'celebration.streak_recovered'
  // coins
  | 'coins.earned'
  | 'coins.spent'
  // council
  | 'council.proposal_approved'
  // egg
  | 'egg.created'
  // evolution
  | 'evolution.hr_forced'
  | 'evolution.ready'
  // feed (SeeSaw Bump)
  | 'feed.team_event_clapped'
  | 'feed.team_event_created'
  // flash sale
  | 'flash_sale.ended'
  | 'flash_sale.started'
  // free lunch (Welcome Gift funnel)
  | 'free_lunch.dismissed'
  | 'free_lunch.granted'
  | 'free_lunch.seen'
  // gate
  | 'gate.unlocked'
  // group quest
  | 'group_quest.joined'
  | 'group_quest.left'
  | 'group_quest.missed'
  | 'group_quest.won'
  // hexad survey
  | 'hexad.survey_completed'
  // item
  | 'item.equipped'
  | 'item.gifted'
  | 'item.purchased'
  // kudos
  | 'kudos.received'
  | 'kudos.sent'
  // league
  | 'league.off_season_ended'
  | 'league.off_season_started'
  | 'league.season_closed'
  | 'league.season_ended'
  | 'league.season_started'
  | 'league.tier_down'
  | 'league.tier_up'
  // lottery
  | 'lottery.drawn'
  | 'lottery.entered'
  | 'lottery.won'
  // mentor
  | 'mentor.availability_changed'
  | 'mentor.badge_threshold_hit'
  | 'mentor.session_logged'
  // mystery box
  | 'mystery_box.opened'
  // notification
  | 'notification.created'
  // operation
  | 'operation.completed'
  | 'operation.failed'
  // outfit (Dress mode)
  | 'outfit.deleted'
  | 'outfit.saved'
  | 'outfit.worn'
  // path
  | 'path.completed'
  | 'path.step_completed'
  | 'path.sub_step_completed'
  // recovery (White Hat)
  | 'recovery.streak_restored'
  // returning champion
  | 'returning_champion.crown_equipped'
  | 'returning_champion.dismissed'
  | 'returning_champion.shown'
  // scouting quest
  | 'scouting_quest.completed'
  // season challenge
  | 'season_challenge.completed'
  // showroom (HR)
  | 'showroom.award_given'
  | 'showroom.published'
  | 'showroom.qr_regenerated'
  | 'showroom.unpublished'
  // skill
  | 'skill.decayed'
  | 'skill.level_up'
  | 'skill.updated'
  // streak
  | 'streak.at_risk'
  | 'streak.milestone'
  // surprise drop
  | 'surprise_drop.granted'
  // team
  | 'team.member_joined'
  | 'team.member_left'
  | 'team.role_changed'
  | 'team_membership.role_upgraded'
  // token
  | 'token.earned'
  | 'token.spent'
  // usage
  | 'usage.limit_reached'
  | 'usage.threshold_reached'
  // user lifecycle
  | 'user.lapsed_day_3'
  | 'user.lapsed_day_7'
  | 'user.lapsed_day_14'
  | 'user.welcome_back';

WebhookEndpoint

export interface WebhookEndpoint {
  id: string;
  url: string;
  events: WebhookEvent[];
  active: boolean;
  status: 'active' | 'paused';
  secret?: string;
  maskedSecret?: string;
  createdAt: string;
  updatedAt: string;
}

CreateWebhookParams

export interface CreateWebhookParams {
  url: string;
  events: WebhookEvent[];
  description?: string;
}

WebhookDelivery

export interface WebhookDelivery {
  id: string;
  endpointId?: string;
  event: WebhookEvent | string;
  eventType: WebhookEvent | string;
  status: 'pending' | 'success' | 'succeeded' | 'failed';
  responseCode?: number | null;
  responseStatus?: number | null;
  attempt: number;
  attempts: number;
  durationMs?: number | null;
  errorMessage?: string | null;
  createdAt: string;
  timestamp: string;
  lastAttemptAt?: string;
}

ListDeliveriesParams

export interface ListDeliveriesParams {
  endpointId: string;
  status?: 'pending' | 'success' | 'failed';
  cursor?: string;
  limit?: number;
  signal?: AbortSignal;
}

Page

export interface Page<T> {
  data: T[];
  nextCursor: string | null;
}

VerifySignatureOptions

export interface VerifySignatureOptions {
  /**
   * The `X-Hatched-Timestamp` header value (unix seconds). Hatched sends the
   * timestamp in its own header, separate from the signature. Pass it here so
   * the verifier can recompute the HMAC and enforce the replay window.
   *
   * The framework adapters in `@hatched/sdk-js/webhooks` extract this for you.
   * If omitted, the verifier falls back to a `t=<ts>` segment embedded in the
   * signature header (legacy/combined format) and fails closed if neither is
   * present.
   */
  timestamp?: string | number;
  /** Maximum clock-skew in seconds. Defaults to 5 minutes. */
  toleranceSeconds?: number;
  /** Clock used for timestamp validation — useful in tests. */
  now?: () => number;
}

TokenGate

export interface TokenGate {
  id: string;
  gateKey: string;
  tokenKey: string;
  cost: number;
  label: string | null;
  description: string | null;
  metadata: Record<string, unknown>;
  isActive: boolean;
  createdAt: string;
  updatedAt: string;
}

UnlockResult

export interface UnlockResult {
  gateKey: string;
  unlocked: true;
  alreadyUnlocked: boolean;
  unlockedAt: string;
  balanceAfter: number | null;
  metadata: Record<string, unknown>;
}

BuddyUnlock

export interface BuddyUnlock {
  gateKey: string;
  unlockedAt: string;
  metadata: Record<string, unknown>;
}

PathDisplayMode

export type PathDisplayMode = 'straight' | 'zigzag' | 'stepper';

PathIcon

export type PathIcon = 'path' | 'flame' | 'heart' | 'bolt' | 'star' | 'leaf';

PathConditionType

export type PathConditionType =
  | 'event_count'
  | 'milestone'
  | 'streak'
  | 'skill_level'
  | 'collection'
  | 'evolution'
  | 'coin'
  | 'badge_earned'
  | 'gate_unlocked'
  | 'custom';

PathCondition

export interface PathCondition {
  type: PathConditionType;
  config: Record<string, unknown>;
}

PathDefinition

export interface PathDefinition {
  id: string;
  customerId: string;
  audience: string;
  key: string;
  label: string;
  description: string | null;
  icon: PathIcon;
  accentColor: string | null;
  displayMode: PathDisplayMode;
  isActive: boolean;
  createdAt: string;
  updatedAt: string;
}

PathStep

export interface PathStep {
  id: string;
  pathDefinitionId: string;
  key: string;
  label: string;
  description: string | null;
  icon: string | null;
  ordinal: number;
  unlockCondition: Record<string, unknown> | null;
  completionCondition: PathCondition | null;
  rewardCoins: number;
  rewardBadgeKey: string | null;
  isActive: boolean;
  createdAt: string;
  updatedAt: string;
}

PathSubStep

export interface PathSubStep {
  id: string;
  pathStepId: string;
  key: string;
  label: string;
  description: string | null;
  ordinal: number;
  completionCondition: PathCondition | null;
  allowManualComplete: boolean;
  allowSkipAhead: boolean;
  rewardCoins: number;
  rewardBadgeKey: string | null;
  contentUrl: string | null;
  ctaLabel: string | null;
  isActive: boolean;
  createdAt: string;
  updatedAt: string;
}

PathSubStepStatus

export type PathSubStepStatus = 'locked' | 'available' | 'completed';

PathSubStepRuntime

export interface PathSubStepRuntime {
  id: string;
  key: string;
  label: string;
  description: string | null;
  ordinal: number;
  rewardCoins: number;
  rewardBadgeKey: string | null;
  contentUrl: string | null;
  ctaLabel: string | null;
  allowManualComplete: boolean;
  allowSkipAhead: boolean;
  isActive: boolean;
  status: PathSubStepStatus;
  completedAt: string | null;
}

PathStepRuntime

export interface PathStepRuntime {
  id: string;
  key: string;
  label: string;
  description: string | null;
  icon: string | null;
  ordinal: number;
  rewardCoins: number;
  rewardBadgeKey: string | null;
  isActive: boolean;
  unlocked: boolean;
  completed: boolean;
  subSteps: PathSubStepRuntime[];
}

PathRuntimePayload

export interface PathRuntimePayload {
  definition: {
    key: string;
    label: string;
    description: string | null;
    icon: PathIcon;
    accentColor: string | null;
    displayMode: PathDisplayMode;
  };
  steps: PathStepRuntime[];
  currentStepKey: string | null;
  completed: boolean;
  completedAt: string | null;
}

CreatePathDefinitionParams

export interface CreatePathDefinitionParams {
  audience?: string;
  key: string;
  label: string;
  description?: string;
  icon?: PathIcon;
  accentColor?: string;
  displayMode?: PathDisplayMode;
  isActive?: boolean;
}

UpdatePathDefinitionParams

export type UpdatePathDefinitionParams = Partial<CreatePathDefinitionParams>;

CreatePathStepParams

export interface CreatePathStepParams {
  key: string;
  label: string;
  description?: string;
  icon?: string;
  ordinal: number;
  unlockCondition?: Record<string, unknown>;
  completionCondition?: PathCondition;
  rewardCoins?: number;
  rewardBadgeKey?: string;
  isActive?: boolean;
}

UpdatePathStepParams

export type UpdatePathStepParams = Partial<CreatePathStepParams>;

CreatePathSubStepParams

export interface CreatePathSubStepParams {
  key: string;
  label: string;
  description?: string;
  ordinal: number;
  completionCondition?: PathCondition;
  allowManualComplete?: boolean;
  allowSkipAhead?: boolean;
  rewardCoins?: number;
  rewardBadgeKey?: string;
  contentUrl?: string;
  ctaLabel?: string;
  isActive?: boolean;
}

UpdatePathSubStepParams

export type UpdatePathSubStepParams = Partial<CreatePathSubStepParams>;

ManualCompleteResult

export interface ManualCompleteResult {
  alreadyCompleted: boolean;
  subStepKey: string;
  stepKey: string;
  stepCompleted: boolean;
  pathCompleted: boolean;
  rewardCoins: number;
  rewardBadgeKey: string | null;
}

MarketplaceItemRarity

export type MarketplaceItemRarity = 'common' | 'rare' | 'epic' | 'legendary' | string;

OutfitThumbnailStatus

export type OutfitThumbnailStatus = 'pending' | 'ready' | 'failed';

OutfitPreviewStatus

export type OutfitPreviewStatus = 'pending' | 'ready';

CompositionStatus

export type CompositionStatus = 'pending' | 'ready' | 'failed';

SlotItemMap

export type SlotItemMap = Record<string, string>;

MarketplaceItem

export interface MarketplaceItem {
  id: string;
  name: string;
  description: string | null;
  imageUrl: string | null;
  category: string;
  rarity: MarketplaceItemRarity;
  price: number;
  isActive: boolean;
  /**
   * F2.4 Social Treasure — when true the item can only be received as a gift
   * from a teammate; a normal purchase is rejected.
   */
  isGiftOnly?: boolean;
  owned?: boolean;
  equipped?: boolean;
  locked?: boolean;
  lockReason?: string;
  availableFrom?: string | null;
  availableUntil?: string | null;
}

GiftItemParams

export interface GiftItemParams {
  /** UUID of the item to gift. */
  itemId: string;
  /** UUID of the teammate buddy that receives the gift. */
  toBuddyId: string;
  /** Optional note delivered with the gift, ≤280 chars. */
  message?: string;
  signal?: AbortSignal;
}

GiftItemResult

export interface GiftItemResult {
  gifted: boolean;
  /** True when the call hit the 60s accident-click guard — no new debit. */
  duplicate: boolean;
  item_id: string;
  from_buddy_id: string;
  to_buddy_id: string;
  price_paid: number;
  /** Sender's coin balance after the debit. */
  remaining_coins: number;
  /** The receiver-side item purchase row id. */
  purchase_id: string;
  message: string | null;
  gifted_at: string;
}

MarketplaceListParams

export interface MarketplaceListParams {
  category?: string;
  rarity?: string;
  page?: number;
  limit?: number;
  signal?: AbortSignal;
}

MarketplaceListResponse

export interface MarketplaceListResponse {
  data: MarketplaceItem[];
  pagination: {
    page: number;
    limit: number;
    total: number;
    totalPages: number;
  };
}

OutfitSummary

export interface OutfitSummary {
  id: string;
  buddyId: string;
  customerId: string;
  name: string;
  slotItemMap: SlotItemMap;
  isActive: boolean;
  thumbnailVariantId: string | null;
  thumbnailStatus: OutfitThumbnailStatus;
  thumbnailUrl?: string | null;
  createdAt: string;
  updatedAt: string;
}

OutfitListResponse

export interface OutfitListResponse {
  outfits: OutfitSummary[];
}

OutfitPreviewResponse

export interface OutfitPreviewResponse {
  variantId: string | null;
  status: OutfitPreviewStatus;
  imageUrl: string | null;
}

CompositionStatusResponse

export interface CompositionStatusResponse {
  status: CompositionStatus;
  variantUrl: string | null;
  error: string | null;
}

SaveOutfitParams

export interface SaveOutfitParams {
  name: string;
  slotItemMap: SlotItemMap;
}

ActivateOutfitResponse

export interface ActivateOutfitResponse {
  outfit: OutfitSummary;
  equip: unknown;
}

DeleteOutfitResponse

export interface DeleteOutfitResponse {
  deleted: true;
}

BadgeProgress

export interface BadgeProgress {
  current: number;
  target: number;
}

WidgetBadge

export interface WidgetBadge {
  id: string;
  key?: string;
  name: string;
  iconUrl: string | null;
  description: string | null;
  earnedAt: string | null;
  criteriaCopy: string;
  progress?: BadgeProgress;
}

EarnedWidgetBadge

export interface EarnedWidgetBadge {
  badgeKey: string;
  label: string;
  description: string | null;
  criteriaCopy?: string | null;
  iconUrl: string | null;
  awardedAt: string;
  coinReward: number;
  alreadyAwarded: boolean;
}

LockedWidgetBadge

export interface LockedWidgetBadge {
  key: string;
  label: string;
  description: string | null;
  criteriaCopy?: string | null;
  iconUrl: string | null;
  coinReward: number;
  conditionType: string;
  progress: { current: number; required: number } | null;
  hint: string | null;
}

BadgeListParams

export interface BadgeListParams {
  includeLocked?: boolean;
  include_locked?: boolean;
  signal?: AbortSignal;
}

BadgeListResponse

export interface BadgeListResponse {
  badges: WidgetBadge[];
  earned: EarnedWidgetBadge[];
  locked: LockedWidgetBadge[];
  total?: number;
}

LeaderboardMetric

export type LeaderboardMetric =
  | 'total_xp'
  | 'coins'
  | 'badge_count'
  | 'evolution_stage'
  | 'badges'
  | 'evolution'
  | 'skills';

LeaderboardPeriod

export type LeaderboardPeriod = 'daily' | 'weekly' | 'monthly' | 'all_time';

LeaderboardViewMode

export type LeaderboardViewMode = 'top' | 'around_me' | 'hybrid';

LeaderboardScope

export type LeaderboardScope = 'global' | 'team';

LeaderboardScopeParam

Request-side scope filter for leaderboard.get.

export type LeaderboardScopeParam = LeaderboardScope;

LeaderboardEntry

export interface LeaderboardEntry {
  rank: number;
  buddyId: string;
  userId: string;
  name: string;
  imageUrl: string | null;
  thumbUrl: string | null;
  evolutionStage: number;
  score: number;
  auraTier: AuraTier;
}

LeaderboardUserEntry

export interface LeaderboardUserEntry {
  rank: number;
  buddyId: string;
  name: string;
  score: number;
}

LeaderboardUrgentOptimism

export interface LeaderboardUrgentOptimism {
  rankAbove: number;
  name: string;
  scoreGap: number;
}

LeaderboardWindow

export interface LeaderboardWindow {
  size: number;
  currentUserRank: number | null;
}

LeaderboardScopePolicy

export interface LeaderboardScopePolicy {
  allowOverride: boolean;
  teamLabel: string | null;
  globalLabel: string | null;
  defaultScope: LeaderboardScope;
}

LeaderboardResponse

export interface LeaderboardResponse {
  entries: LeaderboardEntry[];
  topStrip: LeaderboardEntry[] | null;
  urgentOptimism: LeaderboardUrgentOptimism | null;
  currentUserRank?: number;
  currentUser?: LeaderboardUserEntry;
  userRank: number | null;
  userEntry: LeaderboardUserEntry | null;
  viewMode: LeaderboardViewMode;
  window: LeaderboardWindow;
  metric: 'total_xp' | 'coins' | 'badge_count' | 'evolution_stage';
  period: LeaderboardPeriod;
  totalEntries: number;
  /** HTCH-48: resolved scope after applying tenant default + override. */
  effectiveScope?: LeaderboardScope;
  /** HTCH-48: team id actually filtered on (null unless scope='team'). */
  effectiveTeamId?: string | null;
  /** HTCH-21: scope-toggle policy + admin label overrides. */
  scopePolicy?: LeaderboardScopePolicy;
}

LeaderboardParams

export interface LeaderboardParams {
  metric?: LeaderboardMetric;
  period?: LeaderboardPeriod;
  limit?: number;
  viewMode?: LeaderboardViewMode;
  aroundMe?: boolean;
  around_me?: boolean;
  topStripSize?: number;
  top_strip_size?: number;
  /**
   * 'team' restricts to the requesting buddy's active team roster, 'global'
   * lifts the filter.
   */
  scope?: LeaderboardScopeParam;
  signal?: AbortSignal;
}

NextBestActionKind

export type NextBestActionKind =
  | 'streak_warning'
  | 'almost_badge'
  | 'level_up_close'
  | 'group_quest_invite'
  | 'kudos_owed'
  | 'dress_first_outfit'
  | 'try_new_outfit'
  | 'fill_cohort';

NextBestAction

export interface NextBestAction {
  kind: NextBestActionKind;
  copy: string;
  priority: number;
  targetWidget?: string;
  targetUrl?: string;
}

NextBestActionResponse

export interface NextBestActionResponse {
  action: NextBestAction | null;
  fallbackUsed: boolean;
}

TeamRole

export type TeamRole = 'member' | 'lead' | 'mentor';

TeamMember

export interface TeamMember {
  buddy_id: string;
  display_name: string;
  avatar_url: string | null;
  role: TeamRole;
  /** F2.6 mentor availability flag — false until Mentor visibility ships. */
  mentor_available: boolean;
}

Team

export interface Team {
  id: string;
  name: string;
  slug: string;
  avatar_url: string | null;
  member_count: number;
}

MyTeamResponse

export interface MyTeamResponse {
  team: Team | null;
  role: TeamRole | null;
  members: TeamMember[];
}

SendKudosParams

export interface SendKudosParams {
  toBuddyId: string;
  kudoTypeKey: string;
  /** Optional note, ≤280 chars. Required when the workspace enforces it. */
  message?: string;
  signal?: AbortSignal;
}

SentKudos

export interface SentKudos {
  id: string;
  from_buddy_id: string;
  to_buddy_id: string;
  kudo_type_key: string;
  weight: number;
  message: string | null;
  created_at: string;
  /** True when the call hit the 60s accident-click guard — no new kudos. */
  duplicate: boolean;
  daily_cap: number;
  sent_today: number;
}

KudosFeedEntry

export interface KudosFeedEntry {
  id: string;
  /** The counterparty buddy — sender on a received kudos, receiver on a given one. */
  buddy_id: string;
  display_name: string;
  avatar_url: string | null;
  kudo_type_key: string;
  kudo_type_label: string;
  kudo_type_icon: string | null;
  weight: number;
  message: string | null;
  created_at: string;
}

GivenKudosResponse

export interface GivenKudosResponse {
  kudos: KudosFeedEntry[];
  /** Lifetime count of kudos this buddy has sent — the assist metric. */
  total: number;
}

KudoTypeView

export interface KudoTypeView {
  /** null for the virtual generic fallback (not yet persisted). */
  id: string | null;
  key: string;
  label: string;
  icon: string | null;
  description: string | null;
  weight: number;
  is_active: boolean;
  sort_order: number;
  is_virtual: boolean;
}

ActiveGroupQuest

An active Group Quest as seen by an embedded buddy (widget-token surface).

export interface ActiveGroupQuest {
  id: string;
  title: string;
  description: string | null;
  target_metric: string;
  target_metric_label: string;
  target_value: number;
  current_value: number;
  deadline: string;
  min_participants: number;
  participants_count: number;
  /** 'team' = scoped to the buddy's team; 'workspace' = customer-wide. */
  team_scope: 'team' | 'workspace';
  /** True when the requesting buddy is already a participant. */
  joined: boolean;
  /** Compact reward chip label, e.g. "🎁 +500 coins". */
  reward_summary: string;
}

JoinGroupQuestResult

export interface JoinGroupQuestResult {
  joined: boolean;
  /** True when the buddy was already a participant — the call was a no-op. */
  already_joined: boolean;
  participants_count: number;
}

LeaveGroupQuestResult

export interface LeaveGroupQuestResult {
  left: boolean;
  participants_count: number;
}

GroupQuestStatus

export type GroupQuestStatus =
  | 'draft'
  | 'active'
  | 'won'
  | 'missed'
  | 'cancelled';

GroupQuestRewardConfig

Reward distributed to every participant when a quest is won.

export interface GroupQuestRewardConfig {
  economy_grant?: number;
  item_grant?: string;
  badge_grant?: string;
}

AdminGroupQuest

A Group Quest as seen on the tenant admin (Planner) surface.

export interface AdminGroupQuest {
  id: string;
  team_id: string | null;
  title: string;
  description: string | null;
  target_metric: string;
  target_value: number;
  current_value: number;
  deadline: string;
  min_participants: number;
  reward_config: GroupQuestRewardConfig;
  participants_count: number;
  status: GroupQuestStatus;
  created_at: string;
  updated_at: string;
  completed_at: string | null;
}

CreateGroupQuestParams

export interface CreateGroupQuestParams {
  title: string;
  description?: string | null;
  targetMetric: string;
  targetValue: number;
  /** ISO 8601 — must be more than 1 hour in the future. */
  deadline: string;
  minParticipants?: number;
  rewardConfig: GroupQuestRewardConfig;
  /** Null / omitted = customer-wide quest. */
  teamId?: string | null;
}

UpdateGroupQuestParams

export interface UpdateGroupQuestParams {
  title?: string;
  description?: string | null;
  deadline?: string;
  minParticipants?: number;
  targetValue?: number;
  rewardConfig?: GroupQuestRewardConfig;
  /** Set to 'cancelled' to end an active quest. */
  status?: 'cancelled';
}

ForceResolveResult

export interface ForceResolveResult {
  status: 'won' | 'missed';
  current_value: number;
  target_value: number;
  participants_count: number;
  reward_summary: {
    economy_per_buddy: number | null;
    item_id: string | null;
    badge_key: string | null;
  } | null;
}

MentorDirectoryEntry

A team member open to mentoring, with a server-rendered contact deep link.

export interface MentorDirectoryEntry {
  buddy_id: string;
  display_name: string;
  avatar_url: string | null;
  /** Resolved contact URL, or null when the workspace has no template. */
  contact_url: string | null;
}

MentorSession

export interface MentorSession {
  id: string;
  /** Quarter-hour granularity, 0.25–8. */
  hours: number;
  mentee_label: string | null;
  summary: string | null;
  logged_at: string;
}

MentorSessionsResponse

export interface MentorSessionsResponse {
  sessions: MentorSession[];
  total_hours_all_time: number;
  total_hours_this_season: number;
}

LogSessionParams

export interface LogSessionParams {
  /** Single-session hours, 0.25–8, quarter-hour steps. */
  hours: number;
  /** Optional mentee name / project label, ≤80 chars. */
  menteeLabel?: string;
  /** Optional session note, ≤280 chars. */
  summary?: string;
  signal?: AbortSignal;
}

LogSessionResult

export interface LogSessionResult {
  session: MentorSession;
  total_hours_all_time: number;
  /** True when this log crossed the threshold and earned the Mentor badge. */
  badge_awarded: boolean;
}

BragEventKind

The Win-State that surfaced the Brag Button (HTCH-60).

export type BragEventKind =
  | 'evolution'
  | 'hatch_complete'
  | 'badge_awarded'
  | 'league_promotion'
  | 'kudos_received_high_weight'
  | 'group_quest_won';

BragChannel

A share destination the Brag Button can target.

export type BragChannel =
  | 'linkedin'
  | 'slack'
  | 'teams'
  | 'twitter'
  | 'web_share';

BragWebhookChannel

Channels a Slack/Teams webhook post can be sent to.

export type BragWebhookChannel = 'slack' | 'teams';

BragTelemetryAction

One step of the brag share funnel.

export type BragTelemetryAction =
  | 'opened'
  | 'clicked'
  | 'completed'
  | 'dismissed';

RecordBragTelemetryParams

export interface RecordBragTelemetryParams {
  /** The Win-State that surfaced the Brag Button. */
  eventKind: BragEventKind;
  /** The share destination the funnel step relates to. */
  channel: BragChannel;
  /** The funnel step being recorded. */
  action: BragTelemetryAction;
  signal?: AbortSignal;
}

SendBragSlackPostParams

export interface SendBragSlackPostParams {
  /** The Win-State being bragged about. */
  eventKind: BragEventKind;
  /** Webhook channel — `slack` or `teams`. */
  channel: BragWebhookChannel;
  /** The user-edited post body (≤1000 chars). */
  customMessage: string;
  signal?: AbortSignal;
}

BragSlackPostResult

export interface BragSlackPostResult {
  /** Always true on success — a non-2xx webhook throws `webhook_failed`. */
  delivered: true;
}

BragTelemetryResult

export interface BragTelemetryResult {
  recorded: true;
}

TeamEventKind

The kinds of team event the SeeSaw Bump feed surfaces (HTCH-63).

export type TeamEventKind =
  | 'streak_milestone'
  | 'group_quest_won'
  | 'group_quest_missed'
  | 'evolution'
  | 'badge_awarded_rare'
  | 'kudos_received_high_weight'
  | 'first_outfit_saved'
  | 'mentor_hours_milestone';

TeamEvent

export interface TeamEvent {
  id: string;
  event_kind: TeamEventKind;
  subject_buddy_id: string;
  subject_name: string;
  subject_avatar_url: string | null;
  /** Server-rendered display copy — positive framing only. */
  copy_rendered: string;
  payload: Record<string, unknown>;
  clap_count: number;
  /** True when the requesting buddy has clapped this event. */
  i_clapped: boolean;
  created_at: string;
}

TeamEventsPage

export interface TeamEventsPage {
  events: TeamEvent[];
  /** Opaque cursor for the next page, or null when the feed is exhausted. */
  next_cursor: string | null;
}

ListTeamEventsParams

export interface ListTeamEventsParams {
  /** Opaque cursor from a previous page's `next_cursor`. */
  cursor?: string;
  /** Page size — clamped server-side to the tenant's max. */
  limit?: number;
  signal?: AbortSignal;
}

ClapResult

export interface ClapResult {
  team_event_id: string;
  clap_count: number;
  /** True when the buddy now holds a clap, false after an unclap. */
  i_clapped: boolean;
}

SocialNormFraming

The three positive framings a social norm may take (HTCH-62).

export type SocialNormFraming =
  | 'positive_completion'
  | 'elitism_first_n'
  | 'momentum_today';

SocialNorm

export interface SocialNorm {
  /** Stable catalog key. */
  key: string;
  /** The copy template (with `{{placeholders}}`), tenant override applied. */
  copy_template: string;
  /** Server-rendered copy, ready to display — positive framing only. */
  copy_rendered: string;
  framing: SocialNormFraming;
  /** The metric value (percent or count) the copy renders. */
  metric_value: number;
  /** Denominator for count framings, null for percent/scarcity. */
  total: number | null;
  /** ISO timestamp — end of the UTC day the norm is valid for. */
  expires_at: string;
}

SocialNormsTodayResponse

export interface SocialNormsTodayResponse {
  norms: SocialNorm[];
}

CauseTriggerEvent

Rule-engine event types a cause may count.

export type CauseTriggerEvent =
  | 'skill.completed'
  | 'badge.awarded'
  | 'kudos.sent'
  | 'level_up'
  | 'hatch.completed';

AdminCause

A tenant-defined symbolic cause ("Trees planted") as seen on the admin (Planner) surface. webhookUrl is a Phase-2 placeholder — always null until the Phase-4 Humanity Hero integration (F4.5).

export interface AdminCause {
  id: string;
  key: string;
  label: string;
  icon: string | null;
  unit: string;
  /** Every N eligible events advance the symbolic counter by one unit. */
  rate: number;
  trigger_events: CauseTriggerEvent[];
  webhook_url: string | null;
  enabled: boolean;
  created_at: string;
  updated_at: string;
}

CreateCauseParams

export interface CreateCauseParams {
  key: string;
  label: string;
  icon?: string | null;
  unit: string;
  /** Defaults to 1 (every event = 1 unit). */
  rate?: number;
  triggerEvents: CauseTriggerEvent[];
  /** Defaults to false — the believability gate is opt-in. */
  enabled?: boolean;
}

UpdateCauseParams

export interface UpdateCauseParams {
  label?: string;
  icon?: string | null;
  unit?: string;
  rate?: number;
  triggerEvents?: CauseTriggerEvent[];
  enabled?: boolean;
}

CausePreview

Projected symbolic units from the last 30 days of eligible events.

export interface CausePreview {
  event_count: number;
  rate: number;
  projected_units: number;
  window_days: number;
}

FoundingCohortMode

How the Founding Cohort decides which buddies count as early joiners.

export type FoundingCohortMode =
  | 'first_n'
  | 'first_percent'
  | 'first_until_date';

FoundingCohortPreview

Projection of how many buddies the current cohort config would mark.

export interface FoundingCohortPreview {
  enabled: boolean;
  mode: FoundingCohortMode;
  eligible_count: number;
  ineligible_count: number;
  already_member_count: number;
  total_buddies: number;
  /** False when `first_percent` falls back to the live buddy count. */
  uses_expected_total: boolean;
  sample_buddies: Array<{ id: string; name: string; created_at: string }>;
}

FoundingCohortBackfillResult

export interface FoundingCohortBackfillResult {
  awarded_count: number;
  total_members: number;
  scanned: number;
}

FoundingCohortAuditEntry

export interface FoundingCohortAuditEntry {
  id: string;
  buddy_id: string;
  source: 'real_time' | 'backfill';
  awarded_at: string;
  title_label: string | null;
}

FlashSaleStatus

export type FlashSaleStatus =
  | 'scheduled'
  | 'running'
  | 'ended'
  | 'cancelled';

FlashSaleSelectionMode

export type FlashSaleSelectionMode = 'random' | 'curated';

FlashSale

A marketplace flash sale as seen on the tenant admin (Planner) surface.

export interface FlashSale {
  id: string;
  customer_id: string;
  name: string;
  starts_at: string;
  duration_minutes: number;
  discount_percent: number;
  item_selection_mode: FlashSaleSelectionMode;
  curated_item_ids: string[] | null;
  status: FlashSaleStatus;
  affected_item_ids: string[] | null;
  ends_at: string | null;
  created_at: string;
  updated_at: string;
}

ScheduleFlashSaleParams

export interface ScheduleFlashSaleParams {
  name: string;
  /** ISO 8601 — must be a future time. */
  startsAt: string;
  /** 5–1440 minutes. Defaults to 60. */
  durationMinutes?: number;
  /** 1–90 percent. Defaults to 50. */
  discountPercent?: number;
  /** `random` lets the cron pick 5 items; `curated` uses `curatedItemIds`. */
  itemSelectionMode?: FlashSaleSelectionMode;
  /** Required (non-empty) when `itemSelectionMode` is `curated`. */
  curatedItemIds?: string[];
  signal?: AbortSignal;
}

LotteryCadence

export type LotteryCadence = 'weekly' | 'monthly';

LotteryEligibilityRule

When a buddy is entered: M events of a type within a rolling N-day window.

export interface LotteryEligibilityRule {
  /** Event type that counts — `*` matches every ingested event. */
  event_type: string;
  min_count: number;
  window_days: number;
}

LotteryPrizeTier

One prize tier — winners_count buddies share it.

export interface LotteryPrizeTier {
  type: 'item' | 'coins' | 'badge';
  /** Item key/id or badge key — required for `item` and `badge`. */
  ref?: string | null;
  /** Coin amount — required for `coins`. */
  amount?: number | null;
  winners_count: number;
}

LotteryDrawSchedule

Structured draw schedule — wall-clock time in the definition timezone.

export interface LotteryDrawSchedule {
  /** 0=Sun..6=Sat — weekly cadence. */
  day_of_week?: number;
  /** 1..28 — monthly cadence. */
  day_of_month?: number;
  hour: number;
  minute: number;
}

LotteryDefinition

A lottery definition on the tenant admin surface.

export interface LotteryDefinition {
  id: string;
  customer_id: string;
  name: string;
  eligibility_rule: LotteryEligibilityRule;
  cadence: LotteryCadence;
  prize_pool: LotteryPrizeTier[];
  draw_at: LotteryDrawSchedule;
  tz: string;
  active: boolean;
  created_at: string;
  updated_at: string;
}

LotteryResolvedPrize

A prize tier resolved onto a specific winning entry.

export interface LotteryResolvedPrize {
  buddy_id: string;
  entry_id: string;
  prize: LotteryPrizeTier;
}

LotteryDraw

A resolved period draw.

export interface LotteryDraw {
  id: string;
  lottery_definition_id: string;
  period_key: string;
  period_start: string;
  period_end: string;
  drawn_at: string;
  winner_entry_ids: string[];
  total_entries: number;
  prize_resolved: LotteryResolvedPrize[];
  seed: string;
}

LotteryNextDrawPreview

The live "Next draw" preview card.

export interface LotteryNextDrawPreview {
  current_period_key: string;
  current_period_entries: number;
  next_draw_at: string;
}

SimulatedLotteryDraw

A non-persisted simulated draw.

export interface SimulatedLotteryDraw {
  total_entries: number;
  seed: string;
  winners: LotteryResolvedPrize[];
}

CreateLotteryParams

export interface CreateLotteryParams {
  name: string;
  eligibilityRule: LotteryEligibilityRule;
  cadence: LotteryCadence;
  prizePool: LotteryPrizeTier[];
  drawAt: LotteryDrawSchedule;
  /** IANA timezone for the draw schedule. Defaults to `UTC`. */
  tz?: string;
  active?: boolean;
  signal?: AbortSignal;
}

UpdateLotteryParams

export type UpdateLotteryParams = Partial<CreateLotteryParams>;

EventBadgeCondition

The eligibility condition a campaign checks against the triggering event. logged_in_during_window — any activity inside the window earns the badge (the broadest mode); event_type — only a specific event type earns it.

export type EventBadgeCondition =
  | { type: 'logged_in_during_window' }
  | { type: 'event_type'; event_type: string };

EventBadgeNarrativeCallout

Bilingual reveal copy shown in the badge tooltip.

export interface EventBadgeNarrativeCallout {
  tr?: string;
  en?: string;
}

EventBadgeDefinition

An event-triggered badge campaign as returned by create / update.

export interface EventBadgeDefinition {
  id: string;
  customer_id: string;
  badge_key: string;
  trigger_window_start: string;
  trigger_window_end: string;
  condition: EventBadgeCondition;
  narrative_callout: EventBadgeNarrativeCallout;
  enabled: boolean;
  created_at: string;
  updated_at: string;
}

EventBadgeCampaign

A campaign enriched with the badge label and its grant count (list view).

export interface EventBadgeCampaign extends EventBadgeDefinition {
  badge_name: string | null;
  grant_count: number;
}

CreateEventBadgeParams

export interface CreateEventBadgeParams {
  /** Badge key — resolved per-buddy by audience + config version at grant time. */
  badgeKey: string;
  /** ISO-8601 — the campaign window opens. */
  triggerWindowStart: string;
  /** ISO-8601 — the campaign window closes. Must be after the start. */
  triggerWindowEnd: string;
  /** Defaults to `{ type: 'logged_in_during_window' }`. */
  condition?: EventBadgeCondition;
  narrativeCallout?: EventBadgeNarrativeCallout;
  enabled?: boolean;
  signal?: AbortSignal;
}

UpdateEventBadgeParams

export type UpdateEventBadgeParams = Partial<CreateEventBadgeParams>;

ProfileSlot

The fixed layout slots a profile page composes into.

export type ProfileSlot = 'header' | 'hero' | 'left' | 'right' | 'footer';

WidgetSpec

One placed widget — a catalog key plus its props.

export interface WidgetSpec {
  widget_key: string;
  props: Record<string, unknown>;
}

ProfileTemplateLayout

A full profile layout — a versioned widget tree keyed by slot.

export interface ProfileTemplateLayout {
  version: number;
  slots: Record<ProfileSlot, WidgetSpec[]>;
}

ProfileTemplateSource

The built-in starting point a custom template was forked from.

export type ProfileTemplateSource =
  | 'minimal'
  | 'showcase_heavy'
  | 'mission_driven'
  | 'showcase_mentor'
  | 'custom';

ProfileTemplate

A tenant-authored profile-page template.

export interface ProfileTemplate {
  id: string;
  customer_id: string | null;
  name: string;
  source_template: ProfileTemplateSource;
  layout: ProfileTemplateLayout;
  theme_overrides: Record<string, string> | null;
  is_default: boolean;
  created_at: string;
  updated_at: string;
}

SystemProfileTemplate

A built-in system template — global, forkable, never edited in place.

export interface SystemProfileTemplate {
  source_template: Exclude<ProfileTemplateSource, 'custom'>;
  name: string;
  description: string;
  layout: ProfileTemplateLayout;
}

ProfileTemplateList

The gallery payload: code-defined system templates + the tenant's own.

export interface ProfileTemplateList {
  system: SystemProfileTemplate[];
  custom: ProfileTemplate[];
}

CreateProfileTemplateParams

export interface CreateProfileTemplateParams {
  name: string;
  /** The built-in starting point this template was forked from. */
  sourceTemplate: ProfileTemplateSource;
  /** The widget composition — `{ version, slots }`. Normalized server-side. */
  layout: ProfileTemplateLayout;
  themeOverrides?: Record<string, string> | null;
  /** Make this the tenant default — unsets any previous default. */
  isDefault?: boolean;
  signal?: AbortSignal;
}

UpdateProfileTemplateParams

export type UpdateProfileTemplateParams = Partial<
  Omit<CreateProfileTemplateParams, 'sourceTemplate'>
>;

BulkApplyTarget

Who a bulk-apply targets — all buddies, or a single audience.

export type BulkApplyTarget =
  | { type: 'all' }
  | { type: 'audience'; audience: string };

BulkApplyProfileTemplateParams

export interface BulkApplyProfileTemplateParams {
  /** The template to assign. */
  templateId: string;
  target: BulkApplyTarget;
  signal?: AbortSignal;
}

LeagueWidgetUnavailableReason

Why the league widget has nothing to show.

export type LeagueWidgetUnavailableReason =
  | 'capability_off'
  | 'no_active_season'
  | 'not_enrolled';

LeagueTierView

A tier rendered in the widget — banner colour + the next-tier target.

export interface LeagueTierView {
  id: string;
  name: string;
  colorHex: string;
  iconKey: string;
  order: number;
}

LeagueStandingRow

One row of the cohort standings the widget renders.

export interface LeagueStandingRow {
  buddyId: string;
  name: string;
  imageUrl: string | null;
  points: number;
  rank: number;
  isSelf: boolean;
}

LeagueSelfStanding

The buddy's own season summary.

export interface LeagueSelfStanding {
  buddyId: string;
  name: string;
  points: number;
  rank: number;
  /** True when the buddy sits in the bottom quarter of the cohort. */
  inDemotionZone: boolean;
}

LeagueSeasonView

The active season the buddy is competing in.

export interface LeagueSeasonView {
  id: string;
  seasonNumber: number;
  name: string | null;
  scheduledEndAt: string;
}

LeagueWidgetSnapshot

The GET /widget/leagues/me payload. available: false is a normal outcome (plan not entitled, no active season, or the buddy not enrolled) — callers render nothing rather than treating it as an error.

export interface LeagueWidgetSnapshot {
  available: boolean;
  reason: LeagueWidgetUnavailableReason | null;
  tier: LeagueTierView | null;
  /** The tier one rung up — the promotion target. Null at the top tier. */
  nextTier: LeagueTierView | null;
  season: LeagueSeasonView | null;
  cohortSize: number;
  /** Top 5 of the cohort, plus the buddy's own row pinned if outside the top 5. */
  standings: LeagueStandingRow[];
  self: LeagueSelfStanding | null;
  /** Advisory promotion threshold for the progress bar. */
  minPointsForPromotion: number;
}

LeagueSeasonHighlightKind

Which kind of season-closing highlight a scene represents.

export type LeagueSeasonHighlightKind =
  | 'best_week'
  | 'most_kudos_sent'
  | 'most_items_collected'
  | 'cohort_role';

LeagueSeasonHighlight

One personalized season-closing highlight scene.

export interface LeagueSeasonHighlight {
  kind: LeagueSeasonHighlightKind;
  title: string;
  value: number;
  detail: string;
  /** Standardised score within the cohort — the highest is the Brag pick. */
  zScore: number;
}

LeagueSeasonHighlightsSnapshot

The GET /widget/leagues/seasons/:id/highlights/me payload.

export interface LeagueSeasonHighlightsSnapshot {
  available: boolean;
  seasonId: string;
  seasonNumber: number;
  highlights: LeagueSeasonHighlight[];
  topHighlightKind: LeagueSeasonHighlightKind | null;
  outcome: 'promoted' | 'stayed' | 'demoted';
  finalRank: number;
  cohortSize: number;
  shareCode: string | null;
}

BossFightTargetMetric

The metric a Boss Fight counts toward its season-long target.

export type BossFightTargetMetric =
  | 'skill_events'
  | 'kudos_sent'
  | 'items_collected';

BossFightCopy

A Boss Fight's name or description copy (English-only).

export type BossFightCopy = string;

BossFightLeaderRow

One row of the Boss Fight challenge leaderboard.

export interface BossFightLeaderRow {
  buddyId: string;
  name: string;
  imageUrl: string | null;
  progressValue: number;
  /** Set once the buddy clears the boss, in completion order (1 = first). */
  completedRank: number | null;
  isSelf: boolean;
}

BossFightProgressView

The GET /widget/leagues/boss-fight payload — F4.2 Seasonal Challenge. available: false is a normal outcome (no active season, no boss fight on it, or the buddy not enrolled) — callers render nothing.

export interface BossFightProgressView {
  available: boolean;
  seasonId: string | null;
  seasonNumber: number | null;
  name: BossFightCopy | null;
  description: BossFightCopy | null;
  targetMetric: BossFightTargetMetric | null;
  targetValue: number;
  /** The requesting buddy's accumulated progress. */
  selfProgress: number;
  /** The buddy's completion rank, or null if the boss is not yet cleared. */
  selfCompletedRank: number | null;
  /** When the boss-fight season closes (ISO) — the challenge deadline. */
  endsAt: string | null;
  /** Top finishers by progress. */
  leaderboard: BossFightLeaderRow[];
}

HexadType

export type HexadType =
  | 'philanthropist'
  | 'socialiser'
  | 'free_spirit'
  | 'achiever'
  | 'player'
  | 'disruptor';

HexadSurveyQuestion

A single survey question as advertised to the widget.

export interface HexadSurveyQuestion {
  /** Stable key — `q1..q24` in the default catalog. */
  key: string;
  /** Which Hexad axis the answer feeds. */
  axis: HexadType;
  /** When true, the scorer flips the Likert direction (1↔5). */
  reverse?: boolean;
}

HexadSurveyQuestionsResponse

export interface HexadSurveyQuestionsResponse {
  /** Current consent version — re-stamp by submitting a fresh response. */
  consent_version: string;
  questions: HexadSurveyQuestion[];
}

HexadAnswerMap

Map of questionKey -> Likert (1..5).

export interface HexadAnswerMap {
  [questionKey: string]: number;
}

SubmitHexadSurveyParams

export interface SubmitHexadSurveyParams {
  answers: HexadAnswerMap;
  /** Consent version the buddy is explicitly acknowledging. */
  consentVersion: string;
  signal?: AbortSignal;
}

HexadSurveySubmitResult

export interface HexadSurveySubmitResult {
  primary_type: HexadType;
  derived_scores: Record<HexadType, number>;
  consent_version: string;
  /** ISO timestamp — raw row is purged on/after this date. */
  retention_expires_at: string;
}

HexadSurveyMyResponse

export interface HexadSurveyMyResponse {
  response: {
    primary_type: HexadType;
    derived_scores: Record<HexadType, number>;
    consent_version: string;
    retention_expires_at: string;
    responded_at: string;
  } | null;
}

AuthMethod

export type AuthMethod = 'api_key' | 'dashboard_jwt';

ApiKeyType

export type ApiKeyType = 'secret' | 'publishable';

PlanKey

export type PlanKey = 'starter' | 'growth' | 'pro' | 'enterprise';

ApiKeySummary

export interface ApiKeySummary {
  id: string;
  label: string | null;
  keyType: ApiKeyType;
  scopes: string[];
  lastUsedAt: string | null;
  createdAt: string;
}

WhoamiResult

export interface WhoamiResult {
  customerId: string;
  customerName: string;
  plan: PlanKey;
  /** Capability flags currently entitled by the customer's plan. */
  capabilities: string[];
  /** Whether the caller authenticated with an API key or a dashboard JWT. */
  authMethod: AuthMethod;
  /** Null when authenticating with a dashboard JWT. */
  apiKey: ApiKeySummary | null;
  workspaceRef: string;
}

Notification

One in-app notification, as the banner widget renders it.

export interface Notification {
  id: string;
  /** The emitter's notification type key (e.g. `streak_watchdog`). */
  type: string;
  /** Display severity — drives the banner's accent treatment. */
  severity: string;
  title: string;
  body: string;
  /** Icon key the widget maps to its glyph set. */
  icon: string;
  ctaUrl: string | null;
  ctaLabel: string | null;
  /** When the notification self-expires, or null when it never does. */
  expiresAt: string | null;
  readAt: string | null;
  dismissedAt: string | null;
  metadata: Record<string, unknown>;
  createdAt: string;
}

NotificationFeedPage

export interface NotificationFeedPage {
  notifications: Notification[];
  /** Opaque cursor for the next page, or null when the feed is exhausted. */
  nextCursor: string | null;
  /** Unread, non-dismissed count — folded in so the badge needs one poll. */
  unreadCount: number;
  /** When the buddy's vacation pause lifts, or null when not paused. */
  pausedUntil: string | null;
}

ListNotificationsParams

export interface ListNotificationsParams {
  /** Opaque cursor from a previous page's `nextCursor`. */
  cursor?: string;
  /** Page size — clamped server-side. */
  limit?: number;
  /** Include already-read notifications in the feed (default false). */
  includeRead?: boolean;
  signal?: AbortSignal;
}

UnreadCountResult

export interface UnreadCountResult {
  unreadCount: number;
}

DismissAllResult

export interface DismissAllResult {
  /** How many notifications were read + dismissed by the sweep. */
  dismissed: number;
}

DismissResult

export interface DismissResult {
  dismissed: true;
}

MysteryBoxReward

A resolved Mystery Box reward. The pool is coins-only today, so type is always coins; is_lucky is true when the draw landed in the rare tier.

export interface MysteryBoxReward {
  type: 'coins';
  amount: number;
  isLucky: boolean;
}

MysteryBoxState

The GET /widget/mystery-box/state payload. locked: true means the tenant's plan does not entitle the box — the widget renders nothing rather than treating it as an error.

export interface MysteryBoxState {
  locked: boolean;
  eligible: boolean;
  /** Midnight UTC that opens the next claim, or null when eligible now. */
  nextEligibleAt: string | null;
  /** The most recent reward this buddy drew, or null if never opened. */
  lastReward: MysteryBoxReward | null;
}

MysteryBoxClaimResult

The POST /widget/mystery-box/claim payload.

export interface MysteryBoxClaimResult {
  reward: MysteryBoxReward;
  claimedAt: string;
}

NarrativeProposalStatus

Lifecycle of a Council narrative proposal.

export type NarrativeProposalStatus =
  | 'pending'
  | 'approved'
  | 'rejected'
  | 'live';

Proposal

One narrative proposal authored by a Council member.

export interface Proposal {
  id: string;
  proposerBuddyId: string;
  /** The narrative slot the copy targets (e.g. `level_up_copy_stage_3`). */
  targetSlot: string;
  proposedText: string;
  status: NarrativeProposalStatus;
  reviewerNote: string | null;
  reviewedAt: string | null;
  createdAt: string;
}

MyProposalsView

The GET /widget/council/proposals/mine payload. When the buddy is not a Council member (or the tenant is not entitled), is_council_member is false and the quota fields are zeroed — the widget renders its locked state.

export interface MyProposalsView {
  isCouncilMember: boolean;
  /** Narrative stages open to Council proposals. */
  allowedStages: number[];
  /** Proposals the buddy may submit per ISO week. */
  weeklyLimit: number;
  usedThisWeek: number;
  proposals: Proposal[];
}

SubmitProposalParams

export interface SubmitProposalParams {
  /** The narrative slot key to target (e.g. `level_up_copy_stage_3`). */
  targetSlot: string;
  proposedText: string;
  signal?: AbortSignal;
}

FreeLunchNotification

The GET /widget/free-lunch/notification payload. When there is nothing to show, has_pending is false and the reward fields are absent — the widget renders no banner.

export interface FreeLunchNotification {
  hasPending: boolean;
  /** The grant to acknowledge once the banner is shown. */
  grantId?: string;
  /** The coin amount the welcome credit granted. */
  amount?: number;
  /** Tenant-configured banner copy. */
  calloutCopy?: string;
}

FreeLunchAcknowledgeResult

export interface FreeLunchAcknowledgeResult {
  /** False when the grant was already acknowledged or did not match. */
  acknowledged: boolean;
}

BeginnersLuckAwardedItem

The collectible a Beginner's Luck winner is awarded.

export interface BeginnersLuckAwardedItem {
  id: string;
  name: string;
  thumbnailUrl: string | null;
  rarityLabel: string;
}

BeginnersLuckResult

The GET /widget/beginners-luck/result payload. The reveal is winner-only: losers and a disabled feature both resolve to won: false with no awarded item or copy.

export interface BeginnersLuckResult {
  won: boolean;
  awardedItem: BeginnersLuckAwardedItem | null;
  calloutCopy: string | null;
}

RecordWidgetRenderedParams

export interface RecordWidgetRenderedParams {
  /** Widget mount IDs that rendered successfully on this page view. */
  widgets?: string[];
  /** Loader semantic version. */
  loaderVersion?: string;
  /** Opaque loader build identifier. */
  buildId?: string;
  signal?: AbortSignal;
}

WidgetRenderedResult

export interface WidgetRenderedResult {
  ok: true;
  /** True only for the first production render event accepted for the workspace. */
  first: boolean;
  /** Present when the server accepts but intentionally ignores the beacon. */
  skipped?: 'preview';
}

KnownErrorCode

Union of every known error code string. Use this when annotating your own switch statement's exhaustiveness:

function handle(code: KnownErrorCode) { switch (code) { ... } }

Unknown codes (e.g. ones added server-side between SDK releases) still arrive on HatchedError.code as plain strings; this union covers only what the current SDK knows about.

export type KnownErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];

paths

Auto-generated from apps/api/openapi.public.json.

Do NOT edit by hand — run pnpm --filter @hatched/sdk-js generate:types after a contract change. The CI check:types step fails if this file drifts from the committed openapi.public.json.

export type paths = {
    "/customers/me": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get: operations["CustomersController_getProfile"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch: operations["CustomersController_updateProfile"];
        trace?: never;
    };
    "/customers/me/referral": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the current workspace referral link
         * @description Returns a referral link only after activation has reached first widget render. Referred signups grant promo AI credits to both workspaces.
         */
        get: operations["CustomersController_getReferral"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/settings": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch: operations["CustomersController_updateSettings"];
        trace?: never;
    };
    "/customers/me/widget-theme/suggest": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Suggest widget theme customization
         * @description Drafts widget CSS variables and starter custom CSS from the customer visual theme. The dashboard applies it as an editable draft.
         */
        post: operations["CustomersController_suggestWidgetTheme"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/audiences": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /**
         * Replace the customer audience list
         * @description Defines 1..5 rol-based audiences. Removing an audience that still has buddies returns 409 audience_in_use.
         */
        patch: operations["CustomersController_updateAudiences"];
        trace?: never;
    };
    "/customers/me/assets/regenerate": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Bulk regenerate AI assets
         * @description Flips every non-uploaded badge + item to pending and enqueues icon/image generation jobs. Use mode=missing to queue only failed/missing assets. Uploaded (manual) assets are skipped.
         */
        post: operations["CustomersController_regenerateAssets"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/users/{user_id}/data": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        delete: operations["CustomersController_deleteUserData"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/feature-toggles": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the tenant feature toggle state
         * @description Returns the effective toggle state (registry defaults merged with tenant overrides), the published map, and any pending draft. Drives the Gamification Planner.
         */
        get: operations["CustomerFeatureToggleController_getState"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /**
         * Update tenant feature toggles
         * @description Merges a partial toggle map into the tenant state. `mode: "draft"` keeps the change in a draft column; `mode: "publish"` writes through to the live `feature_toggles`.
         */
        patch: operations["CustomerFeatureToggleController_updateToggles"];
        trace?: never;
    };
    "/customers/me/octalysis-state": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the tenant Octalysis aggregate state
         * @description Returns effective toggles plus radar, hat balance, and brain balance aggregates. Cached for 60 seconds and invalidated by toggle writes.
         */
        get: operations["CustomerFeatureToggleController_getOctalysisState"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/feature-toggles/publish": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Publish the pending draft toggle map
         * @description Promotes `feature_toggles_draft` to `feature_toggles` atomically and clears the draft.
         */
        post: operations["CustomerFeatureToggleController_publishDraft"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/feature-toggles/draft": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /**
         * Discard the pending draft toggle map
         * @description Clears `feature_toggles_draft` without affecting the published state.
         */
        delete: operations["CustomerFeatureToggleController_discardDraft"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/feature-config": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the tenant feature_config blob
         * @description Returns customer-scoped configuration for every Planner-managed feature, with zod defaults applied for keys the admin has not touched.
         */
        get: operations["CustomerFeatureToggleController_getFeatureConfig"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/feature-config/{feature_key}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /**
         * Update one feature_config block
         * @description Validates the body against the schema registered for `feature_key` and persists the parsed result.
         */
        patch: operations["CustomerFeatureToggleController_updateFeatureConfig"];
        trace?: never;
    };
    "/customers/me/narrative": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the tenant narrative state
         * @description Returns the effective (published, resolved over Hatched defaults) narrative, the raw published blob, and any pending draft.
         */
        get: operations["CustomerNarrativeController_getNarrative"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /**
         * Update the tenant narrative
         * @description Merges a partial narrative patch. `mode: "draft"` keeps the change in `narrative_draft`; `mode: "publish"` writes through to `narrative` and busts the widget caches. Every changed field is recorded in the narrative audit log.
         */
        patch: operations["CustomerNarrativeController_updateNarrative"];
        trace?: never;
    };
    "/customers/me/narrative/audit": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List narrative copy change history
         * @description Returns the most recent narrative field changes (B2B compliance). Filter by `field` (dot-notation path); `limit` defaults to 50, capped at 200.
         */
        get: operations["CustomerNarrativeController_getNarrativeAudit"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/mission-anchor-config": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the Mission Anchor admin config
         * @description Returns the resolved Mission Anchor policy — per-widget visibility, modal toggles, theme override, and the A/B test on the short copy.
         */
        get: operations["CustomerMissionAnchorController_getConfig"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /**
         * Update the Mission Anchor admin config
         * @description Merges a partial config patch. Each section present in the body (`visibility`, `modal`, `theme_override`, `ab_test`) replaces that section wholesale; missing sections are left untouched. Busts the widget cache.
         */
        patch: operations["CustomerMissionAnchorController_updateConfig"];
        trace?: never;
    };
    "/customers/me/onboarding/six-d": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the tenant 6D wizard state
         * @description Returns `null` when the tenant has not run the wizard yet; otherwise the full validated `six_d` config (objectives → fun + completed_at).
         */
        get: operations["SixDWizardController_get"];
        put?: never;
        /**
         * Apply the full 6D wizard payload
         * @description Writes through to `customers.feature_config.six_d`, optionally seeds the toggle draft with the wizard-recommended features, and records `six_d_wizard_applied` in the admin audit log. Completing the wizard also counts as onboarding: a first-time completion sets `preset_plan` and publishes a minimal config version, so login skips /onboarding/start and `POST /players/zero` works immediately. Re-applies never create extra config versions.
         */
        post: operations["SixDWizardController_apply"];
        delete?: never;
        options?: never;
        head?: never;
        /**
         * Patch one or more 6D wizard sections
         * @description Merges the partial payload over the current config, re-validates the full shape, and records `six_d_wizard_patched` in the admin audit log. Returns the new full config.
         */
        patch: operations["SixDWizardController_patch"];
        trace?: never;
    };
    "/customers/me/onboarding/six-d/skip": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * HTCH-137 — Expert skip
         * @description Marks the wizard (at /onboarding/six-d) as completed with an empty objective set; the Planner then shows audience-only recommendations. Counts as onboarding the same way a full apply does (sets `preset_plan`, publishes a minimal config version). Records `six_d_wizard_skipped` in the audit log.
         */
        post: operations["SixDWizardController_skip"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/onboarding/six-d/audit": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * HTCH-137 — Audit timeline
         * @description Returns the most recent `six_d_wizard_*` audit log entries for this tenant. Powers the wizard history timeline in Planner Insights.
         */
        get: operations["SixDWizardController_audit"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/onboarding/six-d/drift-stats": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * HTCH-137 — Config drift stats
         * @description Returns the `six_d_wizard_applied` count over the last 30 days and a `drift_detected` flag (>= 3 reapplies).
         */
        get: operations["SixDWizardController_driftStats"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/register": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Register a new customer account */
        post: operations["AuthController_register"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/login": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Authenticate and obtain a JWT token */
        post: operations["AuthController_login"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/sso/config": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Return public dashboard SSO configuration */
        get: operations["AuthController_getSsoConfig"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/sso/start": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Start dashboard SSO via generic OIDC */
        get: operations["AuthController_startSso"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/sso/callback": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Complete dashboard SSO callback from OIDC provider */
        get: operations["AuthController_completeSso"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/password/change": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Change the current dashboard account password */
        post: operations["AuthController_changePassword"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/password/reset/request": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Request a dashboard password reset token */
        post: operations["AuthController_requestPasswordReset"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/password/reset": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Reset dashboard password with a one-time token */
        post: operations["AuthController_resetPassword"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/email/verify": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Verify dashboard account email with a one-time token */
        post: operations["AuthController_verifyEmail"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/email/verification/request": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Request a fresh dashboard email verification link */
        post: operations["AuthController_requestEmailVerification"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/me": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Get the currently authenticated customer profile */
        get: operations["AuthController_me"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/api-keys/whoami": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Return the identity, plan, capabilities, and scopes of the calling credential
         * @description Use this to validate an API key during onboarding/CI without performing a side-effectful call. For dashboard JWT auth, the api_key field is null. For secret API keys, scopes is an empty array (full surface). For publishable keys, scopes carries the publishable-scope list.
         */
        get: operations["AuthController_whoami"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/api-keys": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List all active API keys for the current customer */
        get: operations["AuthController_listApiKeys"];
        put?: never;
        /** Create a new API key */
        post: operations["AuthController_createApiKey"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/api-keys/rotate": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Rotate API keys by revoking all existing keys and creating a new one */
        post: operations["AuthController_rotateApiKey"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/api-keys/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /** Revoke an API key by its ID */
        delete: operations["AuthController_revokeApiKey"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/publishable-keys": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Issue a browser-safe publishable key (hatch_pk_*) with a scoped set of permissions. */
        post: operations["AuthController_createPublishableKey"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/operations/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Get an operation by its ID */
        get: operations["OperationsController_findOne"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/operations": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List operations with optional type and status filters */
        get: operations["OperationsController_findAll"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/operations/{id}/cancel": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Cancel a pending or processing operation */
        post: operations["OperationsController_cancel"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget-sessions/preview": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Create automatic dashboard preview tokens
         * @description Finds the current customer’s latest active buddy and returns short-lived tokens for the widget customization preview.
         */
        get: operations["WidgetSessionsController_createPreviewTokens"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/players/zero": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Read Player Zero status without provisioning it
         * @description Returns whether the workspace demo player exists and whether a hatch ceremony has completed for any buddy in the workspace. Read-only — never creates the player. Powers the activation checklist "Hatch your buddy" step.
         */
        get: operations["WidgetSessionsController_getPlayerZeroStatus"];
        put?: never;
        /**
         * Create or get the workspace demo player (Player Zero)
         * @description Idempotently provisions a canonical demo buddy ("Player Zero", user_id "player-0") for the current workspace, bound by every dashboard widget preview. Instant — uses a preset Fern sprite instead of the async AI image pipeline. It does not publish Planner drafts; preview tokens read drafts separately.
         */
        post: operations["WidgetSessionsController_createPlayerZero"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/embed-tokens": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Create embed token
         * @description Generate a read-only embed token for widget rendering
         */
        post: operations["WidgetSessionsController_createEmbedToken"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget-sessions": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Create session token
         * @description Create an interactive widget session with scoped permissions
         */
        post: operations["WidgetSessionsController_createSessionToken"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget-sessions/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /**
         * Revoke widget session
         * @description Revoke an active widget session by ID
         */
        delete: operations["WidgetSessionsController_revokeSession"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget-sessions/verify-installation": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Verify widget installation
         * @description Server-side fetches a page and reports whether the Hatched loader snippet is present in the served HTML. Falls back to the first configured allowed origin when no URL is supplied.
         */
        post: operations["WidgetSessionsController_verifyInstallation"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/buddy": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get widget buddy
         * @description Returns buddy canonical state along with widget configuration
         */
        get: operations["WidgetApiController_getBuddy"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/buddy/share": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Mint (or fetch) the public share link for the widget buddy
         * @description Returns { enabled, share_code, share_url, card_url }. Mints the code on first call. Pass ?channel= to also log the share to that channel.
         */
        post: operations["WidgetApiController_createShareLink"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/buddy/share/events": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Record a share-sheet funnel event (opened) */
        post: operations["WidgetApiController_recordShareEvent"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/buddy/hatched": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Record that the hatch ceremony completed for the widget buddy
         * @description HTCH — persists `hatch_ceremony_seen` so read-only previews and re-mounts render the hatched buddy instead of replaying the egg ceremony. Requires an interactive session with events:track. Idempotent; the buddy widget calls it once the celebration beat settles.
         */
        post: operations["WidgetApiController_markBuddyHatched"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/buddy/seo": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /**
         * Set the per-buddy search-indexing preference
         * @description HTCH-66 — lets the end-user keep their public share page out of (or in) search engines. Omit `public_search_indexable` to inherit the tenant default.
         */
        patch: operations["WidgetApiController_updateBuddySeo"];
        trace?: never;
    };
    "/widget/buddy/profile": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /**
         * Update the buddy public Profile Page preferences
         * @description HTCH-101 — toggles, per buddy, whether the public Profile Page shows the "Champion of Season N" Hall of Fame trophies.
         */
        patch: operations["WidgetApiController_updateBuddyProfile"];
        trace?: never;
    };
    "/widget/state": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get aggregate widget state
         * @description Single-request snapshot of everything a mounted widget set needs: buddy canonical state, badge catalog, and any async operations still pending for the buddy. Responds with an ETag — send it back via If-None-Match to get a 304 when nothing changed.
         */
        get: operations["WidgetApiController_getState"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/narrative": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the tenant narrative
         * @description Returns the published tenant narrative resolved over the Hatched defaults — the 5-act hatch ceremony copy, evolution level-up copy, win-state meaning templates, and mission fields. Cached server-side for 5 minutes.
         */
        get: operations["WidgetApiController_getNarrative"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/narrative/arc": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the Program Chapters arc
         * @description HTCH-15x — Yu-kai #10 Narrative. Returns the workspace program-chapter arc: authored chapters (empties dropped) plus each chapter’s reveal state, where a chapter is revealed once the workspace wins a group-quest tagged with its key. `available:false` → the arc is disabled or has no authored chapter and the widget renders nothing. Cached server-side for 5 minutes.
         */
        get: operations["WidgetApiController_getNarrativeArc"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/mission-anchor": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the Mission Anchor payload
         * @description HTCH-35 — the persistent CD1 mission badge for widget chrome. Returns the (A/B-resolved) short copy, the full mission, the user’s weekly contribution, and the admin anchor config. `anchor_config` is null when the mission_anchor feature is off — the widget then skips the mount.
         */
        get: operations["WidgetApiController_getMissionAnchor"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/rendered": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Record a successful widget render
         * @description Loader-level activation beacon. Requires only a valid widget token, not events:track scope, and does not consume customer event quota. Preview tokens are ignored so dashboard previews do not claim production activation.
         */
        post: operations["WidgetApiController_recordRendered"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/track": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Track event from browser
         * @description Browser-safe event ingestion. Derives user_id and audience from the widget token, so the browser only supplies type + optional properties. Returns the same effects payload as the server-to-server ingest so widgets can apply it optimistically.
         */
        post: operations["WidgetApiController_trackEvent"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/marketplace": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get widget marketplace
         * @description Returns marketplace items visible to the buddy, with ownership and lock status
         */
        get: operations["WidgetApiController_getMarketplace"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/marketplace/items/{id}/track-view": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Track marketplace item impression
         * @description Records an impression each time a widget surfaces an item. Feeds the marketplace funnel analytics. Fire-and-forget from the widget — never blocks the user flow.
         */
        post: operations["WidgetApiController_trackMarketplaceItemView"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/purchase": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Purchase item
         * @description Purchase a marketplace item using coins. Requires marketplace:purchase scope.
         */
        post: operations["WidgetApiController_purchaseItem"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/equip": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Equip or unequip items
         * @description Equip or unequip items on the buddy. Requires items:equip scope.
         */
        post: operations["WidgetApiController_equipItems"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/appearance/rerender": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Rerender stage base
         * @description Regenerate the buddy’s bare stage image. Use when appearance.status is "failed" with code="needs_rerender" or after a hard generation failure that left the base contaminated. Equipped items are cleared from the rendered set; the user can re-equip after status returns to "ready".
         */
        post: operations["WidgetApiController_rerenderAppearance"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/marketplace/preview-outfit": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Preview an outfit composition
         * @description Returns the cached composite variant for a slot→item map, or kicks off a background composition job and returns status="pending". The buddy state is NOT mutated.
         */
        post: operations["WidgetApiController_previewOutfit"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/marketplace/composition-status": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Poll an outfit composition variant
         * @description Returns the current state of a buddy_image_variant row scoped to the current customer. Used by the dress-mode widget to swap the preview image once composition completes.
         */
        get: operations["WidgetApiController_compositionStatus"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/marketplace/outfits": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List saved outfits
         * @description Returns the buddy’s saved outfits ordered by active-first then most-recent.
         */
        get: operations["WidgetApiController_listOutfits"];
        put?: never;
        /**
         * Save a new outfit
         * @description Persists a slot→item map under a user-supplied name. Cap is driven by marketplace_dress.outfit_limit_per_buddy.
         */
        post: operations["WidgetApiController_saveOutfit"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/marketplace/outfits/{id}/activate": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /**
         * Activate a saved outfit
         * @description Marks the outfit active and delegates to the equip pipeline so the buddy’s composite stays in lockstep.
         */
        patch: operations["WidgetApiController_activateOutfit"];
        trace?: never;
    };
    "/widget/marketplace/outfits/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /**
         * Delete a saved outfit
         * @description Removes the outfit row for the current widget buddy.
         */
        delete: operations["WidgetApiController_deleteOutfit"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/badges": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get widget badge catalog
         * @description Returns the buddy’s earned badges plus locked definitions with progress hints. HTCH-16: locked badges default-on so the collection grid surfaces "to go" tiles; pass `include_locked=false` to suppress them for tight embedded surfaces.
         */
        get: operations["WidgetApiController_getBadges"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/path": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the active path for the buddy’s audience
         * @description Resolves the audience’s currently active path definition and returns the buddy-scoped runtime payload (locked/available/completed sub-step states + current_step_key). Returns `null` when no path is active for this audience.
         */
        get: operations["WidgetApiController_getActivePath"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/path/{key}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get a specific path for a buddy
         * @description Forces the runtime payload for a specific path key (caller-driven mount), independent of which path is currently active.
         */
        get: operations["WidgetApiController_getPathByKey"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/path/{key}/sub-steps/{subKey}/complete": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Manually mark a sub-step complete
         * @description Idempotent on (buddy, sub-step). Only succeeds for sub-steps where allow_manual_complete=true. Returns the cascade flags so the widget can paint step.completed / path.completed celebrations without an extra fetch.
         */
        post: operations["WidgetApiController_completePathSubStep"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/streak/{key}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get widget streak
         * @description Returns the current streak progress for a specific admin-defined streak key. The widget instance mounts with data-streak-key="..." to select which streak it renders.
         */
        get: operations["WidgetApiController_getStreak"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/evolutions": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get widget evolution timeline
         * @description Returns the stage-transition history for the current buddy, newest first. Covers prod, auto-evolve, and demo paths.
         */
        get: operations["WidgetApiController_getEvolutions"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/tokens": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the buddy’s token wallet
         * @description Returns the spendable primary balance (coins) plus every active progression-token balance for the buddy’s audience. Used by the tokens widget to render a multi-currency wallet card.
         */
        get: operations["WidgetApiController_getTokens"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/operations/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get widget operation
         * @description Get the status of an async operation for the current buddy
         */
        get: operations["WidgetApiController_getOperation"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/theme": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Live widget theme
         * @description Returns the customer's authoritative widget theme (vars, custom CSS, size). Loader uses this to keep the deployed snippet in sync with Widget Studio without manual re-deploys.
         */
        get: operations["WidgetApiController_getLiveTheme"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/next-best-action": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the single next-best-action recommendation
         * @description HTCH-26 — Yu-kai #28 Desert Oasis. Runs eight strategies, applies tenant overrides (enable per kind, priority multiplier, copy override), and returns the winning action plus a `fallback_used` flag (true when the try_new_outfit strategy fired because nothing higher-priority matched). Cached per buddy for 30 seconds.
         */
        get: operations["WidgetApiController_getNextBestAction"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/presets": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List presets
         * @description List all available presets with summaries
         */
        get: operations["PresetsController_listPresets"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/presets/{key}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get preset
         * @description Get full preset configuration by key
         */
        get: operations["PresetsController_getPreset"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/apply-preset": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Apply preset
         * @description Apply a preset configuration to the authenticated customer
         */
        post: operations["PresetsController_applyPreset"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/config-versions": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List config versions
         * @description List all config versions for the customer
         */
        get: operations["ConfigVersionsController_findAll"];
        put?: never;
        /**
         * Create or open the draft config version
         * @description Idempotent for the "open a draft to edit" intent: with no (or an empty) snapshot it returns the existing unpublished draft if one exists, otherwise creates one. A non-empty snapshot is a deliberate create. This stops the dashboard "New draft" button (and any double-click) from 400-ing with "An unpublished draft already exists".
         */
        post: operations["ConfigVersionsController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/config-versions/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get config version
         * @description Get a single config version by ID
         */
        get: operations["ConfigVersionsController_findById"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /**
         * Update config version
         * @description Update a draft config version
         */
        patch: operations["ConfigVersionsController_update"];
        trace?: never;
    };
    "/config-versions/{id}/publish": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Publish config version
         * @description Publish a draft config version, making it the active configuration
         */
        post: operations["ConfigVersionsController_publish"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/config-versions/{id}/impact": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Preview config impact
         * @description Get an impact preview for a draft config version before publishing
         */
        get: operations["ConfigVersionsController_getImpact"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/config-versions/{id}/clone": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Clone config version
         * @description Create a new draft from an existing config version
         */
        post: operations["ConfigVersionsController_clone"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/config-versions/{id}/migrate-buddies": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Migrate buddies
         * @description Re-point active buddies to a published config version
         */
        post: operations["ConfigVersionsController_migrateBuddies"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/eggs": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List eggs with optional user and status filters */
        get: operations["EggsController_findAll"];
        put?: never;
        /** Create a new egg for a user */
        post: operations["EggsController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/eggs/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Get an egg by its ID */
        get: operations["EggsController_findById"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/eggs/{id}/status": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /** Update an egg status to ready or cancelled */
        patch: operations["EggsController_updateStatus"];
        trace?: never;
    };
    "/eggs/{id}/hatch": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Start the asynchronous hatch process for an egg */
        post: operations["EggsController_hatch"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List buddies with pagination and optional filters */
        get: operations["BuddiesController_findAll"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/users/{user_id}/summary": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Get a user summary including buddy count, coins, and badges */
        get: operations["BuddiesController_getUserSummary"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Get buddy details with full canonical state */
        get: operations["BuddiesController_findById"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /** Update a buddy name */
        patch: operations["BuddiesController_update"];
        trace?: never;
    };
    "/buddies/{id}/archive": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /** Archive a buddy (one-way transition from active to archived) */
        patch: operations["BuddiesController_archive"];
        trace?: never;
    };
    "/buddies/{id}/skills": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /** Update buddy skill levels (increase, decrease, or set) */
        patch: operations["BuddiesController_updateSkills"];
        trace?: never;
    };
    "/buddies/{buddy_id}/coins": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Earn coins for a buddy (supports idempotency) */
        post: operations["BuddiesController_earnCoins"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{buddy_id}/coins/spend": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Spend coins for a buddy (supports idempotency) */
        post: operations["BuddiesController_spendCoins"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{buddy_id}/badges": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List all badges awarded to a buddy */
        get: operations["BuddiesController_getBuddyBadges"];
        put?: never;
        /** Award a badge to a buddy */
        post: operations["BuddiesController_awardBadge"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{buddy_id}/evolution": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Check evolution readiness and progress for a buddy */
        get: operations["BuddiesController_getEvolutionReadiness"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{buddy_id}/evolve": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Trigger asynchronous buddy evolution */
        post: operations["BuddiesController_evolve"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{buddy_id}/purchase-item": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Purchase a marketplace item using coins (supports idempotency) */
        post: operations["BuddiesController_purchaseItem"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{buddy_id}/unlock-item": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Unlock an item without spending coins */
        post: operations["BuddiesController_unlockItem"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{buddy_id}/equipped-items": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /** Equip or unequip items on a buddy */
        patch: operations["BuddiesController_equipItems"];
        trace?: never;
    };
    "/buddies/{buddy_id}/appearance/rerender": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Regenerate the buddy stage base image */
        post: operations["BuddiesController_rerenderAppearance"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{buddy_id}/purchased-items": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List all purchased items for a buddy */
        get: operations["BuddiesController_getPurchasedItems"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{buddy_id}/tokens": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Typed token balances (primary + progression)
         * @description Returns the buddy's balances grouped by token kind. Each slot is null if the customer has not configured that kind.
         */
        get: operations["BuddiesController_getTokens"];
        put?: never;
        /** Earn or spend tokens for a buddy (supports idempotency) */
        post: operations["BuddiesController_tokenTransaction"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{buddy_id}/evolutions": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Stage transition timeline for a buddy */
        get: operations["BuddiesController_listEvolutions"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{buddy_id}/progression": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Get buddy progression metrics (legacy endpoint) */
        get: operations["BuddiesController_getProgressionLegacy"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{buddy_id}/progression-metrics": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Get buddy progression metrics (lessons, quizzes, streaks, etc.) */
        get: operations["BuddiesController_getProgression"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/users/{user_id}/summary": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get: operations["CustomersSummaryController_getUserSummary"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{id}/share": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Mint (or fetch) the public share link for a buddy */
        post: operations["BuddyShareController_createShare"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{id}/share/events": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Record a share-sheet funnel event (opened / shared) */
        post: operations["BuddyShareController_recordEvent"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddy-share/stats": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Rolling-window buddy-share funnel for the tenant */
        get: operations["BuddyShareStatsController_getStats"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddy-share/settings": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Tenant buddy-share settings (toggles + resolved link origin) */
        get: operations["BuddyShareStatsController_getSettings"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /** Update buddy-share toggles (enabled / show_tenant_name / cta_url) */
        patch: operations["BuddyShareStatsController_updateSettings"];
        trace?: never;
    };
    "/public/b/{code}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Resolve a buddy share code to its public card data */
        get: operations["PublicShareController_getPublicBuddy"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/public/b/{code}/events": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Record a share-page funnel event (viewed / cta_clicked) */
        post: operations["PublicShareController_recordEvent"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/public/share-index": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List public share codes eligible for the sitemap (paged) */
        get: operations["PublicShareIndexController_getShareIndex"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/p/{code}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Resolve a share code to the rich Profile Page v1 payload */
        get: operations["ProfilePageController_getProfile"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/skill-sets": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List all skill sets
         * @description Returns all skill sets configured for the current customer.
         */
        get: operations["SkillSetsController_findAll"];
        put?: never;
        /**
         * Create a skill set
         * @description Create a new skill set with one or more skill definitions.
         */
        post: operations["SkillSetsController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/skill-sets/generate-icon": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Generate a skill icon with AI
         * @description Runs the AI image pipeline to create a skill icon for the given label/description. Returns a stored icon URL, the generation prompt, and the recorded cost.
         */
        post: operations["SkillSetsController_generateIcon"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/skill-sets/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get a skill set
         * @description Returns a single skill set by its ID, including all skill definitions.
         */
        get: operations["SkillSetsController_findById"];
        /**
         * Update a skill set
         * @description Update an existing skill set and its skill definitions by ID.
         */
        put: operations["SkillSetsController_update"];
        post?: never;
        /**
         * Delete a skill set
         * @description Permanently delete a skill set. Fails if any buddies are currently using it.
         */
        delete: operations["SkillSetsController_delete"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/skill-rules": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List all skill rules
         * @description Returns all skill rules configured for the current customer.
         */
        get: operations["SkillRulesController_findAll"];
        put?: never;
        /**
         * Create a skill rule
         * @description Create a new skill rule that defines how skill XP is awarded for a specific trigger event.
         */
        post: operations["SkillRulesController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/skill-rules/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        /**
         * Update a skill rule
         * @description Update an existing skill rule by ID.
         */
        put: operations["SkillRulesController_update"];
        post?: never;
        /**
         * Delete a skill rule
         * @description Permanently delete a skill rule by ID.
         */
        delete: operations["SkillRulesController_delete"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/skill-rules/apply-theme-pack": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Apply a theme-aware skill-rule pack (HTCH-128)
         * @description Appends a preset bundle of 3–6 skill rules (industry × theme_vibe) onto the tenant draft config. Duplicates are skipped (never overwritten). The response carries created + skipped + a theme/industry mismatch warning when applicable.
         */
        post: operations["SkillRulesController_applyThemePack"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/skill-decay-rules": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List skill decay rules */
        get: operations["SkillDecayRulesController_findAll"];
        put?: never;
        /**
         * Create a skill decay rule
         * @description Define how a skill level decays over time (daily/weekly/monthly). Decay is opt-in per customer via settings.features.decay.
         */
        post: operations["SkillDecayRulesController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/skill-decay-rules/{id}/preview": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Preview the cumulative effect of a decay rule
         * @description Returns the projected skill level after N cadence periods given a starting level. Used by the dashboard to show "in 30 days, 100 → ?".
         */
        get: operations["SkillDecayRulesController_preview"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/skill-decay-rules/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        /** Update a skill decay rule */
        put: operations["SkillDecayRulesController_update"];
        post?: never;
        /** Delete a skill decay rule */
        delete: operations["SkillDecayRulesController_delete"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/skill-decay-rules/{id}/history": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Recent decay applications for a rule
         * @description Returns the latest applications recorded against this rule so the dashboard can show "last 30 days" activity per rule.
         */
        get: operations["SkillDecayRulesController_history"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/skill-decay-rules/run-now": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Trigger a decay sweep immediately for this customer
         * @description Enqueues a one-off decay sweep scoped to this customer. The sweep is idempotent (a buddy already decayed for the current cadence period will not be touched), so this is safe to run during the day for QA or when an operator activates a rule and wants to see the effect now instead of waiting for the 03:00 UTC cron.
         */
        post: operations["SkillDecayRulesController_runNow"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/coin-rules": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List all coin rules
         * @description Returns all coin rules configured for the current customer.
         */
        get: operations["CoinRulesController_findAll"];
        put?: never;
        /**
         * Create a coin rule
         * @description Create a new coin rule that defines how coins are awarded for a specific trigger event.
         */
        post: operations["CoinRulesController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/coin-rules/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        /**
         * Update a coin rule
         * @description Update an existing coin rule by ID.
         */
        put: operations["CoinRulesController_update"];
        post?: never;
        /**
         * Delete a coin rule
         * @description Permanently delete a coin rule by ID.
         */
        delete: operations["CoinRulesController_delete"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/coin-rules/{id}/reward-pool/telemetry": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Reward pool telemetry
         * @description Returns the real reward-pool pick distribution for a coin rule over the last 30 days, for the Planner drawer believability check.
         */
        get: operations["CoinRulesController_rewardPoolTelemetry"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/economy/buddies/{buddyId}/ledger": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get coin ledger for a buddy
         * @description Returns a paginated list of coin transactions (credits and debits) for a specific buddy.
         */
        get: operations["EconomyController_getLedger"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/badge-definitions": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List all badge definitions
         * @description Returns all badge definitions configured for the current customer.
         */
        get: operations["BadgeDefinitionsController_findAll"];
        put?: never;
        /**
         * Create a badge definition
         * @description Create a new badge definition with criteria for automatic or manual awarding.
         */
        post: operations["BadgeDefinitionsController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/badge-definitions/upload-icon": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Upload a badge icon
         * @description Upload a PNG or SVG image file to use as a badge icon. Max size: 500KB.
         */
        post: operations["BadgeDefinitionsController_uploadIcon"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/badge-definitions/generate-icon": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Generate a badge icon with AI
         * @description Runs the AI image pipeline to create a badge icon for the given label/description. Returns a stored icon URL, the generation prompt, and the recorded cost.
         */
        post: operations["BadgeDefinitionsController_generateIcon"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/badge-definitions/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get a badge definition
         * @description Returns a single badge definition by its ID.
         */
        get: operations["BadgeDefinitionsController_findById"];
        /**
         * Update a badge definition
         * @description Update an existing badge definition by ID.
         */
        put: operations["BadgeDefinitionsController_update"];
        post?: never;
        /**
         * Delete a badge definition
         * @description Permanently delete a badge definition. Fails if awards already exist for this badge.
         */
        delete: operations["BadgeDefinitionsController_delete"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/badge-definitions/{id}/regenerate-icon": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Queue an AI regeneration for this badge icon
         * @description Flips the badge to icon_status=pending and enqueues a background job that drafts a fresh prompt from the customer theme and re-renders the medallion.
         */
        post: operations["BadgeDefinitionsController_regenerateIcon"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/event-badges": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List event-triggered badge campaigns */
        get: operations["EventTriggeredBadgeController_list"];
        put?: never;
        /** Create an event-triggered badge campaign */
        post: operations["EventTriggeredBadgeController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/event-badges/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /** Delete an event-triggered badge campaign */
        delete: operations["EventTriggeredBadgeController_remove"];
        options?: never;
        head?: never;
        /** Update an event-triggered badge campaign */
        patch: operations["EventTriggeredBadgeController_update"];
        trace?: never;
    };
    "/streak-definitions": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List all streak definitions */
        get: operations["StreakDefinitionsController_findAll"];
        put?: never;
        /** Create a streak definition */
        post: operations["StreakDefinitionsController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/streak-definitions/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Get a streak definition */
        get: operations["StreakDefinitionsController_findById"];
        /** Update a streak definition */
        put: operations["StreakDefinitionsController_update"];
        post?: never;
        /** Delete a streak definition */
        delete: operations["StreakDefinitionsController_delete"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/image-usage": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get image usage
         * @description Get current image generation usage and limits for the customer
         */
        get: operations["ImageCostController_getUsage"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/image-usage/report": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get image usage report
         * @description Get a detailed image generation usage report for a specific month
         */
        get: operations["ImageCostController_getUsageReport"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/events": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List events
         * @description List events with optional filters for user, type, date range, and limit
         */
        get: operations["EventsController_findAll"];
        put?: never;
        /**
         * Ingest event
         * @description Ingest a new event from an integration. Triggers coin, badge, and skill rules.
         */
        post: operations["EventsController_ingest"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/events/admin-trigger": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Trigger an event from the dashboard admin tools
         * @description Runs the same event ingestion and rule-engine path as the public event API, but accepts dashboard JWT auth for operator QA and support actions.
         */
        post: operations["EventsController_adminTrigger"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/events/batch": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Ingest event batch
         * @description Ingest multiple events in a single request (max 100)
         */
        post: operations["EventsController_ingestBatch"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/events/types": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List distinct event types
         * @description Returns distinct event type strings ever ingested for this customer. Used by rule editors so operators pick from observed events instead of a hardcoded list.
         */
        get: operations["EventsController_findTypes"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/events/active-users": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List most-active users in a recent window
         * @description Returns a leaderboard of users (players) ordered by event volume in the last N hours. Each row carries event count, last activity, top event types, and active-buddy count — enough for a single-glance activity feed.
         */
        get: operations["EventsController_findActiveUsers"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/events/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get event
         * @description Get a single event by ID including its processing effects
         */
        get: operations["EventsController_findById"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/event-types": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List event types */
        get: operations["EventTypesController_findAll"];
        put?: never;
        /** Register an event type */
        post: operations["EventTypesController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/event-types/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Get an event type */
        get: operations["EventTypesController_findById"];
        /**
         * Update or rename an event type
         * @description Renaming propagates to coin_rules, skill_rules, badge_definitions, streak_definitions, webhook_configs, event_ingestions, and custom_counters keys — all in a single transaction.
         */
        put: operations["EventTypesController_update"];
        post?: never;
        /**
         * Delete an event type
         * @description Rejects the delete if any rule references this event. 409 response includes per-table reference counts.
         */
        delete: operations["EventTypesController_delete"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/token-config": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List token configurations
         * @description Returns all token type configurations for the current customer.
         */
        get: operations["TokenConfigController_list"];
        put?: never;
        /**
         * Upsert token configuration
         * @description Create or update the token type configurations for the current customer.
         */
        post: operations["TokenConfigController_upsert"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/marketplaces": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List marketplaces
         * @description List all marketplaces for the authenticated customer
         */
        get: operations["MarketplaceController_list"];
        put?: never;
        /**
         * Create marketplace
         * @description Create a new marketplace for the authenticated customer
         */
        post: operations["MarketplaceController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/marketplaces/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get marketplace
         * @description Get a single marketplace by ID
         */
        get: operations["MarketplaceController_findOne"];
        /**
         * Update marketplace
         * @description Update an existing marketplace
         */
        put: operations["MarketplaceController_update"];
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/marketplaces/{id}/items": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List items
         * @description List items in a marketplace with optional filters and pagination
         */
        get: operations["MarketplaceController_listItems"];
        put?: never;
        /**
         * Create item
         * @description Create a new item in a marketplace
         */
        post: operations["MarketplaceController_createItem"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/marketplaces/{id}/items/import": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Import items
         * @description Bulk import items into a marketplace from JSON or CSV
         */
        post: operations["MarketplaceController_importItems"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/marketplaces/{id}/items/{item_id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get item
         * @description Get a single item by ID within a marketplace
         */
        get: operations["MarketplaceController_findItem"];
        /**
         * Update item
         * @description Update an existing marketplace item
         */
        put: operations["MarketplaceController_updateItem"];
        post?: never;
        /**
         * Delete item
         * @description Delete a marketplace item
         */
        delete: operations["MarketplaceController_deleteItem"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/marketplaces/{id}/items/reorder": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Reorder items
         * @description Set the display order of items in a marketplace
         */
        post: operations["MarketplaceController_reorderItems"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/marketplaces/{id}/items/{item_id}/upload-image": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Upload item image
         * @description Upload a PNG image for a marketplace item (max 2MB)
         */
        post: operations["MarketplaceController_uploadItemImage"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/marketplaces/{id}/items/{item_id}/regenerate-image": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Queue an AI regeneration for this item image
         * @description Flips the item to image_status=pending and enqueues a background job that drafts a fresh prompt from the customer theme and re-renders the item art.
         */
        post: operations["MarketplaceController_regenerateItemImage"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/items/{id}/gift": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Gift a marketplace item to a teammate
         * @description Debits the sender and writes the item into the recipient inventory with gift metadata. 402 when the sender is short on coins; 200 with duplicate=true when the same gift is re-sent inside the 60s window.
         */
        post: operations["MarketplaceWidgetController_gift"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/flash-sales": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List flash sales for the Planner drawer */
        get: operations["FlashSaleController_list"];
        put?: never;
        /** Schedule a flash sale */
        post: operations["FlashSaleController_schedule"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/flash-sales/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /** Cancel a flash sale — a running sale clears its discounts */
        delete: operations["FlashSaleController_cancel"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/marketplace/fomo": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Marketplace FOMO poll
         * @description Records the buddy as a current viewer of every supplied item and returns per-item viewer counts, real stock and flash-sale discounted prices, plus the active flash sale. Returns enabled=false when the tenant has the marketplace_fomo feature switched off.
         */
        post: operations["MarketplaceFomoWidgetController_resolve"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/buddy/returning-champion": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the Returning Champion re-onboarding scene payload
         * @description HTCH-100 — resolves whether this buddy is a 30+ day-lapsed past LEAGUES champion. Returns `{ available: false }` for everyone else. Clears an expired legacy-crown overlay as a side effect.
         */
        get: operations["LegacyEquipController_getReturningChampion"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/buddy/returning-champion/dismiss": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Dismiss the Returning Champion scene
         * @description HTCH-100 — skip or continue past the re-onboarding scene. Clears the payload and resumes the HTCH-91 lapsed sweep; the 90-day cooldown stands so the scene cannot re-trigger before then.
         */
        post: operations["LegacyEquipController_dismissReturningChampion"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/buddy/equip-legacy-item": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Temp-equip a legacy crown for the returning-champion scene
         * @description HTCH-100 — re-equips a still-owned legendary item as a 7-day temporary overlay (Endowment Effect). It never mutates the buddy’s real inventory and triggers no image re-composition.
         */
        post: operations["LegacyEquipController_equipLegacyItem"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/public/returning-champion/welcome-back": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Resolve a Returning Champion welcome-back token to a widget session */
        get: operations["ReturningChampionPublicController_resolveWelcomeBack"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/webhook-configs": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List webhook configs
         * @description List all webhook configurations for the customer
         */
        get: operations["WebhooksController_list"];
        put?: never;
        /**
         * Create webhook config
         * @description Register a new webhook endpoint to receive event notifications
         */
        post: operations["WebhooksController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/webhook-configs/events": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List webhook event types
         * @description Return the canonical event types accepted by webhook subscriptions.
         */
        get: operations["WebhooksController_listEvents"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/webhook-configs/health": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get webhook delivery health
         * @description Customer-scoped delivery health, active endpoint count, alerts, and digest status.
         */
        get: operations["WebhooksController_getHealth"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/webhook-configs/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get webhook config
         * @description Get a single webhook configuration by ID
         */
        get: operations["WebhooksController_findOne"];
        /**
         * Update webhook config
         * @description Update an existing webhook configuration
         */
        put: operations["WebhooksController_update"];
        post?: never;
        /**
         * Delete webhook config
         * @description Delete a webhook configuration
         */
        delete: operations["WebhooksController_delete"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/webhook-configs/{id}/rotate-secret": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Rotate webhook secret
         * @description Generate a new signing secret for a webhook endpoint
         */
        post: operations["WebhooksController_rotateSecret"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/webhook-configs/{id}/test": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Send test webhook
         * @description Send a test payload to the webhook endpoint
         */
        post: operations["WebhooksController_sendTest"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/webhook-configs/{id}/deliveries": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List webhook deliveries
         * @description Get delivery log history for a webhook config
         */
        get: operations["WebhooksController_getDeliveries"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/webhook-configs/{id}/deliveries/{deliveryId}/redeliver": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Redeliver webhook
         * @description Re-enqueue a previous delivery using its stored payload.
         */
        post: operations["WebhooksController_redeliver"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/buddy/prestige": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Whether the current buddy can prestige, and why not if it cannot */
        get: operations["PrestigeController_status"];
        put?: never;
        /** Prestige the current buddy — reset to stage 0 for a prestige level */
        post: operations["PrestigeController_prestige"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/overview": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get analytics overview
         * @description Get high-level platform analytics overview for the customer
         */
        get: operations["AnalyticsController_getOverview"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/engagement": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get engagement metrics
         * @description Get user engagement metrics over time with configurable period and date range
         */
        get: operations["AnalyticsController_getEngagement"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/activity-summary": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get activity summary
         * @description Get aggregated activity summary for the customer
         */
        get: operations["AnalyticsController_getActivitySummary"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/economy-summary": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get economy summary
         * @description Get coin economy summary including earnings and spending
         */
        get: operations["AnalyticsController_getEconomySummary"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/economy-health": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get economy health
         * @description Get health indicators for the coin economy (inflation, velocity, etc.)
         */
        get: operations["AnalyticsController_getEconomyHealth"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/popular-items": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get popular items
         * @description Get the most popular marketplace items by purchase count
         */
        get: operations["AnalyticsController_getPopularItems"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/popular-badges": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get popular badges
         * @description Get the most frequently awarded badges
         */
        get: operations["AnalyticsController_getPopularBadges"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/retention": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get retention metrics
         * @description Get cohort retention analysis for user engagement
         */
        get: operations["AnalyticsController_getRetention"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/roi-metrics": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get ROI metrics
         * @description Get return on investment metrics for gamification features
         */
        get: operations["AnalyticsController_getRoiMetrics"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/streaks": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get streak health
         * @description Active streak rate, milestone hit rates, and length distribution
         */
        get: operations["AnalyticsController_getStreakHealth"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/tokens": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get per-token economy
         * @description Earn, spend, net, and holder counts per token key
         */
        get: operations["AnalyticsController_getTokenEconomy"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/audiences": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get audience breakdown
         * @description Per-audience DAU, events, coins earned, avg streak
         */
        get: operations["AnalyticsController_getAudienceBreakdown"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/evolution": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get evolution timeline
         * @description Per-stage buddy counts and time-to-reach statistics
         */
        get: operations["AnalyticsController_getEvolutionTimeline"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/marketplace-funnel": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get marketplace funnel
         * @description Per-item views / purchases / equips conversion funnel
         */
        get: operations["AnalyticsController_getMarketplaceFunnel"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/webhooks": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get webhook delivery health
         * @description Success rate, latency percentiles, retries, failures by event
         */
        get: operations["AnalyticsController_getWebhookHealth"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/event-counts": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Per-event counts
         * @description Per-event aggregates (24h / 7d / 30d + last_seen) for every event ingested by the customer. Powers the /dashboard/events Lexicon page.
         */
        get: operations["AnalyticsController_getEventCounts"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/custom-events": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get custom event trends
         * @description Top event types with daily trend sparklines
         */
        get: operations["AnalyticsController_getCustomEventTrends"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/analytics/feature-activity": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get feature activity
         * @description Weekly usage counts per Planner feature (kudos, group quests, mystery box, free lunch, outfits), rolled up from system telemetry events.
         */
        get: operations["AnalyticsController_getFeatureActivity"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/leaderboard": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get leaderboard
         * @description HTCH-18: returns the leaderboard in one of three Yu-kai Ch.6 view modes — top, around_me, hybrid (default driven by tenant LeaderboardConfig). User-side query param overrides tenant default for the requesting widget.
         */
        get: operations["LeaderboardController_getLeaderboard"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/leaderboard-config": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the tenant leaderboard view-mode config
         * @description Returns the effective LeaderboardConfig (defaults applied) used by the widget. No separate draft slot: the drawer holds unsaved state client-side, persist = publish.
         */
        get: operations["LeaderboardConfigController_get"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /**
         * Update the tenant leaderboard view-mode config
         * @description Validates the body against the shared zod schema, upserts the dedicated row, and busts the `leaderboard:config:{customer_id}` cache so the next widget read sees the new view mode immediately.
         */
        patch: operations["LeaderboardConfigController_patch"];
        trace?: never;
    };
    "/customers/me/analytics/share-funnel": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Public share-page gift funnel (gift CTA + signup wall) */
        get: operations["ShareFunnelController_giftFunnel"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/billing/status": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get billing status
         * @description Get the current billing status, plan, credit balances, event usage, and live subscription summary for the customer.
         */
        get: operations["BillingController_getStatus"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/billing/checkout": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Create checkout session
         * @description Create a Stripe checkout session for subscription (flow=subscription) or top-up (flow=credit_bundle)
         */
        post: operations["BillingController_createCheckout"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/billing/checkout/session/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Reconcile a Stripe checkout session
         * @description Synchronously confirm a completed Stripe Checkout Session on the dashboard return (?session_id=...) and idempotently apply the plan/credits if the async webhook has not yet. Returns the reconciled billing state so the UI can show an honest status before bridging into onboarding. Safe to call repeatedly.
         */
        get: operations["BillingController_reconcileCheckout"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/billing/portal": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Create billing portal session
         * @description Create a Stripe billing portal session for subscription management.
         */
        post: operations["BillingController_createPortal"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/credits/balance": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get credit balance
         * @description Returns welcome, paid and promo pool balances plus total spendable.
         */
        get: operations["CreditsController_getBalance"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/credits/ledger": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List recent AI usage ledger entries
         * @description Paginated ledger of AI jobs (authorize / commit / rollback).
         */
        get: operations["CreditsController_listLedger"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/onboarding/sessions": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Create or resume the current onboarding session */
        post: operations["OnboardingController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/onboarding/sessions/preparing-status": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Aggregate asset-generation status for the current customer */
        get: operations["OnboardingController_preparingStatus"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/onboarding/sessions/seed-from-url": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Seed onboarding from a landing-page URL */
        post: operations["OnboardingController_seedFromUrl"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/onboarding/sessions/seed-from-repo": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Seed onboarding from a repo-analysis brief produced by a local AI agent */
        post: operations["OnboardingController_seedFromRepo"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/onboarding/sessions/seed-from-description": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Seed onboarding from operator-provided chips + optional description */
        post: operations["OnboardingController_seedFromDescription"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/onboarding/sessions/waitlist": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Join the waitlist for an upcoming onboarding channel */
        post: operations["OnboardingController_joinWaitlist"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/onboarding/sessions/current": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Fetch the current onboarding session */
        get: operations["OnboardingController_current"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/onboarding/sessions/reset": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Reset the current onboarding session */
        post: operations["OnboardingController_reset"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/onboarding/sessions/{id}/answers": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        /** Patch structured onboarding answers */
        put: operations["OnboardingController_updateAnswers"];
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/onboarding/sessions/{id}/message": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Send a user message and stream the assistant reply via server-sent events */
        post: operations["OnboardingController_message"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/onboarding/sessions/{id}/generate-plan": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Generate a gamification plan from the conversation */
        post: operations["OnboardingController_generatePlan"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/onboarding/sessions/{id}/regenerate-plan": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Regenerate the plan with a variant seed */
        post: operations["OnboardingController_regeneratePlan"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/onboarding/sessions/{id}/apply": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Apply the generated plan to the customer (writes gamification config) */
        post: operations["OnboardingController_apply"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/onboarding/sessions/{id}/generate-guide": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Generate a personalized integration guide */
        post: operations["OnboardingController_generateGuide"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/stage-assets": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List per-customer stage assets (preset mode buddy art) plus the default library URLs resolved for the customer's creature_style. */
        get: operations["StageAssetsController_list"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/stage-assets/upload-url": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Issue a presigned PUT URL for a client-side stage asset upload */
        post: operations["StageAssetsController_createUploadUrl"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/stage-assets/{stage}/regenerate": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Queue AI generation for a customer preset stage asset */
        post: operations["StageAssetsController_regenerate"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/stage-assets/{stage}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        /** Commit an uploaded object as the preset asset for a stage */
        put: operations["StageAssetsController_commit"];
        post?: never;
        /** Remove the preset asset for a stage */
        delete: operations["StageAssetsController_remove"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/gates": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List token gates for this customer */
        get: operations["GatesController_list"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/gates/{gate_key}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        /** Create or update a token gate */
        put: operations["GatesController_upsert"];
        post?: never;
        /** Delete a token gate */
        delete: operations["GatesController_remove"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{buddy_id}/gates/{gate_key}/unlock": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Spend tokens to unlock a gate for a buddy
         * @description Idempotent. Returns already_unlocked: true on repeat calls without touching the economy.
         */
        post: operations["GatesController_unlock"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/buddies/{buddy_id}/unlocks": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List gates this buddy has unlocked */
        get: operations["GatesController_listUnlocks"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/path-definitions": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List path definitions */
        get: operations["PathsController_listDefinitions"];
        put?: never;
        /** Create a path definition */
        post: operations["PathsController_createDefinition"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/path-definitions/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Get a path definition (with steps + sub-steps) */
        get: operations["PathsController_getDefinition"];
        /** Update a path definition */
        put: operations["PathsController_updateDefinition"];
        post?: never;
        /** Delete a path definition */
        delete: operations["PathsController_deleteDefinition"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/path-definitions/{id}/activate": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Activate a path (atomic single-active per audience)
         * @description Sets is_active=true on this path and is_active=false on every other path with the same (customer, audience) in a single transaction.
         */
        post: operations["PathsController_activate"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/path-definitions/{id}/deactivate": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Deactivate a path */
        post: operations["PathsController_deactivate"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/path-definitions/{id}/steps": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List steps in a path */
        get: operations["PathsController_listSteps"];
        put?: never;
        /** Create a step in a path */
        post: operations["PathsController_createStep"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/path-definitions/{id}/steps/reorder": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        /** Reorder steps in a path */
        put: operations["PathsController_reorderSteps"];
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/path-definitions/{id}/steps/{stepId}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        /** Update a step */
        put: operations["PathsController_updateStep"];
        post?: never;
        /** Delete a step */
        delete: operations["PathsController_deleteStep"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/path-definitions/{id}/steps/{stepId}/sub-steps": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List sub-steps within a step */
        get: operations["PathsController_listSubSteps"];
        put?: never;
        /** Create a sub-step */
        post: operations["PathsController_createSubStep"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/path-definitions/{id}/steps/{stepId}/sub-steps/reorder": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        /** Reorder sub-steps within a step */
        put: operations["PathsController_reorderSubSteps"];
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/path-definitions/{id}/steps/{stepId}/sub-steps/{subStepId}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        /** Update a sub-step */
        put: operations["PathsController_updateSubStep"];
        post?: never;
        /** Delete a sub-step */
        delete: operations["PathsController_deleteSubStep"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/path-definitions/buddies/{buddyId}/paths/{pathKey}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get path runtime payload for a buddy
         * @description Returns the buddy-scoped path with sub-step status (locked/available/completed). Admin/api-key path; the widget uses /widget/path instead.
         */
        get: operations["PathsController_getBuddyPath"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/path-definitions/buddies/{buddyId}/paths/{pathKey}/sub-steps/{subKey}/complete": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Manually mark a sub-step complete (admin) */
        post: operations["PathsController_manualComplete"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/beginners-luck/analytics": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Beginner's Luck winner analytics
         * @description Returns the per-tenant evaluation totals — total evaluations, total winners, winner percentage, last-30-day winners, and the configured expected rate.
         */
        get: operations["BeginnersLuckController_getAnalytics"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/beginners-luck/result": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the buddy's Beginner's Luck result
         * @description HTCH-43 — idempotently evaluates Beginner's Luck for the first hatch and returns the winner-only reveal payload. Losers and a disabled feature both resolve to `won: false` with no awarded item or copy.
         */
        get: operations["BeginnersLuckWidgetController_getResult"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/free-lunch/notification": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the buddy's pending Free Lunch banner
         * @description HTCH-44 — returns the buddy's most recent unacknowledged Free Lunch grant, or `has_pending: false` when there is nothing to show.
         */
        get: operations["FreeLunchWidgetController_getNotification"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/free-lunch/{id}/acknowledge": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Acknowledge a Free Lunch banner
         * @description HTCH-44 — marks the grant dismissed so the banner does not reappear.
         */
        post: operations["FreeLunchWidgetController_acknowledge"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/teams": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List the tenant teams with member counts */
        get: operations["TeamsAdminController_list"];
        put?: never;
        /** Create a team */
        post: operations["TeamsAdminController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/teams/{teamId}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /** Soft-delete a team and archive its memberships */
        delete: operations["TeamsAdminController_remove"];
        options?: never;
        head?: never;
        /** Update a team */
        patch: operations["TeamsAdminController_update"];
        trace?: never;
    };
    "/customers/me/teams/{teamId}/members": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List the active members of a team */
        get: operations["TeamsAdminController_listMembers"];
        put?: never;
        /** Add a buddy to a team */
        post: operations["TeamsAdminController_addMember"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/teams/{teamId}/members/{buddyId}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /** Remove a buddy from a team (soft leave) */
        delete: operations["TeamsAdminController_removeMember"];
        options?: never;
        head?: never;
        /** Change a member role */
        patch: operations["TeamsAdminController_changeRole"];
        trace?: never;
    };
    "/customers/me/teams/import": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Bulk-import team memberships from a CSV
         * @description CSV columns: team_slug, buddy_external_user_id, role (+ optional team_name, team_description). `?dry_run=true` validates without writing.
         */
        post: operations["TeamsAdminController_import"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/teams/me": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Get the current buddy’s team, role and members */
        get: operations["TeamsWidgetController_me"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/teams/{id}/leave": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Leave a team — blocked for a sole lead until another is promoted */
        post: operations["TeamsWidgetController_leave"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/kudo-types": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List the effective kudo taxonomy
         * @description Returns the customer authored types, or a virtual generic set (thanks / shoutout / support) when the taxonomy is empty.
         */
        get: operations["KudoTypesAdminController_list"];
        put?: never;
        /** Create a custom kudo type */
        post: operations["KudoTypesAdminController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/kudo-types/apply-template": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Apply an industry preset taxonomy
         * @description mode=replace archives all active types then seeds the template; mode=append adds the template and 409s on any key collision.
         */
        post: operations["KudoTypesAdminController_applyTemplate"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/kudo-types/apply-theme-template": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Apply a theme-aware kudos pack (HTCH-128)
         * @description Creates a draft/inactive `<industry>-<theme_vibe>` kudos pack. Duplicate keys are skipped (never overwritten); the response carries the created rows and any skipped keys so the Planner can render a clean confirmation before publishing.
         */
        post: operations["KudoTypesAdminController_applyThemeTemplate"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/kudo-types/reorder": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /** Persist a new display order */
        patch: operations["KudoTypesAdminController_reorder"];
        trace?: never;
    };
    "/customers/me/kudo-types/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /** Archive a kudo type (soft delete) */
        delete: operations["KudoTypesAdminController_remove"];
        options?: never;
        head?: never;
        /** Update a kudo type */
        patch: operations["KudoTypesAdminController_update"];
        trace?: never;
    };
    "/widget/kudos/types": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List the effective kudo taxonomy for the composer
         * @description Returns the workspace authored types, or the virtual generic set (thanks / shoutout / support) when the taxonomy is empty.
         */
        get: operations["KudosWidgetController_types"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/kudos": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Send a kudos to a teammate
         * @description Records a buddy→buddy recognition transfer. 429s when the sender has reached the workspace daily cap; 200 with duplicate=true when the same kudos is re-sent inside the 60s accident-click window.
         */
        post: operations["KudosWidgetController_send"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/kudos/received": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List the buddy’s most recent received kudos */
        get: operations["KudosWidgetController_received"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/kudos/given": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List the buddy’s most recent sent kudos + lifetime count */
        get: operations["KudosWidgetController_given"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/group-quests": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List the tenant Group Quests (filter by status / team) */
        get: operations["GroupQuestsAdminController_list"];
        put?: never;
        /** Create a Group Quest (status: draft) */
        post: operations["GroupQuestsAdminController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/group-quests/{questId}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /** Delete a Group Quest (draft / cancelled only) */
        delete: operations["GroupQuestsAdminController_remove"];
        options?: never;
        head?: never;
        /** Update a Group Quest — draft fields, active deadline-extension, or cancel */
        patch: operations["GroupQuestsAdminController_update"];
        trace?: never;
    };
    "/customers/me/group-quests/{questId}/publish": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Publish a draft Group Quest (draft → active) */
        post: operations["GroupQuestsAdminController_publish"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/group-quests/{questId}/force-resolve": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** HTCH-56 — manually resolve a Group Quest now (admin watchdog override) */
        post: operations["GroupQuestsAdminController_forceResolve"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/group-quests/active": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List the active Group Quests visible to the current buddy */
        get: operations["GroupQuestsWidgetController_active"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/group-quests/{id}/join": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Join a Group Quest — idempotent (already_joined on re-join) */
        post: operations["GroupQuestsWidgetController_join"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/group-quests/{id}/leave": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Leave a Group Quest — the buddy’s prior contribution stays counted */
        post: operations["GroupQuestsWidgetController_leave"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/mentor/availability": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Toggle the current buddy’s mentor availability
         * @description Flips `mentor_available` on the buddy’s active team membership. 403 `not_a_mentor` when the buddy’s role is not mentor.
         */
        post: operations["MentorWidgetController_setAvailability"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/mentor/team/{id}/mentors": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List a team’s available mentors with contact deep links */
        get: operations["MentorWidgetController_teamMentors"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/mentor/sessions": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Self-report a mentoring session
         * @description Logs an honor-system mentoring session (hours 0.25–8). 403 `not_a_mentor` for non-mentors, 403 `hours_self_report_disabled` when the workspace has the feature off.
         */
        post: operations["MentorWidgetController_logSession"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/mentor/sessions/me": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List the buddy’s recent mentor sessions + hour aggregates */
        get: operations["MentorWidgetController_mySessions"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/mentor-visibility/config": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Get the mentor-visibility config */
        get: operations["MentorAdminController_getConfig"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /**
         * Update the mentor-visibility config
         * @description Validates the contact-URL placeholder allow-list and the PII opt-in. An unknown {{token}} or an {{email}} placeholder without PII opt-in is a 400.
         */
        patch: operations["MentorAdminController_updateConfig"];
        trace?: never;
    };
    "/customers/me/mentor-visibility/directory": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List every active mentor across the tenant’s teams */
        get: operations["MentorAdminController_directory"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/mentor-visibility/sessions": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /**
         * Reset all mentor session logs for the workspace
         * @description Destructive — wipes every mentor hours log. Intended for the B2B workspace-reset compliance scenario.
         */
        delete: operations["MentorAdminController_resetSessions"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/brag/share-profile": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Build the Brag Button "share my profile" payload
         * @description HTCH-68 — returns the buddy's public Profile Page URL (/p/<code>, minted on first call) plus the tenant brag copy template.
         */
        post: operations["BragWidgetController_shareProfile"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/brag/win-state": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Build the full Brag Button Win-State payload + enabled channels
         * @description HTCH-60 — returns { payload: BragPayload, enabled_channels }. The widget ceremonies (hatch act-5, evolution) call this once to render the Share CTA. enabled_channels is [] when the Planner toggle is off, so the BragButton self-hides — the single-toggle gate is honored server-side.
         */
        post: operations["BragWidgetController_winState"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/brag/slack-post": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Send a Win-State brag to the tenant Slack/Teams webhook
         * @description Per-event consent only — the user pressed "Send" in the consent modal. The webhook URL is decrypted server-side; 400 webhook_failed when delivery times out or the endpoint rejects it.
         */
        post: operations["BragWidgetController_slackPost"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/brag/telemetry": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Record one brag funnel event
         * @description Persists a consent-modal-opened / channel-clicked / completed / dismissed event for the HTCH-61 Planner telemetry dashboard.
         */
        post: operations["BragWidgetController_telemetry"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/brag/config": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get the Brag Button channel + copy-template config
         * @description Webhook URLs are returned masked ({ configured, hint }) — the ciphertext envelope never leaves the server.
         */
        get: operations["BragAdminController_getConfig"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /**
         * Update channel toggles, copy templates and webhook URLs
         * @description Webhook URLs are encrypted at rest. Copy templates are validated against the placeholder allow-list and per-channel char limits.
         */
        patch: operations["BragAdminController_updateConfig"];
        trace?: never;
    };
    "/customers/me/brag/webhook-test": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Send a dummy message to a Slack/Teams webhook URL
         * @description Verifies a webhook URL before the admin saves it. The message is tagged "Hatched webhook test" so it is obviously not production noise.
         */
        post: operations["BragAdminController_webhookTest"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/brag/funnel": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Brag funnel aggregate over a date window */
        get: operations["BragAdminController_funnel"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/brag/by-channel": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Channel × event_kind click / completion matrix */
        get: operations["BragAdminController_byChannel"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/brag/telemetry.csv": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Export raw brag telemetry as CSV */
        get: operations["BragAdminController_telemetryCsv"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/social-norms/today": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * The buddy's positive-framing team norms for today
         * @description Returns up to `max_banners_per_session` rendered norms. Norms whose metric falls below the believability floor are silently skipped — a "positive" framing under that floor would be a lie (Yu-kai Ch.9).
         */
        get: operations["SocialNormsWidgetController_today"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/feed/team-events": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * The buddy's team feed — cursor-paginated, newest first
         * @description Returns the last N SeeSaw Bump events for the buddy’s team plus customer-wide events. `next_cursor` is null when the feed is exhausted.
         */
        get: operations["FeedWidgetController_listTeamEvents"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/feed/team-events/{id}/clap": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Toggle a 👏 clap on a feed item
         * @description Idempotent — a buddy claps once; a repeat call unclaps. Clapping your own event is rejected with 400 `self_clap_forbidden`. A fresh clap notifies the subject over the `feed.team_event` channel.
         */
        post: operations["FeedWidgetController_clap"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/causes": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List the tenant Cause Counter definitions */
        get: operations["CauseAdminController_list"];
        put?: never;
        /** Create a Cause Counter definition */
        post: operations["CauseAdminController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/causes/audit": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** HTCH-71 — paginated Cause Counter change history (drawer) */
        get: operations["CauseAdminController_audit"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/causes/preview-30-days": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** HTCH-71 — project symbolic units for an unsaved rate config (the drawer rate builder simulation) */
        get: operations["CauseAdminController_previewConfig"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/causes/analytics": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** HTCH-107 — F4.5 Humanity Hero admin analytics: customer-wide and per-team contribution rollups, time series, threshold ETA and webhook delivery health (Planner drawer "Analytics" tab) */
        get: operations["CauseAdminController_analyticsView"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/causes/analytics.csv": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** HTCH-107 — download the cause analytics as a CSV attachment */
        get: operations["CauseAdminController_analyticsCsv"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/causes/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /** Delete a Cause Counter definition */
        delete: operations["CauseAdminController_remove"];
        options?: never;
        head?: never;
        /** Update a Cause Counter definition */
        patch: operations["CauseAdminController_update"];
        trace?: never;
    };
    "/customers/me/causes/{id}/draft": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Stage draft edits for a published Cause Counter definition */
        post: operations["CauseAdminController_draft"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/causes/{id}/preview-30-days": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Project symbolic units from the last 30 days of eligible events for a saved cause */
        get: operations["CauseAdminController_preview"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/causes/{id}/webhook": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** HTCH-106 — F4.5 cause webhook config + recent delivery attempts */
        get: operations["CauseAdminController_getWebhook"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /** HTCH-106 — F4.5 set the cause webhook URL, secret and threshold step */
        patch: operations["CauseAdminController_updateWebhook"];
        trace?: never;
    };
    "/customers/me/causes/{id}/webhook/test": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** HTCH-106 — F4.5 send a test cause.threshold_reached event and return the delivery outcome inline */
        post: operations["CauseAdminController_testWebhook"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/causes/counters": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List symbolic cause counters for the current buddy / team / tenant */
        get: operations["CauseWidgetController_counters"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/causes/surfaces": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** HTCH-70 — cause counters grouped per opted-in surface (banner / buddy strip / profile) */
        get: operations["CauseWidgetController_surfaces"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/foundations": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List the tenant's active foundation selections — read-only for widget rendering. */
        get: operations["FoundationsController_widgetList"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/council/proposals": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** The Council narrative-proposal moderation queue */
        get: operations["CouncilAdminController_list"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/council/proposals/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /** Approve or reject a pending proposal */
        patch: operations["CouncilAdminController_moderate"];
        trace?: never;
    };
    "/customers/me/council/narrative/slots/{slot}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        /** Promote an approved proposal into a live narrative slot */
        put: operations["CouncilAdminController_promote"];
        post?: never;
        /** Retire the live proposal in a slot and restore the default copy */
        delete: operations["CouncilAdminController_revert"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/council/proposals/mine": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** The buddy's own narrative proposals plus Council standing and quota */
        get: operations["CouncilWidgetController_mine"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/council/proposals": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Submit a narrative proposal (Council members only) */
        post: operations["CouncilWidgetController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/founding-cohort/preview": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Project how many buddies the Founding Cohort config would mark. Optional query params preview an unsaved mode/threshold. */
        get: operations["FoundingCohortAdminController_preview"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/founding-cohort/backfill": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Retroactively mark every currently-eligible buddy (idempotent) */
        post: operations["FoundingCohortAdminController_backfill"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/founding-cohort/audit": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Paginated Founding Cohort assignment history */
        get: operations["FoundingCohortAdminController_audit"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/founding-cohort/audit/export.csv": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Export the full Founding Cohort assignment history as CSV */
        get: operations["FoundingCohortAdminController_exportAuditCsv"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/founding-cohort/status": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Founding Cohort status for the current buddy */
        get: operations["FoundingCohortWidgetController_status"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/notifications": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Paginated notification feed for the current buddy */
        get: operations["NotificationWidgetController_list"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/notifications/unread-count": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Unread, non-dismissed notification count (badge) */
        get: operations["NotificationWidgetController_unreadCount"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/notifications/dismiss-all": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Read + dismiss every notification for the buddy */
        post: operations["NotificationWidgetController_dismissAll"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/notifications/{id}/read": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Mark a single notification read */
        post: operations["NotificationWidgetController_read"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/notifications/{id}/dismiss": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Read + dismiss a single notification (HTCH-76) */
        post: operations["NotificationWidgetController_dismiss"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/notifications/{id}/snooze": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Snooze a notification for a number of hours (HTCH-76) */
        post: operations["NotificationWidgetController_snooze"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/profile/sunk-cost-summary": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Sunk-Cost 'Your journey so far' summary for the current buddy */
        get: operations["SunkCostController_summary"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/profile/sunk-cost-summary/acknowledge": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Acknowledge the Sunk-Cost panel on first open — fires the paired White Hat celebration.milestone_acknowledged (idempotent per buddy) */
        post: operations["SunkCostController_acknowledge"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/buddy/pause": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Put the current buddy on vacation until a date */
        post: operations["VacationWidgetController_pause"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/buddy/resume": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** End the current buddy vacation early */
        post: operations["VacationWidgetController_resume"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/buddy/vacation-status": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Current buddy vacation status */
        get: operations["VacationWidgetController_status"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/vacation/analytics": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Vacation usage analytics for the Planner drawer panel */
        get: operations["VacationAdminController_analytics"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/streak-at-risk/analytics": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Streak-at-risk volume + recovery analytics for the Planner drawer */
        get: operations["StreakWatchdogAdminController_analytics"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/profile/history": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Visual Grave history — faded lost streaks + reclaimable items */
        get: operations["ProfileHistoryController_getHistory"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/profile/history/items/{id}/reclaim": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Earn a relinquished starter-rare back — fires recovery.streak_restored */
        post: operations["ProfileHistoryController_reclaim"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/mystery-box/state": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Mystery Box state — eligible / capped / locked */
        get: operations["MysteryBoxController_state"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/mystery-box/claim": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Open the Mystery Box — 409 with next_eligible_at when the daily cap is spent */
        post: operations["MysteryBoxController_claim"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/surprise-drops": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List surprise-drop definitions for the Planner */
        get: operations["SurpriseDropsController_list"];
        put?: never;
        /** Create a custom surprise drop */
        post: operations["SurpriseDropsController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/surprise-drops/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /** Delete a custom surprise drop */
        delete: operations["SurpriseDropsController_remove"];
        options?: never;
        head?: never;
        /** Update a surprise drop — global templates edit copy-on-write */
        patch: operations["SurpriseDropsController_update"];
        trace?: never;
    };
    "/customers/me/boosters/grant": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Grant a catalog booster to a buddy (admin one-off) */
        post: operations["BoostersAdminController_grant"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/boosters/active": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** The buddy’s currently active boosters */
        get: operations["BoostersController_active"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/boosters/catalog": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Buyable boosters for this tenant */
        get: operations["BoostersController_catalog"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/boosters/purchase": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Buy a catalog booster — 400 insufficient_balance when too few coins */
        post: operations["BoostersController_purchase"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/lotteries": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List lottery definitions for the Planner */
        get: operations["LotteriesController_list"];
        put?: never;
        /** Create a lottery definition */
        post: operations["LotteriesController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/lotteries/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /** Soft-delete a lottery (history stays queryable) */
        delete: operations["LotteriesController_remove"];
        options?: never;
        head?: never;
        /** Update a lottery definition */
        patch: operations["LotteriesController_update"];
        trace?: never;
    };
    "/customers/me/lotteries/{id}/draws": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Past draw history + analytics for a lottery */
        get: operations["LotteriesController_draws"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/lotteries/{id}/preview-next-draw": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Current-period entry count + next draw time for the preview card */
        get: operations["LotteriesController_previewNextDraw"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/lotteries/{id}/simulate-draw": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Simulate a draw with the current entries — no rewards granted */
        post: operations["LotteriesController_simulateDraw"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/lottery/active-entries": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** The buddy's live lottery entries with their next-draw time */
        get: operations["LotteryWidgetController_activeEntries"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/lottery/last-win": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** The buddy's most recent lottery win, if any */
        get: operations["LotteryWidgetController_lastWin"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/profile-templates": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List profile-page templates (system + custom) */
        get: operations["ProfileTemplateController_list"];
        put?: never;
        /** Create a profile-page template */
        post: operations["ProfileTemplateController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/profile-templates/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /** Delete a profile-page template */
        delete: operations["ProfileTemplateController_remove"];
        options?: never;
        head?: never;
        /** Update a profile-page template */
        patch: operations["ProfileTemplateController_update"];
        trace?: never;
    };
    "/customers/me/profile-templates/apply-bulk": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Assign a template to many buddies in one statement */
        post: operations["ProfileTemplateController_applyBulk"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/leagues/me": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** The buddy's live league standing — tier, cohort, countdown */
        get: operations["LeagueWidgetController_me"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/leagues/boss-fight": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** The season's Boss Fight challenge — progress, target, leaderboard */
        get: operations["LeagueWidgetController_bossFight"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/leagues/seasons/latest/highlights/me": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** The buddy's latest closed season-closing highlights */
        get: operations["LeagueHighlightsController_latest"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/leagues/seasons/{seasonId}/highlights/me": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** The buddy's personalized season-closing highlights */
        get: operations["LeagueHighlightsController_me"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/leagues/off-season/status": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** The off-season window — Mystery Box boost, wardrobe drops, scouting quest */
        get: operations["OffSeasonController_status"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/leagues/off-season/scouting-quest": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Start the cohort pre-season scouting quest with a prediction */
        post: operations["OffSeasonController_startScoutingQuest"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/leagues/off-season/scouting-quest/join": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Join the cohort's already-started scouting quest */
        post: operations["OffSeasonController_joinScoutingQuest"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/leagues/config": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Full tier ladder, cohort/cadence config and season state */
        get: operations["LeagueAdminController_getConfig"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /** Update the cohort maths, season cadence and off-season window */
        patch: operations["LeagueAdminController_updateConfig"];
        trace?: never;
    };
    "/customers/me/leagues/tiers": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        /** Bulk-replace the tier ladder — 409 if a removed tier still has buddies */
        put: operations["LeagueAdminController_replaceTiers"];
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/leagues/seasons/preview": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Project the next three season windows (no write) */
        post: operations["LeagueAdminController_previewSeasons"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/leagues/seasons": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Schedule the next upcoming season */
        post: operations["LeagueAdminController_scheduleSeason"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/leagues/seasons/{seasonId}/force-close": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Manually trigger the rollover for a season (audit logged) */
        post: operations["LeagueAdminController_forceClose"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/public/hall-of-fame/{tenantSlug}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List a tenant's finalized Hall of Fame seasons */
        get: operations["HallOfFameController_getList"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/public/hall-of-fame/{tenantSlug}/{seasonId}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** One finalized season in the public Hall of Fame */
        get: operations["HallOfFameController_getSeason"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/public/hall-of-fame-index": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List public Hall of Fame season URLs (paged) */
        get: operations["HallOfFameIndexController_getIndex"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/hexad-survey/questions": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List Hexad survey question metadata
         * @description Returns the 24 question keys + axis assignment. Verbatim Marczewski text is loaded by the widget from its tenant-installable copy bundle, not from this endpoint.
         */
        get: operations["HexadSurveyController_questions"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/hexad-survey/responses": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Submit (or replace) the buddy Hexad survey response
         * @description UPSERT keyed by buddy_id. Re-takes overwrite the previous row in place; audience_key + customer_id are sourced from the buddy row so the widget can not spoof them.
         */
        post: operations["HexadSurveyController_submit"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/widget/hexad-survey/me": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Fetch the current buddy Hexad response
         * @description Lets the survey widget render the user's own profile after they submit; absent rows resolve to `null`.
         */
        get: operations["HexadSurveyController_me"];
        put?: never;
        post?: never;
        /**
         * Delete the buddy raw response (GDPR / consent withdrawal)
         * @description Removes the raw answers + derived scores. The nightly aggregator picks up the lower response_count on the next run; audience-level aggregates are preserved.
         */
        delete: operations["HexadSurveyController_deleteMe"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/marketing/cta": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Record a public marketing CTA click
         * @description Unauthenticated browser beacon endpoint used by the marketing site to track CTA intent and first-touch attribution.
         */
        post: operations["MarketingAnalyticsController_recordCtaClick"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/showrooms": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List the customer’s Showroom pages */
        get: operations["ShowroomAdminController_list"];
        put?: never;
        /** Create a Showroom page from a template */
        post: operations["ShowroomAdminController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/showrooms/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Fetch one Showroom page (admin lens) */
        get: operations["ShowroomAdminController_getOne"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /** Update layout / header / visibility */
        patch: operations["ShowroomAdminController_update"];
        trace?: never;
    };
    "/customers/me/showrooms/{id}/publish": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Publish a Showroom (status → published) */
        post: operations["ShowroomAdminController_publish"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/showrooms/{id}/unpublish": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Unpublish a Showroom (status → draft) */
        post: operations["ShowroomAdminController_unpublish"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/showrooms/{id}/regenerate-qr": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Rotate the QR token, invalidating any printed code */
        post: operations["ShowroomAdminController_regenerateQr"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/showrooms/{id}/archive": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Archive a Showroom (hidden from list, kept for audit) */
        post: operations["ShowroomAdminController_archive"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/players/{buddyId}/award": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** HR Award Drawer — grant a badge / skill_event / coin / kudo / forced evolution to a buddy */
        post: operations["ShowroomAdminController_award"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/players/{buddyId}/awards": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Recent HR awards for a buddy (audit lens) */
        get: operations["ShowroomAdminController_listPlayerAwards"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/awards": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Customer-wide HR award audit log */
        get: operations["ShowroomAdminController_listAudit"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/public/showroom/{slug}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Resolve a Showroom slug to its public view */
        get: operations["PublicShowroomController_getPublicShowroom"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/public/showroom/{slug}/qr": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Return the QR payload for a Showroom (url + token). PNG rendering is client-side in v1. */
        get: operations["PublicShowroomController_getQrPayload"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/hosted-surfaces": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** List the customer’s hosted surfaces */
        get: operations["HostedSurfacesAdminController_list"];
        put?: never;
        /** Create a hosted surface from a template */
        post: operations["HostedSurfacesAdminController_create"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/hosted-surfaces/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Fetch one hosted surface (admin lens) */
        get: operations["HostedSurfacesAdminController_getOne"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /** Update name / theme / layout / mode / widget version */
        patch: operations["HostedSurfacesAdminController_update"];
        trace?: never;
    };
    "/customers/me/hosted-surfaces/{id}/readiness": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Per-widget content readiness for the go-live checklist
         * @description Mirrors the public layout resolver: widgets without tenant content (no active streak, no marketplace items, no badge definitions) are hidden from players — this endpoint tells the operator which and why before they share the URL.
         */
        get: operations["HostedSurfacesAdminController_readiness"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/hosted-surfaces/{id}/logo": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Upload a hosted surface logo and attach it to the public shell theme */
        post: operations["HostedSurfacesAdminController_uploadLogo"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/hosted-surfaces/{id}/publish": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post: operations["HostedSurfacesAdminController_publish"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/hosted-surfaces/{id}/unpublish": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post: operations["HostedSurfacesAdminController_unpublish"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/hosted-surfaces/{id}/archive": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post: operations["HostedSurfacesAdminController_archive"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/hosted-surfaces/{id}/players": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get: operations["HostedSurfacesAdminController_listPlayers"];
        put?: never;
        /** Add a player. Provide buddy_id to link an existing buddy or display_name to mint a new one. */
        post: operations["HostedSurfacesAdminController_createPlayer"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/hosted-surfaces/{id}/players/{playerId}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch: operations["HostedSurfacesAdminController_updatePlayer"];
        trace?: never;
    };
    "/customers/me/hosted-surfaces/{id}/players/{playerId}/regenerate-access": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post: operations["HostedSurfacesAdminController_regenerateAccess"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/hosted-surfaces/{id}/players/{playerId}/access-code": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Re-view a player’s current access code + QR token without rotating them. Returns available:false for players created before encrypted-at-rest storage existed — regenerate once to mint a re-viewable copy. Audited. */
        get: operations["HostedSurfacesAdminController_revealAccess"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/hosted-surfaces/{id}/recipes": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get: operations["HostedSurfacesAdminController_listRecipes"];
        put?: never;
        post: operations["HostedSurfacesAdminController_upsertRecipe"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/customers/me/hosted-surfaces/{id}/recipes/{key}/run": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post: operations["HostedSurfacesAdminController_runRecipe"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/public/hosted-surfaces/{slug}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Resolve a hosted surface slug to its public config (theme, layout, loader URL, auth requirement). */
        get: operations["PublicHostedSurfacesController_getPublic"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/public/hosted-surfaces/{slug}/session": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Exchange an access code or QR token for a short-lived widget session token. */
        post: operations["PublicHostedSurfacesController_startSession"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/health": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Health check
         * @description Full health check of all service dependencies (database, Redis, queues, image provider)
         */
        get: operations["HealthController_check"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/health/ready": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Readiness check
         * @description Kubernetes-style readiness probe. Returns 200 when all critical dependencies are up, 503 otherwise — load balancers use this to stop routing traffic to unhealthy instances.
         */
        get: operations["HealthController_readiness"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/health/live": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Liveness check
         * @description Kubernetes-style liveness probe confirming the process is alive
         */
        get: operations["HealthController_liveness"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/health/version": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Build metadata
         * @description Returns the API version, git commit SHA, and ISO build timestamp. Useful as a deployment fingerprint — pin a partner client against a known build, or compare expected vs actual when debugging a rollout.
         */
        get: operations["HealthController_version"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/healthz": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Liveness probe (top-level alias)
         * @description Kubernetes-style liveness probe. Bare path so probes do not need the API prefix.
         */
        get: operations["ProbeController_healthz"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/readyz": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Readiness probe (top-level alias)
         * @description Returns 200 only when database and Redis are both reachable. Bare path mirrors `/api/v1/health/ready`.
         */
        get: operations["ProbeController_readyz"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/version": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Build metadata (top-level alias)
         * @description Returns API version, git commit SHA, and ISO build timestamp. Useful as a deployment fingerprint.
         */
        get: operations["ProbeController_version"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
};

webhooks

export type webhooks = Record<string, never>;

components

export type components = {
    schemas: {
        UpdateCustomerDto: {
            /**
             * @description Customer display name
             * @example Acme Corp
             */
            name?: string;
        };
        CustomerFeaturesDto: {
            /** @description Enable marketplace features */
            marketplace?: boolean;
            /** @description Enable token currency */
            tokens?: boolean;
            /** @description Enable evolution stages */
            evolution?: boolean;
            /** @description Enable badges */
            badges?: boolean;
            /** @description Enable streaks */
            streaks?: boolean;
            /** @description Enable the Teams social graph */
            teams?: boolean;
            /** @description Enable peer recognition (Kudos) */
            kudos?: boolean;
            /** @description Enable Group Quest widgets */
            group_quest?: boolean;
            /** @description Enable mentorship widgets */
            mentorship?: boolean;
            /** @description Enable SeeSaw Bump feed widgets */
            seesaw_bump?: boolean;
            /** @description Enable Mystery Box surprise-drop widgets */
            mystery_box?: boolean;
            /** @description Enable LEAGUES seasonal competition widgets */
            leagues?: boolean;
            /** @description Enable Council prestige UGC widgets */
            council?: boolean;
            /** @description Enable Gamification Planner admin surface */
            gamification_planner?: boolean;
            /** @description Enable guided path journeys */
            paths?: boolean;
            /** @description Enable time-based skill decay sweeps */
            decay?: boolean;
        };
        BuddySharingSettingsDto: {
            /** @description Enable public buddy sharing */
            enabled?: boolean;
            /** @description Show the tenant name on public share cards */
            show_tenant_name?: boolean;
            /**
             * @description Absolute HTTP(S) URL for the primary share-page CTA
             * @example https://app.example.com/signup
             */
            cta_url?: string;
            /**
             * @description Verified share hostname, without protocol or path
             * @example share.example.com
             */
            custom_domain?: Record<string, never>;
            /** @description Whether custom_domain DNS ownership has been verified */
            custom_domain_verified?: boolean;
        };
        UpdateSettingsDto: {
            /**
             * @description Visual style for generated creatures
             * @example cute
             * @enum {string}
             */
            creature_style?: "cute" | "fantasy" | "scifi" | "nature" | "minimal" | "custom";
            /**
             * @description Custom prompt for creature image generation
             * @example A friendly dragon with blue scales
             */
            custom_prompt?: string;
            /**
             * @description Widget color theme
             * @example light
             * @enum {string}
             */
            widget_theme?: "light" | "dark" | "custom";
            /**
             * @description Default widget layout size
             * @example medium
             * @enum {string}
             */
            widget_size?: "small" | "medium" | "large";
            /** @description Custom CSS injected into Hatched widget shadow roots */
            widget_custom_css?: string;
            /** @description Structured widget theme tokens generated from onboarding or edited in the dashboard */
            widget_theme_config?: Record<string, never>;
            /**
             * @description Language code for widget UI
             * @example en
             */
            language?: string;
            /**
             * @description IANA timezone identifier
             * @example Europe/Istanbul
             */
            timezone?: string;
            /**
             * @description Show buddy name in the widget
             * @example true
             */
            widget_show_name?: boolean;
            /**
             * @description Show skill levels in the widget
             * @example true
             */
            widget_show_skills?: boolean;
            /**
             * @description Show coin balance in the widget
             * @example true
             */
            widget_show_coins?: boolean;
            /**
             * @description Show earned badges in the widget
             * @example false
             */
            widget_show_badges?: boolean;
            /**
             * @description Show evolution progress in the widget
             * @example true
             */
            widget_show_evolution?: boolean;
            /**
             * @description Show the XP chip in the widget
             * @example true
             */
            widget_show_xp?: boolean;
            /**
             * @description Show leaderboard rank in the widget
             * @example false
             */
            widget_show_leaderboard_rank?: boolean;
            /**
             * @description Enable leaderboard feature
             * @example true
             */
            widget_enable_leaderboard?: boolean;
            /**
             * @description Browser origins allowed to call widget runtime endpoints for this customer
             * @example [
             *       "https://app.example.com",
             *       "http://localhost:4002"
             *     ]
             */
            widget_allowed_origins?: string[];
            /**
             * @description Image generation model identifier
             * @example dall-e-3
             */
            image_model?: string;
            /**
             * @description Image generation quality tier
             * @example standard
             * @enum {string}
             */
            image_tier?: "standard" | "premium";
            /**
             * @description Maximum number of buddies a single user can own
             * @example 5
             */
            max_buddies_per_user?: number;
            /**
             * @description Maximum number of active eggs a single user can have
             * @example 3
             */
            max_active_eggs_per_user?: number;
            /** @description Feature toggles (marketplace/tokens/evolution/badges/streaks/paths/decay) */
            features?: components["schemas"]["CustomerFeaturesDto"];
            /** @description Buddy-share public page and CTA preferences */
            sharing?: components["schemas"]["BuddySharingSettingsDto"];
            /** @description Narrative brand/visual prompt used to seed all AI-generated assets (badge icons, marketplace item art). Editable at any time. */
            theme_prompt?: string;
            /** @description Set true when the user manually edits theme_prompt */
            theme_prompt_locked?: boolean;
        };
        AudienceDto: {
            /** @example student */
            key: string;
            /** @example Students */
            label: string;
            /** @description Short human-readable description used in plan prompts. */
            description?: string;
        };
        UpdateAudiencesDto: {
            audiences: components["schemas"]["AudienceDto"][];
        };
        RegisterCustomerDto: {
            /**
             * @description Customer or company name
             * @example Acme Corp
             */
            name: string;
            /**
             * Format: email
             * @description Email address for the account
             * @example [email protected]
             */
            email: string;
            /**
             * @description Account password (min 8 characters)
             * @example S3cur3P@ss!
             */
            password: string;
            /**
             * @description Must be true to confirm acceptance of current Hatched Terms and Privacy Policy
             * @example true
             */
            terms_accepted: boolean;
            /**
             * @description Referral attribution token, e.g. share:<buddyShareCode>, marketing, demo, or demo_try
             * @example demo_try
             */
            ref?: string;
        };
        LoginDto: {
            /**
             * Format: email
             * @description Account email address
             * @example [email protected]
             */
            email: string;
            /**
             * @description Account password
             * @example S3cur3P@ss!
             */
            password: string;
        };
        ChangePasswordDto: {
            current_password: string;
            new_password: string;
        };
        PasswordUpdatedResponseDto: {
            /** @example true */
            updated: boolean;
            /** @description Fresh dashboard JWT returned when the currently authenticated user changes their own password. */
            token?: string;
        };
        RequestPasswordResetDto: {
            /** Format: email */
            email: string;
        };
        PasswordResetRequestedResponseDto: {
            /** @example If that account exists, password reset instructions are available. */
            message: string;
            /** @description One-time reset link. Only returned for local dashboard origins so local QA can complete the flow without an email sender. */
            reset_url?: string;
            /**
             * Format: date-time
             * @description Expiry of the reset token. Present only when reset_url is.
             */
            expires_at?: string;
        };
        ResetPasswordDto: {
            token: string;
            new_password: string;
        };
        VerifyEmailDto: {
            /** @description One-time email verification token */
            token: string;
        };
        EmailVerificationResponseDto: {
            /** @example true */
            verified: boolean;
        };
        EmailVerificationRequestedResponseDto: {
            /** @example Verification instructions are available. */
            message: string;
            /** @description One-time verification link. Only returned for local dashboard origins so local QA can complete the flow without an email sender. */
            verification_url?: string;
            /**
             * Format: date-time
             * @description Expiry of the verification token. Present only when verification_url is.
             */
            expires_at?: string;
            /** @description True when the authenticated email is already verified. */
            already_verified?: boolean;
        };
        CreateApiKeyDto: {
            /**
             * @description Human-readable label for the API key
             * @example Production key
             */
            label?: string;
        };
        OperationResponseDto: {
            /**
             * @description Unique operation identifier
             * @example 550e8400-e29b-41d4-a716-446655440000
             */
            id: string;
            /**
             * @description Operation type
             * @example hatch
             */
            type: string;
            /**
             * @description Current operation status
             * @example completed
             * @enum {string}
             */
            status: "pending" | "processing" | "completed" | "failed" | "cancelled";
            /**
             * @description Type of the resource associated with this operation
             * @example buddy
             */
            resource_type?: string | null;
            /**
             * @description Identifier of the resource associated with this operation
             * @example 550e8400-e29b-41d4-a716-446655440002
             */
            resource_id?: string | null;
            /**
             * @description Result payload on success
             * @example {
             *       "buddy_id": "550e8400-e29b-41d4-a716-446655440002"
             *     }
             */
            result?: Record<string, never> | null;
            /**
             * @description Error payload on failure
             * @example {
             *       "code": "IMAGE_GENERATION_FAILED",
             *       "message": "Timeout"
             *     }
             */
            error?: Record<string, never> | null;
            /**
             * Format: date-time
             * @description Timestamp when the operation was created
             * @example 2026-04-09T12:00:00.000Z
             */
            created_at: string;
            /**
             * Format: date-time
             * @description Timestamp when the operation was last updated
             * @example 2026-04-09T12:05:00.000Z
             */
            updated_at: string;
        };
        PlayerZeroBuddyResponseDto: {
            /**
             * @description Buddy UUID for the workspace demo player.
             * @example b3d7c8a0-1234-4f5e-9abc-def012345678
             */
            id: string;
            /**
             * @description Reserved external user id used by dashboard previews.
             * @example player-0
             */
            user_id: string;
            /**
             * @description Display name shown in preview surfaces.
             * @example Player Zero
             */
            name: string;
            /**
             * @description Audience segment attached to the buddy.
             * @example default
             */
            audience: string;
            /**
             * @description Current evolution stage used by the widget preview.
             * @example 1
             */
            evolution_stage: number;
            /**
             * @description Image URL rendered by widget previews. A newly-created Player Zero may return a safe placeholder while the background base render completes.
             * @example https://demo.staging.hatched.live/fern/stage-1.webp
             */
            image_url: string;
        };
        PlayerZeroResponseDto: {
            /**
             * @description True only when Player Zero was created by this request.
             * @example true
             */
            created: boolean;
            buddy: components["schemas"]["PlayerZeroBuddyResponseDto"];
        };
        PlayerZeroStatusResponseDto: {
            /**
             * @description Whether the workspace demo player has been provisioned.
             * @example true
             */
            exists: boolean;
            /**
             * @description Whether any active buddy in the workspace has completed the hatch ceremony (Player Zero or a real player — e.g. on a hosted surface).
             * @example false
             */
            hatched: boolean;
            /**
             * @description Buddy UUID, or null when Player Zero does not exist yet.
             * @example b3d7c8a0-1234-4f5e-9abc-def012345678
             */
            buddyId: string | null;
        };
        CreateEmbedTokenDto: {
            /**
             * @description UUID of the buddy to render in the widget
             * @example b3d7c8a0-1234-4f5e-9abc-def012345678
             */
            buddy_id: string;
            /**
             * @description Identifier of the end user viewing the widget
             * @example usr_67890
             */
            user_id: string;
            /**
             * @description Embed token lifetime in seconds. Defaults to 86400.
             * @example 3600
             */
            ttl_seconds?: number;
        };
        CreateEmbedTokenResponseDto: {
            /**
             * @description The signed read-only embed JWT to hand to the widget loader.
             * @example eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
             */
            token: string;
            /**
             * @description ISO 8601 timestamp when the embed token expires.
             * @example 2026-05-31T12:00:00.000Z
             */
            expires_at: string;
            /**
             * @description Always `read-only` — embed tokens never carry write scopes.
             * @example read-only
             */
            mode: string;
        };
        CreateSessionTokenDto: {
            /**
             * @description UUID of the buddy for this widget session
             * @example b3d7c8a0-1234-4f5e-9abc-def012345678
             */
            buddy_id: string;
            /**
             * @description Identifier of the end user for this session
             * @example usr_67890
             */
            user_id: string;
            /**
             * @description Permission scopes granted to this widget session
             * @example [
             *       "read",
             *       "marketplace:purchase"
             *     ]
             */
            scopes: ("read" | "events:track" | "marketplace:purchase" | "items:equip" | "marketplace:browse" | "kudos:send" | "quests:join" | "mysterybox:claim" | "council:propose" | "survey:submit" | "feed:react" | "buddy:write" | "teams:manage")[];
            /**
             * @description Session lifetime in seconds. Defaults to 3600.
             * @example 900
             */
            ttl_seconds?: number;
        };
        CreateSessionTokenResponseDto: {
            /**
             * @description The signed session JWT to hand to the widget loader.
             * @example eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
             */
            token: string;
            /**
             * @description UUID of the persisted widget session, used to revoke it.
             * @example b3d7c8a0-1234-4f5e-9abc-def012345678
             */
            session_id: string;
            /**
             * @description ISO 8601 timestamp when the session token expires.
             * @example 2026-05-30T12:00:00.000Z
             */
            expires_at: string;
            /**
             * @description The permission scopes granted to this session.
             * @example [
             *       "read",
             *       "events:track",
             *       "kudos:send"
             *     ]
             */
            scopes: ("read" | "events:track" | "marketplace:purchase" | "items:equip" | "marketplace:browse" | "kudos:send" | "quests:join" | "mysterybox:claim" | "council:propose" | "survey:submit" | "feed:react" | "buddy:write" | "teams:manage")[];
        };
        VerifyInstallationDto: {
            /**
             * @description Page URL to probe for the Hatched loader. Defaults to the first configured allowed origin when omitted.
             * @example https://app.acme.com
             */
            url?: string;
        };
        VerifyInstallationResponseDto: {
            /**
             * @description The final URL actually fetched, after any redirects.
             * @example https://app.acme.com
             */
            checked_url: string;
            /** @description Whether the page could be fetched at all. */
            reachable: boolean;
            /** @description Whether the Hatched loader was detected in the served HTML. */
            found: boolean;
            /**
             * @description Which signals matched, e.g. `loader script`, `mount target`.
             * @example [
             *       "loader script",
             *       "mount target"
             *     ]
             */
            signals: string[];
            /** @description Human-readable outcome or failure reason, safe to surface. */
            detail: string;
        };
        RecordShareEventDto: Record<string, never>;
        WidgetBuddyHatchedDto: Record<string, never>;
        BuddyHatchedBuddyDto: {
            /** @description Buddy UUID. */
            id: string;
            /** @description Buddy display name (possibly just set by the ceremony). */
            name: string | null;
            /**
             * @description True once the hatch ceremony completion is persisted.
             * @example true
             */
            hatch_ceremony_seen: boolean;
        };
        BuddyHatchedResponseDto: {
            /** @example true */
            ok: boolean;
            buddy: components["schemas"]["BuddyHatchedBuddyDto"];
        };
        WidgetBuddySeoDto: Record<string, never>;
        WidgetBuddyProfileDto: Record<string, never>;
        WidgetRenderedDto: {
            /**
             * @description Widget IDs that successfully mounted on this page view.
             * @example [
             *       "buddy"
             *     ]
             */
            widgets?: string[];
            /**
             * @description Loader semantic version.
             * @example 0.4.2
             */
            loader_version?: string;
            /**
             * @description Opaque loader build identifier.
             * @example 20260614.1
             */
            build_id?: string;
        };
        TrackEventDto: {
            /**
             * @description Event type. Must already be registered for the buddy’s audience via POST /api/v1/event-types.
             * @example lesson_completed
             */
            type: string;
            /**
             * @description Client-generated unique event identifier. When omitted the server derives one from buddy + type + timestamp. Used for idempotency — send the same event_id to retry without double-counting.
             * @example evt_browser_abc123
             */
            event_id?: string;
            /**
             * @description ISO 8601 timestamp. When omitted the server uses its current time.
             * @example 2026-04-22T10:00:00Z
             */
            occurred_at?: string;
            /**
             * @description Additional properties associated with the event
             * @example {
             *       "lesson_id": "lesson_42",
             *       "score": 95
             *     }
             */
            properties?: Record<string, never>;
        };
        PurchaseItemDto: Record<string, never>;
        EquipItemsDto: Record<string, never>;
        PreviewOutfitDto: Record<string, never>;
        SaveOutfitDto: Record<string, never>;
        ApplyPresetDto: {
            /**
             * @description Key identifying the preset configuration to apply
             * @example language-learning
             */
            preset_key: string;
        };
        CreateConfigVersionDto: {
            /**
             * @description Configuration snapshot object containing all settings for this version
             * @example {
             *       "coin_rules": [],
             *       "skill_rules": [],
             *       "badge_definitions": []
             *     }
             */
            snapshot?: Record<string, never>;
        };
        UpdateConfigVersionDto: {
            /**
             * @description Updated configuration snapshot object
             * @example {
             *       "coin_rules": [],
             *       "skill_rules": [],
             *       "badge_definitions": []
             *     }
             */
            snapshot?: Record<string, never>;
        };
        CreateEggDto: {
            /**
             * @description Unique identifier of the end-user who owns the egg
             * @example user_abc123
             */
            user_id: string;
            /**
             * @description Arbitrary metadata to attach to the egg
             * @example {
             *       "source": "onboarding",
             *       "campaign": "spring2026"
             *     }
             */
            metadata?: Record<string, never>;
        };
        EggResponseDto: {
            /**
             * @description Unique egg identifier
             * @example 550e8400-e29b-41d4-a716-446655440000
             */
            egg_id: string;
            /**
             * @description Current egg status
             * @example incubating
             * @enum {string}
             */
            status: "incubating" | "ready" | "hatched" | "cancelled";
            /**
             * @description Visual variant number for the egg appearance
             * @example 3
             */
            visual_variant: number;
            /**
             * @description Configuration version used for this egg
             * @example 550e8400-e29b-41d4-a716-446655440001
             */
            config_version_id: string;
            /**
             * @description Owner user identifier
             * @example user_abc123
             */
            user_id: string;
            /**
             * @description Identifier of the buddy hatched from this egg. Present once status === "hatched".
             * @example 550e8400-e29b-41d4-a716-446655440002
             */
            buddy_id?: Record<string, never> | null;
            /**
             * @description Arbitrary metadata attached to the egg
             * @example {
             *       "source": "onboarding"
             *     }
             */
            metadata?: Record<string, never> | null;
            /**
             * Format: date-time
             * @description Timestamp when the egg was created
             * @example 2026-04-09T12:00:00.000Z
             */
            created_at: string;
        };
        UpdateEggStatusDto: {
            /**
             * @description New egg status
             * @example ready
             * @enum {string}
             */
            status: "ready" | "cancelled";
        };
        EggStatusChangeResponseDto: {
            /**
             * @description Egg identifier
             * @example 550e8400-e29b-41d4-a716-446655440000
             */
            egg_id: string;
            /**
             * @description New egg status after the update
             * @example ready
             */
            status: string;
            /**
             * @description Egg status before the update
             * @example incubating
             */
            previous_status: string;
        };
        UpdateBuddyDto: {
            /**
             * @description New display name for the buddy
             * @example Sparky
             */
            name?: string;
        };
        SkillUpdateDto: {
            /**
             * @description Skill key (lowercase alphanumeric with underscores)
             * @example vocabulary
             */
            key: string;
            /**
             * @description Action to perform on the skill value
             * @example increase
             * @enum {string}
             */
            action: "increase" | "decrease" | "set";
            /**
             * @description Amount to increase or decrease (used with increase/decrease actions)
             * @example 10
             */
            amount?: number;
            /**
             * @description Absolute value to set (used with set action)
             * @example 50
             */
            value?: number;
        };
        UpdateBuddySkillsDto: {
            /** @description Array of skill update operations */
            updates: components["schemas"]["SkillUpdateDto"][];
        };
        EarnCoinsDto: {
            /**
             * @description Action type, must be "earn"
             * @example earn
             * @enum {string}
             */
            action: "earn";
            /**
             * @description Number of coins to earn
             * @example 10
             */
            amount: number;
            /**
             * @description Reason for earning coins
             * @example completed_lesson
             */
            reason: string;
            /**
             * @description Optional reference ID for tracking the source event
             * @example lesson_abc123
             */
            reference_id?: string;
        };
        SpendCoinsDto: {
            /**
             * @description Number of coins to spend
             * @example 5
             */
            amount: number;
            /**
             * @description Optional item ID associated with the purchase
             * @example hat_red_01
             */
            item_id?: string;
            /**
             * @description Reason for spending coins
             * @example purchase_accessory
             */
            reason: string;
        };
        AwardBadgeDto: {
            /**
             * @description Key of the badge definition to award
             * @example first_hatch
             */
            badge_key: string;
            /**
             * @description Optional reason for awarding the badge
             * @example Manually awarded by admin
             */
            reason?: string;
        };
        UnlockItemDto: {
            /**
             * @description UUID of the item to unlock
             * @example b3d7c8a0-1234-4f5e-9abc-def012345678
             */
            item_id: string;
            /**
             * @description Reason for unlocking the item
             * @example Achievement reward
             */
            reason?: string;
        };
        TokenTransactionDto: {
            /**
             * @description Customer-defined token key (e.g. "gems", "xp"). Must match a configured token_config row.
             * @example gems
             */
            token_type: string;
            /**
             * @description Transaction direction. `earn` always succeeds for active tokens; `spend` fails with progression_not_spendable for progression tokens.
             * @example earn
             * @enum {string}
             */
            action: "earn" | "spend";
            /**
             * @description Number of tokens to transact
             * @example 1
             */
            amount: number;
            /**
             * @description Reason for the token transaction
             * @example lesson_completed
             */
            reason: string;
            /**
             * @description Optional reference ID for tracking the source event
             * @example evt_abc123
             */
            reference_id?: string;
        };
        CreateShareDto: Record<string, never>;
        ShareEventDto: Record<string, never>;
        UpdateSharingDto: Record<string, never>;
        PublicShareEventDto: Record<string, never>;
        CreateSkillSetDto: {
            /**
             * @description Name of the skill set
             * @example Language Skills
             */
            name: string;
            /** @description Array of skill definitions (1-10 skills) */
            skills: unknown[][];
        };
        GenerateSkillIconDto: {
            /**
             * @description Skill label — drives the subject of the generated icon (e.g. "Writing", "Listening")
             * @example Listening
             */
            label: string;
            /**
             * @description Optional skill description for additional context
             * @example Tracks how often the learner focuses on audio-based practice
             */
            description?: string;
            /**
             * @description Visual treatment style
             * @default flat
             * @enum {string}
             */
            style: "flat" | "line" | "duotone" | "glyph" | "isometric";
            /** @description Free-form hint to nudge the composition (e.g. "a single headphone, minimalist") */
            hint?: string;
        };
        UpdateSkillSetDto: {
            /**
             * @description Name of the skill set
             * @example Language Skills
             */
            name?: string;
            /** @description Array of skill definitions (1-10 skills) */
            skills?: unknown[][];
        };
        CreateSkillRuleDto: {
            /**
             * @description Trigger event key that activates this rule
             * @example lesson_completed
             */
            trigger: string;
            /**
             * @description Skill key that receives XP when this rule triggers
             * @example vocabulary
             */
            skill_key: string;
            /**
             * @description Amount of XP to award
             * @example 10
             */
            amount: number;
            /**
             * @description Maximum times this rule can trigger per day
             * @example 5
             */
            daily_limit?: number;
            /**
             * @description Whether this skill rule is active
             * @example true
             */
            active?: boolean;
        };
        UpdateSkillRuleDto: {
            /**
             * @description Trigger event key that activates this rule
             * @example lesson_completed
             */
            trigger?: string;
            /**
             * @description Skill key that receives XP when this rule triggers
             * @example vocabulary
             */
            skill_key?: string;
            /**
             * @description Amount of XP to award
             * @example 15
             */
            amount?: number;
            /**
             * @description Maximum times this rule can trigger per day
             * @example 5
             */
            daily_limit?: number;
            /**
             * @description Whether this skill rule is active
             * @example true
             */
            active?: boolean;
        };
        CreateSkillDecayRuleDto: {
            /**
             * @description Skill key whose level decays on the chosen cadence
             * @example vocabulary
             */
            skill_key: string;
            /**
             * @description How often the decay is applied
             * @example daily
             * @enum {string}
             */
            cadence: "daily" | "weekly" | "monthly";
            /**
             * @description Amount subtracted from the skill level each cadence period
             * @example 2
             */
            amount: number;
            /**
             * @description Lower bound — the skill level will never decay below this value. Defaults to 0.
             * @example 20
             */
            floor_level?: number;
            /**
             * @description Number of days after a buddy is created during which decay is suppressed.
             * @example 7
             */
            grace_days?: number;
            /**
             * @description Decay only applies when the current skill level is strictly greater than this threshold. Use to keep low-skill users from being further punished.
             * @example 50
             */
            apply_only_above?: number;
            /**
             * @description Audience scope for this rule. Defaults to "default".
             * @example default
             */
            audience?: string;
            /**
             * @description Whether the rule is active. Defaults to false so a draft rule does not start decaying production users on creation.
             * @example false
             */
            active?: boolean;
        };
        UpdateSkillDecayRuleDto: {
            skill_key?: string;
            /** @enum {string} */
            cadence?: "daily" | "weekly" | "monthly";
            amount?: number;
            floor_level?: number;
            grace_days?: number;
            apply_only_above?: number | null;
            audience?: string;
            active?: boolean;
        };
        CreateCoinRuleDto: {
            /**
             * @description Trigger event key (lowercase alphanumeric with underscores)
             * @example lesson_completed
             */
            trigger: string;
            /**
             * @description Number of coins awarded when the rule triggers
             * @example 10
             */
            amount: number;
            /**
             * @description Maximum times this rule can trigger per day
             * @example 5
             */
            daily_limit?: number;
            /**
             * @description Maximum times this rule can trigger per week
             * @example 20
             */
            weekly_limit?: number;
            /**
             * @description Maximum times this rule can trigger in total
             * @example 100
             */
            total_limit?: number;
            /**
             * @description Streak multiplier configuration (e.g. { "3": 2, "7": 3 })
             * @example {
             *       "3": 2,
             *       "7": 3
             *     }
             */
            streak_config?: Record<string, never>;
            /**
             * @description Whether the rule is active
             * @example true
             */
            active?: boolean;
            /** @description HTCH-79 weighted-random reward pool. When set, a deterministic weighted pick replaces the flat amount (Yu-kai Ch.11 Skinner Box). Pass null to clear. */
            reward_pool?: Record<string, never> | null;
        };
        UpdateCoinRuleDto: {
            /**
             * @description Trigger event key (lowercase alphanumeric with underscores)
             * @example lesson_completed
             */
            trigger?: string;
            /**
             * @description Number of coins awarded when the rule triggers
             * @example 15
             */
            amount?: number;
            /**
             * @description Maximum times this rule can trigger per day (null to remove)
             * @example 5
             */
            daily_limit?: number | null;
            /**
             * @description Maximum times this rule can trigger per week (null to remove)
             * @example 20
             */
            weekly_limit?: number | null;
            /**
             * @description Maximum times this rule can trigger in total (null to remove)
             * @example 100
             */
            total_limit?: number | null;
            /**
             * @description Whether the rule is active
             * @example true
             */
            active?: boolean;
            /**
             * @description Streak multiplier configuration (e.g. { "3": 2, "7": 3 })
             * @example {
             *       "3": 2,
             *       "7": 3
             *     }
             */
            streak_config?: Record<string, never>;
            /** @description HTCH-79 weighted-random reward pool. When set, a deterministic weighted pick replaces the flat amount (Yu-kai Ch.11 Skinner Box). Pass null to clear. */
            reward_pool?: Record<string, never> | null;
        };
        CreateBadgeDefinitionDto: {
            /**
             * @description Unique badge key identifier
             * @example first_hatch
             */
            key: string;
            /**
             * @description Audiences this badge applies to. Omit for single-audience customers. One badge_definitions row is created per audience; the badge shares its key across them.
             * @example [
             *       "student",
             *       "teacher"
             *     ]
             */
            audiences?: string[];
            /**
             * @description Human-readable badge label
             * @example First Hatch
             */
            label: string;
            /**
             * @description Detailed badge description
             * @example Awarded for hatching your first egg
             */
            description?: string;
            /**
             * @description HTCH-16 user-facing "How to earn" copy rendered by the badges widget. Falls back to description when empty.
             * @example Reach a 10-day streak by checking in every morning.
             */
            criteria_copy?: string;
            /**
             * @description URL to the badge icon image
             * @example https://cdn.example.com/badges/first_hatch.png
             */
            icon_url?: string;
            /**
             * @description Number of coins awarded when this badge is earned
             * @example 50
             */
            coin_reward: number;
            /**
             * @description Type of criteria used to determine badge eligibility
             * @example milestone
             * @enum {string}
             */
            criteria_type: "milestone" | "streak" | "skill_level" | "collection" | "evolution" | "coin" | "custom";
            /**
             * @description Configuration object for the criteria (schema depends on criteria_type)
             * @example {
             *       "threshold": 1,
             *       "event": "egg_hatched"
             *     }
             */
            criteria_config: Record<string, never>;
            /**
             * @description Whether the badge should be automatically awarded when criteria are met
             * @example true
             */
            auto_award?: boolean;
            /**
             * @description Whether this badge definition is active
             * @example true
             */
            active?: boolean;
        };
        GenerateBadgeIconDto: {
            /**
             * @description Badge label — drives the subject of the generated icon
             * @example First Hatch
             */
            label: string;
            /**
             * @description Optional badge description for additional context
             * @example Awarded when a user hatches their very first buddy
             */
            description?: string;
            /**
             * @description Visual treatment style
             * @default enamel_pin
             * @enum {string}
             */
            style: "enamel_pin" | "medal" | "flat_modern" | "storybook" | "pixel";
            /** @description Free-form hint to nudge the composition (e.g., "include a little egg with sparkles") */
            hint?: string;
        };
        UpdateBadgeDefinitionDto: {
            /**
             * @description Unique badge key identifier
             * @example first_hatch
             */
            key?: string;
            /**
             * @description Replacement set of audiences for this badge. Rows are added for new audiences and removed for dropped ones (removal fails with 409 if awards exist). Omit to leave the audience set unchanged.
             * @example [
             *       "student",
             *       "teacher"
             *     ]
             */
            audiences?: string[];
            /**
             * @description Human-readable badge label
             * @example First Hatch
             */
            label?: string;
            /**
             * @description Detailed badge description
             * @example Awarded for hatching your first egg
             */
            description?: string;
            /**
             * @description HTCH-16 user-facing "How to earn" copy rendered by the badges widget. Pass null to clear.
             * @example Reach a 10-day streak by checking in every morning.
             */
            criteria_copy?: string | null;
            /**
             * @description URL to the badge icon image
             * @example https://cdn.example.com/badges/first_hatch.png
             */
            icon_url?: string;
            /**
             * @description Number of coins awarded when this badge is earned
             * @example 50
             */
            coin_reward?: number;
            /**
             * @description Type of criteria used to determine badge eligibility
             * @example milestone
             * @enum {string}
             */
            criteria_type?: "milestone" | "streak" | "skill_level" | "collection" | "evolution" | "coin" | "custom";
            /**
             * @description Configuration object for the criteria (schema depends on criteria_type)
             * @example {
             *       "threshold": 1,
             *       "event": "egg_hatched"
             *     }
             */
            criteria_config?: Record<string, never>;
            /**
             * @description Whether the badge should be automatically awarded when criteria are met
             * @example true
             */
            auto_award?: boolean;
            /**
             * @description Whether this badge definition is active
             * @example true
             */
            active?: boolean;
        };
        CreateEventBadgeDto: {
            badge_key: string;
            trigger_window_start: string;
            trigger_window_end: string;
            condition?: Record<string, never>;
            narrative_callout?: Record<string, never>;
            enabled?: boolean;
        };
        UpdateEventBadgeDto: {
            badge_key?: string;
            trigger_window_start?: string;
            trigger_window_end?: string;
            condition?: Record<string, never>;
            narrative_callout?: Record<string, never>;
            enabled?: boolean;
        };
        CreateStreakDefinitionDto: {
            /**
             * @description Audience key. Omit for single-audience customers; required if the customer has 2+ audiences configured.
             * @example learner
             */
            audience?: string;
            /** @example daily-practice */
            key: string;
            /** @example Daily practice streak */
            label: string;
            description?: string;
            /** @enum {string} */
            period: "daily" | "weekly" | "monthly";
            /**
             * @description Events that count toward the streak (OR-matched).
             * @example [
             *       "lesson_completed",
             *       "practice_done"
             *     ]
             */
            event_types: string[];
            /**
             * @default flame
             * @enum {string}
             */
            icon: "flame" | "heart" | "bolt" | "star" | "leaf";
            /**
             * @default count
             * @enum {string}
             */
            display_mode: "count" | "row" | "mini";
            /** @default 7 */
            max_row_icons: number;
            /**
             * @example [
             *       3,
             *       7,
             *       30,
             *       100
             *     ]
             */
            milestones?: number[];
            /** @default true */
            is_active: boolean;
        };
        UpdateStreakDefinitionDto: {
            /**
             * @description Audience key. Omit for single-audience customers; required if the customer has 2+ audiences configured.
             * @example learner
             */
            audience?: string;
            /** @example daily-practice */
            key?: string;
            /** @example Daily practice streak */
            label?: string;
            description?: string;
            /** @enum {string} */
            period?: "daily" | "weekly" | "monthly";
            /**
             * @description Events that count toward the streak (OR-matched).
             * @example [
             *       "lesson_completed",
             *       "practice_done"
             *     ]
             */
            event_types?: string[];
            /**
             * @default flame
             * @enum {string}
             */
            icon: "flame" | "heart" | "bolt" | "star" | "leaf";
            /**
             * @default count
             * @enum {string}
             */
            display_mode: "count" | "row" | "mini";
            /** @default 7 */
            max_row_icons: number;
            /**
             * @example [
             *       3,
             *       7,
             *       30,
             *       100
             *     ]
             */
            milestones?: number[];
            /** @default true */
            is_active: boolean;
        };
        IngestEventDto: {
            /**
             * @description Unique event identifier from the source system
             * @example evt_lesson_completed_12345
             */
            event_id: string;
            /**
             * @description Identifier of the user who triggered the event
             * @example usr_67890
             */
            user_id: string;
            /**
             * @description Type of the event
             * @example lesson_completed
             */
            type: string;
            /**
             * @description ISO 8601 timestamp of when the event occurred. Defaults to "now" server-side if omitted.
             * @example 2026-04-09T12:00:00Z
             */
            occurred_at?: string;
            /**
             * @description Audience (rol) this event belongs to. Required when the customer has 2+ audiences; omitted for single-audience customers (server uses the implicit default).
             * @example student
             */
            audience?: string;
            /**
             * @description Additional properties associated with the event
             * @example {
             *       "lesson_id": "lesson_42",
             *       "score": 95,
             *       "duration_seconds": 300
             *     }
             */
            properties?: Record<string, never>;
        };
        IngestBatchDto: {
            /** @description Array of events to ingest (max 100) */
            events: components["schemas"]["IngestEventDto"][];
        };
        CreateEventTypeDto: {
            /**
             * @description Machine event name. Lowercase identifiers with underscores or dots recommended.
             * @example lesson_completed
             */
            name: string;
            /**
             * @description Audience key. Omit for single-audience customers.
             * @example learner
             */
            audience?: string;
            /**
             * @description Human-readable label shown in the dashboard.
             * @example Lesson completed
             */
            display_label?: string;
            /** @description Free-form description of when this event is emitted. */
            description?: string;
            /**
             * @description Whether ingest accepts this event type. Defaults to true.
             * @default true
             */
            is_active: boolean;
        };
        UpdateEventTypeDto: {
            /** @description Rename the event. Propagates to event_ingestions, coin_rules, skill_rules, badge_definitions.condition_config.event, streak_definitions.event_types, webhook_configs.events, and custom_counters JSONB keys. */
            name?: string;
            display_label?: string;
            description?: string;
            is_active?: boolean;
        };
        UpsertTokenConfigDto: {
            /** @description Token configurations to create or update. A typical customer has exactly two entries: one primary + one progression. */
            tokens: unknown[][];
        };
        CreateMarketplaceDto: {
            /**
             * @description Name of the marketplace
             * @example Avatar Shop
             */
            name: string;
            /**
             * @description Pricing mode for marketplace items
             * @example mixed
             * @enum {string}
             */
            pricing_mode?: "coins_only" | "free_only" | "mixed";
            /**
             * @description How items can be unlocked
             * @example both
             * @enum {string}
             */
            unlock_mode?: "purchase" | "earn" | "both";
            /**
             * @description List of item categories available in this marketplace
             * @example [
             *       "head",
             *       "background",
             *       "accessory"
             *     ]
             */
            categories?: string[];
        };
        UpdateMarketplaceDto: {
            /**
             * @description Name of the marketplace
             * @example Avatar Shop
             */
            name?: string;
            /**
             * @description Pricing mode for marketplace items
             * @example mixed
             * @enum {string}
             */
            pricing_mode?: "coins_only" | "free_only" | "mixed";
            /**
             * @description How items can be unlocked
             * @example both
             * @enum {string}
             */
            unlock_mode?: "purchase" | "earn" | "both";
            /**
             * @description List of item categories available in this marketplace
             * @example [
             *       "head",
             *       "background",
             *       "accessory"
             *     ]
             */
            categories?: string[];
            /**
             * @description Whether the marketplace is active
             * @example true
             */
            active?: boolean;
        };
        CreateItemDto: {
            /**
             * @description Unique key identifier for the item
             * @example wizard-hat
             */
            key: string;
            /**
             * @description Display label for the item
             * @example Wizard Hat
             */
            label: string;
            /**
             * @description Description of the item
             * @example A mystical hat that grants wisdom
             */
            description?: string;
            /**
             * @description Canonical item category. Drives compositing z-order and equip conflict detection.
             * @example head
             * @enum {string}
             */
            category: "background" | "body" | "feet" | "hand" | "neck" | "face" | "head" | "accessory" | "booster";
            /**
             * @description Price of the item in coins
             * @example 100
             */
            price?: number;
            /**
             * @description Rarity tier of the item
             * @example rare
             * @enum {string}
             */
            rarity?: "common" | "uncommon" | "rare" | "epic" | "legendary";
            /**
             * @description URL to the item image
             * @example https://cdn.example.com/items/wizard-hat.png
             */
            image_url?: string;
            /**
             * @description Visibility rules controlling who can see this item
             * @example {
             *       "type": "all",
             *       "config": {}
             *     }
             */
            visibility_rules?: Record<string, never>;
            /**
             * @description Requirements a buddy must meet to purchase this item
             * @example {
             *       "min_evolution_stage": 2,
             *       "min_total_level": 5
             *     }
             */
            requirements?: Record<string, never>;
            /**
             * @description Feature-specific item metadata. Booster items use booster_type, multiplier and duration_seconds.
             * @example {
             *       "booster_type": "coin_x2_24h",
             *       "multiplier": 2,
             *       "duration_seconds": 86400
             *     }
             */
            metadata?: Record<string, never>;
            /**
             * @description Whether the item is active and available for purchase
             * @example true
             */
            active?: boolean;
            /**
             * @description HTCH-53 Social Treasure — when true the item is gift-only: it cannot be bought for oneself, only received as a gift from a teammate.
             * @example false
             */
            is_gift_only?: boolean;
            /**
             * @description HTCH-14 availability window start (ISO-8601). Null = no lower bound.
             * @example 2026-06-01T00:00:00.000Z
             */
            available_from?: Record<string, never> | null;
            /**
             * @description HTCH-14 availability window end (ISO-8601). Null = no upper bound.
             * @example 2026-07-01T00:00:00.000Z
             */
            available_until?: Record<string, never> | null;
        };
        ImportMarketplaceItemsDto: {
            /**
             * @description Format of the import payload
             * @example json
             * @enum {string}
             */
            format: "json" | "csv";
            /**
             * @description Serialized import data in the specified format
             * @example [{"key":"sword","label":"Sword","category":"weapons","price":50}]
             */
            payload: string;
        };
        UpdateItemDto: {
            /**
             * @description Unique key identifier for the item
             * @example wizard-hat
             */
            key?: string;
            /**
             * @description Display label for the item
             * @example Wizard Hat
             */
            label?: string;
            /**
             * @description Description of the item
             * @example A mystical hat that grants wisdom
             */
            description?: string;
            /**
             * @description Canonical item category. Drives compositing z-order and equip conflict detection.
             * @example head
             * @enum {string}
             */
            category?: "background" | "body" | "feet" | "hand" | "neck" | "face" | "head" | "accessory" | "booster";
            /**
             * @description Price of the item in coins
             * @example 100
             */
            price?: number;
            /**
             * @description Rarity tier of the item
             * @example rare
             * @enum {string}
             */
            rarity?: "common" | "uncommon" | "rare" | "epic" | "legendary";
            /**
             * @description URL to the item image
             * @example https://cdn.example.com/items/wizard-hat.png
             */
            image_url?: string;
            /**
             * @description Visibility rules controlling who can see this item
             * @example {
             *       "type": "all",
             *       "config": {}
             *     }
             */
            visibility_rules?: Record<string, never>;
            /**
             * @description Requirements a buddy must meet to purchase this item
             * @example {
             *       "min_evolution_stage": 2,
             *       "min_total_level": 5
             *     }
             */
            requirements?: Record<string, never>;
            /**
             * @description Feature-specific item metadata. Booster items use booster_type, multiplier and duration_seconds.
             * @example {
             *       "booster_type": "coin_x2_24h",
             *       "multiplier": 2,
             *       "duration_seconds": 86400
             *     }
             */
            metadata?: Record<string, never>;
            /**
             * @description Whether the item is active and available for purchase
             * @example true
             */
            active?: boolean;
            /**
             * @description HTCH-53 Social Treasure — when true the item is gift-only: it cannot be bought for oneself, only received as a gift from a teammate.
             * @example false
             */
            is_gift_only?: boolean;
            /**
             * @description HTCH-14 availability window — ISO-8601. null clears the bound. Both nullable; null = open in that direction.
             * @example 2026-06-01T00:00:00.000Z
             */
            available_from?: Record<string, never> | null;
            /**
             * @description HTCH-14 availability window end. Null clears.
             * @example 2026-07-01T00:00:00.000Z
             */
            available_until?: Record<string, never> | null;
        };
        ReorderItemsDto: {
            /**
             * @description Ordered list of item UUIDs defining the new display order
             * @example [
             *       "b3d7c8a0-1234-4f5e-9abc-def012345678",
             *       "c4e8d9b1-5678-4a6f-0bcd-ef1234567890"
             *     ]
             */
            item_ids: string[];
        };
        GiftItemDto: {
            /**
             * @description UUID of the buddy that receives the gift
             * @example b3d7c8a0-1234-4f5e-9abc-def012345678
             */
            to_buddy_id: string;
            /**
             * @description Optional note delivered with the gift (max 280 chars)
             * @example Great work on the launch — wear it with pride!
             */
            message?: string;
        };
        ScheduleFlashSaleDto: {
            name: string;
            starts_at: string;
            duration_minutes?: number;
            discount_percent?: number;
            item_selection_mode?: string;
            curated_item_ids?: string[];
        };
        MarketplaceFomoQueryDto: {
            item_ids: string[];
        };
        EquipLegacyItemDto: Record<string, never>;
        CreateWebhookConfigDto: {
            /**
             * @description URL that will receive webhook POST requests
             * @example https://api.example.com/webhooks/hatched
             */
            url: string;
            /**
             * @description List of event types to subscribe to. If omitted, subscribes to all events.
             * @example [
             *       "buddy.hatched",
             *       "coins.earned",
             *       "badge.awarded"
             *     ]
             */
            events?: string[];
        };
        WebhookEventTypesResponseDto: {
            /**
             * @description Canonical event types accepted by webhook subscriptions.
             * @example [
             *       "egg.created",
             *       "buddy.hatched",
             *       "badge.awarded"
             *     ]
             */
            events: string[];
        };
        UpdateWebhookConfigDto: {
            /**
             * @description URL that will receive webhook POST requests
             * @example https://api.example.com/webhooks/hatched
             */
            url?: string;
            /**
             * @description List of event types to subscribe to
             * @example [
             *       "buddy.hatched",
             *       "coins.earned",
             *       "badge.awarded"
             *     ]
             */
            events?: string[];
            /**
             * @description Whether the webhook config is active
             * @example true
             */
            active?: boolean;
        };
        FeatureActivityWeekDto: {
            /**
             * @description ISO week start date.
             * @example 2026-06-01
             */
            week_start: string;
            /**
             * @description Events in that week.
             * @example 12
             */
            count: number;
        };
        FeatureActivityFeatureDto: {
            /**
             * @description Planner feature key.
             * @example kudos
             */
            feature_key: string;
            /**
             * @description Display label.
             * @example Kudos
             */
            label: string;
            /**
             * @description Telemetry event types rolled up under this feature.
             * @example [
             *       "kudos.sent"
             *     ]
             */
            event_types: string[];
            /**
             * @description Total events in the window.
             * @example 84
             */
            total: number;
            /**
             * @description Total events in the preceding window (delta baseline).
             * @example 61
             */
            prev_total: number;
            weekly: components["schemas"]["FeatureActivityWeekDto"][];
        };
        FeatureActivityResponseDto: {
            /**
             * @description Lookback window in weeks.
             * @example 8
             */
            weeks: number;
            features: components["schemas"]["FeatureActivityFeatureDto"][];
        };
        BillingCreditsDto: {
            /** @example 20 */
            welcome: number;
            /** @example 600 */
            paid: number;
            /** @example 50 */
            promo: number;
            /**
             * Format: date-time
             * @description Promo credit expiry, or null when there are no expiring promo credits.
             */
            promo_expires_at?: string | null;
            /** @example 670 */
            total_spendable: number;
        };
        BillingEventQuotaDto: {
            /**
             * @description Monthly event limit. Null means unlimited.
             * @example 500000
             */
            limit: Record<string, never> | null;
            /** @example 120450 */
            used: number;
            /** Format: date-time */
            reset_at: string;
        };
        BillingIncludedCreditsDto: {
            /**
             * @description Monthly included AI credit grant. Null means unlimited.
             * @example 50
             */
            monthly: Record<string, never> | null;
            /**
             * @description Included AI credit grant for the current Stripe billing period. Null means unlimited or unknown.
             * @example 600
             */
            current_period: Record<string, never> | null;
            /**
             * @description Detected Stripe billing interval for the current subscription, if known.
             * @enum {string|null}
             */
            interval: "monthly" | "annual" | null;
        };
        BillingSubscriptionDto: {
            /**
             * @description Current Stripe subscription id, if the customer has one.
             * @example sub_123
             */
            stripe_subscription_id?: Record<string, never> | null;
            /**
             * @description Live Stripe subscription status when it could be fetched.
             * @example active
             */
            status?: Record<string, never> | null;
            /**
             * Format: date-time
             * @description Current Stripe period end. For active subscriptions this is the next invoice date.
             */
            current_period_end_at?: string | null;
            /**
             * Format: date-time
             * @description Next invoice date for the current subscription, when known.
             */
            next_invoice_at?: string | null;
            /** @example false */
            cancel_at_period_end: boolean;
            /**
             * @description Detected Stripe billing interval for the current subscription, if known.
             * @enum {string|null}
             */
            interval: "monthly" | "annual" | null;
            /**
             * @description True when the subscription summary was refreshed from Stripe during this request.
             * @example true
             */
            synced: boolean;
        };
        BillingStatusResponseDto: {
            /** @enum {string} */
            plan: "starter" | "growth" | "pro" | "enterprise";
            /** @example Launch */
            plan_public_name: string;
            /** @example active */
            billing_status: string;
            /** @example cus_123 */
            stripe_customer_id?: Record<string, never> | null;
            /** @example true */
            has_subscription: boolean;
            credits: components["schemas"]["BillingCreditsDto"];
            event_quota: components["schemas"]["BillingEventQuotaDto"];
            included_credits: components["schemas"]["BillingIncludedCreditsDto"];
            subscription: components["schemas"]["BillingSubscriptionDto"];
            /** @description Raw plan definition from PLAN_MATRIX retained for backwards compatibility. */
            plan_matrix: Record<string, never>;
        };
        SeedFromUrlDto: {
            /**
             * @description Operator's public website URL to scrape for onboarding seed
             * @example https://flalingo.com
             */
            url: string;
        };
        RepoIntegrationContextDto: Record<string, never>;
        RepoBriefDto: {
            product_description: string;
            audience: string;
            sector?: string;
            gamification_goals: string[];
            possible_events: string[];
            feature_fit_scores: Record<string, never>;
            integration_context?: components["schemas"]["RepoIntegrationContextDto"];
            confidence?: Record<string, never>;
            notes?: string;
        };
        SeedFromRepoDto: {
            /** @description Brand brief JSON produced by the operator's AI coding assistant after running the Hatched repo-analysis prompt. */
            brief: components["schemas"]["RepoBriefDto"];
            /** @description Which agent produced the brief (claude-code / codex / copilot / other). */
            agent?: string;
        };
        SeedFromDescriptionDto: {
            /** @enum {string} */
            audience: "employees" | "customers" | "learners" | "players" | "members" | "mixed";
            /** @enum {string} */
            surface: "web" | "mobile" | "intranet" | "offline" | "internal_tool";
            /** @enum {string} */
            org_type: "hr" | "ld" | "sales" | "customer_success" | "community" | "other";
            /** @description Optional free-text the operator adds after the chips. */
            description?: string;
        };
        WaitlistDto: {
            /**
             * @description Integration kind the operator wants to be notified about
             * @example github
             * @enum {string}
             */
            kind: "github" | "mixpanel";
            /**
             * @description Email to notify
             * @example [email protected]
             */
            email: string;
            /** @description Optional free-text note from the operator */
            notes?: string;
        };
        ProductSummary: Record<string, never>;
        PriorityProfile: Record<string, never>;
        UpdateAnswersDto: {
            product?: components["schemas"]["ProductSummary"];
            goals?: string[];
            events?: string[];
            marketplace_enabled?: boolean;
            evolution_enabled?: boolean;
            badges_enabled?: boolean;
            tokens_enabled?: boolean;
            streaks_enabled?: boolean;
            paths_enabled?: boolean;
            skill_names_approved?: string[];
            badge_names_approved?: string[];
            item_categories_enabled?: string[];
            priority_profile?: components["schemas"]["PriorityProfile"];
            feature_recommendations?: Record<string, never>;
        };
        SendMessageDto: {
            content: string;
        };
        CreateUploadUrlDto: {
            stage: number;
            mime_type: string;
            byte_size: number;
        };
        CommitAssetDto: {
            storage_path: string;
        };
        UpsertTokenGateDto: {
            /**
             * @description Stable gate identifier. snake_case, under 100 chars. Unique per customer.
             * @example advanced-mode
             */
            gate_key: string;
            /**
             * @description Token key this gate consumes (must match a token_config row).
             * @example gems
             */
            token_key: string;
            /**
             * @description Token cost to unlock this gate.
             * @example 50
             */
            cost: number;
            /** @description Display label shown in dashboard/widgets. */
            label?: string;
            /** @description Free-form description of what unlocking grants. */
            description?: string;
            /**
             * @description Arbitrary metadata the app code reads to decide what the unlock enables.
             * @example {
             *       "feature": "advanced-mode",
             *       "min_evolution_stage": 2
             *     }
             */
            metadata?: Record<string, never>;
            /** @default true */
            is_active: boolean;
        };
        CreatePathDefinitionDto: {
            /**
             * @description Audience key. Omit for single-audience customers; required if 2+ audiences are configured.
             * @example learner
             */
            audience?: string;
            /** @example english_a2 */
            key: string;
            /** @example English A2 path */
            label: string;
            description?: string;
            /**
             * @default path
             * @enum {string}
             */
            icon: "path" | "flame" | "heart" | "bolt" | "star" | "leaf";
            /** @description Hex accent color override (e.g. "#7c3aed"). Falls back to brand accent. */
            accent_color?: string;
            /**
             * @default straight
             * @enum {string}
             */
            display_mode: "straight" | "zigzag" | "stepper";
            /** @default true */
            is_active: boolean;
        };
        UpdatePathDefinitionDto: {
            /**
             * @description Audience key. Omit for single-audience customers; required if 2+ audiences are configured.
             * @example learner
             */
            audience?: string;
            /** @example english_a2 */
            key?: string;
            /** @example English A2 path */
            label?: string;
            description?: string;
            /**
             * @default path
             * @enum {string}
             */
            icon: "path" | "flame" | "heart" | "bolt" | "star" | "leaf";
            /** @description Hex accent color override (e.g. "#7c3aed"). Falls back to brand accent. */
            accent_color?: string;
            /**
             * @default straight
             * @enum {string}
             */
            display_mode: "straight" | "zigzag" | "stepper";
            /** @default true */
            is_active: boolean;
        };
        CreatePathStepDto: {
            /** @example speaking_sprint */
            key: string;
            /** @example Speaking sprint */
            label: string;
            description?: string;
            icon?: string;
            /** @example 1 */
            ordinal: number;
            /**
             * @description Optional override for unlock semantics. If omitted, the step unlocks when the previous step (by ordinal) is completed.
             * @example {
             *       "type": "badge_earned",
             *       "config": {
             *         "badge_key": "novice"
             *       }
             *     }
             */
            unlock_condition?: Record<string, never>;
            /**
             * @description Optional step-level completion shortcut. When set and matched by the rule engine, the step completes outright and any incomplete sub-steps cascade to completed. Cannot be `custom` (use sub-step manual completion for that flow).
             * @example {
             *       "type": "event_count",
             *       "config": {
             *         "event_type": "lesson_completed",
             *         "threshold": 5
             *       }
             *     }
             */
            completion_condition?: Record<string, never>;
            /** @default 0 */
            reward_coins: number;
            reward_badge_key?: string;
            /** @default true */
            is_active: boolean;
        };
        ReorderEntryDto: {
            /** @description UUID of the step or sub-step to place at this ordinal */
            id: string;
            ordinal: number;
        };
        ReorderDto: {
            ordering: components["schemas"]["ReorderEntryDto"][];
        };
        UpdatePathStepDto: {
            /** @example speaking_sprint */
            key?: string;
            /** @example Speaking sprint */
            label?: string;
            description?: string;
            icon?: string;
            /** @example 1 */
            ordinal?: number;
            /**
             * @description Optional override for unlock semantics. If omitted, the step unlocks when the previous step (by ordinal) is completed.
             * @example {
             *       "type": "badge_earned",
             *       "config": {
             *         "badge_key": "novice"
             *       }
             *     }
             */
            unlock_condition?: Record<string, never>;
            /**
             * @description Optional step-level completion shortcut. When set and matched by the rule engine, the step completes outright and any incomplete sub-steps cascade to completed. Cannot be `custom` (use sub-step manual completion for that flow).
             * @example {
             *       "type": "event_count",
             *       "config": {
             *         "event_type": "lesson_completed",
             *         "threshold": 5
             *       }
             *     }
             */
            completion_condition?: Record<string, never>;
            /** @default 0 */
            reward_coins: number;
            reward_badge_key?: string;
            /** @default true */
            is_active: boolean;
        };
        CreatePathSubStepDto: {
            /** @example lesson_3 */
            key: string;
            /** @example Greetings */
            label: string;
            description?: string;
            /** @example 1 */
            ordinal: number;
            /**
             * @description Rule-engine predicate evaluated after each event. Omit and set allow_manual_complete=true for purely manual sub-steps.
             * @example {
             *       "type": "event_count",
             *       "config": {
             *         "event_type": "lesson_completed",
             *         "threshold": 3
             *       }
             *     }
             */
            completion_condition?: Record<string, never>;
            /** @default false */
            allow_manual_complete: boolean;
            /**
             * @description When true, sub-steps inside the same step can be completed out of ordinal order.
             * @default false
             */
            allow_skip_ahead: boolean;
            /** @default 0 */
            reward_coins: number;
            reward_badge_key?: string;
            /** @description Optional deep-link to the customer LMS/app where the sub-step lives. The widget renders a CTA button when present. */
            content_url?: string;
            /** @example Open lesson */
            cta_label?: string;
            /** @default true */
            is_active: boolean;
        };
        UpdatePathSubStepDto: {
            /** @example lesson_3 */
            key?: string;
            /** @example Greetings */
            label?: string;
            description?: string;
            /** @example 1 */
            ordinal?: number;
            /**
             * @description Rule-engine predicate evaluated after each event. Omit and set allow_manual_complete=true for purely manual sub-steps.
             * @example {
             *       "type": "event_count",
             *       "config": {
             *         "event_type": "lesson_completed",
             *         "threshold": 3
             *       }
             *     }
             */
            completion_condition?: Record<string, never>;
            /** @default false */
            allow_manual_complete: boolean;
            /**
             * @description When true, sub-steps inside the same step can be completed out of ordinal order.
             * @default false
             */
            allow_skip_ahead: boolean;
            /** @default 0 */
            reward_coins: number;
            reward_badge_key?: string;
            /** @description Optional deep-link to the customer LMS/app where the sub-step lives. The widget renders a CTA button when present. */
            content_url?: string;
            /** @example Open lesson */
            cta_label?: string;
            /** @default true */
            is_active: boolean;
        };
        WinStateBragResponseDto: {
            /** @description BragPayload — share copy, public profile URL, and OG-card refs the ceremony Share CTA renders. */
            payload: Record<string, never>;
            /**
             * @description Tenant-enabled share channels; empty when the Planner toggle is off (the BragButton self-hides).
             * @example [
             *       "linkedin",
             *       "copy_link"
             *     ]
             */
            enabled_channels: string[];
        };
        CreateSurpriseDropDto: {
            name: string;
            trigger_event: string;
            chance: number;
            reward_type: string;
            reward_amount?: number;
            reward_ref?: string;
            condition?: Record<string, never>;
            narrative_copy: Record<string, never>;
            enabled?: boolean;
        };
        UpdateSurpriseDropDto: {
            name?: string;
            trigger_event?: string;
            chance?: number;
            reward_type?: string;
            reward_amount?: number;
            reward_ref?: string;
            condition?: Record<string, never>;
            narrative_copy?: Record<string, never>;
            enabled?: boolean;
        };
        AdminGrantBoosterDto: {
            buddy_id: string;
            key: string;
        };
        PurchaseBoosterDto: {
            key: string;
        };
        CreateLotteryDto: {
            name: string;
            eligibility_rule: Record<string, never>;
            cadence: string;
            prize_pool: string[];
            draw_at: Record<string, never>;
            tz?: string;
            active?: boolean;
        };
        UpdateLotteryDto: {
            name?: string;
            eligibility_rule?: Record<string, never>;
            cadence?: string;
            prize_pool?: string[];
            draw_at?: Record<string, never>;
            tz?: string;
            active?: boolean;
        };
        CreateProfileTemplateDto: {
            name: string;
            source_template: string;
            layout: Record<string, never>;
            theme_overrides?: Record<string, never>;
            is_default?: boolean;
        };
        UpdateProfileTemplateDto: {
            name?: string;
            layout?: Record<string, never>;
            theme_overrides?: Record<string, never>;
            is_default?: boolean;
        };
        BulkApplyTargetDto: Record<string, never>;
        BulkApplyDto: {
            template_id: string;
            target: components["schemas"]["BulkApplyTargetDto"];
        };
        SeasonClosingDiscoveryResponseDto: {
            /** @description SeasonHighlightsSnapshot — the four personalized highlights plus cohort outcome; `available: false` when the buddy has no closed season. */
            snapshot: Record<string, never>;
            /** @description Closed season UUID, or null when none exists. */
            season_id: string | null;
            /** @description Name of the tier below the buddy’s final tier (demotion-grief copy), or null. */
            lower_tier_name: string | null;
        };
        StartScoutingQuestDto: {
            prediction_value: number;
        };
        ReplaceLeagueTiersDto: {
            tiers: string[];
        };
        BossFightConfigDto: {
            enabled: boolean;
            name: string;
            description: string;
            target_metric: string;
            target_value: number;
            badge_key?: Record<string, never>;
            mythic_item_id?: Record<string, never>;
            ghost_grave_enabled: boolean;
        };
        UpdateLeagueConfigDto: {
            season_duration_days?: number;
            start_day_of_week?: number;
            start_hour?: number;
            cohort_size?: number;
            promote_pct?: number;
            demote_pct?: number;
            off_season_duration_days?: number;
            off_season_mystery_box_multiplier?: number;
            off_season_wardrobe_drop_ids?: string[];
            off_season_scouting_quest_enabled?: boolean;
            boss_fight?: components["schemas"]["BossFightConfigDto"];
            auto_renew?: boolean;
            promotion_reward_coins?: number;
        };
        ScheduleLeagueSeasonDto: {
            name?: string;
            starts_at?: string;
        };
        CreateShowroomDto: Record<string, never>;
        UpdateShowroomDto: Record<string, never>;
        AwardDto: Record<string, never>;
        CreateSurfaceDto: Record<string, never>;
        SurfaceWidgetReadinessEntryDto: {
            /**
             * @description Widget mount key from the surface layout.
             * @example streak
             */
            key: string;
            /**
             * @description False when the public layout resolver will hide this widget from players.
             * @example false
             */
            servable: boolean;
            /**
             * @description Why the widget is (un)servable.
             * @example no_active_streak
             * @enum {string}
             */
            reason: "ready" | "no_active_streak" | "no_marketplace_items" | "no_badge_definitions";
            /**
             * @description Resolved tenant streak key injected into the streak mount (streak widgets only).
             * @example daily_lesson
             */
            streak_key?: string;
        };
        SurfaceWidgetReadinessResponseDto: {
            entries: components["schemas"]["SurfaceWidgetReadinessEntryDto"][];
        };
        UpdateSurfaceDto: Record<string, never>;
        CreatePlayerDto: Record<string, never>;
        UpdatePlayerDto: Record<string, never>;
        UpsertRecipeDto: Record<string, never>;
        RunRecipeDto: Record<string, never>;
        StartSessionDto: Record<string, never>;
    };
    responses: never;
    parameters: never;
    requestBodies: never;
    headers: never;
    pathItems: never;
};

$defs

export type $defs = Record<string, never>;

operations

export interface operations {
    CustomersController_getProfile: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomersController_updateProfile: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateCustomerDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomersController_getReferral: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomersController_updateSettings: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateSettingsDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomersController_suggestWidgetTheme: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomersController_updateAudiences: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateAudiencesDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomersController_regenerateAssets: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomersController_deleteUserData: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                user_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomerFeatureToggleController_getState: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomerFeatureToggleController_updateToggles: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomerFeatureToggleController_getOctalysisState: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomerFeatureToggleController_publishDraft: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomerFeatureToggleController_discardDraft: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomerFeatureToggleController_getFeatureConfig: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomerFeatureToggleController_updateFeatureConfig: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                feature_key: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomerNarrativeController_getNarrative: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomerNarrativeController_updateNarrative: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomerNarrativeController_getNarrativeAudit: {
        parameters: {
            query: {
                field: string;
                limit: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomerMissionAnchorController_getConfig: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomerMissionAnchorController_updateConfig: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SixDWizardController_get: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SixDWizardController_apply: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SixDWizardController_patch: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SixDWizardController_skip: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SixDWizardController_audit: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SixDWizardController_driftStats: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AuthController_register: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["RegisterCustomerDto"];
            };
        };
        responses: {
            /** @description Customer registered successfully. Returns a dashboard JWT; raw API keys are NOT returned here — call POST /auth/api-keys after login to mint one. */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation error or email already in use */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AuthController_login: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["LoginDto"];
            };
        };
        responses: {
            /** @description Login successful, returns customer data and JWT token */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Invalid email or password */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AuthController_getSsoConfig: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AuthController_startSso: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AuthController_completeSso: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AuthController_changePassword: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["ChangePasswordDto"];
            };
        };
        responses: {
            /** @description Password changed */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["PasswordUpdatedResponseDto"];
                };
            };
        };
    };
    AuthController_requestPasswordReset: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["RequestPasswordResetDto"];
            };
        };
        responses: {
            /** @description Always returns the same message regardless of whether the account exists (no account enumeration). reset_url/expires_at are only present for local dashboard origins. */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["PasswordResetRequestedResponseDto"];
                };
            };
        };
    };
    AuthController_resetPassword: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["ResetPasswordDto"];
            };
        };
        responses: {
            /** @description Password reset */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["PasswordUpdatedResponseDto"];
                };
            };
        };
    };
    AuthController_verifyEmail: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["VerifyEmailDto"];
            };
        };
        responses: {
            /** @description Email verified */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["EmailVerificationResponseDto"];
                };
            };
        };
    };
    AuthController_requestEmailVerification: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Email verification requested */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["EmailVerificationRequestedResponseDto"];
                };
            };
        };
    };
    AuthController_me: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returns the authenticated customer profile and settings */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized - invalid or missing JWT token */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AuthController_whoami: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Caller identity + plan capabilities resolved. */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized — credential is missing, expired, or revoked */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AuthController_listApiKeys: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returns a list of active API keys with masked key values */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AuthController_createApiKey: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateApiKeyDto"];
            };
        };
        responses: {
            /** @description API key created successfully. The raw key is returned only once. */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Maximum number of API keys reached */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AuthController_rotateApiKey: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateApiKeyDto"];
            };
        };
        responses: {
            /** @description All previous keys revoked and a new key created */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AuthController_revokeApiKey: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description API key revoked successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description API key not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AuthController_createPublishableKey: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Publishable key created. The raw key is returned only once. */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Scope set rejected */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OperationsController_findOne: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returns the operation details */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["OperationResponseDto"];
                };
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Operation not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OperationsController_findAll: {
        parameters: {
            query: {
                type: string;
                status: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returns an array of operations */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["OperationResponseDto"][];
                };
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OperationsController_cancel: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Operation cancelled successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Operation cannot be cancelled in its current state */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Operation not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetSessionsController_createPreviewTokens: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetSessionsController_getPlayerZeroStatus: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Player Zero existence + hatch status */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["PlayerZeroStatusResponseDto"];
                };
            };
        };
    };
    WidgetSessionsController_createPlayerZero: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Player Zero created or already present */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["PlayerZeroResponseDto"];
                };
            };
            /** @description No published config version to attach the player to */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetSessionsController_createEmbedToken: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateEmbedTokenDto"];
            };
        };
        responses: {
            /** @description Embed token created */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["CreateEmbedTokenResponseDto"];
                };
            };
            /** @description Buddy does not exist for this tenant */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation failed */
            422: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetSessionsController_createSessionToken: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateSessionTokenDto"];
            };
        };
        responses: {
            /** @description Session token created with scoped permissions */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["CreateSessionTokenResponseDto"];
                };
            };
            /** @description Buddy does not exist for this tenant */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation failed */
            422: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetSessionsController_revokeSession: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Widget session UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Session revoked successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Widget session not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetSessionsController_verifyInstallation: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["VerifyInstallationDto"];
            };
        };
        responses: {
            /** @description Verification result */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["VerifyInstallationResponseDto"];
                };
            };
            /** @description No URL supplied and none configured */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getBuddy: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Buddy state and widget config returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_createShareLink: {
        parameters: {
            query: {
                channel: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Share link payload */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_recordShareEvent: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["RecordShareEventDto"];
            };
        };
        responses: {
            /** @description Recorded (best-effort) */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_markBuddyHatched: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["WidgetBuddyHatchedDto"];
            };
        };
        responses: {
            /** @description Recorded (idempotent) */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["BuddyHatchedResponseDto"];
                };
            };
        };
    };
    WidgetApiController_updateBuddySeo: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["WidgetBuddySeoDto"];
            };
        };
        responses: {
            /** @description Updated SEO preference */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_updateBuddyProfile: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["WidgetBuddyProfileDto"];
            };
        };
        responses: {
            /** @description Updated profile preferences */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getState: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Aggregate state returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Not modified (ETag matched) */
            304: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getNarrative: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Resolved narrative returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getNarrativeArc: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Program Chapters arc view returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getMissionAnchor: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Mission Anchor payload returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_recordRendered: {
        parameters: {
            query?: never;
            header: {
                origin: string;
            };
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["WidgetRenderedDto"];
            };
        };
        responses: {
            /** @description Render beacon accepted */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_trackEvent: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["TrackEventDto"];
            };
        };
        responses: {
            /** @description Event accepted; effects returned */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Invalid event or type not registered */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getMarketplace: {
        parameters: {
            query?: {
                /** @description Filter by item category */
                category?: string;
                /** @description Filter by rarity tier */
                rarity?: string;
                /** @description Page number (default: 1) */
                page?: number;
                /** @description Items per page (default: 50) */
                limit?: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Paginated marketplace items with visibility and ownership info */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_trackMarketplaceItemView: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Item UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Impression recorded */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_purchaseItem: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["PurchaseItemDto"];
            };
        };
        responses: {
            /** @description Item purchased successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Insufficient coins or item not available */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Missing required scope */
            403: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_equipItems: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["EquipItemsDto"];
            };
        };
        responses: {
            /** @description Items equipped/unequipped successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Missing required scope */
            403: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_rerenderAppearance: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Rerender queued */
            202: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy is already ready or has another op in flight */
            409: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_previewOutfit: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["PreviewOutfitDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_compositionStatus: {
        parameters: {
            query: {
                variant_id: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_listOutfits: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_saveOutfit: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["SaveOutfitDto"];
            };
        };
        responses: {
            /** @description Outfit saved */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Outfit cap reached */
            409: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_activateOutfit: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_deleteOutfit: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getBadges: {
        parameters: {
            query?: {
                /** @description Include locked badge definitions in the legacy locked array (default true) */
                include_locked?: boolean;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Earned + locked badges returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getActivePath: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Path runtime payload, or null when no active path exists */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getPathByKey: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Path definition key (URL-safe slug) */
                key: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Path runtime payload returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Path not found for this audience */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_completePathSubStep: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Path definition key */
                key: string;
                /** @description Sub-step key */
                subKey: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getStreak: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Streak definition key (URL-safe slug) */
                key: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Streak definition + current progress */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Streak not found or inactive */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getEvolutions: {
        parameters: {
            query?: {
                /** @description Max rows (default 10, max 50) */
                limit?: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Paginated evolution history */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getTokens: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Token wallet returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getOperation: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Operation UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Operation status returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Operation not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getLiveTheme: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Live theme returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WidgetApiController_getNextBestAction: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Next-best-action returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PresetsController_listPresets: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description List of available presets returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PresetsController_getPreset: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Preset key identifier */
                key: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Preset configuration returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Preset not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PresetsController_applyPreset: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["ApplyPresetDto"];
            };
        };
        responses: {
            /** @description Preset applied successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Invalid preset key */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Preset not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ConfigVersionsController_findAll: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description List of config versions returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ConfigVersionsController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateConfigVersionDto"];
            };
        };
        responses: {
            /** @description Draft config version created or returned */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Invalid input */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ConfigVersionsController_findById: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Config version UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Config version returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Config version not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ConfigVersionsController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Config version UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateConfigVersionDto"];
            };
        };
        responses: {
            /** @description Config version updated */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Config version not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ConfigVersionsController_publish: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Config version UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Config version published */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Draft has no configuration to publish */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Config version not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Config version is not a draft (already published or archived) and cannot be published */
            409: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ConfigVersionsController_getImpact: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Config version UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Impact analysis returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Config version not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ConfigVersionsController_clone: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Source config version UUID to clone from */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description New draft config version created from clone */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Source config version not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ConfigVersionsController_migrateBuddies: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Published config version UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Buddies migrated successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Config version not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EggsController_findAll: {
        parameters: {
            query: {
                user_id: string;
                status: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returns an array of eggs matching the filters */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["EggResponseDto"][];
                };
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EggsController_create: {
        parameters: {
            query?: {
                /** @description When true, return the user's most recent waiting/ready egg if one exists instead of creating a new one (idempotent first-run bootstrap). */
                ensure?: boolean;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateEggDto"];
            };
        };
        responses: {
            /** @description Egg created (or existing active egg returned when ensure=true) */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["EggResponseDto"];
                };
            };
            /** @description Validation error */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description No published config version (no_published_config), or the per-user active-egg limit was reached (active_egg_limit) */
            409: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EggsController_findById: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returns the egg details */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["EggResponseDto"];
                };
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Egg not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EggsController_updateStatus: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateEggStatusDto"];
            };
        };
        responses: {
            /** @description Egg status updated successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["EggStatusChangeResponseDto"];
                };
            };
            /** @description Invalid status transition */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Egg not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EggsController_hatch: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Hatch process initiated, returns an operation ID to poll for status */
            202: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Egg is not in a hatchable state */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Egg not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_findAll: {
        parameters: {
            query?: {
                /** @description Page number (1-based) */
                page?: number;
                /** @description Number of items per page */
                limit?: number;
                /** @description Field name to sort by */
                sort?: string;
                /** @description Sort direction */
                order?: "asc" | "desc";
                /** @description Filter buddies by user identifier */
                user_id?: string;
                /** @description Free-text search across buddy name and user_id (case-insensitive substring). */
                search?: string;
                /** @description Filter buddies by status */
                status?: "active" | "archived";
                /** @description Filter buddies by evolution stage */
                evolution_stage?: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returns a paginated list of buddies */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_getUserSummary: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                user_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returns the aggregated user summary */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_findById: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returns the buddy with skills, items, badges, and evolution info */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateBuddyDto"];
            };
        };
        responses: {
            /** @description Buddy name updated successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Name is required */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_archive: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Buddy archived successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy is already archived */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_updateSkills: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateBuddySkillsDto"];
            };
        };
        responses: {
            /** @description Skill levels updated successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation error in skill updates */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_earnCoins: {
        parameters: {
            query?: never;
            header: {
                "idempotency-key": string;
            };
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["EarnCoinsDto"];
            };
        };
        responses: {
            /** @description Coins earned successfully, returns updated balance */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_spendCoins: {
        parameters: {
            query?: never;
            header: {
                "idempotency-key": string;
            };
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["SpendCoinsDto"];
            };
        };
        responses: {
            /** @description Coins spent successfully, returns updated balance */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Insufficient coin balance */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_getBuddyBadges: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returns the list of badge awards */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_awardBadge: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["AwardBadgeDto"];
            };
        };
        responses: {
            /** @description Badge awarded successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Badge already awarded or invalid badge key */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_getEvolutionReadiness: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returns the evolution status and progress toward the next stage */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_evolve: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Evolution process initiated, returns an operation ID to poll */
            202: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy does not meet evolution requirements */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_purchaseItem: {
        parameters: {
            query?: never;
            header: {
                "idempotency-key": string;
            };
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["PurchaseItemDto"];
            };
        };
        responses: {
            /** @description Item purchased successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Insufficient coins or item already owned */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy or item not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_unlockItem: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UnlockItemDto"];
            };
        };
        responses: {
            /** @description Item unlocked successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Item already unlocked */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy or item not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_equipItems: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["EquipItemsDto"];
            };
        };
        responses: {
            /** @description Items equipped/unequipped successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Item not owned or invalid item ID */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_rerenderAppearance: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Rerender queued; returns operation_id */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy already ready or another op in flight */
            409: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_getPurchasedItems: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returns the list of purchased items */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_getTokens: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Typed token summary */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_tokenTransaction: {
        parameters: {
            query?: never;
            header: {
                "idempotency-key": string;
            };
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["TokenTransactionDto"];
            };
        };
        responses: {
            /** @description Token transaction completed successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Insufficient token balance or invalid token type */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_listEvolutions: {
        parameters: {
            query: {
                page: string;
                limit: string;
            };
            header?: never;
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_getProgressionLegacy: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returns progression metrics for the buddy */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddiesController_getProgression: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returns detailed progression metrics for the buddy */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CustomersSummaryController_getUserSummary: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                user_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddyShareController_createShare: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateShareDto"];
            };
        };
        responses: {
            /** @description { enabled, share_code, share_url, card_url } */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddyShareController_recordEvent: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["ShareEventDto"];
            };
        };
        responses: {
            /** @description Recorded (best-effort) */
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddyShareStatsController_getStats: {
        parameters: {
            query: {
                window_days: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Share funnel aggregate */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddyShareStatsController_getSettings: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Resolved + raw sharing settings */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BuddyShareStatsController_updateSettings: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateSharingDto"];
            };
        };
        responses: {
            /** @description Updated sharing settings */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PublicShareController_getPublicBuddy: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                code: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Public buddy view */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unknown code or sharing disabled */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PublicShareController_recordEvent: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                code: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["PublicShareEventDto"];
            };
        };
        responses: {
            /** @description Recorded (best-effort) */
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PublicShareIndexController_getShareIndex: {
        parameters: {
            query: {
                offset: number;
                limit: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Paged share-code index */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ProfilePageController_getProfile: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                code: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Profile page view */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unknown code, sharing disabled, or capability not entitled */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillSetsController_findAll: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description List of skill sets returned successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillSetsController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateSkillSetDto"];
            };
        };
        responses: {
            /** @description Skill set created successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation error */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillSetsController_generateIcon: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["GenerateSkillIconDto"];
            };
        };
        responses: {
            /** @description Skill icon generated successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation error */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Image generation budget exceeded */
            402: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillSetsController_findById: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the skill set */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Skill set returned successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Skill set not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillSetsController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the skill set */
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateSkillSetDto"];
            };
        };
        responses: {
            /** @description Skill set updated successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation error */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Skill set not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillSetsController_delete: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the skill set */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Skill set deleted successfully */
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Skill set not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Cannot delete skill set in use by buddies */
            409: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillRulesController_findAll: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description List of skill rules returned successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillRulesController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateSkillRuleDto"];
            };
        };
        responses: {
            /** @description Skill rule created successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation error */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Skill rule with this trigger and skill_key already exists */
            409: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillRulesController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the skill rule */
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateSkillRuleDto"];
            };
        };
        responses: {
            /** @description Skill rule updated successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation error */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Skill rule not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillRulesController_delete: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the skill rule */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Skill rule deleted successfully */
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Skill rule not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillRulesController_applyThemePack: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Pack applied */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Template key not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillDecayRulesController_findAll: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description List returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillDecayRulesController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateSkillDecayRuleDto"];
            };
        };
        responses: {
            /** @description Skill decay rule created */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation error */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillDecayRulesController_preview: {
        parameters: {
            query: {
                /** @description Starting skill level */
                start: number;
                /** @description How many cadence periods to project */
                periods: number;
            };
            header?: never;
            path: {
                /** @description UUID of the skill decay rule */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Preview computed */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillDecayRulesController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the skill decay rule */
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateSkillDecayRuleDto"];
            };
        };
        responses: {
            /** @description Updated */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillDecayRulesController_delete: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the skill decay rule */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillDecayRulesController_history: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the skill decay rule */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SkillDecayRulesController_runNow: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Sweep enqueued */
            202: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CoinRulesController_findAll: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description List of coin rules returned successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CoinRulesController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateCoinRuleDto"];
            };
        };
        responses: {
            /** @description Coin rule created successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation error */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Coin rule with this trigger already exists */
            409: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CoinRulesController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the coin rule */
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateCoinRuleDto"];
            };
        };
        responses: {
            /** @description Coin rule updated successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation error */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Coin rule not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CoinRulesController_delete: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the coin rule */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Coin rule deleted successfully */
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Coin rule not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CoinRulesController_rewardPoolTelemetry: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the coin rule */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Telemetry returned successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Coin rule not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EconomyController_getLedger: {
        parameters: {
            query?: {
                /** @description Filter by transaction direction */
                direction?: "credit" | "debit";
                /** @description Filter by transaction reason */
                reason?: string;
                /** @description Page number (default: 1) */
                page?: number;
                /** @description Items per page (default: 20) */
                limit?: number;
            };
            header?: never;
            path: {
                /** @description UUID of the buddy */
                buddyId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Paginated coin ledger returned successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Buddy not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BadgeDefinitionsController_findAll: {
        parameters: {
            query: {
                audience: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description List of badge definitions returned successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BadgeDefinitionsController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateBadgeDefinitionDto"];
            };
        };
        responses: {
            /** @description Badge definition created successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation error */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Badge definition with this key already exists */
            409: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BadgeDefinitionsController_uploadIcon: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Badge icon uploaded successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Invalid file type or missing file */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BadgeDefinitionsController_generateIcon: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["GenerateBadgeIconDto"];
            };
        };
        responses: {
            /** @description Badge icon generated successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation error */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Image generation budget exceeded */
            402: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BadgeDefinitionsController_findById: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the badge definition */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Badge definition returned successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Badge definition not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BadgeDefinitionsController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the badge definition */
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateBadgeDefinitionDto"];
            };
        };
        responses: {
            /** @description Badge definition updated successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation error */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Badge definition not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BadgeDefinitionsController_delete: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the badge definition */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Badge definition deleted successfully */
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Badge definition not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Cannot delete badge with existing awards */
            409: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BadgeDefinitionsController_regenerateIcon: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Regeneration queued */
            202: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventTriggeredBadgeController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventTriggeredBadgeController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateEventBadgeDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventTriggeredBadgeController_remove: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventTriggeredBadgeController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateEventBadgeDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    StreakDefinitionsController_findAll: {
        parameters: {
            query: {
                audience: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description List of streak definitions */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    StreakDefinitionsController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateStreakDefinitionDto"];
            };
        };
        responses: {
            /** @description Streak definition created */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    StreakDefinitionsController_findById: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the streak definition */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    StreakDefinitionsController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateStreakDefinitionDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    StreakDefinitionsController_delete: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ImageCostController_getUsage: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Image usage stats returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ImageCostController_getUsageReport: {
        parameters: {
            query?: {
                /** @description Month in YYYY-MM format (defaults to current month) */
                month?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Image usage report returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventsController_findAll: {
        parameters: {
            query?: {
                /** @description Filter events by user identifier */
                user_id?: string;
                /** @description Filter events by event type */
                type?: string;
                /** @description Maximum number of events to return (1-100) */
                limit?: number;
                /** @description Filter events from this ISO 8601 date */
                date_from?: string;
                /** @description Filter events up to this ISO 8601 date */
                date_to?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Filtered list of events returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventsController_ingest: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["IngestEventDto"];
            };
        };
        responses: {
            /** @description Event accepted and processed */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Invalid event payload */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Monthly event quota exceeded */
            402: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventsController_adminTrigger: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["IngestEventDto"];
            };
        };
        responses: {
            /** @description Event accepted and processed */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventsController_ingestBatch: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["IngestBatchDto"];
            };
        };
        responses: {
            /** @description Events accepted and processed */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Invalid events payload */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Monthly event quota exceeded */
            402: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventsController_findTypes: {
        parameters: {
            query: {
                audience: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Distinct event type list returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventsController_findActiveUsers: {
        parameters: {
            query?: {
                /** @description Window in hours to look back (1-168) */
                hours?: number;
                /** @description Maximum number of users to return (1-200) */
                limit?: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Active users returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventsController_findById: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Event UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Event returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Event not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventTypesController_findAll: {
        parameters: {
            query: {
                audience: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventTypesController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateEventTypeDto"];
            };
        };
        responses: {
            /** @description Event type created */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Event type already exists */
            409: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventTypesController_findById: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Event type UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventTypesController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateEventTypeDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    EventTypesController_delete: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    TokenConfigController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Token configurations returned successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    TokenConfigController_upsert: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpsertTokenConfigDto"];
            };
        };
        responses: {
            /** @description Token configuration upserted successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation error */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description List of marketplaces returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateMarketplaceDto"];
            };
        };
        responses: {
            /** @description Marketplace created successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Invalid input */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceController_findOne: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Marketplace UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Marketplace returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Marketplace not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Marketplace UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateMarketplaceDto"];
            };
        };
        responses: {
            /** @description Marketplace updated successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Marketplace not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceController_listItems: {
        parameters: {
            query?: {
                /** @description Filter by category */
                category?: string;
                /** @description Filter by rarity tier */
                rarity?: string;
                /** @description Only show active items */
                active_only?: string;
                /** @description Page number */
                page?: string;
                /** @description Items per page */
                limit?: string;
            };
            header?: never;
            path: {
                /** @description Marketplace UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Paginated list of items returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceController_createItem: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Marketplace UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateItemDto"];
            };
        };
        responses: {
            /** @description Item created successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Invalid input */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Marketplace not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceController_importItems: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Marketplace UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["ImportMarketplaceItemsDto"];
            };
        };
        responses: {
            /** @description Items imported successfully */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Invalid import payload */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceController_findItem: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Marketplace UUID */
                id: string;
                /** @description Item UUID */
                item_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Item returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Item not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceController_updateItem: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Marketplace UUID */
                id: string;
                /** @description Item UUID */
                item_id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateItemDto"];
            };
        };
        responses: {
            /** @description Item updated successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Item not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceController_deleteItem: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Marketplace UUID */
                id: string;
                /** @description Item UUID */
                item_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Item deleted successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Item not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceController_reorderItems: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Marketplace UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["ReorderItemsDto"];
            };
        };
        responses: {
            /** @description Items reordered successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceController_uploadItemImage: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Marketplace UUID */
                id: string;
                /** @description Item UUID */
                item_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Item image uploaded successfully */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Invalid file or missing image */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceController_regenerateItemImage: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Marketplace UUID */
                id: string;
                /** @description Item UUID */
                item_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Regeneration queued */
            202: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceWidgetController_gift: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Item UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["GiftItemDto"];
            };
        };
        responses: {
            /** @description Item gifted (or idempotent replay) */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Sender has insufficient coins */
            402: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Missing marketplace:purchase scope */
            403: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    FlashSaleController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    FlashSaleController_schedule: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["ScheduleFlashSaleDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    FlashSaleController_cancel: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketplaceFomoWidgetController_resolve: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["MarketplaceFomoQueryDto"];
            };
        };
        responses: {
            /** @description FOMO signals returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LegacyEquipController_getReturningChampion: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Returning-champion view returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LegacyEquipController_dismissReturningChampion: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Scene dismissed */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LegacyEquipController_equipLegacyItem: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["EquipLegacyItemDto"];
            };
        };
        responses: {
            /** @description Legacy crown temp-equipped */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Item not owned or not a crown */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ReturningChampionPublicController_resolveWelcomeBack: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Widget session minted */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Invalid token or tenant slug */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WebhooksController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description List of webhook configs returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WebhooksController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateWebhookConfigDto"];
            };
        };
        responses: {
            /** @description Webhook config created with signing secret */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Validation failed */
            422: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WebhooksController_listEvents: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Webhook event types returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["WebhookEventTypesResponseDto"];
                };
            };
        };
    };
    WebhooksController_getHealth: {
        parameters: {
            query?: {
                /** @description Lookback window in days (default: 7, max: 30) */
                days?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Webhook health returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WebhooksController_findOne: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Webhook config UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Webhook config returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Webhook config not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WebhooksController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Webhook config UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateWebhookConfigDto"];
            };
        };
        responses: {
            /** @description Webhook config updated */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Webhook config not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WebhooksController_delete: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Webhook config UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Webhook config deleted */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Webhook config not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WebhooksController_rotateSecret: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Webhook config UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Webhook secret rotated */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Webhook config not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WebhooksController_sendTest: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Webhook config UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Test webhook delivered */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Webhook config not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WebhooksController_getDeliveries: {
        parameters: {
            query?: {
                /** @description Maximum number of deliveries to return */
                limit?: string;
            };
            header?: never;
            path: {
                /** @description Webhook config UUID */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Delivery log returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Webhook config not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    WebhooksController_redeliver: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description Webhook config UUID */
                id: string;
                /** @description Delivery log UUID */
                deliveryId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Redelivery enqueued */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Delivery log not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PrestigeController_status: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PrestigeController_prestige: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getOverview: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Analytics overview returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getEngagement: {
        parameters: {
            query?: {
                /** @description Aggregation period */
                period?: "daily" | "weekly" | "monthly";
                /** @description Number of days to look back (default: 30) */
                days?: number;
                /** @description Start date (ISO 8601) */
                from?: string;
                /** @description End date (ISO 8601) */
                to?: string;
                /** @description Optional audience key filter */
                audience?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Engagement metrics returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getActivitySummary: {
        parameters: {
            query?: {
                /** @description Number of days to look back (default: 30) */
                days?: number;
                /** @description Start date (ISO 8601) */
                from?: string;
                /** @description End date (ISO 8601) */
                to?: string;
                /** @description Optional audience key filter */
                audience?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Activity summary returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getEconomySummary: {
        parameters: {
            query?: {
                /** @description Number of days to look back (default: 30) */
                days?: number;
                /** @description Start date (ISO 8601) */
                from?: string;
                /** @description End date (ISO 8601) */
                to?: string;
                /** @description Optional audience key filter */
                audience?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Economy summary returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getEconomyHealth: {
        parameters: {
            query?: {
                /** @description Number of days to look back (default: 30) */
                days?: number;
                /** @description Start date (ISO 8601) */
                from?: string;
                /** @description End date (ISO 8601) */
                to?: string;
                /** @description Optional audience key filter */
                audience?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Economy health metrics returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getPopularItems: {
        parameters: {
            query?: {
                /** @description Number of items to return (default: 10) */
                limit?: number;
                /** @description Number of days to look back (default: 30) */
                days?: number;
                /** @description Start date (ISO 8601) */
                from?: string;
                /** @description End date (ISO 8601) */
                to?: string;
                /** @description Optional audience key filter */
                audience?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Popular items list returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getPopularBadges: {
        parameters: {
            query?: {
                /** @description Number of badges to return (default: 10) */
                limit?: number;
                /** @description Number of days to look back (default: 30) */
                days?: number;
                /** @description Start date (ISO 8601) */
                from?: string;
                /** @description End date (ISO 8601) */
                to?: string;
                /** @description Optional audience key filter */
                audience?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Popular badges list returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getRetention: {
        parameters: {
            query?: {
                /** @description Cohort period */
                cohort?: "weekly" | "monthly";
                /** @description Number of days to look back (default: 90) */
                days?: number;
                /** @description Start date (ISO 8601) */
                from?: string;
                /** @description End date (ISO 8601) */
                to?: string;
                /** @description Optional audience key filter */
                audience?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Retention metrics returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getRoiMetrics: {
        parameters: {
            query?: {
                /** @description Number of days to look back (default: 30) */
                days?: number;
                /** @description Start date (ISO 8601) */
                from?: string;
                /** @description End date (ISO 8601) */
                to?: string;
                /** @description Optional audience key filter */
                audience?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description ROI metrics returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getStreakHealth: {
        parameters: {
            query?: {
                /** @description Optional audience key filter */
                audience?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Streak health returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getTokenEconomy: {
        parameters: {
            query?: {
                /** @description Optional audience key filter */
                audience?: string;
                /** @description Lookback window in days (default: 30) */
                days?: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Token economy returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getAudienceBreakdown: {
        parameters: {
            query?: {
                /** @description Lookback window in days (default: 30) */
                days?: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Audience breakdown returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getEvolutionTimeline: {
        parameters: {
            query?: {
                /** @description Optional audience key filter */
                audience?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Evolution timeline returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getMarketplaceFunnel: {
        parameters: {
            query?: {
                /** @description Optional audience key filter */
                audience?: string;
                /** @description Max rows to return (default: 10) */
                limit?: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Marketplace funnel returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getWebhookHealth: {
        parameters: {
            query?: {
                /** @description Lookback window in days (default: 7) */
                days?: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Webhook health returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getEventCounts: {
        parameters: {
            query?: {
                audience?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Per-event counts returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getCustomEventTrends: {
        parameters: {
            query?: {
                /** @description Optional audience key filter */
                audience?: string;
                /** @description Lookback window in days (default: 30) */
                days?: number;
                /** @description Max event types to return (default: 10) */
                limit?: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Custom event trends returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    AnalyticsController_getFeatureActivity: {
        parameters: {
            query?: {
                /** @description Optional audience key filter */
                audience?: string;
                /** @description Lookback window in weeks (default: 8) */
                weeks?: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Feature activity returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["FeatureActivityResponseDto"];
                };
            };
        };
    };
    LeaderboardController_getLeaderboard: {
        parameters: {
            query?: {
                /** @description Metric to rank by */
                metric?: "total_xp" | "coins" | "badge_count" | "evolution_stage";
                /** @description Time period for ranking */
                period?: "daily" | "weekly" | "monthly" | "all_time";
                /** @description Number of entries to return (default: 50) */
                limit?: number;
                /** @description Override tenant default view mode for this request */
                view_mode?: "top" | "around_me" | "hybrid";
                /** @description Legacy shorthand override for view_mode=around_me */
                around_me?: boolean;
                /** @description Hybrid mode: how many leaders to show in the top strip (default 3) */
                top_strip_size?: number;
                /** @description HTCH-48: override tenant default scope. friends → 501 until Phase 3. */
                scope?: "global" | "team" | "friends";
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Leaderboard entries returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LeaderboardConfigController_get: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LeaderboardConfigController_patch: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ShareFunnelController_giftFunnel: {
        parameters: {
            query?: {
                /** @description Rolling window (default 30) */
                window_days?: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BillingController_getStatus: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Billing status returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["BillingStatusResponseDto"];
                };
            };
        };
    };
    BillingController_createCheckout: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Checkout session URL returned */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Invalid plan or bundle key */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BillingController_reconcileCheckout: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Checkout session reconciled; billing state returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Session does not belong to the caller */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BillingController_createPortal: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Portal session URL returned */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CreditsController_getBalance: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Credit balance returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CreditsController_listLedger: {
        parameters: {
            query: {
                cursor: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Ledger entries returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OnboardingController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OnboardingController_preparingStatus: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OnboardingController_seedFromUrl: {
        parameters: {
            query?: never;
            header: {
                origin: string;
            };
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["SeedFromUrlDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OnboardingController_seedFromRepo: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["SeedFromRepoDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OnboardingController_seedFromDescription: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["SeedFromDescriptionDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OnboardingController_joinWaitlist: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["WaitlistDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OnboardingController_current: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OnboardingController_reset: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OnboardingController_updateAnswers: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateAnswersDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OnboardingController_message: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["SendMessageDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OnboardingController_generatePlan: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OnboardingController_regeneratePlan: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OnboardingController_apply: {
        parameters: {
            query?: never;
            header: {
                "if-match": string;
            };
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OnboardingController_generateGuide: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    StageAssetsController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    StageAssetsController_createUploadUrl: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateUploadUrlDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    StageAssetsController_regenerate: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                stage: number;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    StageAssetsController_commit: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                stage: number;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CommitAssetDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    StageAssetsController_remove: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                stage: number;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    GatesController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    GatesController_upsert: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                gate_key: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpsertTokenGateDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    GatesController_remove: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                gate_key: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    GatesController_unlock: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddy_id: string;
                gate_key: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description insufficient_balance or progression_not_spendable */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Gate not found / inactive */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    GatesController_listUnlocks: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddy_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_listDefinitions: {
        parameters: {
            query: {
                audience: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_createDefinition: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreatePathDefinitionDto"];
            };
        };
        responses: {
            /** @description Path definition created */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_getDefinition: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                /** @description UUID of the path definition */
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_updateDefinition: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdatePathDefinitionDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_deleteDefinition: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_activate: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_deactivate: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_listSteps: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_createStep: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreatePathStepDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_reorderSteps: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["ReorderDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_updateStep: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
                stepId: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdatePathStepDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_deleteStep: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
                stepId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_listSubSteps: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
                stepId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_createSubStep: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
                stepId: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreatePathSubStepDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_reorderSubSteps: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
                stepId: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["ReorderDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_updateSubStep: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
                stepId: string;
                subStepId: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdatePathSubStepDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_deleteSubStep: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
                stepId: string;
                subStepId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_getBuddyPath: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddyId: string;
                pathKey: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PathsController_manualComplete: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                buddyId: string;
                pathKey: string;
                subKey: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BeginnersLuckController_getAnalytics: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BeginnersLuckWidgetController_getResult: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Beginner's Luck result returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    FreeLunchWidgetController_getNotification: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Free Lunch notification returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    FreeLunchWidgetController_acknowledge: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Acknowledgement recorded */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    TeamsAdminController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    TeamsAdminController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    TeamsAdminController_remove: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                teamId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    TeamsAdminController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                teamId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    TeamsAdminController_listMembers: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                teamId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    TeamsAdminController_addMember: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                teamId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    TeamsAdminController_removeMember: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                teamId: string;
                buddyId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    TeamsAdminController_changeRole: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                teamId: string;
                buddyId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    TeamsAdminController_import: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    TeamsWidgetController_me: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    TeamsWidgetController_leave: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    KudoTypesAdminController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    KudoTypesAdminController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    KudoTypesAdminController_applyTemplate: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    KudoTypesAdminController_applyThemeTemplate: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    KudoTypesAdminController_reorder: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    KudoTypesAdminController_remove: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    KudoTypesAdminController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    KudosWidgetController_types: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    KudosWidgetController_send: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    KudosWidgetController_received: {
        parameters: {
            query?: {
                limit?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    KudosWidgetController_given: {
        parameters: {
            query?: {
                limit?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    GroupQuestsAdminController_list: {
        parameters: {
            query: {
                status: string;
                team_id: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    GroupQuestsAdminController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    GroupQuestsAdminController_remove: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                questId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    GroupQuestsAdminController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                questId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    GroupQuestsAdminController_publish: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                questId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    GroupQuestsAdminController_forceResolve: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                questId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    GroupQuestsWidgetController_active: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    GroupQuestsWidgetController_join: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    GroupQuestsWidgetController_leave: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MentorWidgetController_setAvailability: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MentorWidgetController_teamMentors: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MentorWidgetController_logSession: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MentorWidgetController_mySessions: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MentorAdminController_getConfig: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MentorAdminController_updateConfig: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MentorAdminController_directory: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MentorAdminController_resetSessions: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BragWidgetController_shareProfile: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BragWidgetController_winState: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Win-State brag payload + enabled channels */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["WinStateBragResponseDto"];
                };
            };
        };
    };
    BragWidgetController_slackPost: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BragWidgetController_telemetry: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BragAdminController_getConfig: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BragAdminController_updateConfig: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BragAdminController_webhookTest: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BragAdminController_funnel: {
        parameters: {
            query?: {
                from?: string;
                to?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BragAdminController_byChannel: {
        parameters: {
            query?: {
                from?: string;
                to?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BragAdminController_telemetryCsv: {
        parameters: {
            query?: {
                from?: string;
                to?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SocialNormsWidgetController_today: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    FeedWidgetController_listTeamEvents: {
        parameters: {
            query?: {
                cursor?: string;
                limit?: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    FeedWidgetController_clap: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseAdminController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseAdminController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseAdminController_audit: {
        parameters: {
            query?: {
                page?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseAdminController_previewConfig: {
        parameters: {
            query: {
                trigger_events: string;
                rate: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseAdminController_analyticsView: {
        parameters: {
            query?: {
                period?: "7d" | "30d" | "90d" | "lifetime";
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseAdminController_analyticsCsv: {
        parameters: {
            query?: {
                period?: "7d" | "30d" | "90d" | "lifetime";
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseAdminController_remove: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseAdminController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseAdminController_draft: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseAdminController_preview: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseAdminController_getWebhook: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseAdminController_updateWebhook: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseAdminController_testWebhook: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseWidgetController_counters: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CauseWidgetController_surfaces: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    FoundationsController_widgetList: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CouncilAdminController_list: {
        parameters: {
            query?: {
                status?: "pending" | "approved" | "rejected" | "live";
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CouncilAdminController_moderate: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CouncilAdminController_promote: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                slot: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CouncilAdminController_revert: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                slot: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CouncilWidgetController_mine: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    CouncilWidgetController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    FoundingCohortAdminController_preview: {
        parameters: {
            query?: {
                mode?: "first_n" | "first_percent" | "first_until_date";
                first_n?: string;
                first_percent?: string;
                until_date?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    FoundingCohortAdminController_backfill: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    FoundingCohortAdminController_audit: {
        parameters: {
            query?: {
                page?: string;
                source?: "real_time" | "backfill";
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    FoundingCohortAdminController_exportAuditCsv: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    FoundingCohortWidgetController_status: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    NotificationWidgetController_list: {
        parameters: {
            query?: {
                cursor?: string;
                limit?: string;
                include_read?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    NotificationWidgetController_unreadCount: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    NotificationWidgetController_dismissAll: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    NotificationWidgetController_read: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    NotificationWidgetController_dismiss: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    NotificationWidgetController_snooze: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SunkCostController_summary: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SunkCostController_acknowledge: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    VacationWidgetController_pause: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    VacationWidgetController_resume: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    VacationWidgetController_status: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    VacationAdminController_analytics: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    StreakWatchdogAdminController_analytics: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ProfileHistoryController_getHistory: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ProfileHistoryController_reclaim: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MysteryBoxController_state: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MysteryBoxController_claim: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SurpriseDropsController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SurpriseDropsController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateSurpriseDropDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SurpriseDropsController_remove: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    SurpriseDropsController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateSurpriseDropDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BoostersAdminController_grant: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["AdminGrantBoosterDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BoostersController_active: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BoostersController_catalog: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    BoostersController_purchase: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["PurchaseBoosterDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LotteriesController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LotteriesController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateLotteryDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LotteriesController_remove: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LotteriesController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateLotteryDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LotteriesController_draws: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LotteriesController_previewNextDraw: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LotteriesController_simulateDraw: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LotteryWidgetController_activeEntries: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LotteryWidgetController_lastWin: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ProfileTemplateController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ProfileTemplateController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateProfileTemplateDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ProfileTemplateController_remove: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ProfileTemplateController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateProfileTemplateDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ProfileTemplateController_applyBulk: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["BulkApplyDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LeagueWidgetController_me: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LeagueWidgetController_bossFight: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LeagueHighlightsController_latest: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Season-closing discovery payload */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["SeasonClosingDiscoveryResponseDto"];
                };
            };
        };
    };
    LeagueHighlightsController_me: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                seasonId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OffSeasonController_status: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OffSeasonController_startScoutingQuest: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["StartScoutingQuestDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    OffSeasonController_joinScoutingQuest: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LeagueAdminController_getConfig: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LeagueAdminController_updateConfig: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateLeagueConfigDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LeagueAdminController_replaceTiers: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["ReplaceLeagueTiersDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LeagueAdminController_previewSeasons: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LeagueAdminController_scheduleSeason: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["ScheduleLeagueSeasonDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    LeagueAdminController_forceClose: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                seasonId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HallOfFameController_getList: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                tenantSlug: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Hall of Fame season list */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description No finalized seasons / sharing off */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HallOfFameController_getSeason: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                tenantSlug: string;
                seasonId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Hall of Fame season detail */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unknown season / sharing off */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HallOfFameIndexController_getIndex: {
        parameters: {
            query: {
                offset: number;
                limit: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Paged Hall of Fame URL index */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HexadSurveyController_questions: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HexadSurveyController_submit: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HexadSurveyController_me: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HexadSurveyController_deleteMe: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    MarketingAnalyticsController_recordCtaClick: {
        parameters: {
            query?: never;
            header: {
                "user-agent": string;
            };
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            202: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ShowroomAdminController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ShowroomAdminController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateShowroomDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ShowroomAdminController_getOne: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ShowroomAdminController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateShowroomDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ShowroomAdminController_publish: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ShowroomAdminController_unpublish: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ShowroomAdminController_regenerateQr: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ShowroomAdminController_archive: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ShowroomAdminController_award: {
        parameters: {
            query?: never;
            header: {
                "idempotency-key": string;
            };
            path: {
                buddyId: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["AwardDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ShowroomAdminController_listPlayerAwards: {
        parameters: {
            query: {
                limit: number;
            };
            header?: never;
            path: {
                buddyId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ShowroomAdminController_listAudit: {
        parameters: {
            query: {
                page: number;
                page_size: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PublicShowroomController_getPublicShowroom: {
        parameters: {
            query: {
                qr_token: string;
                qr: string;
            };
            header?: never;
            path: {
                slug: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Public Showroom view */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unknown slug or page is not published */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PublicShowroomController_getQrPayload: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                slug: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description QR payload */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unknown slug or page is not published */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_list: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_create: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateSurfaceDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_getOne: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_update: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdateSurfaceDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_readiness: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Per-widget readiness entries */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["SurfaceWidgetReadinessResponseDto"];
                };
            };
        };
    };
    HostedSurfacesAdminController_uploadLogo: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_publish: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_unpublish: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_archive: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_listPlayers: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_createPlayer: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreatePlayerDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_updatePlayer: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
                playerId: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpdatePlayerDto"];
            };
        };
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_regenerateAccess: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
                playerId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_revealAccess: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
                playerId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_listRecipes: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_upsertRecipe: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["UpsertRecipeDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HostedSurfacesAdminController_runRecipe: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
                key: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["RunRecipeDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PublicHostedSurfacesController_getPublic: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                slug: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    PublicHostedSurfacesController_startSession: {
        parameters: {
            query?: never;
            header: {
                "user-agent": string;
            };
            path: {
                slug: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["StartSessionDto"];
            };
        };
        responses: {
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HealthController_check: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Health status returned with component details */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HealthController_readiness: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description All dependencies up */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description One or more critical dependencies unavailable */
            503: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HealthController_liveness: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Process is alive */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    HealthController_version: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Build metadata returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ProbeController_healthz: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Process is alive */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ProbeController_readyz: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Service is ready to serve traffic */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Database or Redis is not reachable */
            503: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    ProbeController_version: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Build metadata returned */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
}

OffsetPage

Pagination helpers — paginate() and collect().

Hatched list endpoints ship in two shapes:

  • Offset (legacy){ data, meta: { total, page, limit } }. The helper drives fetchPage(page) with a 1-indexed page number and stops on the last page.
  • Cursor (canonical){ data, pagination: { nextCursor, hasMore, limit } }. The helper drives fetchPage(cursor) with undefined first and the server-returned nextCursor thereafter; iteration stops when nextCursor === null.

paginate() autodetects the shape from the first response — you don't have to know which one your endpoint serves.

@example Cursor pagination (canonical)

for await (const op of paginate((cursor) => hatched.operations.list({ cursor, limit: 100 }))) {
  console.log(op.id);
}

@example Offset pagination (legacy)

for await (const buddy of paginate((page) => hatched.buddies.list({ page, limit: 100 }))) {
  console.log(buddy.id);
}
export interface OffsetPage<T> {
  data: T[];
  meta: { total: number; page: number; limit: number };
}

CursorPage

export interface CursorPage<T> {
  data: T[];
  pagination: { nextCursor: string | null; hasMore: boolean; limit: number };
}

PaginatedResponse

export type PaginatedResponse<T> = OffsetPage<T> | CursorPage<T>;

PaginateOptions

export interface PaginateOptions {
  /**
   * Maximum number of pages to walk. Useful as a runaway guard in scripts
   * where you want to bail out after, say, 50 pages even if the API
   * reports more available. Defaults to `Infinity`.
   */
  maxPages?: number;
  /**
   * AbortSignal to abort the iteration. The current in-flight request is
   * aborted via the fetcher (if it forwards `signal`), and iteration
   * stops immediately.
   */
  signal?: AbortSignal;
}

WebhookPayload

export type WebhookPayload = Record<string, unknown>;

VerifyResult

export interface VerifyResult {
  /** True only when both the signature is valid and the body parses as JSON. */
  valid: boolean;
  /** Parsed raw event payload when `valid` is true; null when verification or parsing failed. */
  event: WebhookPayload | null;
  /** `X-Hatched-Event` header value. The event name is not wrapped into the body. */
  eventType: WebhookEvent | string | null;
  /** `X-Hatched-Delivery` header value. Use this as the dedupe key. */
  deliveryId: string | null;
  /** Reason a verification failed. Useful for logs/observability. */
  reason?:
    | 'missing_header'
    | 'missing_secret'
    | 'missing_body'
    | 'invalid_signature'
    | 'invalid_json';
}

VerifyAdapterOptions

export interface VerifyAdapterOptions {
  /** Allowed clock skew between Hatched and the consumer host. Default 300s. */
  toleranceSeconds?: number;
  /** Custom now() — useful for testing replay-window edge cases. */
  now?: () => number;
}

On this page

HatchedClientHatchedClient.health()HatchedClient.getRateLimitInfo()HatchedClient.getLastRequestId()HatchedClient.getLastRetryMetadata()EggsResourceEggsResource.create()EggsResource.get()EggsResource.list()EggsResource.updateStatus()EggsResource.hatch()BuddiesResourceBuddiesResource.get()BuddiesResource.list()BuddiesResource.updateName()BuddiesResource.archive()BuddiesResource.updateSkills()BuddiesResource.earn()BuddiesResource.spend()BuddiesResource.awardBadge()BuddiesResource.getBadges()BuddiesResource.equip()BuddiesResource.rerenderAppearance()BuddiesResource.purchaseItem()BuddiesResource.getPurchasedItems()BuddiesResource.getEvolution()BuddiesResource.evolve()BuddiesResource.getProgression()BuddiesResource.tokens()BuddiesResource.evolutions()BuddiesResource.getUserSummary()BuddiesResource.prestigeStatus()BuddiesResource.prestige()EventsResourceEventsResource.send()EventsResource.sendBatch()OperationsResourceOperationsResource.get()OperationsResource.wait()OperationsResource.waitForCompletion()WidgetSessionsResourceWidgetSessionsResource.create()WidgetSessionsResource.revoke()EmbedTokensResourceEmbedTokensResource.create()WebhooksResourceWebhooksResource.list()WebhooksResource.create()WebhooksResource.delete()WebhooksResource.deliveries()WebhooksResource.replay()WebhooksResource.rotateSecret()WebhooksResource.redeliver()WebhooksResource.verifySignature()HatchedErrorAuthErrorUnauthorizedErrorForbiddenErrorPublishableKeyScopeErrorWidgetTokenScopeErrorNotFoundErrorValidationErrorRateLimitErrorInsufficientBalanceErrorTooManyItemsErrorCategoryConflictErrorConflictErrorConfigVersionMismatchErrorNoPublishedConfigErrorActiveEggLimitErrorUpstreamImageErrorCreditInsufficientErrorEventQuotaExceededErrorPlanFeatureLockedErrorPlayersResourcePlayersResource.zero()PlayersResource.zeroStatus()GatesResourceGatesResource.list()GatesResource.unlock()GatesResource.unlocks()PathsResourcePathsResource.list()PathsResource.get()PathsResource.create()PathsResource.update()PathsResource.delete()PathsResource.setActive()PathsResource.addStep()PathsResource.updateStep()PathsResource.deleteStep()PathsResource.reorderSteps()PathsResource.addSubStep()PathsResource.updateSubStep()PathsResource.deleteSubStep()PathsResource.reorderSubSteps()PathsResource.getForBuddy()PathsResource.completeSubStep()MarketplaceResourceMarketplaceResource.list()MarketplaceResource.gift()MarketplaceResource.previewOutfit()MarketplaceResource.compositionStatus()MarketplaceResource.listOutfits()MarketplaceResource.saveOutfit()MarketplaceResource.activateOutfit()MarketplaceResource.deleteOutfit()BadgesResourceBadgesResource.list()LeaderboardResourceLeaderboardResource.get()NextBestActionResourceNextBestActionResource.get()TeamsResourceTeamsResource.me()TeamsResource.leave()KudosResourceKudosResource.send()KudosResource.types()KudosResource.received()KudosResource.given()GroupQuestsResourceGroupQuestsResource.list()GroupQuestsResource.join()GroupQuestsResource.leave()AdminGroupQuestsResourceAdminGroupQuestsResource.list()AdminGroupQuestsResource.create()AdminGroupQuestsResource.update()AdminGroupQuestsResource.publish()AdminGroupQuestsResource.delete()AdminGroupQuestsResource.forceResolve()MentorResourceMentorResource.setAvailability()MentorResource.teamMentors()MentorResource.logSession()MentorResource.sessionsForMe()BragResourceBragResource.recordTelemetry()BragResource.sendSlackPost()TeamEventsResourceTeamEventsResource.list()TeamEventsResource.clap()FeedResourceSocialNormsResourceSocialNormsResource.today()CausesResourceCausesResource.list()CausesResource.create()CausesResource.update()CausesResource.delete()CausesResource.preview30Days()FoundingCohortResourceFoundingCohortResource.preview()FoundingCohortResource.backfill()FoundingCohortResource.listAudit()FlashSalesResourceFlashSalesResource.list()FlashSalesResource.schedule()FlashSalesResource.cancel()LotteryResourceLotteryResource.list()LotteryResource.create()LotteryResource.update()LotteryResource.delete()LotteryResource.draws()LotteryResource.previewNextDraw()LotteryResource.simulateDraw()EventBadgesResourceEventBadgesResource.list()EventBadgesResource.create()EventBadgesResource.update()EventBadgesResource.delete()ProfileTemplatesResourceProfileTemplatesResource.list()ProfileTemplatesResource.create()ProfileTemplatesResource.update()ProfileTemplatesResource.delete()ProfileTemplatesResource.applyBulk()LeaguesResourceLeaguesResource.me()LeaguesResource.bossFightProgress()LeaguesResource.seasonHighlights()LeaguesResource.latestSeasonHighlights()HexadSurveyResourceHexadSurveyResource.questions()HexadSurveyResource.submit()HexadSurveyResource.me()HexadSurveyResource.deleteMine()AuthResourceAuthResource.whoami()NotificationsResourceNotificationsResource.list()NotificationsResource.unreadCount()NotificationsResource.dismissAll()NotificationsResource.markRead()NotificationsResource.dismiss()NotificationsResource.snooze()MysteryBoxResourceMysteryBoxResource.getState()MysteryBoxResource.claim()CouncilResourceCouncilResource.listMyProposals()CouncilResource.submitProposal()FreeLunchResourceFreeLunchResource.getNotification()FreeLunchResource.acknowledge()BeginnersLuckResourceBeginnersLuckResource.getResult()WidgetActivationResourceWidgetActivationResource.recordRendered()ConfigurationApiKeyConfigPublishableKeyConfigWidgetTokenConfigHatchedClientConfigFunctionspaginate()paginateCursor()collect()collectCursor()consoleLogger()verifyExpressRequest()verifyFastifyRequest()verifyHonoRequest()verifyNextAppRequest()verifyNextPagesRequest()ConstantsErrorCodeTypesNoPublishedConfigDetailsActiveEggLimitEggActiveEggLimitDetailsCreditInsufficientDetailsEventQuotaExceededDetailsPlanFeatureLockedDetailsSdkLoggerFetchLikeHttpClientConfigRateLimitSnapshotRetryMetadataRequestOptionsEggStatusCreateEggParamsEggEggStatusChangeHatchResultListEggsParamsAuraTierBuddyBuddyProgressionBuddyEquippedItemBadgeBuddyAppearanceStatusBuddyAppearanceBuddyListParamsSkillUpdateEarnCoinsParamsSpendCoinsParamsTokenBalanceTokensSummaryBuddyEvolutionRecordEquipItemsParamsEquipItemsResultRerenderAppearanceResultBuddyListPrestigeBlockReasonPrestigeAuraTintPrestigeStatusPrestigeResultSendEventParamsEventStreakUpdateEventPathSubStepCompletionEventPathStepCompletionEventPathCompletionEventPathUpdateEventEffectsOperationStatusOperationWaitOptionsPlayerZeroBuddyPlayerZeroResultPlayerZeroStatusCreateSessionParamsSessionTokenCreateEmbedTokenParamsEmbedTokenWebhookEventWebhookEndpointCreateWebhookParamsWebhookDeliveryListDeliveriesParamsPageVerifySignatureOptionsTokenGateUnlockResultBuddyUnlockPathDisplayModePathIconPathConditionTypePathConditionPathDefinitionPathStepPathSubStepPathSubStepStatusPathSubStepRuntimePathStepRuntimePathRuntimePayloadCreatePathDefinitionParamsUpdatePathDefinitionParamsCreatePathStepParamsUpdatePathStepParamsCreatePathSubStepParamsUpdatePathSubStepParamsManualCompleteResultMarketplaceItemRarityOutfitThumbnailStatusOutfitPreviewStatusCompositionStatusSlotItemMapMarketplaceItemGiftItemParamsGiftItemResultMarketplaceListParamsMarketplaceListResponseOutfitSummaryOutfitListResponseOutfitPreviewResponseCompositionStatusResponseSaveOutfitParamsActivateOutfitResponseDeleteOutfitResponseBadgeProgressWidgetBadgeEarnedWidgetBadgeLockedWidgetBadgeBadgeListParamsBadgeListResponseLeaderboardMetricLeaderboardPeriodLeaderboardViewModeLeaderboardScopeLeaderboardScopeParamLeaderboardEntryLeaderboardUserEntryLeaderboardUrgentOptimismLeaderboardWindowLeaderboardScopePolicyLeaderboardResponseLeaderboardParamsNextBestActionKindNextBestActionNextBestActionResponseTeamRoleTeamMemberTeamMyTeamResponseSendKudosParamsSentKudosKudosFeedEntryGivenKudosResponseKudoTypeViewActiveGroupQuestJoinGroupQuestResultLeaveGroupQuestResultGroupQuestStatusGroupQuestRewardConfigAdminGroupQuestCreateGroupQuestParamsUpdateGroupQuestParamsForceResolveResultMentorDirectoryEntryMentorSessionMentorSessionsResponseLogSessionParamsLogSessionResultBragEventKindBragChannelBragWebhookChannelBragTelemetryActionRecordBragTelemetryParamsSendBragSlackPostParamsBragSlackPostResultBragTelemetryResultTeamEventKindTeamEventTeamEventsPageListTeamEventsParamsClapResultSocialNormFramingSocialNormSocialNormsTodayResponseCauseTriggerEventAdminCauseCreateCauseParamsUpdateCauseParamsCausePreviewFoundingCohortModeFoundingCohortPreviewFoundingCohortBackfillResultFoundingCohortAuditEntryFlashSaleStatusFlashSaleSelectionModeFlashSaleScheduleFlashSaleParamsLotteryCadenceLotteryEligibilityRuleLotteryPrizeTierLotteryDrawScheduleLotteryDefinitionLotteryResolvedPrizeLotteryDrawLotteryNextDrawPreviewSimulatedLotteryDrawCreateLotteryParamsUpdateLotteryParamsEventBadgeConditionEventBadgeNarrativeCalloutEventBadgeDefinitionEventBadgeCampaignCreateEventBadgeParamsUpdateEventBadgeParamsProfileSlotWidgetSpecProfileTemplateLayoutProfileTemplateSourceProfileTemplateSystemProfileTemplateProfileTemplateListCreateProfileTemplateParamsUpdateProfileTemplateParamsBulkApplyTargetBulkApplyProfileTemplateParamsLeagueWidgetUnavailableReasonLeagueTierViewLeagueStandingRowLeagueSelfStandingLeagueSeasonViewLeagueWidgetSnapshotLeagueSeasonHighlightKindLeagueSeasonHighlightLeagueSeasonHighlightsSnapshotBossFightTargetMetricBossFightCopyBossFightLeaderRowBossFightProgressViewHexadTypeHexadSurveyQuestionHexadSurveyQuestionsResponseHexadAnswerMapSubmitHexadSurveyParamsHexadSurveySubmitResultHexadSurveyMyResponseAuthMethodApiKeyTypePlanKeyApiKeySummaryWhoamiResultNotificationNotificationFeedPageListNotificationsParamsUnreadCountResultDismissAllResultDismissResultMysteryBoxRewardMysteryBoxStateMysteryBoxClaimResultNarrativeProposalStatusProposalMyProposalsViewSubmitProposalParamsFreeLunchNotificationFreeLunchAcknowledgeResultBeginnersLuckAwardedItemBeginnersLuckResultRecordWidgetRenderedParamsWidgetRenderedResultKnownErrorCodepathswebhookscomponents$defsoperationsOffsetPageCursorPagePaginatedResponsePaginateOptionsWebhookPayloadVerifyResultVerifyAdapterOptionsRelated