import { type TemplateResult, type PropertyValues, nothing } from 'lit';
import { ApiEditor } from './ApiEditor.js';
import type { ApiModel, RateLimitRule } from '@api-client/core/browser.js';
import type { ApiModelAccessTarget, ApiModelOperationName } from '../types.js';
/**
 * An editor for configuring rate limiting settings at the API, endpoint, or action level.
 *
 * This editor writes directly into the provided model (no separate dirty buffer).
 */
export default class ApiModelingRateLimiting extends ApiEditor {
    /**
     * The operation name when editing action-level limits.
     * Ignored when target is 'api' or 'endpoint'.
     * @attribute
     */
    accessor operation: ApiModelOperationName | undefined;
    /**
     * The target scope where limits are applied: api | endpoint | action.
     * @attribute
     */
    accessor target: ApiModelAccessTarget | undefined;
    /**
     * The editable list of rules. This is a direct reference when available.
     */
    accessor rules: RateLimitRule[];
    constructor();
    protected willUpdate(cp: PropertyValues<this>): void;
    protected resetModel(): void;
    protected setupModel(model?: ApiModel, domainKey?: string): void | Promise<void>;
    /**
     * Reads rules from the model for the given scope.
     */
    protected readRules(model: ApiModel, target: ApiModelAccessTarget, domainKey?: string, operation?: ApiModelOperationName): RateLimitRule[] | undefined;
    /**
     * Synchronizes the current rules array into the model at the proper scope.
     */
    protected synchronizeModel(): void;
    /**
     * Adds a new rule with sensible defaults.
     */
    addRule(): void;
    deleteRule(index: number): void;
    protected handleAddRuleClick(): void;
    protected handleDeleteRuleClick(e: Event): void;
    protected handleDescriptionChange(e: Event): void;
    protected handleKeyTypeChange(e: CustomEvent<{
        value: string;
    }>): void;
    protected handleRoleValueChange(e: Event): void;
    protected handleRateChange(e: Event): void;
    protected handleIntervalChange(e: CustomEvent<{
        value: string;
    }>): void;
    protected handleBurstChange(e: Event): void;
    protected render(): TemplateResult | typeof nothing;
    protected renderRules(): TemplateResult | typeof nothing;
    protected renderRule(rule: RateLimitRule, index: number): TemplateResult;
}
//# sourceMappingURL=ApiModelingRateLimiting.d.ts.map