OfferDeclaration
Public fixed-price offer declaration; cross-benefit parsing happens in Offer.parse.
Declaration
Section titled “Declaration”const OfferDeclaration: Schema.Struct<{ key: Schema.brand<Schema.String, "OfferKey">; revision: Schema.brand<Schema.Int, "DefinitionRevision">; purchase: Schema.Struct<{ key: Schema.brand<Schema.String, "PurchaseKey">; revision: Schema.brand<Schema.Int, "DefinitionRevision">; provides: Schema.$Array<Schema.toTaggedUnion<"type", readonly [Schema.Struct<{ entitlements: Schema.$Array<...>; type: Schema.tag<...>; duration: Schema.Union<...>; }>, Schema.Struct<{ entitlement: Schema.brand<..., ...>; activationLimit: Schema.Int; type: Schema.tag<...>; validity: Schema.withConstructorDefault<...>; }>, Schema.Struct<{ type: Schema.tag<...>; asset: Schema.Struct<...>; duration: Schema.Union<...>; }>, Schema.Struct<{ unit: Schema.brand<..., ...>; quantity: Schema.brand<..., ...>; expiry: Schema.Literal<...>; type: Schema.tag<...>; }>, Schema.Struct<{ pool: Schema.brand<..., ...>; quantity: Schema.Union<...>; entitlement: Schema.brand<..., ...>; validity: Schema.Literal<...>; type: Schema.tag<...>; }>, Schema.Struct<{ entitlement: Schema.brand<..., ...>; validity: Schema.Literal<...>; type: Schema.tag<...>; binding: Schema.Struct<...>; }>, Schema.Struct<{ recipient: Schema.Literal<...>; trigger: Schema.Literal<...>; type: Schema.tag<...>; asset: Schema.Struct<...>; }>, Schema.Struct<{ resource: Schema.brand<..., ...>; quantity: Schema.brand<..., ...>; entitlement: Schema.brand<..., ...>; validity: Schema.Literal<...>; type: Schema.tag<...>; }>]>>; }>; billing: Schema.Union<readonly [Schema.Struct<{ family: Schema.brand<Schema.String, "SubscriptionFamilyKey">; interval: Schema.Literals<readonly [..., ...]>; meter: Schema.Struct<{ key: Schema.brand<..., ...>; revision: Schema.brand<..., ...>; }>; rate: Schema.Struct<{ currency: Schema.brand<..., ...>; amount: Schema.brand<..., ...>; perUnits: Schema.brand<..., ...>; rounding: Schema.Literal<...>; }>; collection: Schema.Literal<"invoice">; roundingScope: Schema.Literal<"meter_invoice_period">; lateUsage: Schema.Literal<"next_invoice_original_rate">; accessPolicy: Schema.Struct<{ key: Schema.brand<..., ...>; revision: Schema.brand<..., ...>; }>; type: Schema.tag<"metered_subscription">; }>, Schema.Struct<{ price: Schema.Struct<{ currency: Schema.brand<..., ...>; amount: Schema.brand<..., ...>; }>; minimumQuantity: Schema.brand<Schema.Int, "SeatCapacityQuantity">; maximumQuantity: Schema.brand<Schema.Int, "SeatCapacityQuantity">; type: Schema.tag<"per_seat_one_time">; }>, Schema.Struct<{ family: Schema.brand<Schema.String, "SubscriptionFamilyKey">; price: Schema.Struct<{ currency: Schema.brand<..., ...>; amount: Schema.brand<..., ...>; }>; minimumQuantity: Schema.brand<Schema.Int, "SeatCapacityQuantity">; maximumQuantity: Schema.brand<Schema.Int, "SeatCapacityQuantity">; interval: Schema.Literals<readonly [..., ...]>; renewal: Schema.Literal<"manual">; type: Schema.tag<"per_seat_subscription">; }>, Schema.Struct<{ price: Schema.Struct<{ currency: Schema.brand<..., ...>; amount: Schema.brand<..., ...>; }>; type: Schema.tag<"one_time">; }>, Schema.Struct<{ family: Schema.brand<Schema.String, "SubscriptionFamilyKey">; price: Schema.Struct<{ currency: Schema.brand<..., ...>; amount: Schema.brand<..., ...>; }>; interval: Schema.Literals<readonly [..., ...]>; renewal: Schema.Literal<"manual">; type: Schema.tag<"subscription">; }>]> & { discriminants: readonly ["metered_subscription", "per_seat_one_time", "per_seat_subscription", "one_time", "subscription"]; cases: { metered_subscription: Schema.Struct<{ family: Schema.brand<Schema.String, "SubscriptionFamilyKey">; interval: Schema.Literals<readonly ["month", "year"]>; meter: Schema.Struct<{ key: Schema.brand<Schema.String, "MeterKey">; revision: Schema.brand<Schema.Int, "DefinitionRevision">; }>; rate: Schema.Struct<{ currency: Schema.brand<Schema.String, "Currency">; amount: Schema.brand<Schema.BigInt, "MinorCurrencyUnits">; perUnits: Schema.brand<Schema.BigInt, "MeteredRateUnits">; rounding: Schema.Literal<"trunc">; }>; collection: Schema.Literal<"invoice">; roundingScope: Schema.Literal<"meter_invoice_period">; lateUsage: Schema.Literal<"next_invoice_original_rate">; accessPolicy: Schema.Struct<{ key: Schema.brand<Schema.String, "MerchantAccessPolicyKey">; revision: Schema.brand<Schema.Int, "DefinitionRevision">; }>; type: Schema.tag<"metered_subscription">; }>; one_time: Schema.Struct<{ price: Schema.Struct<{ currency: Schema.brand<Schema.String, "Currency">; amount: Schema.brand<Schema.BigInt, "MinorCurrencyUnits">; }>; type: Schema.tag<"one_time">; }>; per_seat_one_time: Schema.Struct<{ price: Schema.Struct<{ currency: Schema.brand<Schema.String, "Currency">; amount: Schema.brand<Schema.BigInt, "MinorCurrencyUnits">; }>; minimumQuantity: Schema.brand<Schema.Int, "SeatCapacityQuantity">; maximumQuantity: Schema.brand<Schema.Int, "SeatCapacityQuantity">; type: Schema.tag<"per_seat_one_time">; }>; per_seat_subscription: Schema.Struct<{ family: Schema.brand<Schema.String, "SubscriptionFamilyKey">; price: Schema.Struct<{ currency: Schema.brand<Schema.String, "Currency">; amount: Schema.brand<Schema.BigInt, "MinorCurrencyUnits">; }>; minimumQuantity: Schema.brand<Schema.Int, "SeatCapacityQuantity">; maximumQuantity: Schema.brand<Schema.Int, "SeatCapacityQuantity">; interval: Schema.Literals<readonly ["month", "year"]>; renewal: Schema.Literal<"manual">; type: Schema.tag<"per_seat_subscription">; }>; subscription: Schema.Struct<{ family: Schema.brand<Schema.String, "SubscriptionFamilyKey">; price: Schema.Struct<{ currency: Schema.brand<Schema.String, "Currency">; amount: Schema.brand<Schema.BigInt, "MinorCurrencyUnits">; }>; interval: Schema.Literals<readonly ["month", "year"]>; renewal: Schema.Literal<"manual">; type: Schema.tag<"subscription">; }>; }; isAnyOf: <Keys>(keys) => (value) => value is Extract<{ family: (...) & (...); interval: (...) | (...); meter: { key: ...; revision: ... }; rate: { currency: ...; amount: ...; perUnits: ...; rounding: ... }; collection: "invoice"; roundingScope: "meter_invoice_period"; lateUsage: "next_invoice_original_rate"; accessPolicy: { key: ...; revision: ... }; type: "metered_subscription" }, { type: Keys }> | Extract<{ price: { currency: ...; amount: ... }; minimumQuantity: (...) & (...); maximumQuantity: (...) & (...); type: "per_seat_one_time" }, { type: Keys }> | Extract<{ family: (...) & (...); price: { currency: ...; amount: ... }; minimumQuantity: (...) & (...); maximumQuantity: (...) & (...); interval: (...) | (...); renewal: "manual"; type: "per_seat_subscription" }, { type: Keys }> | Extract<{ price: { currency: ...; amount: ... }; type: "one_time" }, { type: Keys }> | Extract<{ family: (...) & (...); price: { currency: ...; amount: ... }; interval: (...) | (...); renewal: "manual"; type: "subscription" }, { type: Keys }>; guards: { metered_subscription: (u) => u is { family: string & any; interval: "month" | "year"; meter: { key: string & any; revision: number & any }; rate: { currency: string & any; amount: bigint & any; perUnits: bigint & any; rounding: "trunc" }; collection: "invoice"; roundingScope: "meter_invoice_period"; lateUsage: "next_invoice_original_rate"; accessPolicy: { key: string & any; revision: number & any }; type: "metered_subscription" }; one_time: (u) => u is { price: { currency: string & any; amount: bigint & any }; type: "one_time" }; per_seat_one_time: (u) => u is { price: { currency: string & any; amount: bigint & any }; minimumQuantity: number & any; maximumQuantity: number & any; type: "per_seat_one_time" }; per_seat_subscription: (u) => u is { family: string & any; price: { currency: string & any; amount: bigint & any }; minimumQuantity: number & any; maximumQuantity: number & any; interval: "month" | "year"; renewal: "manual"; type: "per_seat_subscription" }; subscription: (u) => u is { family: string & any; price: { currency: string & any; amount: bigint & any }; interval: "month" | "year"; renewal: "manual"; type: "subscription" }; }; match: { <Cases> (value, cases): Cases[keyof Cases] extends (value) => R ? any : never; <Cases> (cases): (value) => Cases[keyof Cases] extends (value) => R ? any : never; }; } & { oneTime: (input) => Effect.Effect<typeof BillingSchema.cases.one_time.Type, Schema.SchemaError>; subscription: (input) => Effect.Effect<typeof BillingSchema.cases.subscription.Type, Schema.SchemaError>; perSeatOneTime: (input) => Effect.Effect<typeof BillingSchema.cases.per_seat_one_time.Type, Schema.SchemaError>; perSeatSubscription: (input) => Effect.Effect<typeof BillingSchema.cases.per_seat_subscription.Type, Schema.SchemaError>; meteredSubscription: (input) => Effect.Effect<typeof BillingSchema.cases.metered_subscription.Type, Schema.SchemaError>; };}>;