> For the complete documentation index, see [llms.txt](https://gabriel-j-shapiro.gitbook.io/metalex-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gabriel-j-shapiro.gitbook.io/metalex-docs/protocol-reference/extensions.md).

# Certificate extensions

Extensions are pluggable metadata contracts registered on a `CyberCertPrinter` for a given security type. They produce the instrument-specific attributes built into the cyberCERT's `tokenURI` and enforce any instrument-specific rules at issuance time.

Each extension is its own UUPS-upgradeable contract.

## ShareExtension

Preferred and Common stock. NVCA-aligned series terms.

* Liquidation preference
* Conversion ratio (preferred ↔ common)
* Anti-dilution (broad-based weighted average, full ratchet, none)
* Voting power
* Series identifier ("Series Seed", "Series A", "Series Pre-A", etc.)

## SAFEExtension

Simple Agreement for Future Equity.

* Custom provisions field
* Valuation cap
* Discount
* MFN flag
* Conversion trigger event

Feeds [`SafeCertificateConverter`](/metalex-docs/protocol-reference/contracts/safecertificateconverter.md).

## ACESAFEExtension

ACE-specific SAFE variant for token-to-equity conversions, used by [PumpCorpFactory](/metalex-docs/protocol-reference/factories.md#pumpcorpfactory).

## SAFTExtension / SAFTExtensionV2

Simple Agreement for Future Tokens.

* Unlock schedule
* Cliff period
* Vesting interval
* Token (or token-yet-to-be-deployed) reference

## SAFTEExtension / SAFTEExtensionV2

Simple Agreement for Future Tokens or Equity. Combines SAFT and SAFE attributes; the conversion path is determined by which trigger event fires first.

## TokenWarrantExtension / TokenWarrantExtensionV2

Token warrants.

* Exercise price
* Token-amount calculation method (fixed, pro rata, formula)
* Unlock parameters
* Expiration

## Registering an extension

```solidity
certPrinter.setExtension(SECURITY_TYPE_SAFE, address(safeExtension));
```

A `CertIssuance.extensionData` is then `abi.encode`d to the extension's expected struct.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://gabriel-j-shapiro.gitbook.io/metalex-docs/protocol-reference/extensions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
