import type { GuildConfigManager as IGuildConfigManager, StarboardOptions, Snowflake } from '../types';
import { Logger } from '../utils/Logger';
/**
 * Manages per-guild configuration for the Starboard system.
 * Allows different servers to have different starboard settings.
 */
export declare class GuildConfigManager implements IGuildConfigManager {
    private readonly configs;
    private readonly defaultOptions;
    private readonly logger;
    constructor(defaultOptions: StarboardOptions, logger: Logger);
    /**
     * Set or update configuration for a specific guild.
     * Merges with existing config if present, otherwise uses defaults.
     */
    setGuildConfig(guildId: Snowflake, options: Partial<StarboardOptions>): void;
    /**
     * Get configuration for a specific guild.
     * Returns guild-specific config if set, otherwise default options.
     */
    getGuildConfig(guildId: Snowflake): StarboardOptions;
    /**
     * Check if a guild has custom configuration.
     */
    hasGuildConfig(guildId: Snowflake): boolean;
    /**
     * Remove custom configuration for a guild.
     * The guild will fall back to default options.
     */
    removeGuildConfig(guildId: Snowflake): boolean;
    /**
     * Get the default options.
     */
    getDefaultOptions(): StarboardOptions;
    /**
     * Update the default options.
     * Affects all guilds without custom configuration.
     */
    setDefaultOptions(options: Partial<StarboardOptions>): void;
    /**
     * Get all guilds with custom configuration.
     */
    getConfiguredGuilds(): Snowflake[];
    /**
     * Get total number of configured guilds.
     */
    getConfiguredGuildCount(): number;
    /**
     * Clear all guild-specific configurations.
     */
    clearAllConfigs(): void;
}
//# sourceMappingURL=GuildConfigManager.d.ts.map