> For the complete documentation index, see [llms.txt](https://dominiumxyz.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dominiumxyz.gitbook.io/docs/build/developers/smart-contracts.md).

# Smart contracts

Planned contract interfaces and addresses.

Interfaces and addresses (planned).

***

{% hint style="warning" %}
**Under construction.** Dominium is currently in development.

These docs describe our vision and planned functionality.

Follow [@dominiumxyz](https://twitter.com/dominiumxyz) for official announcements.
{% endhint %}

***

### IPRegistry

```solidity
interface IIPRegistry {
    function registerIP(
        string calldata name,
        IPType ipType,
        bytes32 contentHash,
        LicenseTerms calldata terms
    ) external returns (uint256 tokenId);

    function getIP(uint256 tokenId) external view returns (IPAsset memory);
    function updateTerms(uint256 tokenId, LicenseTerms calldata newTerms) external;
    function transferIP(uint256 tokenId, address to) external;
}
```

### LicenseFactory

```solidity
interface ILicenseFactory {
    function mintLicense(
        uint256 ipAssetId,
        LicenseType licenseType,
        uint256 duration
    ) external payable returns (uint256 licenseId);

    function revokeLicense(uint256 licenseId, bytes calldata reason) external;
    function isValidLicense(uint256 licenseId) external view returns (bool);
}
```

### StakingVault

```solidity
interface IStakingVault {
    function stake(uint256 amount) external;
    function unstake(uint256 amount) external;
    function getStake(address user) external view returns (uint256);
    function getTier(address user) external view returns (Tier);
    function claimRewards() external;
}
```

### Contract addresses

{% hint style="info" %}
Mainnet/testnet addresses will be published at launch.
{% endhint %}
