import { Group, GroupInfo, GroupJoinInfo, GroupMemberAddMode, GroupMembershipRequest, GroupMembershipRequestMethod, MediaInput, ParticipantOperationResult } from '../interfaces/whatsapp-engine.interface';
import { GroupMetadataRaw } from '../types/whatsapp-web-js.types';
import { type WwebjsEngineHost } from './wwebjs-host';
export declare function extractLinkedParentJID(groupMetadata?: GroupMetadataRaw): string | null;
export declare function normalizeWwebjsMemberAddMode(raw: string | boolean | undefined): GroupMemberAddMode | undefined;
export declare function normalizeWwebjsRequestMethod(raw: string | undefined): GroupMembershipRequestMethod | undefined;
export declare class WwebjsGroups {
    private readonly host;
    constructor(host: WwebjsEngineHost);
    private client;
    getGroups(): Promise<Group[]>;
    getGroupInfo(groupId: string): Promise<GroupInfo | null>;
    createGroup(_name: string, _participants: string[]): Promise<Group>;
    addParticipants(groupId: string, participants: string[]): Promise<ParticipantOperationResult[]>;
    removeParticipants(groupId: string, participants: string[]): Promise<ParticipantOperationResult[]>;
    promoteParticipants(groupId: string, participants: string[]): Promise<ParticipantOperationResult[]>;
    demoteParticipants(groupId: string, participants: string[]): Promise<ParticipantOperationResult[]>;
    private runStatusOnlyParticipantOp;
    private runParticipantBatch;
    private assertParticipantResults;
    leaveGroup(groupId: string): Promise<void>;
    setGroupSubject(groupId: string, subject: string): Promise<void>;
    setGroupDescription(groupId: string, description: string): Promise<void>;
    getGroupInviteCode(groupId: string): Promise<string>;
    revokeGroupInviteCode(groupId: string): Promise<string>;
    getGroupJoinInfo(inviteCode: string): Promise<GroupJoinInfo>;
    joinGroupViaInviteCode(inviteCode: string): Promise<string>;
    private requireGroupChat;
    setGroupMessagesAdminsOnly(groupId: string, adminsOnly: boolean): Promise<void>;
    setGroupPicture(groupId: string, media: MediaInput): Promise<void>;
    deleteGroupPicture(groupId: string): Promise<void>;
    setGroupMemberAddMode(groupId: string, mode: GroupMemberAddMode): Promise<void>;
    setGroupInfoAdminsOnly(groupId: string, adminsOnly: boolean): Promise<void>;
    setGroupEphemeral(_groupId: string, _durationSec: number): Promise<void>;
    getGroupMembershipRequests(groupId: string): Promise<GroupMembershipRequest[]>;
    approveGroupMembershipRequests(groupId: string, participants?: string[]): Promise<ParticipantOperationResult[]>;
    rejectGroupMembershipRequests(groupId: string, participants?: string[]): Promise<ParticipantOperationResult[]>;
    private runMembershipRequestAction;
}
