import type { DefaultErrorShape, ErrorFormatter } from '@trpc/server/unstable-core-do-not-import'; import type { OpenApiMeta } from 'trpc-to-openapi'; import type { TrpcContext } from './context/trpc.context'; import { DecodedUserToken } from './schemas/user.schema'; export declare function getTrpc, ExtendedContext = Record>(params?: { /** Extend authenticated context with additional data (e.g., account context) */ extendAuthenticatedContext?: (params: { user: DecodedUserToken; ctx: TrpcContext; }) => ExtendedAuthenticatedContext; /** Extend base context (runs for all requests) - use for tenant services, etc. */ extendContext?: (ctx: TrpcContext) => Promise; /** Custom error formatter for tRPC errors */ errorFormatter?: ErrorFormatter; }): { authenticatedEndpoint: import("@trpc/server").TRPCProcedureBuilder<{ user: { decodedToken: { iss: string; aud: string; auth_time: number; sub: string; iat: number; exp: number; email: string; email_verified: boolean; uid: string; displayName?: string; name?: string; ownerId?: string; user_id?: string; }; email: string; userId: string; }; url: string; method: string; xTenantId: string; actingAccountId: string; origin: string; ip: string; getLocation(): Promise; endpoint: string; device: { isMobile: boolean; isWebApp: boolean; isMacPC: boolean; os: any; isIOS: boolean; isAndroid: boolean; }; }, OpenApiMeta, { method: string; url: string; origin: string; ip: string; user: { decodedToken: { iss: string; aud: string; auth_time: number; sub: string; iat: number; exp: number; email: string; email_verified: boolean; uid: string; displayName?: string; name?: string; ownerId?: string; user_id?: string; }; email: string; userId: string; }; xTenantId: string; actingAccountId: string; getLocation: () => Promise; endpoint: string; device: { isMobile: boolean; isWebApp: boolean; isMacPC: boolean; os: any; isIOS: boolean; isAndroid: boolean; }; extended: Awaited; authenticated: ExtendedAuthenticatedContext; }, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>; maybeAuthenticatedEnpoint: import("@trpc/server").TRPCProcedureBuilder<{ user: { decodedToken: { iss: string; aud: string; auth_time: number; sub: string; iat: number; exp: number; email: string; email_verified: boolean; uid: string; displayName?: string; name?: string; ownerId?: string; user_id?: string; }; email: string; userId: string; }; url: string; method: string; xTenantId: string; actingAccountId: string; origin: string; ip: string; getLocation(): Promise; endpoint: string; device: { isMobile: boolean; isWebApp: boolean; isMacPC: boolean; os: any; isIOS: boolean; isAndroid: boolean; }; }, OpenApiMeta, { method: string; url: string; origin: string; ip: string; user: { decodedToken: { iss: string; aud: string; auth_time: number; sub: string; iat: number; exp: number; email: string; email_verified: boolean; uid: string; displayName?: string; name?: string; ownerId?: string; user_id?: string; }; email: string; userId: string; }; xTenantId: string; actingAccountId: string; getLocation: () => Promise; endpoint: string; device: { isMobile: boolean; isWebApp: boolean; isMacPC: boolean; os: any; isIOS: boolean; isAndroid: boolean; }; extended: Awaited; isLoggedIn: boolean; authenticated: ExtendedAuthenticatedContext; }, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>; publicEndpoint: import("@trpc/server").TRPCProcedureBuilder<{ user: { decodedToken: { iss: string; aud: string; auth_time: number; sub: string; iat: number; exp: number; email: string; email_verified: boolean; uid: string; displayName?: string; name?: string; ownerId?: string; user_id?: string; }; email: string; userId: string; }; url: string; method: string; xTenantId: string; actingAccountId: string; origin: string; ip: string; getLocation(): Promise; endpoint: string; device: { isMobile: boolean; isWebApp: boolean; isMacPC: boolean; os: any; isIOS: boolean; isAndroid: boolean; }; }, OpenApiMeta, { method: string; url: string; origin: string; ip: string; user: { decodedToken: { iss: string; aud: string; auth_time: number; sub: string; iat: number; exp: number; email: string; email_verified: boolean; uid: string; displayName?: string; name?: string; ownerId?: string; user_id?: string; }; email: string; userId: string; }; xTenantId: string; actingAccountId: string; getLocation: () => Promise; endpoint: string; device: { isMobile: boolean; isWebApp: boolean; isMacPC: boolean; os: any; isIOS: boolean; isAndroid: boolean; }; extended: Awaited; }, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>; router: import("@trpc/server").TRPCRouterBuilder<{ ctx: { user: { decodedToken: { iss: string; aud: string; auth_time: number; sub: string; iat: number; exp: number; email: string; email_verified: boolean; uid: string; displayName?: string; name?: string; ownerId?: string; user_id?: string; }; email: string; userId: string; }; url: string; method: string; xTenantId: string; actingAccountId: string; origin: string; ip: string; getLocation(): Promise; endpoint: string; device: { isMobile: boolean; isWebApp: boolean; isMacPC: boolean; os: any; isIOS: boolean; isAndroid: boolean; }; }; meta: OpenApiMeta; errorShape: DefaultErrorShape; transformer: false; }>; t: import("@trpc/server").TRPCRootObject<{ user: { decodedToken: { iss: string; aud: string; auth_time: number; sub: string; iat: number; exp: number; email: string; email_verified: boolean; uid: string; displayName?: string; name?: string; ownerId?: string; user_id?: string; }; email: string; userId: string; }; url: string; method: string; xTenantId: string; actingAccountId: string; origin: string; ip: string; getLocation(): Promise; endpoint: string; device: { isMobile: boolean; isWebApp: boolean; isMacPC: boolean; os: any; isIOS: boolean; isAndroid: boolean; }; }, OpenApiMeta, { errorFormatter: ErrorFormatter<{ user: { decodedToken: { iss: string; aud: string; auth_time: number; sub: string; iat: number; exp: number; email: string; email_verified: boolean; uid: string; displayName?: string; name?: string; ownerId?: string; user_id?: string; }; email: string; userId: string; }; url: string; method: string; xTenantId: string; actingAccountId: string; origin: string; ip: string; getLocation(): Promise; endpoint: string; device: { isMobile: boolean; isWebApp: boolean; isMacPC: boolean; os: any; isIOS: boolean; isAndroid: boolean; }; }, DefaultErrorShape>; sse: { maxDurationMs: number; ping: { enabled: true; intervalMs: number; }; client: { reconnectAfterInactivityMs: number; }; }; }, { ctx: { user: { decodedToken: { iss: string; aud: string; auth_time: number; sub: string; iat: number; exp: number; email: string; email_verified: boolean; uid: string; displayName?: string; name?: string; ownerId?: string; user_id?: string; }; email: string; userId: string; }; url: string; method: string; xTenantId: string; actingAccountId: string; origin: string; ip: string; getLocation(): Promise; endpoint: string; device: { isMobile: boolean; isWebApp: boolean; isMacPC: boolean; os: any; isIOS: boolean; isAndroid: boolean; }; }; meta: OpenApiMeta; errorShape: DefaultErrorShape; transformer: false; }>; };