import { Type, type Static } from "@sinclair/typebox"; const stableResourcePattern = "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,119}$"; export const RecentAssetKindSchema = Type.Union( [Type.Literal("static_sticker"), Type.Literal("text_template")], { $id: "RecentAssetKind" }, ); export const RecentAssetItemSchema = Type.Object( { asset_id: Type.String({ maxLength: 120, pattern: stableResourcePattern }), asset_kind: Type.Ref(RecentAssetKindSchema), resource_version: Type.String({ maxLength: 120, pattern: stableResourcePattern }), }, { additionalProperties: false, $id: "RecentAssetItem" }, ); export const RecentAssetQuerySchema = Type.Object( { asset_kind: Type.Ref(RecentAssetKindSchema) }, { additionalProperties: false, $id: "RecentAssetQuery" }, ); export const RecentAssetListResponseSchema = Type.Object( { items: Type.Array(Type.Ref(RecentAssetItemSchema), { maxItems: 12 }) }, { additionalProperties: false, $id: "RecentAssetListResponse" }, ); export const RecentAssetRecordRequestSchema = Type.Object( { asset_id: Type.String({ maxLength: 120, pattern: stableResourcePattern }), asset_kind: Type.Ref(RecentAssetKindSchema), resource_version: Type.String({ maxLength: 120, pattern: stableResourcePattern }), }, { additionalProperties: false, $id: "RecentAssetRecordRequest" }, ); export const RecentAssetRecordResponseSchema = Type.Object( { status: Type.Literal("recorded") }, { additionalProperties: false, $id: "RecentAssetRecordResponse" }, ); export type RecentAssetQuery = Static; export type RecentAssetRecordRequest = Static;