import { Repository } from 'typeorm';
import { UpdateSettingDto } from './dto/update-setting.dto';
import { UpdateUserSettingDto } from './dto/update-user-setting.dto';
import { Setting } from './entity/setting.entity';
import { UserSetting } from './entity/user-setting.entity';
export declare class SettingsService {
    private readonly settingRepository;
    private readonly userSettingRepository;
    private readonly logger;
    constructor(settingRepository: Repository<Setting>, userSettingRepository: Repository<UserSetting>);
    /**
     * Gets a limit for a specific user, checking for overrides before defaults.
     * Priority Order:
     * 1. User-specific setting (from `user_settings` table).
     * 2. Global setting (from `app_settings` table).
     * 3. Hardcoded default value provided in the call.
     */
    getLimitForUser<T extends number>(userId: number, key: string, defaultValue: T): Promise<T>;
    /**
     * Creates or updates a GLOBAL application setting.
     */
    updateGlobalSetting(updateSettingDto: UpdateSettingDto): Promise<Setting>;
    /**
     * Creates or updates a USER-SPECIFIC setting override.
     */
    updateUserSetting(updateUserSettingDto: UpdateUserSettingDto): Promise<UserSetting>;
    /**
     * Retrieves all GLOBAL settings.
     */
    getAllGlobalSettings(): Promise<Setting[]>;
    /**
     * Retrieves all settings for a specific user.
     */
    getSettingsForUser(userId: number): Promise<UserSetting[]>;
    /**
   * Retrieves all settings (both global and user-specific) in a structured format.
   */
    getAllSettings(): Promise<{
        globalSettings: Setting[];
        userSettings: UserSetting[];
    }>;
    getSettingKeyName(): string[];
}
