# Explicit minimal list of Mule class name prefixes that runtime code can serialize. Fixed at
# build time - changes require editing this file and rebuild. Add classes incrementally with
# justification when test failures reveal they are needed.
#
# Matching (see DefaultSerializationAllowlist#isAllowed) is exact-only, never a startsWith or
# '$'-boundary match. An entry does NOT implicitly allow its inner/nested classes: each nested or
# inner class that must be serializable (e.g. the Message implementation below) is listed as its
# own explicit full-name line.
#
# Only full-line '#' comments are supported - inline/trailing comments are NOT stripped and
# would be stored verbatim as part of the class name, silently never matching anything.

# Message object graph
org.mule.runtime.core.internal.message.DefaultMessageBuilder$MessageImplementation
org.mule.runtime.core.internal.message.ErrorBuilder$DeserializableErrorImplementation
org.mule.runtime.api.metadata.TypedValue
org.mule.runtime.api.metadata.MediaType
org.mule.runtime.api.metadata.DataType
org.mule.runtime.api.metadata.DataType$DynamicDelegateDataType
org.mule.runtime.api.metadata.DataType$DynamicCollectionDelegateDataType
org.mule.runtime.api.metadata.DataType$DynamicMapDelegateDataType
org.mule.runtime.core.privileged.metadata.SimpleDataType
org.mule.runtime.core.privileged.metadata.DefaultCollectionDataType
org.mule.runtime.core.privileged.metadata.DefaultMapDataType
org.mule.runtime.core.privileged.metadata.DefaultFunctionDataType
org.mule.runtime.dsl.api.component.config.DefaultComponentLocation
org.mule.runtime.dsl.api.component.config.DefaultComponentLocation$DefaultLocationPart
# Package-private class, referenced by string literal
org.mule.runtime.api.component.DefaultTypedComponentIdentifier
org.mule.runtime.api.component.DefaultComponentIdentifier
org.mule.runtime.api.util.LazyValue

# Classes with a registered custom Kryo Serializer
org.mule.runtime.core.internal.util.CopyOnWriteCaseInsensitiveMap
org.mule.runtime.api.util.CaseInsensitiveMapWrapper
org.mule.runtime.core.internal.util.CaseInsensitiveHashMap
org.mule.runtime.core.internal.util.CaseInsensitiveHashMap$ImmutableCaseInsensitiveHashMap
org.mule.runtime.api.util.collection.SmallMap
org.mule.runtime.api.util.MultiMap
org.mule.runtime.api.util.MultiMap$ImmutableMultiMap
org.mule.runtime.api.util.MultiMap$UnmodifiableMultiMap
org.mule.runtime.api.functional.Either
org.mule.runtime.api.util.SerializableLazyValue
org.mule.runtime.api.bulk.BulkOperationResult
org.mule.runtime.api.bulk.BulkItem
org.mule.runtime.core.internal.processor.IdempotentRedeliveryPolicy$RedeliveryCounter
org.mule.runtime.core.internal.util.store.MonitoredObjectStoreWrapper$StoredObject
org.mule.runtime.core.internal.util.store.PersistentObjectStorePartition$StoreValue
org.mule.runtime.extension.api.runtime.operation.Result

# Concrete streaming cursor implementations backing the registered
# CursorStreamProvider/CursorIteratorProvider serializers
org.mule.runtime.core.internal.streaming.bytes.ByteArrayCursorStream
org.mule.runtime.core.internal.streaming.bytes.ManagedCursorStreamProvider
org.mule.runtime.core.internal.streaming.object.Bucket
org.mule.runtime.core.internal.streaming.object.ManagedCursorIteratorProvider
org.mule.runtime.core.internal.streaming.object.ListCursorIteratorProvider

# The CursorIteratorProvider interface itself: SimpleDataTypeKryoSerializer writes the
# DataType's raw Class (via Kryo#writeClass) when a payload's declared type is this interface
org.mule.runtime.api.streaming.object.CursorIteratorProvider

# TimestampWrapper: internal java.sql.Timestamp wrapper used by
# DefaultSerializationMapper before Kryo ever sees it
com.mulesoft.mule.runtime.module.serialization.kryo.internal.mapper.DefaultSerializationMapper$TimestampWrapper

# Batch job persistence (no compile dependency on the batch module)
com.mulesoft.mule.runtime.module.batch.internal.DefaultBatchJobInstance
com.mulesoft.mule.runtime.module.batch.internal.DefaultBatchStepErrorSummary
com.mulesoft.mule.runtime.module.batch.privileged.ImmutableBatchStepErrorSummary
com.mulesoft.mule.runtime.module.batch.internal.ImmutableBatchJobInstance
com.mulesoft.mule.runtime.module.batch.privileged.ImmutableBatchJobInstance
com.mulesoft.mule.runtime.module.batch.BatchEvent
com.mulesoft.mule.runtime.module.batch.BatchEventWithSecurity
com.mulesoft.mule.runtime.module.batch.BatchEventWithSpan
com.mulesoft.mule.runtime.module.batch.internal.DefaultBatchJobResult
com.mulesoft.mule.runtime.module.batch.privileged.ImmutableBatchJobResult
com.mulesoft.mule.runtime.module.batch.internal.ImmutableBatchJobResult
com.mulesoft.mule.runtime.module.batch.internal.DefaultBatchStepResult
com.mulesoft.mule.runtime.module.batch.privileged.ImmutableBatchStepResult
com.mulesoft.mule.runtime.module.batch.internal.ImmutableBatchStepResult
com.mulesoft.mule.runtime.module.batch.api.record.Record
com.mulesoft.mule.runtime.module.batch.internal.error.DefaultBatchError
# ErrorType implementation from mule-artifact-ast, used as a field of DefaultBatchError
# and as a Map key in (Default|Immutable)BatchStepErrorSummary
org.mule.runtime.ast.privileged.error.DefaultErrorType

### External Classes ###
# These remain available strictly as a temporary measure until external teams resolve the serialization issue

# CH1.0 Persistent Queues functionality wraps batch records for SQS in a MessageHolder
com.mulesoft.cloudhub.extensions.sqs.SQSQueueManagementService$MessageHolder
