86 lines
3.0 KiB
TypeScript
86 lines
3.0 KiB
TypeScript
import { TrackSource, RoomConfiguration } from '@livekit/protocol';
|
|
import { JWTPayload } from 'jose';
|
|
|
|
declare function trackSourceToString(source: TrackSource): "camera" | "microphone" | "screen_share" | "screen_share_audio";
|
|
declare function claimsToJwtPayload(grant: ClaimGrants): JWTPayload & {
|
|
video?: Record<string, unknown>;
|
|
};
|
|
interface VideoGrant {
|
|
/** permission to create a room */
|
|
roomCreate?: boolean;
|
|
/** permission to join a room as a participant, room must be set */
|
|
roomJoin?: boolean;
|
|
/** permission to list rooms */
|
|
roomList?: boolean;
|
|
/** permission to start a recording */
|
|
roomRecord?: boolean;
|
|
/** permission to control a specific room, room must be set */
|
|
roomAdmin?: boolean;
|
|
/** name of the room, must be set for admin or join permissions */
|
|
room?: string;
|
|
/** permissions to control ingress, not specific to any room or ingress */
|
|
ingressAdmin?: boolean;
|
|
/**
|
|
* allow participant to publish. If neither canPublish or canSubscribe is set,
|
|
* both publish and subscribe are enabled
|
|
*/
|
|
canPublish?: boolean;
|
|
/**
|
|
* TrackSource types that the participant is allowed to publish
|
|
* When set, it supersedes CanPublish. Only sources explicitly set here can be published
|
|
*/
|
|
canPublishSources?: TrackSource[];
|
|
/** allow participant to subscribe to other tracks */
|
|
canSubscribe?: boolean;
|
|
/**
|
|
* allow participants to publish data, defaults to true if not set
|
|
*/
|
|
canPublishData?: boolean;
|
|
/**
|
|
* by default, a participant is not allowed to update its own metadata
|
|
*/
|
|
canUpdateOwnMetadata?: boolean;
|
|
/** participant isn't visible to others */
|
|
hidden?: boolean;
|
|
/** participant is recording the room, when set, allows room to indicate it's being recorded */
|
|
recorder?: boolean;
|
|
/** participant allowed to connect to LiveKit as Agent Framework worker */
|
|
agent?: boolean;
|
|
/** allow participant to subscribe to metrics */
|
|
canSubscribeMetrics?: boolean;
|
|
/** allow participant to manage an agent session via RemoteSession */
|
|
canManageAgentSession?: boolean;
|
|
/** destination room which this participant can forward to */
|
|
destinationRoom?: string;
|
|
}
|
|
interface SIPGrant {
|
|
/** manage sip resources */
|
|
admin?: boolean;
|
|
/** make outbound calls */
|
|
call?: boolean;
|
|
}
|
|
interface InferenceGrant {
|
|
/** perform inference */
|
|
perform?: boolean;
|
|
}
|
|
interface ObservabilityGrant {
|
|
/** write grants to publish observability data */
|
|
write?: boolean;
|
|
}
|
|
/** @internal */
|
|
interface ClaimGrants extends JWTPayload {
|
|
name?: string;
|
|
video?: VideoGrant;
|
|
sip?: SIPGrant;
|
|
inference?: InferenceGrant;
|
|
observability?: ObservabilityGrant;
|
|
kind?: string;
|
|
metadata?: string;
|
|
attributes?: Record<string, string>;
|
|
sha256?: string;
|
|
roomPreset?: string;
|
|
roomConfig?: RoomConfiguration;
|
|
}
|
|
|
|
export { type ClaimGrants, type InferenceGrant, type ObservabilityGrant, type SIPGrant, type VideoGrant, claimsToJwtPayload, trackSourceToString };
|