import { l } from "@atproto/lex-schema"; import * as RepoStrongRef from "../../com/atproto/repo/strongRef.defs.js"; import * as StreamDefs from "./defs.defs.js"; import * as ActorDefs from "../../app/bsky/actor/defs.defs.js"; import * as ChatProfile from "./chat/profile.defs.js"; import * as ChatDefs from "./chat/defs.defs.js"; declare const $nsid = "place.stream.livestream"; type $nsid = typeof $nsid; export { $nsid }; /** Record announcing a livestream is happening */ type Main = { $type: "place.stream.livestream"; /** * The URL where this stream can be found. This is primarily a hint for other Streamplace nodes to locate and replicate the stream. */ "url"?: l.UriString; /** * The post that announced this livestream. */ "post"?: RepoStrongRef.Main; /** * Freeform tags for this stream. Each tag must be alphanumeric (a-z, A-Z, 0-9) plus colon. Tags with colons indicate a specific tag group (e.g. 'lang:en' indicates the stream's primary language). */ "tags"?: (string)[]; /** * The source of the livestream, if available, in a User Agent format: ` / ` e.g. Streamplace/0.7.5 iOS */ "agent"?: string; "thumb"?: l.BlobRef; /** * The title of the livestream, as it will be announced to followers. */ "title": string; /** * Client-declared timestamp when this livestream ended. Ended livestreams are not supposed to start up again. */ "endedAt"?: l.DatetimeString; /** * The game or activity being streamed. */ "activity"?: l.$Typed | l.$Typed | l.Unknown$TypedObject; /** * Client-declared timestamp when this livestream started. */ "createdAt": l.DatetimeString; /** * Client-declared timestamp when this livestream was last seen by the Streamplace station. */ "lastSeenAt"?: l.DatetimeString; /** * The primary URL where this livestream can be viewed, if available. */ "canonicalUrl"?: l.UriString; /** * Time in seconds after which this livestream should be automatically ended if idle. Zero means no timeout. */ "idleTimeoutSeconds"?: number; "notificationSettings"?: NotificationSettings; }; export type { Main }; /** Record announcing a livestream is happening */ declare const main: l.RecordSchema<"tid", "place.stream.livestream", l.Validator, Omit>>; export { main }; declare const $type = "place.stream.livestream"; type $type = typeof $type; export { $type }; export declare const $isTypeOf: (value: TValue) => value is l.TypedRecord<"place.stream.livestream", TValue>; export declare const $build: { (input: Omit, "$type">): { $type: "place.stream.livestream"; url?: l.UriString; post?: RepoStrongRef.Main; tags?: (string)[]; agent?: string; thumb?: l.BlobRef; title: string; endedAt?: l.DatetimeString; activity?: l.$Typed | l.$Typed | l.Unknown$TypedObject; createdAt: l.DatetimeString; lastSeenAt?: l.DatetimeString; canonicalUrl?: l.UriString; idleTimeoutSeconds?: number; notificationSettings?: NotificationSettings; }; (input: Omit, "$type">): { $type: "place.stream.livestream"; url?: l.UriString; post?: RepoStrongRef.Main; tags?: (string)[]; agent?: string; thumb?: l.BlobRef; title: string; endedAt?: l.DatetimeString; activity?: l.$Typed | l.$Typed | l.Unknown$TypedObject; createdAt: l.DatetimeString; lastSeenAt?: l.DatetimeString; canonicalUrl?: l.UriString; idleTimeoutSeconds?: number; notificationSettings?: NotificationSettings; }; }; export declare const $assert: (input: unknown, options?: l.ValidateOptions) => asserts input is { $type: "place.stream.livestream"; url?: l.UriString; post?: RepoStrongRef.Main; tags?: (string)[]; agent?: string; thumb?: l.BlobRef; title: string; endedAt?: l.DatetimeString; activity?: l.$Typed | l.$Typed | l.Unknown$TypedObject; createdAt: l.DatetimeString; lastSeenAt?: l.DatetimeString; canonicalUrl?: l.UriString; idleTimeoutSeconds?: number; notificationSettings?: NotificationSettings; }; export declare const $check: (input: unknown, options?: l.ValidateOptions) => void; export declare const $cast: (input: I, options?: l.ValidateOptions) => I & { $type: "place.stream.livestream"; url?: l.UriString; post?: RepoStrongRef.Main; tags?: (string)[]; agent?: string; thumb?: l.BlobRef; title: string; endedAt?: l.DatetimeString; activity?: l.$Typed | l.$Typed | l.Unknown$TypedObject; createdAt: l.DatetimeString; lastSeenAt?: l.DatetimeString; canonicalUrl?: l.UriString; idleTimeoutSeconds?: number; notificationSettings?: NotificationSettings; }; export declare const $ifMatches: (input: I, options?: l.ValidateOptions) => (I & { $type: "place.stream.livestream"; url?: l.UriString; post?: RepoStrongRef.Main; tags?: (string)[]; agent?: string; thumb?: l.BlobRef; title: string; endedAt?: l.DatetimeString; activity?: l.$Typed | l.$Typed | l.Unknown$TypedObject; createdAt: l.DatetimeString; lastSeenAt?: l.DatetimeString; canonicalUrl?: l.UriString; idleTimeoutSeconds?: number; notificationSettings?: NotificationSettings; }) | undefined; export declare const $matches: (input: I, options?: l.ValidateOptions) => input is I & { $type: "place.stream.livestream"; url?: l.UriString; post?: RepoStrongRef.Main; tags?: (string)[]; agent?: string; thumb?: l.BlobRef; title: string; endedAt?: l.DatetimeString; activity?: l.$Typed | l.$Typed | l.Unknown$TypedObject; createdAt: l.DatetimeString; lastSeenAt?: l.DatetimeString; canonicalUrl?: l.UriString; idleTimeoutSeconds?: number; notificationSettings?: NotificationSettings; }; export declare const $parse: (input: unknown, options?: l.ParseOptions) => { $type: "place.stream.livestream"; url?: l.UriString; post?: RepoStrongRef.Main; tags?: (string)[]; agent?: string; thumb?: l.BlobRef; title: string; endedAt?: l.DatetimeString; activity?: l.$Typed | l.$Typed | l.Unknown$TypedObject; createdAt: l.DatetimeString; lastSeenAt?: l.DatetimeString; canonicalUrl?: l.UriString; idleTimeoutSeconds?: number; notificationSettings?: NotificationSettings; }; export declare const $safeParse: (input: unknown, options?: l.ParseOptions) => l.ValidationResult<{ $type: "place.stream.livestream"; url?: l.UriString; post?: RepoStrongRef.Main; tags?: (string)[]; agent?: string; thumb?: l.BlobRef; title: string; endedAt?: l.DatetimeString; activity?: l.$Typed | l.$Typed | l.Unknown$TypedObject; createdAt: l.DatetimeString; lastSeenAt?: l.DatetimeString; canonicalUrl?: l.UriString; idleTimeoutSeconds?: number; notificationSettings?: NotificationSettings; }>; export declare const $validate: (input: I, options?: l.ValidateOptions) => I & { $type: "place.stream.livestream"; url?: l.UriString; post?: RepoStrongRef.Main; tags?: (string)[]; agent?: string; thumb?: l.BlobRef; title: string; endedAt?: l.DatetimeString; activity?: l.$Typed | l.$Typed | l.Unknown$TypedObject; createdAt: l.DatetimeString; lastSeenAt?: l.DatetimeString; canonicalUrl?: l.UriString; idleTimeoutSeconds?: number; notificationSettings?: NotificationSettings; }; export declare const $safeValidate: (input: I, options?: l.ValidateOptions) => l.ValidationResult | l.$Typed | l.Unknown$TypedObject; createdAt: l.DatetimeString; lastSeenAt?: l.DatetimeString; canonicalUrl?: l.UriString; idleTimeoutSeconds?: number; notificationSettings?: NotificationSettings; }>; type ViewerCount = { $type?: "place.stream.livestream#viewerCount"; "count": number; }; export type { ViewerCount }; declare const viewerCount: l.TypedObjectSchema<"place.stream.livestream#viewerCount", l.Validator>; export { viewerCount }; type LivestreamView = { $type?: "place.stream.livestream#livestreamView"; "cid": l.CidString; "uri": l.AtUriString; "author": ActorDefs.ProfileViewBasic; "record": l.LexMap; "indexedAt": l.DatetimeString; /** * The number of viewers watching this livestream. Use when you can't reasonably use #viewerCount directly. */ "viewerCount"?: ViewerCount; }; export type { LivestreamView }; declare const livestreamView: l.TypedObjectSchema<"place.stream.livestream#livestreamView", l.Validator>; export { livestreamView }; type TeleportArrival = { $type?: "place.stream.livestream#teleportArrival"; /** * The streamer who is teleporting their viewers here */ "source": ActorDefs.ProfileViewBasic; /** * When this teleport started */ "startsAt": l.DatetimeString; /** * The chat profile of the source streamer */ "chatProfile"?: ChatProfile.Main; /** * The URI of the teleport record */ "teleportUri": l.AtUriString; /** * How many viewers are arriving from this teleport */ "viewerCount": number; }; export type { TeleportArrival }; declare const teleportArrival: l.TypedObjectSchema<"place.stream.livestream#teleportArrival", l.Validator>; export { teleportArrival }; type TeleportCanceled = { $type?: "place.stream.livestream#teleportCanceled"; /** * Why this teleport was canceled */ "reason": "deleted" | "denied" | "expired"; /** * The URI of the teleport record that was canceled */ "teleportUri": l.AtUriString; }; export type { TeleportCanceled }; declare const teleportCanceled: l.TypedObjectSchema<"place.stream.livestream#teleportCanceled", l.Validator>; export { teleportCanceled }; type StreamplaceAnything = { $type?: "place.stream.livestream#streamplaceAnything"; "livestream": l.$Typed | l.$Typed | l.$Typed | l.$Typed | l.$Typed | l.$Typed | l.$Typed | l.$Typed | l.$Typed | l.Unknown$TypedObject; }; export type { StreamplaceAnything }; declare const streamplaceAnything: l.TypedObjectSchema<"place.stream.livestream#streamplaceAnything", l.Validator>; export { streamplaceAnything }; type NotificationSettings = { $type?: "place.stream.livestream#notificationSettings"; /** * Whether this livestream should trigger a push notification to followers. */ "pushNotification"?: boolean; }; export type { NotificationSettings }; declare const notificationSettings: l.TypedObjectSchema<"place.stream.livestream#notificationSettings", l.Validator>; export { notificationSettings }; //# sourceMappingURL=livestream.defs.d.ts.map