// Copyright 2026 International Digital Economy Academy
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
///|
using @ir {
type AddressSpace,
type ArraySize,
type AtomicFunction,
type Barrier,
type BinaryOperator,
type Binding,
type Block,
type BuiltIn,
type CollectiveOperation,
type ConservativeDepth,
type Constant,
type ConstantArena,
type CooperativeData,
type CooperativeRole,
type CooperativeSize,
type DerivativeAxis,
type DerivativeControl,
type DiagnosticFilter,
type DiagnosticFilterArena,
type DiagnosticFilterNode,
type Direction,
type DocComments,
type EarlyDepthTest,
type EntryPoint,
type Expression,
type ExpressionArena,
type ExpressionOrigin,
type FilterableTriggeringRule,
type Function,
type FunctionArena,
type FunctionArgument,
type FunctionResult,
type GatherMode,
type GlobalVariable,
type GlobalVariableArena,
type Handle,
type HandleRange,
type ImageClass,
type ImageDimension,
type ImageQuery,
type Interpolation,
type Literal,
type LocalVariable,
type LocalVariableArena,
type LocalVariableKind,
type MathFunction,
type MemoryDecorations,
type MeshOutputTopology,
type MeshStageInfo,
type Module,
type NamedExpression,
type Override,
type OverrideArena,
type PredeclaredType,
type RayFlag,
type RayPipelineFunction,
type RayQueryFunction,
type RayQueryIntersection,
type RelationalFunction,
type ResourceBinding,
type SampleLevel,
type Sampling,
type Scalar,
type ScalarKind,
type Severity,
type ShaderStage,
type SpecialTypes,
type StandardFilterableTriggeringRule,
type Statement,
type StorageAccess,
type StorageFormat,
type StructMember,
type SubgroupFunction,
type SubgroupOperation,
type SwitchCase,
type SwitchCaseLabelStyle,
type SwitchValue,
type SwizzleComponent,
type Type,
type TypeArena,
type TypeInner,
type UnaryOperator,
type VectorSize,
type WgslIrLowerError,
type WgslIrReachability,
type WgslIrTypeInference,
type WgslIrTypeSpelling,
type WgslIrValidationError,
build_wgsl_ir_reachability,
parse_wgsl_module_to_ir,
sanitize_wgsl_ir_identifier,
validate_wgsl_ir_module,
wgsl_ir_binary_operator_is_comparison,
wgsl_ir_block_ends_with_return,
wgsl_ir_cooperative_role_name,
wgsl_ir_cooperative_size_name,
wgsl_ir_function_expression_is_atomic_compare_exchange_projection_role,
wgsl_ir_function_named_expression_name,
wgsl_ir_function_named_expression_type,
wgsl_ir_identifier_ends_with_digit,
wgsl_ir_identifier_is_builtin_function,
wgsl_ir_identifier_is_reserved,
wgsl_ir_math_primary_result_operand,
wgsl_ir_negate_literal,
wgsl_ir_semantic_source_directives,
wgsl_ir_storage_format_name,
wgsl_ir_subgroup_function_name,
wgsl_ir_uint_literal_to_small_int,
}