import { LiveList, LiveMap, LiveObject, Lson, LsonObject, } from '@liveblocks/client'; type ExtractObjectShape> = T extends LiveObject ? U : never; type ExtractListShape> = T extends LiveList ? U : never; type ExtractMapShape = T extends LiveMap ? Record : never; type ApiJsonValues> = { [K in keyof T]: ApiJsonData; }; type ApiJsonObject = { liveblocksType: 'LiveObject'; data: ApiJsonValues>; }; type ApiJsonList = { liveblocksType: 'LiveList'; data: ApiJsonData>[]; }; type ApiJsonMap = { liveblocksType: 'LiveMap'; data: ApiJsonData>; }; type ApiJsonData = T extends LiveObject ? ApiJsonObject : T extends LiveList ? ApiJsonList : T extends LiveMap ? ApiJsonMap : T extends Record ? ApiJsonValues : T extends Array ? Array> : T; export type LiveblocksApiJson< SourceData extends LiveObject | Record, > = ApiJsonData;