import { AccountEntrypointType, EntrypointOverrideActionParameters, RulesetPhaseType } from './phases/utils'; import { ElementType } from './account'; import { CustomActionParameters, CustomRuleset } from './phases/http_request_firewall_custom'; import { RateLimitRuleset } from './phases/http_ratelimit'; import { AccountRedirectRuleset, RedirectActionParameters } from './phases/http_request_redirect'; import { ActionParameterSkip, ManagedRule, ManagedRuleset } from './phases/http_request_firewall_managed'; import { MagicTransitRuleset } from './phases/magic_transit'; import { AccountMagicIdsRuleset } from './phases/magic_transit_ids_managed'; import { DDoSl4Ruleset } from './phases/ddos_l4'; import { MagicManagedRuleset } from './phases/magic_transit_managed'; import { Actions, RulesetPhase } from './phases/fields'; import { MagicTransitRateLimitRuleset } from './phases/magic_transit_ratelimit'; // Generics export type GenericRuleset = | RulesetPhaseType | CustomRuleset | RateLimitRuleset | ManagedRuleset | AccountMagicIdsRuleset | MagicTransitRuleset | MagicTransitRateLimitRuleset | MagicManagedRuleset | DDoSl4Ruleset | AccountRedirectRuleset; export type AccountRulesetByPhase< PhaseType = RulesetPhase, ActionParameter = EntrypointOverrideActionParameters > = RulesetPhaseType; export type AccountRulesetsByPhase = { [RulesetPhase.HttpRequestFirewallCustom]: AccountRulesetByPhase< RulesetPhase.HttpRequestFirewallCustom, CustomActionParameters >; [RulesetPhase.HttpRateLimit]: AccountRulesetByPhase< RulesetPhase.HttpRateLimit, RateLimitRuleset >; [RulesetPhase.HttpRequestFirewallManaged]: AccountRulesetByPhase< RulesetPhase.HttpRequestFirewallManaged, ManagedRuleset >; [RulesetPhase.HttpRequestRedirect]: AccountRulesetByPhase< RulesetPhase.HttpRequestRedirect, RedirectActionParameters >; [RulesetPhase.MagicManaged]: AccountRulesetByPhase< RulesetPhase.MagicManaged, MagicManagedRuleset >; [RulesetPhase.MagicTransit]: AccountRulesetByPhase< RulesetPhase.MagicTransit, MagicTransitRuleset >; [RulesetPhase.MagicTransitRateLimit]: AccountRulesetByPhase< RulesetPhase.MagicTransitRateLimit, MagicTransitRateLimitRuleset >; [RulesetPhase.MagicIDS]: AccountRulesetByPhase; }; export type RulesetPhaseKeyType = keyof AccountRulesetsEntrypointByPhase; export type RuleByPhase = ElementType< AccountRulesetsByPhase[Phase]['rules'] >; export type AccountRulesetsEntrypointByPhase = { [RulesetPhase.HttpRequestFirewallCustom]: AccountEntrypointType< RulesetPhase.HttpRequestFirewallCustom, CustomActionParameters >; [RulesetPhase.HttpRateLimit]: AccountEntrypointType; [RulesetPhase.HttpRequestFirewallManaged]: AccountEntrypointType< RulesetPhase.HttpRequestFirewallManaged, ActionParameterSkip, Actions.Skip | Actions.Execute, ManagedRule >; [RulesetPhase.HttpRequestRedirect]: AccountEntrypointType; [RulesetPhase.MagicManaged]: AccountEntrypointType; [RulesetPhase.MagicTransit]: AccountEntrypointType; [RulesetPhase.MagicTransitRateLimit]: AccountEntrypointType; [RulesetPhase.MagicIDS]: AccountEntrypointType; }; export type GenericRule = ElementType & { enabled: boolean; label?: string; }; export type WafRulesets = CustomRuleset | RateLimitRuleset | ManagedRuleset; export type WafRule = ElementType;