use serde::{Deserialize, Deserializer, Serialize};
use sha2::{Digest, Sha256};
use std::collections::{BTreeMap, BTreeSet};
use std::ops::Range;
use super::{
AliasPolicy, AttributeId, BlockedTensorPadding, BufferRequest, BufferUsage, CapabilityCatalog,
CapabilityId, ContractVersion, DeviceDescriptor, DeviceId, DimensionConstraint,
DynamicStorageAllocator, DynamicStorageProfile, DynamicStorageRequirement, DynamicStorageView,
ElementType, LayoutConstraint, ModelFamilyId, NodeId, OperationDescriptor, OperationId,
OperationPlanningHandle, OperationPlanningRegistry, OperationProviderDescriptor,
OperationRegistryAuthority, OperationResourceEstimate, OperationResourceEstimateRequest,
PlanId, PreparedModelFamily, ProgramNode, ProgramNodeWorkSpec, ProgramTensorSpec,
ProgramValueId, ProviderCompatibilityRejectReason, ProviderCompatibilityRequest, ProviderId,
QuantizationFormatId, ResolvedStorageComponent, ResolvedTensorLayout, ResolvedTensorSpec,
ResolvedValueBinding, ResolvedValueRole, ResolvedValueStorage, ResolvedWeightBinding,
ResourceId, SemanticValue, StateCapacityDemand, StateId, StateInitialization, StateLifetime,
StrideConstraint, TensorAccess, TensorContract, VNextError, WeightFormatId, WeightId,
WeightMaterializerId, WeightSchema,
};
mod foundation;
use foundation::*;
mod attribution;
pub use attribution::*;
mod binding;
pub(crate) use binding::*;
mod weight;
pub use weight::*;
mod work;
pub use work::*;
mod reusable;
pub use reusable::*;
mod workspace;
pub use workspace::*;
mod provider_resource;
pub use provider_resource::*;
mod contracts;
pub use contracts::*;
mod storage;
pub use storage::*;
mod allocation;
pub use allocation::*;
mod solver;
use solver::*;
mod memory;
pub use memory::*;
mod provider;
pub use provider::*;
mod policy;
pub use policy::*;
mod plan;
pub use plan::*;
mod resolution;
mod validation;
mod planner;
pub use planner::*;
mod compiler;
pub use compiler::*;
mod checkpoint;
pub use checkpoint::*;
mod determinism;
pub use determinism::*;
mod determinism_coverage;
pub use determinism_coverage::*;
#[cfg(test)]
#[path = "execution/tests.rs"]
mod tests;