emit:
  - "@typra/emitter"
options:
  "@typra/emitter":
    emitter-output-dir: "{cwd}/generated/fixtures"
    root-object: "Typra.Fixtures.FixtureRoot"
    deterministic-output: true
    emit-targets:
      - type: TypeScript
        output-dir: "generated/fixtures/typescript"
        test-dir: "generated/fixtures/typescript/tests"
        import-path: "../index"
        format: false
        protocol-scaffolds: "compile-only"
      - type: TypeScript
        output-dir: "generated/fixtures/typescript-zod"
        test-dir: "generated/fixtures/typescript-zod/tests"
        import-path: "../index"
        format: false
        native-serialization: "zod"
        protocol-scaffolds: "compile-only"
      - type: Python
        output-dir: "generated/fixtures/python"
        test-dir: "generated/fixtures/python/tests"
        import-path: "fixtures"
        format: false
        protocol-scaffolds: "compile-only"
        cancellation-token-path: "threading.Event"
      - type: Python
        output-dir: "generated/fixtures/python_pydantic"
        test-dir: "generated/fixtures/python_pydantic/tests"
        import-path: "fixtures_pydantic"
        format: false
        protocol-scaffolds: "compile-only"
        native-serialization: "pydantic"
        cancellation-token-path: "threading.Event"
      - type: Go
        output-dir: "generated/fixtures/go"
        test-dir: "generated/fixtures/go/tests"
        import-path: "fixtures"
        package-name: "fixtures"
        # format:false: the emitter's native Go output is gofmt+goimports-idempotent (the
        # deterministic reflow in languages/go/go-format.ts reproduces gofmt's indentation, tabwriter
        # alignment, blank-line collapsing, and composite tightening), so the external formatter is a
        # no-op. Locked by the idempotency guard (#238).
        format: false
        protocol-scaffolds: "compile-only"
        # Module-relative so the emitted `vectoradapters "fixtures/vectoradapters"`
        # import resolves inside the `module fixtures` test module. The reference
        # package is placed at generated/fixtures/go/vectoradapters by
        # validate-fixtures. See fixtures/integration/vector-adapters.
        vector-adapter-path: "fixtures/vectoradapters"
      - type: Java
        output-dir: "generated/fixtures/java"
        test-dir: "generated/fixtures/java/tests"
        package-name: "typra.fixtures"
        format: false
        protocol-scaffolds: "compile-only"
      - type: Java
        output-dir: "generated/fixtures/java-jackson"
        test-dir: "generated/fixtures/java-jackson/tests"
        package-name: "typra.fixtures"
        format: false
        protocol-scaffolds: "compile-only"
        native-serialization: "jackson"
      - type: CSharp
        output-dir: "generated/fixtures/csharp"
        test-dir: "generated/fixtures/csharp/tests"
        namespace: "Typra.Fixtures"
        format: false
        protocol-scaffolds: "compile-only"
      - type: Rust
        output-dir: "generated/fixtures/rust"
        test-dir: "generated/fixtures/rust/tests"
        import-path: "fixtures::model"
        enum-parsing: "case-insensitive"
        format: false
        protocol-scaffolds: "compile-only"
        cancellation-token-path: "std::sync::atomic::AtomicBool"
      - type: Rust
        output-dir: "generated/fixtures/rust-serde"
        test-dir: "generated/fixtures/rust-serde/tests"
        import-path: "fixtures_serde::model"
        enum-parsing: "case-insensitive"
        format: false
        protocol-scaffolds: "compile-only"
        native-serialization: "serde"
        cancellation-token-path: "std::sync::atomic::AtomicBool"
      - type: Swift
        output-dir: "generated/fixtures/swift"
        test-dir: "generated/fixtures/swift/Tests/TypraFixturesTests"
        package-name: "TypraFixtures"
        format: false
        protocol-scaffolds: "compile-only"
      - type: Swift
        output-dir: "generated/fixtures/swift-codable"
        test-dir: "generated/fixtures/swift-codable/Tests/TypraFixturesTests"
        package-name: "TypraFixtures"
        format: false
        protocol-scaffolds: "compile-only"
        native-serialization: "codable"
      - type: Markdown
        output-dir: "generated/fixtures/markdown"
        format: false
