import { AccessRule, AccessRuleSchema } from '../rules/AccessRule.js';
import { RateLimitingConfiguration, RateLimitingConfigurationSchema } from '../rules/RateLimitingConfiguration.js';
/**
 * A base interface for common properties across all actions.
 */
export interface ActionSchema {
    /**
     * The specific kind of action (e.g., 'List', 'Read', etc.)
     */
    kind: string;
    /**
     * Access control rules defining who can perform this action. It is only applied if the
     * authorization strategy is set to 'RBAC'.
     * If no rules grant access, it's denied by default making it essentially private.
     *
     * Note, the API can defined top level access rules that apply to all actions. If this property is set,
     * it overrides the top level access rules for this specific action.
     *
     * It is an ordered list, meaning the first rule that matches the user will be applied.
     * If multiple rules match, the first one in the list takes precedence.
     * If no rules match, the action is denied.
     */
    accessRule?: AccessRuleSchema[];
    /**
     * Optional configuration for action-wide rate limiting and throttling.
     * Defines rules to protect the action from overuse.
     */
    rateLimiting?: RateLimitingConfigurationSchema;
}
/**
 * A base class for common properties across all actions.
 */
export declare class Action extends EventTarget implements ActionSchema {
    accessor kind: string;
    accessor accessRule: AccessRule[];
    accessor rateLimiting: RateLimitingConfiguration | undefined;
    constructor(state?: Partial<ActionSchema>);
    notifyChange(): void;
    toJSON(): ActionSchema;
}
//# sourceMappingURL=Action.d.ts.map