# getgems-io/nft-contracts architecture

> Architecture diagram of the GitHub repository getgems-io/nft-contracts, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-23). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/getgems-io/nft-contracts
- Repository: https://github.com/getgems-io/nft-contracts

## Overview

This is a TON smart-contract toolkit for Getgems NFT functionality, not a hosted application. Its principal workflow is for a developer or wallet to configure a contract, encode its initial state and messages, then deploy or interact with the resulting on-chain contract. The repository covers NFT items and collections, SBTs, fixed-price sales, auctions, offers, marketplaces, swaps, and raffles. Sampled files support the state/message encoding and deployer links shown; several contract implementations are unsampled, so their internal call paths are omitted.

Main entry points: [`packages/nft-content/nftContent.ts`](https://github.com/getgems-io/nft-contracts/blob/main/packages/nft-content/nftContent.ts) (NFT content codec), [`packages/contracts/nft-collection/NftCollection.data.ts`](https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-collection/NftCollection.data.ts) (Collection state and messages), [`packages/contracts/sbt-item/SbtItem.data.ts`](https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/sbt-item/SbtItem.data.ts) (SBT state and messages), [`packages/contracts/nft-swap/Swap.data.ts`](https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-swap/Swap.data.ts) (Swap state and messages)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_nft["NFT contracts"]
  node_collection["NFT collection"]
  node_item["NFT item"]
  node_sbt["SBT item"]
end

subgraph group_market["Trading contracts"]
  node_auction["Auctions"]
  node_auctionv2["Auction versions"]
  node_fixed["Fixed-price sales"]
  node_fixedv2["Fixed-price v2"]
  node_fixedv3["Fixed-price v3"]
  node_fixedv4["Fixed-price v4"]
  node_marketplace["Marketplace"]
  node_offer["NFT offers"]
  node_swap["NFT swaps"]
  node_raffle["NFT raffle"]
end

subgraph group_support["Contract support"]
  node_deployer["Sale deployer<br/>[DeployerLocal.ts]"]
end

subgraph group_ton["TON encoding"]
  node_content["NFT content codec<br/>[nftContent.ts]"]
  node_collectiondata["Collection state and messages"]
  node_itemdata["Item state and messages<br/>[NftItem.data.ts]"]
  node_sbtdata["SBT state and messages<br/>[SbtItem.data.ts]"]
  node_swapdata["Swap state and messages<br/>[Swap.data.ts]"]
  node_rafflestorage["Raffle storage codec<br/>[raffle.storage.ts]"]
  node_salev4data["Sale v4 state and messages"]
  node_salev3data["Sale v3 state and messages"]
  node_offerdata["Offer state and messages<br/>[NftOfferData.ts]"]
end

node_developer(("Developer or wallet"))

node_developer -->|"interacts with"| node_collection
node_developer -->|"interacts with"| node_item
node_developer -->|"interacts with"| node_sbt
node_developer -->|"interacts with"| node_auction
node_developer -->|"interacts with"| node_auctionv2
node_developer -->|"interacts with"| node_fixed
node_developer -->|"interacts with"| node_fixedv2
node_developer -->|"interacts with"| node_fixedv3
node_developer -->|"interacts with"| node_fixedv4
node_developer -->|"interacts with"| node_marketplace
node_developer -->|"interacts with"| node_offer
node_developer -->|"interacts with"| node_swap
node_developer -->|"interacts with"| node_raffle
node_collectiondata -->|"encodes content"| node_content
node_sbtdata -->|"encodes content"| node_content
node_swapdata -->|"encodes content"| node_content
node_salev4data -->|"builds deploy payload"| node_deployer
node_collectiondata -->|"prepares state and messages"| node_collection
node_itemdata -->|"prepares state and messages"| node_item
node_sbtdata -->|"prepares state and messages"| node_sbt
node_swapdata -->|"prepares state and messages"| node_swap
node_rafflestorage -->|"encodes storage"| node_raffle
node_salev4data -->|"prepares state and messages"| node_fixedv4
node_salev3data -->|"prepares state and messages"| node_fixedv3
node_offerdata -->|"prepares state and messages"| node_offer

click node_collection "https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-collection"
click node_item "https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-item"
click node_sbt "https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/sbt-item"
click node_auction "https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-auction"
click node_auctionv2 "https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-auction-v2"
click node_fixed "https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-fixprice-sale"
click node_fixedv2 "https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-fixprice-sale-v2"
click node_fixedv3 "https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-fixprice-sale-v3"
click node_fixedv4 "https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-fixprice-sale-v4"
click node_marketplace "https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-marketplace"
click node_offer "https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-offer"
click node_swap "https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-swap"
click node_raffle "https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-raffle"
click node_deployer "https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/deployer/DeployerLocal.ts"
click node_content "https://github.com/getgems-io/nft-contracts/blob/main/packages/nft-content/nftContent.ts"
click node_collectiondata "https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-collection/NftCollection.data.ts"
click node_itemdata "https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-item/NftItem.data.ts"
click node_sbtdata "https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/sbt-item/SbtItem.data.ts"
click node_swapdata "https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-swap/Swap.data.ts"
click node_rafflestorage "https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-raffle/raffle.storage.ts"
click node_salev4data "https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-fixprice-sale-v4/NftFixPriceSaleV4.data.ts"
click node_salev3data "https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-fixprice-sale-v3/NftFixpriceSaleV3.data.ts"
click node_offerdata "https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-offer/NftOfferData.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_collection,node_item,node_sbt toneBlue
class node_auction,node_auctionv2,node_fixed,node_fixedv2,node_fixedv3,node_fixedv4,node_marketplace,node_offer,node_swap,node_raffle toneAmber
class node_deployer toneMint
class node_content,node_collectiondata,node_itemdata,node_sbtdata,node_swapdata,node_rafflestorage,node_salev4data,node_salev3data,node_offerdata toneRose
class node_developer toneIndigo
```

## Components

### NFT contracts

- [NFT collection](https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-collection): `packages/contracts/nft-collection`
- [NFT item](https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-item): `packages/contracts/nft-item`
- [SBT item](https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/sbt-item): `packages/contracts/sbt-item`

### Trading contracts

- [Auctions](https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-auction): `packages/contracts/nft-auction`
- [Auction versions](https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-auction-v2): `packages/contracts/nft-auction-v2`
- [Fixed-price sales](https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-fixprice-sale): `packages/contracts/nft-fixprice-sale`
- [Fixed-price v2](https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-fixprice-sale-v2): `packages/contracts/nft-fixprice-sale-v2`
- [Fixed-price v3](https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-fixprice-sale-v3): `packages/contracts/nft-fixprice-sale-v3`
- [Fixed-price v4](https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-fixprice-sale-v4): `packages/contracts/nft-fixprice-sale-v4`
- [Marketplace](https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-marketplace): `packages/contracts/nft-marketplace`
- [NFT offers](https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-offer): `packages/contracts/nft-offer`
- [NFT swaps](https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-swap): `packages/contracts/nft-swap`
- [NFT raffle](https://github.com/getgems-io/nft-contracts/tree/main/packages/contracts/nft-raffle): `packages/contracts/nft-raffle`

### Contract support

- [Sale deployer](https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/deployer/DeployerLocal.ts): `packages/contracts/deployer/DeployerLocal.ts`

### TON encoding

- [NFT content codec](https://github.com/getgems-io/nft-contracts/blob/main/packages/nft-content/nftContent.ts): `packages/nft-content/nftContent.ts`
- [Collection state and messages](https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-collection/NftCollection.data.ts): `packages/contracts/nft-collection/NftCollection.data.ts`
- [Item state and messages](https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-item/NftItem.data.ts): `packages/contracts/nft-item/NftItem.data.ts`
- [SBT state and messages](https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/sbt-item/SbtItem.data.ts): `packages/contracts/sbt-item/SbtItem.data.ts`
- [Swap state and messages](https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-swap/Swap.data.ts): `packages/contracts/nft-swap/Swap.data.ts`
- [Raffle storage codec](https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-raffle/raffle.storage.ts): `packages/contracts/nft-raffle/raffle.storage.ts`
- [Sale v4 state and messages](https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-fixprice-sale-v4/NftFixPriceSaleV4.data.ts): `packages/contracts/nft-fixprice-sale-v4/NftFixPriceSaleV4.data.ts`
- [Sale v3 state and messages](https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-fixprice-sale-v3/NftFixpriceSaleV3.data.ts): `packages/contracts/nft-fixprice-sale-v3/NftFixpriceSaleV3.data.ts`
- [Offer state and messages](https://github.com/getgems-io/nft-contracts/blob/main/packages/contracts/nft-offer/NftOfferData.ts): `packages/contracts/nft-offer/NftOfferData.ts`

### Other components

- **Developer or wallet**

## Connections

- Developer or wallet → NFT collection: interacts with
- Developer or wallet → NFT item: interacts with
- Developer or wallet → SBT item: interacts with
- Developer or wallet → Auctions: interacts with
- Developer or wallet → Auction versions: interacts with
- Developer or wallet → Fixed-price sales: interacts with
- Developer or wallet → Fixed-price v2: interacts with
- Developer or wallet → Fixed-price v3: interacts with
- Developer or wallet → Fixed-price v4: interacts with
- Developer or wallet → Marketplace: interacts with
- Developer or wallet → NFT offers: interacts with
- Developer or wallet → NFT swaps: interacts with
- Developer or wallet → NFT raffle: interacts with
- Collection state and messages → NFT content codec: encodes content
- SBT state and messages → NFT content codec: encodes content
- Swap state and messages → NFT content codec: encodes content
- Sale v4 state and messages → Sale deployer: builds deploy payload
- Collection state and messages → NFT collection: prepares state and messages
- Item state and messages → NFT item: prepares state and messages
- SBT state and messages → SBT item: prepares state and messages
- Swap state and messages → NFT swaps: prepares state and messages
- Raffle storage codec → NFT raffle: encodes storage
- Sale v4 state and messages → Fixed-price v4: prepares state and messages
- Sale v3 state and messages → Fixed-price v3: prepares state and messages
- Offer state and messages → NFT offers: prepares state and messages
