import { Signal, WritableSignal } from "@angular/core"; import { ConnectionState } from "@cygnus-reach/session"; import { InviteType } from "../../basic-ui/session"; import { InviteUserMessageText } from "./text-interfaces"; export interface CreateSessionError extends BaseSessionError { code: CreateSessionErrorCode; connectionState?: ConnectionState; } export interface CreateSessionAttempt { joined: WritableSignal; dispose(): void; } export interface CreateSessionAdvancedConfig { complexity: "Advanced"; functions: CreateSessionFunctions; } export interface CreateSessionBasicConfig { complexity: "Basic"; data: { deviceId: string; apiEndpoint: string; apiKey: string; }; invitationText?: InviteUserMessageText; } export interface InviteBeforeHandlerResult { shouldShow: boolean; sessionJoined: Signal; userData?: string; } export type InviteBeforeHandler = (data: string | undefined) => Promise; export type InviteBeforeHandlers = Partial>; export interface BaseSessionError { message: string; inviteType?: InviteType; } export type CreateSessionErrorCode = "missing-functions" | "missing-before-handlers" | "missing-after-dialog-closed" | "missing-before-handler" | "missing-dialog-text" | "before-handler-failed" | "invalid-should-show" | "invalid-session-joined" | "filtered-invite-type" | "missing-device-id" | "missing-api" | "missing-api-key" | "generate-pin-failed"; export interface CreateSessionFunctions { beforeHandlers: InviteBeforeHandlers; afterDialogClosed(result: boolean): Promise; }