import { GuildMember } from "./guild-member.js";
import type { Channel } from "./channel.js";
import type { Guild as LilyGuild, DefaultMessageNotificationLevel, ExplicitContentFilterLevel, PresenceUpdateEventFields, VerificationLevel, GuildNSFWLevel, PremiumTier, MFALevel, Locale, Client, Role, Emoji, Sticker, Voice, StageInstance } from "lilybird";
export declare function guildFactory(client: Client, guild: LilyGuild.New): NewGuild;
export declare function guildFactory(client: Client, guild: LilyGuild.UnavailableStructure): LilyGuild.UnavailableStructure;
export declare function guildFactory(client: Client, guild: LilyGuild.Structure): Guild;
export declare function guildFactory(client: Client, guild: LilyGuild.UnavailableStructure | LilyGuild.New): LilyGuild.UnavailableStructure | NewGuild;
export declare class Guild {
    readonly id: string;
    readonly name: string;
    readonly icon: string | null;
    readonly iconHash: string | undefined | null;
    readonly splash: string | null;
    readonly discoverySplash: string | null;
    readonly owner: boolean | undefined;
    readonly ownerId: string;
    readonly permissions: string | undefined;
    readonly afkChannelId: string | null;
    readonly afkTimeout: number;
    readonly widgetEnabled: boolean | undefined;
    readonly widgetChannelId: string | undefined | null;
    readonly verificationLevel: VerificationLevel;
    readonly defaultMessageNotifications: DefaultMessageNotificationLevel;
    readonly explicitContentFilter: ExplicitContentFilterLevel;
    readonly roles: Array<Role.Structure>;
    readonly emojis: Array<Emoji.Structure>;
    readonly features: Array<LilyGuild.Feature>;
    readonly mfaLevel: MFALevel;
    readonly applicationId: string | null;
    readonly systemChannelId: string | null;
    readonly systemChannelFlags: number;
    readonly rulesChannelId: string | null;
    readonly maxPresences: number | undefined | null;
    readonly maxMembers: number | undefined;
    readonly vanityUrlCode: string | null;
    readonly description: string | null;
    readonly banner: string | null;
    readonly premiumTier: PremiumTier;
    readonly premiumSubscriptionCount: number;
    readonly preferredLocale: Locale;
    readonly publicUpdatesChannelId: string | null;
    readonly maxVideoChannelUsers: number | undefined;
    readonly maxStageVideoChannelUsers: number | undefined;
    readonly approximateMemberCount: number | undefined;
    readonly approximatePresenceCount: number | undefined;
    readonly welcomeScreen: LilyGuild.WelcomeScreenStructure | undefined;
    readonly nsfwLevel: GuildNSFWLevel;
    readonly stickers: Array<Sticker.Structure>;
    readonly premiumProgressBarEnabled: boolean;
    readonly safetyAlertsChannelId: string | null;
    readonly client: Client;
    constructor(client: Client, guild: LilyGuild.Structure);
}
export declare class NewGuild extends Guild {
    readonly joinedAt: string;
    readonly large: boolean;
    readonly unavailable: boolean;
    readonly memberCount: number;
    readonly voiceStates: Array<Partial<Voice.StateStructure>>;
    readonly members: Array<GuildMember>;
    readonly channels: Array<Channel>;
    readonly threads: Array<Channel>;
    readonly presences: Array<Partial<PresenceUpdateEventFields>>;
    readonly stageInstances: Array<StageInstance.Structure>;
    readonly guildScheduledEvents: Array<LilyGuild.ScheduledEventStructure>;
    constructor(client: Client, guild: LilyGuild.New);
}
//# sourceMappingURL=guild.d.ts.map