# Fractional

## Overview

`Fractional` is a contract that manages the creation and fractionalization of ERC721 NFTs. It allows NFTs to be locked in the contract and fractionalized into ERC20 tokens, representing shares of the NFT.

## Methods

## <mark style="color:blue;">`createNFT`</mark>

Creates a new NFT.

### Parameters

| Name        | Type      | Description            |
| ----------- | --------- | ---------------------- |
| `_tokenURI` | `string`  | URI for the new token. |
| `_price`    | `uint256` | Price of the NFT.      |

## <mark style="color:blue;">`lockNFT`</mark>

Locks an NFT in the contract and fractionalizes it.

### Parameters

| Name            | Type      | Description                          |
| --------------- | --------- | ------------------------------------ |
| `_tokenID`      | `uint256` | Token ID of the NFT.                 |
| `_tokenURI`     | `string`  | URI of the token.                    |
| `_sharesAmount` | `uint256` | Total amount of shares to be issued. |

## <mark style="color:blue;">`buyFractionalShares`</mark>

Allows a user to buy fractional shares of an NFT.

### Parameters

| Name           | Type      | Description              |
| -------------- | --------- | ------------------------ |
| `_tokenID`     | `uint256` | Token ID of the NFT.     |
| `_totalShares` | `uint256` | Number of shares to buy. |

## <mark style="color:blue;">`fetchNFTs`</mark>

Fetches all NFTs owned by the caller.

### Returns

`NFT[]` - An array of NFT structs.
