Admin removes hand-written mirrors of generated API contracts
This first convergence slice deletes the duplicate contract shapes from src/types and makes consumers import generated wire types directly from @/gen/types/*, matching the pramaan-app pattern.
What was removed
The following hand-written mirrors no longer exist in src/types or the @/types barrel:
ActivityFeedRequest,ActivityFeedItem, andActivityFeedResponsefromsrc/types/activity.ts; the activity file was deleted.FirmListRequestfromsrc/types/firm.ts.SeatAdjustRequest,PlanChangeRequest, andSubscriptionActionResponsefromsrc/types/billing.ts.ReassignCSMRequestandReassignCSMResponsefromsrc/types/staff.ts.
Generated sources
Live consumers now use the generated contracts directly where this story has call sites:
src/app/(admin)/firms/firm-list-request.tsandsrc/lib/queries/firm-queries.tsuseAdminListFirmsQueryParamsfrom@/gen/types/AdminListFirms.src/components/firms/firm-detail-view.tsxusesReassignCSMRequestfrom@/gen/types/ReassignCSMRequest.- The firm detail gateway already imported the seat, plan, subscription action, and CSM response contracts from generated files; this story removed the stale local mirrors that could drift from those imports.
Shape adaptation
FirmListRequest was replaced with AdminListFirmsQueryParams in the URL-state request builders and the query-string serializer. The runtime query string is unchanged: existing camelCase params, sort tokens, null omission, and pagination serialization are preserved.
No billing or CSM payload mapping changed. The generated shapes match the current camelCase payloads used by the mutation hooks and gateway.
Scope guardrails
No src/gen, OpenAPI snapshot, pramaan-functions, pramaan-app, i18n, view-model relocation, broad @/types hub teardown, or table dependency changes were made. Closed Chore pramaan-io/pramaan-spec#1691 is folded into this story through the activity type removal.
pramaan-docs ADR-124: instrumentation-exempt. This is type-layer contract cleanup and adds no executable workflow, route, handler, job, external call, or product-state mutation.
Verification proof
Required local verification: pnpm lint, pnpm exec tsc --noEmit, pnpm test, NEXT_PUBLIC_ENV=local pnpm build, pnpm build-storybook, and git diff --check.
Reference checks: grep -rnE "interface (ActivityFeedRequest|ActivityFeedItem|ActivityFeedResponse|FirmListRequest|SeatAdjustRequest|PlanChangeRequest|SubscriptionActionResponse|ReassignCSMRequest|ReassignCSMResponse)\b" src/types returns no matches, and the remaining live references resolve to generated @/gen/types/* imports.