Skip to Content

Types

⚡ 8 min read

Complete TypeScript type definitions from transcodes.d.ts


Core Types

ApiResponse<T>

Base API response structure

interface ApiResponse<T> { success: boolean; payload: T; error?: string; message?: string; status?: number; }

Member

Member (authenticated end-user) profile data

interface Member { id?: string; projectId?: string; name?: string; email?: string; role?: string; metadata?: Record<string, string | number | boolean | null | undefined>; createdAt?: Date | string; updatedAt?: Date | string; }

AuthResult

Authentication result with token and member

interface AuthResult { token: string; member: Member; }

IdpOpenParams

Parameters for opening the IDP (step-up) modal — RBAC resource + action

interface IdpOpenParams { /** Resource key for RBAC check (e.g. 'users', 'revenue') */ resource: string; /** CRUD action type */ action: 'create' | 'read' | 'update' | 'delete'; /** Force step-up regardless of permission level. Default: false */ forceStepUp?: boolean; /** Slack webhook notifications. Default: false */ webhookNotification?: boolean; }

IdpAuthResponse

Response from IDP authentication

interface IdpAuthResponse { success: boolean; sid?: string; error?: string; timestamp: number; action?: string; }

Event Types

TranscodesEventName

const TranscodesEventNames = { AUTH_STATE_CHANGED: 'AUTH_STATE_CHANGED', TOKEN_REFRESHED: 'TOKEN_REFRESHED', TOKEN_EXPIRED: 'TOKEN_EXPIRED', ERROR: 'ERROR', MEMBER_REVOKED: 'MEMBER_REVOKED', } as const; type TranscodesEventName = (typeof TranscodesEventNames)[keyof typeof TranscodesEventNames];

TranscodesEventMap

interface TranscodesEventMap { AUTH_STATE_CHANGED: AuthStateChangedPayload; TOKEN_REFRESHED: TokenRefreshedPayload; TOKEN_EXPIRED: TokenExpiredPayload; ERROR: ErrorPayload; MEMBER_REVOKED: MemberRevokedPayload; }

AuthStateChangedPayload

interface AuthStateChangedPayload { isAuthenticated: boolean; accessToken: string | null; expiresAt: number | null; member: Member | null; }

TokenRefreshedPayload

interface TokenRefreshedPayload { accessToken: string; expiresAt: number; }

TokenExpiredPayload

interface TokenExpiredPayload { expiredAt: number; }

ErrorPayload

interface ErrorPayload { code: string; message: string; context?: string; }

MemberRevokedPayload

Emitted when the server reports the current member has been suspended/revoked by an admin. The SDK has already cleared the local session by the time this event fires.

interface MemberRevokedPayload { /** User-facing message to display */ message: string; /** Machine-readable reason for programmatic handling */ reason: 'member_revoked'; }

EventCallback

type EventCallback<T extends TranscodesEventName> = ( payload: TranscodesEventMap[T] ) => void;

API Interfaces

TokenAPI

interface TokenAPI { getCurrentMember(): Promise<Member | null>; getAccessToken(): Promise<string | null>; hasToken(): boolean; isAuthenticated(): Promise<boolean>; signOut(options?: { webhookNotification?: boolean }): Promise<void>; }

PublicMemberAPI

interface PublicMemberAPI { get(params: { projectId?: string; memberId?: string; email?: string; fields?: string; }): Promise<ApiResponse<Member[]>>; }

PublicEventAPI

interface PublicEventAPI { on<T extends TranscodesEventName>( event: T, callback: EventCallback<T> ): () => void; off<T extends TranscodesEventName>( event: T, callback: EventCallback<T> ): void; }

Global Declaration

declare global { interface Window { transcodes: TranscodesAPI; } var transcodes: Window['transcodes']; }

Usage

  1. Copy transcodes.d.ts to your project (e.g., types/transcodes.d.ts)
  2. Update tsconfig.json:
{ "compilerOptions": { "typeRoots": ["./node_modules/@types", "./types"] }, "include": ["src", "types"] }

Last updated on