ValidateSubscriptionPlanChangeAcceptanceInput
Pure acceptance guard input; the observed version and acceptance time come from authoritative state and an injected clock.
Declaration
Section titled “Declaration”const ValidateSubscriptionPlanChangeAcceptanceInput: Schema.Struct<{ quote: Schema.Struct<{ id: Schema.brand<Schema.String, "PlanChangeQuoteId">; subscriptionId: Schema.brand<Schema.String, "SubscriptionId">; expectedVersion: Schema.brand<Schema.Int, "SubscriptionTermsVersion">; effective: Schema.Literal<"next_period">; effectiveAt: Schema.brand<Schema.Int, "EpochMilliseconds">; createdAt: Schema.brand<Schema.Int, "EpochMilliseconds">; expiresAt: Schema.brand<Schema.Int, "EpochMilliseconds">; current: Schema.toTaggedUnion<"type", readonly [Schema.Struct<{ type: Schema.tag<"offer">; definition: Schema.brand<Schema.Struct<...>, "OfferTerms">; }>, Schema.Struct<{ type: Schema.tag<"quantity_offer">; selection: Schema.Struct<{ definition: ...; quantity: ...; totalAmount: ...; }>; }>]>; target: Schema.toTaggedUnion<"type", readonly [Schema.Struct<{ type: Schema.tag<"offer">; definition: Schema.brand<Schema.Struct<...>, "OfferTerms">; }>, Schema.Struct<{ type: Schema.tag<"quantity_offer">; selection: Schema.Struct<{ definition: ...; quantity: ...; totalAmount: ...; }>; }>]>; }>; command: Schema.Struct<{ idempotencyKey: Schema.brand<Schema.String, "IdempotencyKey">; quoteId: Schema.brand<Schema.String, "PlanChangeQuoteId">; expectedVersion: Schema.brand<Schema.Int, "SubscriptionTermsVersion">; }>; observedVersion: Schema.brand<Schema.Int, "SubscriptionTermsVersion">; acceptedAt: Schema.brand<Schema.Int, "EpochMilliseconds">;}>;