import * as libphonenumber_js from 'libphonenumber-js';
import { z } from 'zod';

declare const GroupResponseSchema: z.ZodObject<{
    id: z.ZodString;
    subject: z.ZodString;
    subjectOwner: z.ZodString;
    subjectTime: z.ZodDate;
    pictureUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    size: z.ZodNumber;
    creation: z.ZodDate;
    owner: z.ZodString;
    restrict: z.ZodBoolean;
    announce: z.ZodBoolean;
}, "strip", z.ZodTypeAny, {
    id: string;
    subject: string;
    subjectOwner: string;
    subjectTime: Date;
    size: number;
    creation: Date;
    owner: string;
    restrict: boolean;
    announce: boolean;
    pictureUrl?: string | null | undefined;
}, {
    id: string;
    subject: string;
    subjectOwner: string;
    subjectTime: Date;
    size: number;
    creation: Date;
    owner: string;
    restrict: boolean;
    announce: boolean;
    pictureUrl?: string | null | undefined;
}>;
declare const ParticipantResponseSchema: z.ZodObject<{
    id: z.ZodString;
    admin: z.ZodOptional<z.ZodNullable<z.ZodEnum<["admin", "superadmin"]>>>;
}, "strip", z.ZodTypeAny, {
    id: string;
    admin?: "admin" | "superadmin" | null | undefined;
}, {
    id: string;
    admin?: "admin" | "superadmin" | null | undefined;
}>;
declare const GroupWithParticipantsResponseSchema: z.ZodObject<{
    id: z.ZodString;
    subject: z.ZodString;
    subjectOwner: z.ZodString;
    subjectTime: z.ZodDate;
    pictureUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    size: z.ZodNumber;
    creation: z.ZodDate;
    owner: z.ZodString;
    restrict: z.ZodBoolean;
    announce: z.ZodBoolean;
} & {
    participants: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        admin: z.ZodOptional<z.ZodNullable<z.ZodEnum<["admin", "superadmin"]>>>;
    }, "strip", z.ZodTypeAny, {
        id: string;
        admin?: "admin" | "superadmin" | null | undefined;
    }, {
        id: string;
        admin?: "admin" | "superadmin" | null | undefined;
    }>, "many">;
}, "strip", z.ZodTypeAny, {
    id: string;
    subject: string;
    subjectOwner: string;
    subjectTime: Date;
    size: number;
    creation: Date;
    owner: string;
    restrict: boolean;
    announce: boolean;
    participants: {
        id: string;
        admin?: "admin" | "superadmin" | null | undefined;
    }[];
    pictureUrl?: string | null | undefined;
}, {
    id: string;
    subject: string;
    subjectOwner: string;
    subjectTime: Date;
    size: number;
    creation: Date;
    owner: string;
    restrict: boolean;
    announce: boolean;
    participants: {
        id: string;
        admin?: "admin" | "superadmin" | null | undefined;
    }[];
    pictureUrl?: string | null | undefined;
}>;
declare const GroupResponseSchemaTransform: (group: z.infer<typeof GroupResponseSchema>) => {
    jid: `${string}@g.us`;
    name: string;
    pictureUrl: string | undefined;
    size: number;
    subject: {
        owner: `${string}@s.whatsapp.net`;
        time: Date;
    };
    owner: {
        jid: `${string}@s.whatsapp.net`;
        phoneNumber: libphonenumber_js.E164Number;
    };
    createdAt: Date;
    restrict: boolean;
    announce: boolean;
};
declare const ParticipantResponseSchemaTransform: (participant: z.infer<typeof ParticipantResponseSchema>) => {
    id: string;
    role: "admin" | "superadmin" | "member";
};
declare const GroupWithParticipantsResponseSchemaTransform: (group: z.infer<typeof GroupWithParticipantsResponseSchema>) => {
    participants: {
        id: string;
        role: "admin" | "superadmin" | "member";
    }[];
    jid: `${string}@g.us`;
    name: string;
    pictureUrl: string | undefined;
    size: number;
    subject: {
        owner: `${string}@s.whatsapp.net`;
        time: Date;
    };
    owner: {
        jid: `${string}@s.whatsapp.net`;
        phoneNumber: libphonenumber_js.E164Number;
    };
    createdAt: Date;
    restrict: boolean;
    announce: boolean;
};
type GroupResponse = z.infer<typeof GroupResponseSchema>;
type ParticipantResponse = z.infer<typeof ParticipantResponseSchema>;
type GroupWithParticipantsResponse = z.infer<typeof GroupWithParticipantsResponseSchema>;

export { type GroupResponse, GroupResponseSchema, GroupResponseSchemaTransform, type GroupWithParticipantsResponse, GroupWithParticipantsResponseSchema, GroupWithParticipantsResponseSchemaTransform, type ParticipantResponse, ParticipantResponseSchema, ParticipantResponseSchemaTransform };
