// AUTO-GENERATED from gstack/ios-qa/templates/StateAccessor.swift.template
// Regenerated by `swift run gen-accessors`. DO NOT EDIT.
//
// This file is a TEMPLATE that gen-accessors-tool fills in. The placeholders
// are filled per-class from swift-syntax AST inspection of the app's
// @Observable types. Only properties marked with @Snapshotable are emitted.
//
// {{CLASS_NAME}} — the canonical AppState struct name
// {{APP_BUILD_ID}} — bundle short version + git SHA at codegen time
// {{ACCESSOR_HASH}} — sha256 of accessor signatures (snapshot schema fingerprint)
// {{ACCESSORS}} — generated register/read/write blocks per @Snapshotable field

#if DEBUG

import Foundation

@MainActor
public enum {{CLASS_NAME}}Accessor {

    public static func register(_ state: {{CLASS_NAME}}) {
        StateServer.shared.register(
            buildId: "{{APP_BUILD_ID}}",
            accessorHash: "{{ACCESSOR_HASH}}",
            atomicRestore: { keys in
                // Validate every key + type FIRST, then apply in one struct
                // assignment so SwiftUI observers see exactly one change.
                var snapshot = state.snapshotable
{{VALIDATION_BLOCK}}
                // Apply atomically.
                state.snapshotable = snapshot
                return .ok
            }
        )
{{REGISTER_BLOCK}}
    }
}

#endif // DEBUG
