export interface TeamGroupBinding { teamId: string; chatId: string; createdAt: number; } export declare function listTeamGroups(dataDir: string, teamId?: string): TeamGroupBinding[]; export declare function recordTeamGroup(dataDir: string, teamId: string, chatId: string, now?: number): void; /** * Replace ALL entries whose teamId starts with `prefix` by `groups`, leaving * other entries (e.g. legacy federation teams) untouched. Used by the platform * team-sync mirror ([[platform-team-store]], prefix `platform:`): the platform * push is the authoritative full view, so removal must work — append-only * recordTeamGroup can't drop a dissolved hall / left team. Survivors keep * their original createdAt. */ export declare function replaceTeamGroupsByPrefix(dataDir: string, prefix: string, groups: Array<{ teamId: string; chatId: string; }>, now?: number): void; /** Is `chatId` a team-assembled (拉群) group of ANY team? This is the TRUST ROOT * for team-bot collaboration: such a group is built by the team (bots added by * larkAppId from the federated roster), so a bot speaking there is a vouched * teammate (see [[team-bots-store]]). Recorded on the orchestrating deployment * by recordTeamGroup, and mirrored onto member deployments when the hub returns * groupChatIds on federation sync — so every member's auth gate sees the same * trust boundary. Platform-mode 拉群 groups land here too, mirrored from * team-sync under the `platform:` teamId prefix (see [[platform-team-store]]). */ export declare function isTeamGroupChat(dataDir: string, chatId: string | undefined): boolean; //# sourceMappingURL=team-groups-store.d.ts.map