# LicenseTerms Interface
What HyperFormula needs from a typed key, after the two payload shapes have been reconciled.
The engine reads TWO payload shapes on purpose:
- the shipped shape of
handsontable/license-key—tier,addons,exp,grace, with the contract type carried by the key's[TRIAL]/[FREE]/[SUB]/[PERP]tag, and with the expiry living on the LICENSED product entry (the first schema product present); - the shape of key spec rev 5 —
capabilities,usage_until/release_until,notice,grace,flags, where every product entry carries its own terms.
The two disagree about nearly every field, rev 5 is still for review, and only the first can
be minted today. Reading both means an already-issued key keeps working whichever way that
disagreement is settled. Shape is detected per product entry, by the presence of
capabilities, not guessed from the key type.
# Properties
# capabilityTokens
• capabilityTokens: string[]
Defined in src/license/licenseResolution.ts:108 (opens new window)
# comparedAgainstReleaseDate
• comparedAgainstReleaseDate: boolean
Defined in src/license/licenseResolution.ts:113 (opens new window)
true compares against the build release date, false against the clock.
# expiry
• expiry: LicenseExpiry
Defined in src/license/licenseResolution.ts:109 (opens new window)
# expiryTimestamp
• expiryTimestamp: number | null
Defined in src/license/licenseResolution.ts:111 (opens new window)
Epoch milliseconds of the last licensed day, or null when the key never expires.
# graceDays
• graceDays: number
Defined in src/license/licenseResolution.ts:114 (opens new window)
# isTrial
• isTrial: boolean
Defined in src/license/licenseResolution.ts:115 (opens new window)
# silent
• silent: boolean
Defined in src/license/licenseResolution.ts:116 (opens new window)