/** * Transport-agnostic API result envelope. * * Every API-layer function returns this shape. The `status` field * carries an HTTP-equivalent status code (200, 400, 403, 404, 409, 500) * so callers retain the same semantics regardless of transport. * * Express routes map `status` → `res.status()` and `data`/`error` → JSON body. * SDK callers inspect the envelope directly. */ export interface LTApiResult { /** HTTP-equivalent status code */ status: number; /** Success payload (present when status is 2xx) */ data?: T; /** Error message (present when status is 4xx/5xx) */ error?: string; } /** * Auth context passed to API-layer functions. * * In HTTP mode this is derived from `req.auth` (JWT / bot key). * In SDK mode the caller supplies it via `createClient({ auth })`. */ export interface LTApiAuth { userId: string; role?: string; scopes?: string[]; }