import { z } from 'zod'; /** Top-level collection holding one document per Waha user. */ export declare const USERS_COLLECTION = "users2"; /** * The per-device subcollection segment under a user doc. */ export declare const DEVICES_SUBCOLLECTION = "devices"; /** * The per-item, 2-way-synced subcollections under a user doc, each paired with * the Zod schema its docs are validated against. */ export declare const SYNCED_SUBCOLLECTIONS: { readonly completions: { readonly segment: "completions"; readonly schema: z.ZodObject<{ lessonId: z.ZodString; meetLanguageId: z.ZodString; time: z.ZodNumber; country: z.ZodOptional; region: z.ZodOptional; city: z.ZodOptional; manual: z.ZodOptional; howManyObeyed: z.ZodOptional>; howManyShared: z.ZodOptional>; }, z.core.$strip>; }; readonly bookmarks: { readonly segment: "bookmarks"; readonly schema: z.ZodObject<{ icon: z.ZodEnum<{ leaf: "leaf"; stars: "stars"; apple: "apple"; fish: "fish"; sunny: "sunny"; }>; languageId: z.ZodString; lessonId: z.ZodString; }, z.core.$strip>; }; readonly notes: { readonly segment: "notes"; readonly schema: z.ZodObject<{ sessionId: z.ZodString; content: z.ZodString; createdAt: z.ZodNumber; lessonId: z.ZodString; languageId: z.ZodString; }, z.core.$strip>; }; readonly meetFavorites: { readonly segment: "meetFavorites"; readonly schema: z.ZodObject<{ languageId: z.ZodString; }, z.core.$strip>; }; }; export type UserCollectionKey = keyof typeof SYNCED_SUBCOLLECTIONS; /** Synced scalar docs (shape `{ value }`). */ export declare const SYNCED_SCALARS: { readonly trainingUnlocked: { readonly segment: "synced/trainingUnlocked"; readonly schema: z.ZodBoolean; }; readonly appLanguage: { readonly segment: "synced/appLanguage"; readonly schema: z.ZodString; }; }; export type SyncedScalarKey = keyof typeof SYNCED_SCALARS; /** * Builds every Firestore path under a single user's document. Path strings work * with both the admin and react-native Firestore SDKs, so this is shared. */ export declare const userPaths: (uid: string) => { base: string; devices: string; device: (deviceId: string) => string; syncedSubcollection: (key: UserCollectionKey) => string; syncedSubcollectionDoc: (key: UserCollectionKey, id: string | number) => string; syncedScalar: (key: SyncedScalarKey) => string; };