Hyperlinkv0.8.0-beta.28

QueueHyperlink

QueueHyperlink.queueSpecconstsrc/QueueHyperlink.ts:589
<
  F extends Schema.Struct.Fields,
  Success extends Schema.Top = Schema.Void,
  Error extends Schema.Top = Schema.Never
>(
  itemSchema: Schema.Struct<F>,
  wire?: { readonly success?: Success; readonly error?: Error }
): {
  add: Hyperlink.Method<
    Schema.Union<
      readonly [Schema.Struct<F>, Schema.$Array<Schema.Struct<F>>]
    >,
    Schema.Void,
    Schema.Never,
    false,
    Hyperlink.MethodAnnotations & { description: string },
    {
      (item: Hyperlink.Decoded<typeof itemSchema>): Effect.Effect<void>
      (
        items: readonly Hyperlink.Decoded<typeof itemSchema>[]
      ): Effect.Effect<void>
      (
        itemOrItems:
          | Hyperlink.Decoded<typeof itemSchema>
          | readonly Hyperlink.Decoded<typeof itemSchema>[]
      ): Effect.Effect<void>
    }
  >
  prioritize: Hyperlink.Method<
    Schema.Union<
      readonly [Schema.Struct<F>, Schema.$Array<Schema.Struct<F>>]
    >,
    Schema.Void,
    Schema.Never,
    false,
    Hyperlink.MethodAnnotations & { description: string },
    {
      (item: Hyperlink.Decoded<typeof itemSchema>): Effect.Effect<void>
      (
        items: readonly Hyperlink.Decoded<typeof itemSchema>[]
      ): Effect.Effect<void>
      (
        itemOrItems:
          | Hyperlink.Decoded<typeof itemSchema>
          | readonly Hyperlink.Decoded<typeof itemSchema>[]
      ): Effect.Effect<void>
    }
  >
  defer: Hyperlink.Method<
    Schema.Union<
      readonly [Schema.Struct<F>, Schema.$Array<Schema.Struct<F>>]
    >,
    Schema.Void,
    Schema.Never,
    false,
    Hyperlink.MethodAnnotations & { description: string },
    {
      (item: Hyperlink.Decoded<typeof itemSchema>): Effect.Effect<void>
      (
        items: readonly Hyperlink.Decoded<typeof itemSchema>[]
      ): Effect.Effect<void>
      (
        itemOrItems:
          | Hyperlink.Decoded<typeof itemSchema>
          | readonly Hyperlink.Decoded<typeof itemSchema>[]
      ): Effect.Effect<void>
    }
  >
  enqueue: Hyperlink.Method<
    Schema.$Array<
      Schema.Struct<{
        readonly item: Schema.Struct<F>
        readonly entryId: Schema.String
        readonly key: Schema.optional<Schema.String>
        readonly priority: Schema.Literals<
          readonly ["high", "normal", "low"]
        >
        readonly attempts: Schema.Number
        readonly timestamps: Schema.Struct<{
          readonly enqueuedAt: Schema.DateTimeUtc
          readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
          readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
          readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
        }>
        readonly batchId: Schema.optional<Schema.String>
        readonly releaseId: Schema.optional<Schema.String>
        readonly sourceHyperlinkId: Schema.optional<Schema.String>
        readonly attributes: Schema.optional<
          Schema.$Record<Schema.String, Schema.Unknown>
        >
      }>
    >,
    Schema.Void,
    Schema.Never,
    false,
    Hyperlink.MethodAnnotations & { description: string },
    Hyperlink.Derive
  >
  release: Hyperlink.Method<
    {
      readonly options: Schema.optionalKey<
        Schema.Struct<{
          readonly scope: Schema.optionalKey<
            Schema.Literal<"pendingOnly">
          >
          readonly releaseId: Schema.optionalKey<Schema.String>
          readonly attributes: Schema.optionalKey<
            Schema.$Record<
              Schema.String,
              Schema.Codec<JsonValue, JsonValue, never, never>
            >
          >
        }>
      >
    },
    Schema.$Array<
      Schema.Struct<{
        readonly item: Schema.Struct<F>
        readonly entryId: Schema.String
        readonly key: Schema.optional<Schema.String>
        readonly priority: Schema.Literals<
          readonly ["high", "normal", "low"]
        >
        readonly attempts: Schema.Number
        readonly timestamps: Schema.Struct<{
          readonly enqueuedAt: Schema.DateTimeUtc
          readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
          readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
          readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
        }>
        readonly batchId: Schema.optional<Schema.String>
        readonly releaseId: Schema.optional<Schema.String>
        readonly sourceHyperlinkId: Schema.optional<Schema.String>
        readonly attributes: Schema.optional<
          Schema.$Record<Schema.String, Schema.Unknown>
        >
      }>
    >,
    Schema.Never,
    false,
    Hyperlink.MethodAnnotations & {
      description: string
      destructive: true
    },
    Hyperlink.Derive
  >
  releaseEncoded: Hyperlink.Method<
    {
      readonly options: Schema.optionalKey<
        Schema.Struct<{
          readonly scope: Schema.optionalKey<
            Schema.Literal<"pendingOnly">
          >
          readonly releaseId: Schema.optionalKey<Schema.String>
          readonly attributes: Schema.optionalKey<
            Schema.$Record<
              Schema.String,
              Schema.Codec<JsonValue, JsonValue, never, never>
            >
          >
        }>
      >
    },
    Schema.$Array<
      Schema.Struct<{
        readonly payload: Schema.Codec<JsonValue, JsonValue, never, never>
        readonly item: Schema.Struct<{
          readonly id: Schema.String
          readonly version: Schema.String
          readonly encoding: Schema.Literal<"json">
          readonly jsonSchema: Schema.Unknown
        }>
        readonly entryId: Schema.String
        readonly key: Schema.optional<Schema.String>
        readonly priority: Schema.Literals<
          readonly ["high", "normal", "low"]
        >
        readonly attempts: Schema.Number
        readonly timestamps: Schema.Struct<{
          readonly enqueuedAt: Schema.DateTimeUtc
          readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
          readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
          readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
        }>
        readonly batchId: Schema.optional<Schema.String>
        readonly releaseId: Schema.optional<Schema.String>
        readonly sourceHyperlinkId: Schema.optional<Schema.String>
        readonly attributes: Schema.optional<
          Schema.$Record<Schema.String, Schema.Unknown>
        >
      }>
    >,
    Schema.Union<
      readonly [
        typeof QueueMissingItemSchemaError,
        typeof QueueItemEncodingError
      ]
    >,
    false,
    Hyperlink.MethodAnnotations & {
      description: string
      destructive: true
    },
    Hyperlink.Derive
  >
  deadLetter: Hyperlink.Method<
    {
      readonly selector: Schema.Struct<{
        readonly entryId: Schema.optionalKey<Schema.String>
        readonly key: Schema.optional<Schema.String>
        readonly item: Schema.optionalKey<Schema.Struct<F>>
      }>
      readonly options: Schema.Struct<{
        readonly reason: Schema.String
        readonly attributes: Schema.optionalKey<
          Schema.$Record<
            Schema.String,
            Schema.Codec<JsonValue, JsonValue, never, never>
          >
        >
      }>
    },
    Schema.$Array<
      Schema.Struct<{
        readonly item: Schema.Struct<F>
        readonly entryId: Schema.String
        readonly key: Schema.optional<Schema.String>
        readonly priority: Schema.Literals<
          readonly ["high", "normal", "low"]
        >
        readonly attempts: Schema.Number
        readonly timestamps: Schema.Struct<{
          readonly enqueuedAt: Schema.DateTimeUtc
          readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
          readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
          readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
        }>
        readonly batchId: Schema.optional<Schema.String>
        readonly releaseId: Schema.optional<Schema.String>
        readonly sourceHyperlinkId: Schema.optional<Schema.String>
        readonly attributes: Schema.optional<
          Schema.$Record<Schema.String, Schema.Unknown>
        >
      }>
    >,
    Schema.Never,
    false,
    Hyperlink.MethodAnnotations & {
      description: string
      destructive: true
    },
    Hyperlink.Derive
  >
  drop: Hyperlink.Method<
    {
      readonly selector: Schema.Struct<{
        readonly entryId: Schema.optionalKey<Schema.String>
        readonly key: Schema.optional<Schema.String>
        readonly item: Schema.optionalKey<Schema.Struct<F>>
      }>
      readonly options: Schema.Struct<{
        readonly reason: Schema.String
        readonly attributes: Schema.optionalKey<
          Schema.$Record<
            Schema.String,
            Schema.Codec<JsonValue, JsonValue, never, never>
          >
        >
      }>
    },
    Schema.$Array<
      Schema.Struct<{
        readonly item: Schema.Struct<F>
        readonly entryId: Schema.String
        readonly key: Schema.optional<Schema.String>
        readonly priority: Schema.Literals<
          readonly ["high", "normal", "low"]
        >
        readonly attempts: Schema.Number
        readonly timestamps: Schema.Struct<{
          readonly enqueuedAt: Schema.DateTimeUtc
          readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
          readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
          readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
        }>
        readonly batchId: Schema.optional<Schema.String>
        readonly releaseId: Schema.optional<Schema.String>
        readonly sourceHyperlinkId: Schema.optional<Schema.String>
        readonly attributes: Schema.optional<
          Schema.$Record<Schema.String, Schema.Unknown>
        >
      }>
    >,
    Schema.Never,
    false,
    Hyperlink.MethodAnnotations & {
      description: string
      destructive: true
    },
    Hyperlink.Derive
  >
  events: Hyperlink.Method<
    undefined,
    Schema.Union<
      readonly [
        Schema.TaggedStruct<"Start", { readonly key: Schema.String }>,
        Schema.TaggedStruct<
          "Enqueued",
          {
            readonly entries: Schema.$Array<
              Schema.Struct<{
                readonly item: Schema.Struct<F>
                readonly entryId: Schema.String
                readonly key: Schema.optional<Schema.String>
                readonly priority: Schema.Literals<
                  readonly ["high", "normal", "low"]
                >
                readonly attempts: Schema.Number
                readonly timestamps: Schema.Struct<{
                  readonly enqueuedAt: Schema.DateTimeUtc
                  readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
                  readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
                  readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
                }>
                readonly batchId: Schema.optional<Schema.String>
                readonly releaseId: Schema.optional<Schema.String>
                readonly sourceHyperlinkId: Schema.optional<Schema.String>
                readonly attributes: Schema.optional<
                  Schema.$Record<Schema.String, Schema.Unknown>
                >
              }>
            >
            readonly priority: Schema.Literals<
              readonly ["high", "normal", "low"]
            >
            readonly batchId: Schema.optionalKey<Schema.String>
          }
        >,
        Schema.TaggedStruct<
          "Started",
          {
            readonly entry: Schema.Struct<{
              readonly item: Schema.Struct<F>
              readonly entryId: Schema.String
              readonly key: Schema.optional<Schema.String>
              readonly priority: Schema.Literals<
                readonly ["high", "normal", "low"]
              >
              readonly attempts: Schema.Number
              readonly timestamps: Schema.Struct<{
                readonly enqueuedAt: Schema.DateTimeUtc
                readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
                readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
                readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
              }>
              readonly batchId: Schema.optional<Schema.String>
              readonly releaseId: Schema.optional<Schema.String>
              readonly sourceHyperlinkId: Schema.optional<Schema.String>
              readonly attributes: Schema.optional<
                Schema.$Record<Schema.String, Schema.Unknown>
              >
            }>
          }
        >,
        Schema.TaggedStruct<
          "Completed",
          {
            readonly entry: Schema.Struct<{
              readonly item: Schema.Struct<F>
              readonly entryId: Schema.String
              readonly key: Schema.optional<Schema.String>
              readonly priority: Schema.Literals<
                readonly ["high", "normal", "low"]
              >
              readonly attempts: Schema.Number
              readonly timestamps: Schema.Struct<{
                readonly enqueuedAt: Schema.DateTimeUtc
                readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
                readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
                readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
              }>
              readonly batchId: Schema.optional<Schema.String>
              readonly releaseId: Schema.optional<Schema.String>
              readonly sourceHyperlinkId: Schema.optional<Schema.String>
              readonly attributes: Schema.optional<
                Schema.$Record<Schema.String, Schema.Unknown>
              >
            }>
            readonly success: Schema.Union<readonly [Success]>
            readonly elapsed: Schema.Duration
          }
        >,
        Schema.TaggedStruct<
          "Failed",
          {
            readonly entry: Schema.Struct<{
              readonly item: Schema.Struct<F>
              readonly entryId: Schema.String
              readonly key: Schema.optional<Schema.String>
              readonly priority: Schema.Literals<
                readonly ["high", "normal", "low"]
              >
              readonly attempts: Schema.Number
              readonly timestamps: Schema.Struct<{
                readonly enqueuedAt: Schema.DateTimeUtc
                readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
                readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
                readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
              }>
              readonly batchId: Schema.optional<Schema.String>
              readonly releaseId: Schema.optional<Schema.String>
              readonly sourceHyperlinkId: Schema.optional<Schema.String>
              readonly attributes: Schema.optional<
                Schema.$Record<Schema.String, Schema.Unknown>
              >
            }>
            readonly cause: Schema.Cause<Error, Schema.Unknown>
            readonly elapsed: Schema.Duration
          }
        >,
        Schema.TaggedStruct<
          "RetryScheduled",
          {
            readonly entry: Schema.Struct<{
              readonly item: Schema.Struct<F>
              readonly entryId: Schema.String
              readonly key: Schema.optional<Schema.String>
              readonly priority: Schema.Literals<
                readonly ["high", "normal", "low"]
              >
              readonly attempts: Schema.Number
              readonly timestamps: Schema.Struct<{
                readonly enqueuedAt: Schema.DateTimeUtc
                readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
                readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
                readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
              }>
              readonly batchId: Schema.optional<Schema.String>
              readonly releaseId: Schema.optional<Schema.String>
              readonly sourceHyperlinkId: Schema.optional<Schema.String>
              readonly attributes: Schema.optional<
                Schema.$Record<Schema.String, Schema.Unknown>
              >
            }>
            readonly cause: Schema.Cause<Error, Schema.Unknown>
            readonly nextAttempt: Schema.Number
          }
        >,
        Schema.TaggedStruct<
          "RetryExhausted",
          {
            readonly entry: Schema.Struct<{
              readonly item: Schema.Struct<F>
              readonly entryId: Schema.String
              readonly key: Schema.optional<Schema.String>
              readonly priority: Schema.Literals<
                readonly ["high", "normal", "low"]
              >
              readonly attempts: Schema.Number
              readonly timestamps: Schema.Struct<{
                readonly enqueuedAt: Schema.DateTimeUtc
                readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
                readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
                readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
              }>
              readonly batchId: Schema.optional<Schema.String>
              readonly releaseId: Schema.optional<Schema.String>
              readonly sourceHyperlinkId: Schema.optional<Schema.String>
              readonly attributes: Schema.optional<
                Schema.$Record<Schema.String, Schema.Unknown>
              >
            }>
            readonly cause: Schema.Cause<Error, Schema.Unknown>
          }
        >,
        Schema.TaggedStruct<
          "Drained",
          {
            readonly key: Schema.String
            readonly completed: Schema.Number
          }
        >,
        Schema.TaggedStruct<
          "Cleared",
          { readonly key: Schema.String; readonly count: Schema.Number }
        >,
        Schema.TaggedStruct<
          "ShutdownRequested",
          {
            readonly key: Schema.String
            readonly mode: Schema.Literals<
              readonly ["drain", "finishActive"]
            >
            readonly pending: Schema.Number
          }
        >,
        Schema.TaggedStruct<
          "ShutdownComplete",
          {
            readonly key: Schema.String
            readonly completed: Schema.Number
          }
        >,
        Schema.TaggedStruct<
          "Released",
          {
            readonly key: Schema.String
            readonly releaseId: Schema.String
            readonly entries: Schema.$Array<
              Schema.Struct<{
                readonly item: Schema.Struct<F>
                readonly entryId: Schema.String
                readonly key: Schema.optional<Schema.String>
                readonly priority: Schema.Literals<
                  readonly ["high", "normal", "low"]
                >
                readonly attempts: Schema.Number
                readonly timestamps: Schema.Struct<{
                  readonly enqueuedAt: Schema.DateTimeUtc
                  readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
                  readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
                  readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
                }>
                readonly batchId: Schema.optional<Schema.String>
                readonly releaseId: Schema.optional<Schema.String>
                readonly sourceHyperlinkId: Schema.optional<Schema.String>
                readonly attributes: Schema.optional<
                  Schema.$Record<Schema.String, Schema.Unknown>
                >
              }>
            >
          }
        >,
        Schema.TaggedStruct<
          "DeadLettered",
          {
            readonly key: Schema.String
            readonly entries: Schema.$Array<
              Schema.Struct<{
                readonly item: Schema.Struct<F>
                readonly entryId: Schema.String
                readonly key: Schema.optional<Schema.String>
                readonly priority: Schema.Literals<
                  readonly ["high", "normal", "low"]
                >
                readonly attempts: Schema.Number
                readonly timestamps: Schema.Struct<{
                  readonly enqueuedAt: Schema.DateTimeUtc
                  readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
                  readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
                  readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
                }>
                readonly batchId: Schema.optional<Schema.String>
                readonly releaseId: Schema.optional<Schema.String>
                readonly sourceHyperlinkId: Schema.optional<Schema.String>
                readonly attributes: Schema.optional<
                  Schema.$Record<Schema.String, Schema.Unknown>
                >
              }>
            >
            readonly reason: Schema.String
          }
        >,
        Schema.TaggedStruct<
          "Dropped",
          {
            readonly key: Schema.String
            readonly entries: Schema.$Array<
              Schema.Struct<{
                readonly item: Schema.Struct<F>
                readonly entryId: Schema.String
                readonly key: Schema.optional<Schema.String>
                readonly priority: Schema.Literals<
                  readonly ["high", "normal", "low"]
                >
                readonly attempts: Schema.Number
                readonly timestamps: Schema.Struct<{
                  readonly enqueuedAt: Schema.DateTimeUtc
                  readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
                  readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
                  readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
                }>
                readonly batchId: Schema.optional<Schema.String>
                readonly releaseId: Schema.optional<Schema.String>
                readonly sourceHyperlinkId: Schema.optional<Schema.String>
                readonly attributes: Schema.optional<
                  Schema.$Record<Schema.String, Schema.Unknown>
                >
              }>
            >
            readonly reason: Schema.String
          }
        >,
        Schema.TaggedStruct<
          "RateLimitExceeded",
          {
            readonly key: Schema.String
            readonly entry: Schema.Struct<{
              readonly item: Schema.Struct<F>
              readonly entryId: Schema.String
              readonly key: Schema.optional<Schema.String>
              readonly priority: Schema.Literals<
                readonly ["high", "normal", "low"]
              >
              readonly attempts: Schema.Number
              readonly timestamps: Schema.Struct<{
                readonly enqueuedAt: Schema.DateTimeUtc
                readonly startedAt: Schema.optionalKey<Schema.DateTimeUtc>
                readonly completedAt: Schema.optionalKey<Schema.DateTimeUtc>
                readonly interruptedAt: Schema.optionalKey<Schema.DateTimeUtc>
              }>
              readonly batchId: Schema.optional<Schema.String>
              readonly releaseId: Schema.optional<Schema.String>
              readonly sourceHyperlinkId: Schema.optional<Schema.String>
              readonly attributes: Schema.optional<
                Schema.$Record<Schema.String, Schema.Unknown>
              >
            }>
            readonly limitKey: Schema.String
            readonly algorithm: Schema.Literals<
              readonly ["fixed-window", "token-bucket"]
            >
            readonly outcome: Schema.Literals<
              readonly ["delayed", "rejected"]
            >
          }
        >
      ]
    >,
    Schema.Never,
    true,
    Hyperlink.MethodAnnotations & { description: string },
    Hyperlink.Derive
  >
  status: Hyperlink.Marked<
    Hyperlink.Method<
      undefined,
      Schema.Struct<{
        readonly sizes: Schema.Struct<{
          readonly high: Schema.Number
          readonly normal: Schema.Number
          readonly low: Schema.Number
        }>
        readonly paused: Schema.Boolean
        readonly inFlight: Schema.Number
        readonly completed: Schema.Number
        readonly phase: Schema.Literals<
          readonly ["running", "draining", "off"]
        >
      }>,
      Schema.Never,
      true,
      Hyperlink.MethodAnnotations & { description: string },
      Hyperlink.Derive
    >,
    { readonly _tag: "ref" }
  >
  size: Hyperlink.Marked<
    Hyperlink.Method<
      undefined,
      Schema.Number,
      Schema.Never,
      true,
      Hyperlink.MethodAnnotations & { description: string },
      Hyperlink.Derive
    >,
    { readonly _tag: "ref" }
  >
  isEmpty: Hyperlink.Marked<
    Hyperlink.Method<
      undefined,
      Schema.Boolean,
      Schema.Never,
      true,
      Hyperlink.MethodAnnotations & { description: string },
      Hyperlink.Derive
    >,
    { readonly _tag: "ref" }
  >
  start: Hyperlink.Method<
    undefined,
    Schema.Void,
    Schema.Never,
    false,
    Hyperlink.MethodAnnotations & { description: string },
    Hyperlink.Derive
  >
  pause: Hyperlink.Method<
    undefined,
    Schema.Void,
    Schema.Never,
    false,
    Hyperlink.MethodAnnotations & { description: string },
    Hyperlink.Derive
  >
  resume: Hyperlink.Method<
    undefined,
    Schema.Void,
    Schema.Never,
    false,
    Hyperlink.MethodAnnotations & { description: string },
    Hyperlink.Derive
  >
  shutdown: Hyperlink.Method<
    undefined,
    Schema.Void,
    Schema.Never,
    false,
    Hyperlink.MethodAnnotations & {
      description: string
      destructive: true
    },
    Hyperlink.Derive
  >
  clear: Hyperlink.Method<
    undefined,
    Schema.Number,
    Schema.Never,
    false,
    Hyperlink.MethodAnnotations & {
      description: string
      destructive: true
    },
    Hyperlink.Derive
  >
  metrics: {
    stream: Hyperlink.Method<
      undefined,
      Schema.Struct<{
        readonly windowStart: Schema.DateTimeUtc
        readonly windowEnd: Schema.DateTimeUtc
        readonly windowMillis: Schema.Number
        readonly enqueued: Schema.Number
        readonly started: Schema.Number
        readonly completed: Schema.Number
        readonly failed: Schema.Number
        readonly retried: Schema.Number
        readonly deadLettered: Schema.Number
        readonly dropped: Schema.Number
        readonly rateLimitExceeded: Schema.Number
        readonly inFlight: Schema.Number
        readonly throughputPerSec: Schema.Number
        readonly avgWaitMillis: Schema.Struct<{
          readonly high: Schema.optionalKey<Schema.Number>
          readonly normal: Schema.optionalKey<Schema.Number>
          readonly low: Schema.optionalKey<Schema.Number>
        }>
        readonly avgExecutionMillis: Schema.optionalKey<Schema.Number>
        readonly avgTotalMillis: Schema.optionalKey<Schema.Number>
      }>,
      Schema.Never,
      true,
      Hyperlink.MethodAnnotations & { description: string },
      Hyperlink.Derive
    >
    query: Hyperlink.Method<
      {
        limit: Schema.optionalKey<Schema.Number>
        since: Schema.optionalKey<Schema.DateTimeUtc>
        until: Schema.optionalKey<Schema.DateTimeUtc>
      },
      Schema.$Array<
        Schema.Struct<{
          readonly windowStart: Schema.DateTimeUtc
          readonly windowEnd: Schema.DateTimeUtc
          readonly windowMillis: Schema.Number
          readonly enqueued: Schema.Number
          readonly started: Schema.Number
          readonly completed: Schema.Number
          readonly failed: Schema.Number
          readonly retried: Schema.Number
          readonly deadLettered: Schema.Number
          readonly dropped: Schema.Number
          readonly rateLimitExceeded: Schema.Number
          readonly inFlight: Schema.Number
          readonly throughputPerSec: Schema.Number
          readonly avgWaitMillis: Schema.Struct<{
            readonly high: Schema.optionalKey<Schema.Number>
            readonly normal: Schema.optionalKey<Schema.Number>
            readonly low: Schema.optionalKey<Schema.Number>
          }>
          readonly avgExecutionMillis: Schema.optionalKey<Schema.Number>
          readonly avgTotalMillis: Schema.optionalKey<Schema.Number>
        }>
      >,
      Schema.Never,
      false,
      Hyperlink.MethodAnnotations & { description: string },
      Hyperlink.Derive
    >
  }
}

Build a queue instance spec (model B): the shared queueControlSpec plus per-instance data-plane procedures typed by itemSchema — the enqueue verbs (add, prioritize, defer, enqueue) and the events stream. Pass the result to Hyperlink.Tag — each instance is its own resource (its own RPC group):

class Jobs extends Hyperlink.Tag<Jobs>()("@app/Jobs", queueSpec(JobSchema)) {}
const q = yield* Jobs;
yield* q.add(aJob); // the item itself is the payload — validated against JobSchema on both sides

itemSchema becomes the rpc payload schema, so RPC validates items on the wire — the client rejects bad items before the round trip and the server re-validates on decode.

export const queueSpec = <
  F extends Schema.Struct.Fields,
  Success extends Schema.Top = typeof Schema.Void,
  Error extends Schema.Top = typeof Schema.Never,
>(
  itemSchema: Schema.Struct<F>,
  wire?: { readonly success?: Success; readonly error?: Error },
) => {
  // `add`/`prioritize`/`defer` take the item **directly**, and also accept a **batch** (the
  // engine's `QueueEnqueue<T>` is `(item) | (items)`), so one call enqueues many — no N round
  // trips over RPC. The payload is `item | item[]` (a single-schema union payload); the layer
  // recovers the bare `itemSchema` from `add.payload.members[0]`.
  const itemOrItems = Schema.Union([itemSchema, Schema.Array(itemSchema)]);
  const eventSchema = buildQueueEvent(
    itemSchema,
    withVoidDefault(wire?.success),
    withNeverDefault(wire?.error),
  );
  return {
  ...queueControlSpec,
  add: Hyperlink.unsafeEffectFn<{
    (item: Hyperlink.Decoded<typeof itemSchema>): Effect.Effect<void>;
    (items: readonly Hyperlink.Decoded<typeof itemSchema>[]): Effect.Effect<void>;
    (itemOrItems: Hyperlink.Decoded<typeof itemSchema> | readonly Hyperlink.Decoded<typeof itemSchema>[]): Effect.Effect<void>;
  }>()(itemOrItems).annotate({
    description: "Enqueue an item (or a batch) at normal priority.",
  }),
  prioritize: Hyperlink.unsafeEffectFn<{
    (item: Hyperlink.Decoded<typeof itemSchema>): Effect.Effect<void>;
    (items: readonly Hyperlink.Decoded<typeof itemSchema>[]): Effect.Effect<void>;
    (itemOrItems: Hyperlink.Decoded<typeof itemSchema> | readonly Hyperlink.Decoded<typeof itemSchema>[]): Effect.Effect<void>;
  }>()(itemOrItems).annotate({
    description:
      "Enqueue an item (or a batch) at high priority (processed before normal and low).",
  }),
  defer: Hyperlink.unsafeEffectFn<{
    (item: Hyperlink.Decoded<typeof itemSchema>): Effect.Effect<void>;
    (items: readonly Hyperlink.Decoded<typeof itemSchema>[]): Effect.Effect<void>;
    (itemOrItems: Hyperlink.Decoded<typeof itemSchema> | readonly Hyperlink.Decoded<typeof itemSchema>[]): Effect.Effect<void>;
  }>()(itemOrItems).annotate({
    description: "Enqueue an item (or a batch) at low priority (processed after high and normal).",
  }),
  // `enqueue` takes the entry array directly (same shape `events`/`release` produce).
  enqueue: Hyperlink.effectFn(Schema.Array(queueEntry(itemSchema))).annotate({
    description:
      "Re-inject existing entries (e.g. off the events stream / a release) — each re-enters " +
      "at its own priority with its attempts preserved. The handoff / round-trip primitive.",
  }),
  release: Hyperlink.effectFn(
    { options: Schema.optionalKey(queueReleaseOptions) },
    Schema.Array(queueEntry(itemSchema)),
  ).annotate({
    description:
      "Export pending entries for handoff and remove them from this queue; returns them decoded.",
    destructive: true,
  }),
  releaseEncoded: Hyperlink.effectFn(
    { options: Schema.optionalKey(queueReleaseOptions) },
    Schema.Array(queueEncodedEntry),
    queueReleaseEncodingError,
  ).annotate({
    description:
      "Export pending entries in encoded/wire form for remote handoff (requires an itemSchema).",
    destructive: true,
  }),
  deadLetter: Hyperlink.effectFn(
    {
      selector: queueEntrySelector(itemSchema),
      options: queueRouteOptions,
    },
    Schema.Array(queueEntry(itemSchema)),
  ).annotate({
    description: "Remove pending entries matching the selector and route them to a dead letter.",
    destructive: true,
  }),
  drop: Hyperlink.effectFn(
    {
      selector: queueEntrySelector(itemSchema),
      options: queueRouteOptions,
    },
    Schema.Array(queueEntry(itemSchema)),
  ).annotate({
    description: "Remove pending entries matching the selector without preserving them.",
    destructive: true,
  }),
  events: Hyperlink.stream(eventSchema).annotate({
    description: "Discrete entry / worker / queue lifecycle events.",
  }),
  };
};