import { AddConfig, AddConfigGroup, Config, ConfigGroup, UpdateConfig, UpdateConfigGroup } from '../models/configurations';
import { BaseService } from './base';
/**
 * Service class for managing TestRail configurations and configuration groups.
 * Configurations are used to define different test environments or variations for test plans.
 */
export declare class ConfigurationService extends BaseService {
    /**
     * Returns a list of available configurations, grouped by configuration groups.
     *
     * API Path: GET index.php?/api/v2/get_configs/:project_id
     *
     * @param projectId The ID of the project
     * @returns An array of configuration groups, each containing a list of configurations
     * @throws {Error} 400 - Invalid or unknown project
     * @throws {Error} 403 - No access to the project
     */
    getConfigs(projectId: number): Promise<ConfigGroup[]>;
    /**
     * Creates a new configuration group.
     *
     * API Path: POST index.php?/api/v2/add_config_group/:project_id
     *
     * @param projectId The ID of the project the configuration group should be added to
     * @param group The configuration group to add (requires name property)
     * @returns The created configuration group
     * @throws {Error} 400 - Invalid or unknown project
     * @throws {Error} 403 - No permissions to add configuration groups or no access to the project
     */
    addConfigGroup(projectId: number, group: AddConfigGroup): Promise<ConfigGroup>;
    /**
     * Creates a new configuration within a configuration group.
     *
     * API Path: POST index.php?/api/v2/add_config/:config_group_id
     *
     * @param configGroupId The ID of the configuration group the configuration should be added to
     * @param config The configuration to add (requires name property)
     * @returns The created configuration
     * @throws {Error} 400 - Invalid or unknown configuration group
     * @throws {Error} 403 - No permissions to add configurations or no access to the project
     */
    addConfig(configGroupId: number, config: AddConfig): Promise<Config>;
    /**
     * Updates an existing configuration group.
     *
     * API Path: POST index.php?/api/v2/update_config_group/:config_group_id
     *
     * @param configGroupId The ID of the configuration group
     * @param group The configuration group updates (name property)
     * @returns The updated configuration group
     * @throws {Error} 400 - Invalid or unknown configuration group
     * @throws {Error} 403 - No permissions to modify configuration groups or no access to the project
     */
    updateConfigGroup(configGroupId: number, group: UpdateConfigGroup): Promise<ConfigGroup>;
    /**
     * Updates an existing configuration.
     *
     * API Path: POST index.php?/api/v2/update_config/:config_id
     *
     * @param configId The ID of the configuration
     * @param config The configuration updates (name property)
     * @returns The updated configuration
     * @throws {Error} 400 - Invalid or unknown configuration
     * @throws {Error} 403 - No permissions to modify configurations or no access to the project
     */
    updateConfig(configId: number, config: UpdateConfig): Promise<Config>;
    /**
     * Deletes an existing configuration group and its configurations.
     * Warning: This operation cannot be undone and permanently deletes all configurations in this group.
     * Note: It does not affect closed test plans/runs, or active test plans/runs unless they are updated.
     *
     * API Path: POST index.php?/api/v2/delete_config_group/:config_group_id
     *
     * @param configGroupId The ID of the configuration group
     * @throws {Error} 400 - Invalid or unknown configuration group
     * @throws {Error} 403 - No permissions to delete configuration groups or no access to the project
     */
    deleteConfigGroup(configGroupId: number): Promise<void>;
    /**
     * Deletes an existing configuration.
     * Warning: This operation cannot be undone.
     * Note: It does not affect closed test plans/runs, or active test plans/runs unless they are updated.
     *
     * API Path: POST index.php?/api/v2/delete_config/:config_id
     *
     * @param configId The ID of the configuration
     * @throws {Error} 400 - Invalid or unknown configuration
     * @throws {Error} 403 - No permissions to delete configurations or no access to the project
     */
    deleteConfig(configId: number): Promise<void>;
}
