export interface CreateGroupOpts {
    creatorLarkAppId: string;
    /** Bots expected to join the new chat. Creator is filtered out internally
     *  (Lark rejects self-invite). May be empty (creator-only chat). */
    larkAppIds: string[];
    name?: string;
    userOpenIds?: string[];
    /** Users to add by union_id (tenant-stable) — used to pull bot OWNERS into a
     *  federated group regardless of which bot they paired through (open_id is
     *  app-scoped, union_id is not). Added after the chat is created. */
    ownerUnionIds?: string[];
    transferOwnerTo?: string;
    notifyOwnerOpenId?: string;
    /** Optional working directory to bind the newly created chat to oncall for
     *  every invited bot. The path is validated by callers; this service only
     *  persists the binding after chat.create succeeds. */
    bindWorkingDir?: string;
}
export interface CreateGroupResult {
    ok: true;
    chatId: string;
    creator: string;
    invalidBotIds: string[];
    invalidUserIds: string[];
    /** Owner union_ids Lark could not add to the chat (best-effort). */
    invalidOwnerUnionIds: string[];
    ownerTransferredTo: string | null;
    transferError: string | null;
    notifyMessageId: string | null;
    notifyError: string | null;
    /** Shareable join link (others can click to *join*). null when the Lark
     *  link API failed — caller falls back to the member-only applink URL. */
    shareLink: string | null;
    shareLinkError: string | null;
    oncallBindings: {
        larkAppId: string;
        ok: boolean;
        created?: boolean;
        error?: string;
    }[];
}
export declare function createGroupWithBots(opts: CreateGroupOpts): Promise<CreateGroupResult>;
//# sourceMappingURL=group-creator.d.ts.map