import type { BoundedFixture } from "./types.js";

export const consumptionKnownBad: BoundedFixture = {
  fixtureId: "bounded/consumption-known-bad",
  boundedVersion: "1.0",
  scenarios: [
    {
      scenarioId: "oversized-streamed-body",
      kind: "consumption-limit",
      observations: [
        {
          dimension: "body-bytes",
          declaredLimit: 1_048_576,
          peakObserved: 4_194_304,
          limitEnforcedDuringConsumption: false,
          rejectedAtConsumption: false,
          typedTerminalFailure: {
            type: "BodyTooLarge",
            observed: false,
          },
        },
      ],
    },
    {
      scenarioId: "post-buffer-nesting-depth",
      kind: "consumption-limit",
      observations: [
        {
          dimension: "nesting-depth",
          declaredLimit: 32,
          peakObserved: 128,
          limitEnforcedDuringConsumption: false,
          rejectedAtConsumption: false,
          typedTerminalFailure: {
            type: "NestingDepthExceeded",
            observed: false,
          },
        },
      ],
    },
    {
      scenarioId: "decompressed-size-post-check",
      kind: "consumption-limit",
      observations: [
        {
          dimension: "decompressed-size",
          declaredLimit: 8_388_608,
          peakObserved: 33_554_432,
          limitEnforcedDuringConsumption: false,
          rejectedAtConsumption: false,
          typedTerminalFailure: {
            type: "DecompressedSizeExceeded",
            observed: false,
          },
        },
      ],
    },
    {
      scenarioId: "unbounded-fan-out",
      kind: "consumption-limit",
      observations: [
        {
          dimension: "fan-out",
          declaredLimit: 16,
          peakObserved: 256,
          limitEnforcedDuringConsumption: false,
          rejectedAtConsumption: false,
          typedTerminalFailure: {
            type: "FanOutLimitExceeded",
            observed: false,
          },
        },
      ],
    },
    {
      scenarioId: "item-count-after-buffering",
      kind: "consumption-limit",
      observations: [
        {
          dimension: "item-count",
          declaredLimit: 1_000,
          peakObserved: 5_000,
          limitEnforcedDuringConsumption: false,
          rejectedAtConsumption: false,
        },
      ],
    },
    {
      scenarioId: "stream-duration-post-buffer",
      kind: "consumption-limit",
      observations: [
        {
          dimension: "stream-duration",
          declaredLimit: 30_000,
          peakObserved: 120_000,
          limitEnforcedDuringConsumption: false,
          rejectedAtConsumption: false,
          typedTerminalFailure: {
            type: "StreamDurationExceeded",
            observed: false,
          },
        },
      ],
    },
  ],
};
