# Integration checklist and common errors

This checklist helps studios confirm that their upgraded contract is implemented correctly before attempting to integrate external assets. It also highlights the most common mistakes that cause integration errors or proposal rejections.

### ✅ **Integration checklist**

#### **1. AbstractGamingStudioAsset imported**

Your collection contract must include one of the following:

```solidity
import "@infinity-ecosystem/asset-integration-standard/contracts/token-standard/AbstractGamingStudioAsset.sol";
```

or, if using local source:

```solidity
import "./lib/AbstractGamingStudioAsset.sol";
```

#### **2. Contract inherits AbstractGamingStudioAsset**

```solidity
contract MyCollection is
  ...
  AbstractGamingStudioAsset
```

This ensures the contract receives royalty, verification, and parent–child logic.

#### **3. Initializer includes protocol initialization**

Your upgradeable contract must call:

```solidity
__AbstractGamingStudioAsset_init(_uri, _assetStore);
```

Where:

* `_uri` is your collection URI
* `_assetStore` is:\
  **0x165F79d307CbB9861bB5a080DA757B368CE57395**

#### **4. Required overrides implemented**

```solidity
function getStudioName() external view override returns (string memory) {}
```

```solidity
function supportsInterface(bytes4 interfaceId)
    public
    view
    override(AbstractGamingStudioAsset)
    returns (bool)
{
    return super.supportsInterface(interfaceId);
}
```

Without these overrides, integration will fail.

#### **5. Contract successfully redeployed or upgraded**

After modification, the collection must be:

* deployed (new contract), or
* upgraded via a proxy (if upgradeable)

A collection that was not upgraded will not pass protocol checks.

#### **6. Verified on the Interoperable Asset Store**

You must confirm that:

* the collection appears as **compatible** in the proposal modal
* reuse proposals can be submitted to it
* the royalty preview shows correct creator and percentages

If the collection is not compatible, proposals will not be allowed.

### ❌ **Common errors and how to fix them**

#### **Error: “Collection is not compatible for integration”**

**Cause:** The contract does not inherit `AbstractGamingStudioAsset`.

**Fix:** Add inheritance and initialize the contract.

#### **Error: “Missing initializer” or child minting fails**

**Cause:** `__AbstractGamingStudioAsset_init()` not called.

**Fix:** Add the call to the initializer.

#### **Error: supportsInterface override missing**

**Cause:** Solidity cannot verify interface support at runtime.

**Fix:** Add the required override exactly as shown above.

#### **Error: Wrong asset store address**

**Cause:** Using a non-production or outdated address.

**Fix:** Use the official address:\
**0x165F79d307CbB9861bB5a080DA757B368CE57395**


---

# Agent Instructions: 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:

```
GET https://infinity-games.gitbook.io/infinity-games-docs/smart-contract-integration/modifying-a-collection-contract/integration-checklist-and-common-errors.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
