import { IResult, IResultList, Service } from '../core/index.js';
import { FeatureToggleQueryFilter, IFeatureToggle } from './IFeatureToggle.js';
/**
 * This class allows reading a feature toggles for current tenant.
 */
export declare class FeatureService extends Service<IFeatureToggle> {
    protected baseUrl: string;
    protected listUrl: string;
    /**
     * Retrieve list of feature toggles with values for current tenant.
     *
     * **Example**
     * ```typescript
     *
     *  const filter = {
     *   pageSize: 1000,
     *   withTotalPages: true
     *  };
     *
     *   (async () => {
     *     const {data, res, paging} = await featureService.list(filter);
     *   })();
     * ```
     */
    list(filter?: FeatureToggleQueryFilter): Promise<IResultList<IFeatureToggle>>;
    /**
     * Retrieve a specific feature toggle with value for current tenant.
     *
     * **Example**
     * ```typescript
     *
     *   (async () => {
     *     const featureToggleKey = 'my-custom-feature';
     *     const {data, res} = await featureService.detail(featureToggleKey);
     *   })();
     * ```
     */
    detail(key: string): Promise<IResult<IFeatureToggle>>;
    /**
     * Retrieve the feature toggle state for the provided key grouped by tenant.
     *
     * **Example**
     * ```typescript
     *
     *   (async () => {
     *     const featureToggleKey = 'my-custom-feature';
     *     const {data, res} = await featureService.detailByTenant(featureToggleKey);
     *   })();
     * ```
     */
    detailByTenant(key: string, filter?: FeatureToggleQueryFilter): Promise<IResultList<{
        tenantId: string;
        active: boolean;
    }>>;
    /**
     * Update a specific feature toggle value for current tenant.
     *
     * **Example**
     * ```typescript
     *  (async () => {
     *     const featureToggleKey = 'my-custom-feature';
     *     const {data, res} = await featureService.updateFeature({
     *       key: featureToggleKey,
     *       active: true,
     *     });
     * ```
     */
    updateFeature(feature: Partial<Omit<IFeatureToggle, 'key'>> & Pick<IFeatureToggle, 'key'>): Promise<IResult<IFeatureToggle>>;
    /**
     * Update a specific feature toggle value for the provided tenant.
     *
     * **Example**
     * ```typescript
     *  (async () => {
     *     const featureToggleKey = 'my-custom-feature';
     *     const {data, res} = await featureService.updateFeatureByTenant({
     *       key: featureToggleKey,
     *       active: true,
     *     }, 't123456');
     * ```
     */
    updateFeatureByTenant(feature: Partial<Omit<IFeatureToggle, 'key'>> & Pick<IFeatureToggle, 'key'>, tenantId: string): Promise<IResult<IFeatureToggle>>;
    /**
     * Removes the feature toggle override for current tenant.
     *
     * Removal of the override will cause the tenant to use the feature toggle value based on the phase of the feature toggle.
     *
     * **Example**
     * ```typescript
     *  (async () => {
     *     const featureToggleKey = 'my-custom-feature';
     *     const {data, res} = await featureService.removeTenantOverride({
     *       key: featureToggleKey,
     *       active: true,
     *     });
     * ```
     */
    removeTenantOverride(feature: Partial<Omit<IFeatureToggle, 'key'>> & Pick<IFeatureToggle, 'key'>): Promise<IResult<IFeatureToggle>>;
    /**
     * Removes the feature toggle override for the provided tenant.
     *
     * Removal of the override will cause the tenant to use the feature toggle value based on the phase of the feature toggle.
     *
     * **Example**
     * ```typescript
     *  (async () => {
     *     const featureToggleKey = 'my-custom-feature';
     *     const {data, res} = await featureService.removeTenantOverrideByTenant({
     *       key: featureToggleKey,
     *       active: true,
     *     }, 't123456');
     * ```
     */
    removeTenantOverrideByTenant(feature: Partial<Omit<IFeatureToggle, 'key'>> & Pick<IFeatureToggle, 'key'>, tenantId: string): Promise<IResult<IFeatureToggle>>;
}
//# sourceMappingURL=FeatureService.d.ts.map