export const SignalType = {
OFFER: "OFFER",
ANSWER: "ANSWER",
CANDIDATE: "CANDIDATE",
} as const;
export const Topic = {
MATCHING: "/user/queue/match",
SIGNALING: "/user/queue/signal",
} as const;
export const Destination = {
MATCHING: "/app/match/request",
SIGNALING: "/app/match/signaling",
CANCEL: "/app/match/cancel",
} as const;
export type SignalType = (typeof SignalType)[keyof typeof SignalType];
export type Topic = (typeof Topic)[keyof typeof Topic];
export type Destination = (typeof Destination)[keyof typeof Destination];
export interface SignalMessage {
type: SignalType;
senderId: string;
data: RTCSessionDescriptionInit | RTCIceCandidateInit;
}
export interface Subscription {
unsubscribe: () => void;
}
export interface SignalingEventMap {
'signaling:connected': () => void;
'signaling:disconnected': () => void;
'signaling:error': (error: Error) => void;
'message': (channel: Topic, payload: any) => void;
}