> For the complete documentation index, see [llms.txt](https://support.highlight.xyz/knowledge-base/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.highlight.xyz/knowledge-base/for-developers/minting-protocol/mint-mechanics.md).

# Mint Mechanics

The MintManager itself facilitates **fixed priced public sales** in which you can add basic information like a payment recipient, a max supply, a max per wallet, etc. It also supports gated **signature-based sales**, which allows Highlight to validate gate access offchain and then process mints on chain.

But *beyond that*, developers can also write their own custom mint mechanics. Mint mechanics can be crafted to produce highly tailored sales experiences. Highlight's own ranked auction and Dutch auction formats are powered by mint mechanics. Others have produced custom mint mechanics to accomplish things like running their own off chain servers to process mint logic, use their own credit card payment system, sign transactions, and then execute mints.&#x20;

Mint mechanics have functions that are inserted as hooks into the mint managers, and are run before minting can occur. This means you can decide for yourself, in your own mechanic, what sale logic to process. Once the mechanic's mint logic is processed, the mint will proceed successfully. In these cases, the only check run in our mint manager is the check to verify that the appropriate Highlight fee of .0008 ETH has been paid.

Every custom mechanic has a [simple interface to adhere to](https://github.com/highlightxyz/hl-evm-contracts/blob/main/contracts/mint/mechanics/interfaces/IMechanic.sol), with three core methods: `createVector` (all mechanics use a global ID system, and you call createVector to create one and register it), `processNumMint` (a hook where your custom logic happens, all we do is validate that fee was paid and then we execute), `processChooseMint` (the same kind of hook but for collectors' choice series).&#x20;

Finally, note that your custom mechanic can receive arbitrary data passed in from the mint manager as the final parameter, allowing you to pass in custom data that you can process inside your mechanic.

The arbitrary data parameter in all three functions (`createVector`, `processNumMint`, `processChooseMint`) is the key to implementing highly customizable sale logic in your mechanic.

### Contracts link&#x20;

{% embed url="<https://github.com/highlightxyz/hl-evm-contracts/tree/main/contracts/mint/mechanics>" %}


---

# 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://support.highlight.xyz/knowledge-base/for-developers/minting-protocol/mint-mechanics.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.
