Failed to build indexer due to `ContractId` not found in this scope

Hi
I am trying to compile indexer but it shows it failed to compile to wasm due to following error

error[E0412]: cannot find type `ContractId` in this scope
 --> src/lib.rs:7:1
  |
7 | #[indexer(manifest = "/nft-list-index/nft_list_index.manifest.yaml")]
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
  |
  = note: consider importing one of these items:
          crate::ContractId
          fuel_indexer_plugin::prelude::ContractId
          fuel_tx::ContractId
          fuels_core::tx::ContractId
  = note: this error originates in the attribute macro `indexer` (in Nightly builds, run with -Z macro-backtrace for more info)

ContractId is imported from use fuel_indexer_plugin::prelude::*; but when i remove the ABI.json file path in manifest.yaml file then it works fine. Can anyone help me with this.

10 Likes

Hi @Ahimasjason, can you share more details about your code? If you have snippets that you can share, that would be great!

3 Likes

Here is my indexer/lib.rs file

extern crate alloc;
use fuel_indexer_macros::indexer;
use fuel_indexer_plugin::prelude::*;

#[indexer(manifest = "/home//usr/indexer/nft-list-index/nft_list_index.manifest.yaml")]
pub mod nft_list_index_index_mod {
    fn nft_list_index_handler(block_data: BlockData) {
        Logger::info("Processing a block. (>'.')>");
    }
}

Here is _.manifest.yaml

namespace: fuel
identifier: nft_list_index
abi: /home/usr/indexer/marketplace/out/release/nft_marketplace-abi.json
contract_id: ~
graphql_schema: /home/usr/nft-list-index/schema/nft_list_index.schema.graphql
module:
  wasm: ~

I tried to bump fuels-core and fuels-types version to 0.33 but when i compile to wasm i got error related to mio

Forc version forc 0.32.2

Toml file

[lib]
crate-type = ['cdylib']

[dependencies]
fuel-indexer-macros = { version = "0.1", default-features = false }
fuel-indexer-plugin = { version = "0.1",default-features = false }
fuel-indexer-schema = { version = "0.1", default-features = false }
fuel-tx = "0.23"
fuels-core = "0.30"
fuels-types = "0.30"
getrandom = { version = "0.2", features = ["js"] }
serde = { version = "1.0", default-features = false, features = ["derive"] }
1 Like

@kern Shall i share Abi.json file? . It may help you to regenerate the error.

My apologies for the delayed response.

Sure, feel free to share it and we can see if there’s something in there that can lead us to a solution.

@kern What is right way to share the Json file in this forum. I could not attach the json file in the comment.
Shall i insert json object in code block?

Yes, that would work!

Hi @kern , I was little busy with other stuffs so i could not post it earlier, I think it could be solved. On {namespace}_mod module which is generated by indexer macro there is a line use fuels_core::types::*; which is supposed to import ContractId since indexer using fuels-core = "0.30" as a default version the ContractId is not found on the types mod fuels::types - Rust where as on the latest version it can be found fuels::types - Rust .

{
  "types": [
    {
      "typeId": 0,
      "type": "()",
      "components": [],
      "typeParameters": null
    },
    {
      "typeId": 1,
      "type": "b256",
      "components": null,
      "typeParameters": null
    },
    {
      "typeId": 2,
      "type": "bool",
      "components": null,
      "typeParameters": null
    },
    {
      "typeId": 3,
      "type": "enum AccessError",
      "components": [
        {
          "name": "NFTAlreadyListed",
          "type": 0,
          "typeArguments": null
        },
        {
          "name": "NFTNotListed",
          "type": 0,
          "typeArguments": null
        },
        {
          "name": "ProtocolFeeDoesNotExist",
          "type": 0,
          "typeArguments": null
        },
        {
          "name": "SenderCannotSetAccessControl",
          "type": 0,
          "typeArguments": null
        },
        {
          "name": "SenderIsOwner",
          "type": 0,
          "typeArguments": null
        },
        {
          "name": "SenderNotAdmin",
          "type": 0,
          "typeArguments": null
        },
        {
          "name": "SenderNotArtist",
          "type": 0,
          "typeArguments": null
        },
        {
          "name": "SenderNotOwner",
          "type": 0,
          "typeArguments": null
        },
        {
          "name": "SenderNotOwnerOrApproved",
          "type": 0,
          "typeArguments": null
        },
        {
          "name": "SenderDidNotMakeOffer",
          "type": 0,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 4,
      "type": "enum Identity",
      "components": [
        {
          "name": "Address",
          "type": 7,
          "typeArguments": null
        },
        {
          "name": "ContractId",
          "type": 9,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 5,
      "type": "enum InputError",
      "components": [
        {
          "name": "AdminDoesNotExist",
          "type": 0,
          "typeArguments": null
        },
        {
          "name": "PriceCantBeZero",
          "type": 0,
          "typeArguments": null
        },
        {
          "name": "OffererNotExists",
          "type": 0,
          "typeArguments": null
        },
        {
          "name": "IncorrectAmountProvided",
          "type": 0,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 6,
      "type": "str[59]",
      "components": null,
      "typeParameters": null
    },
    {
      "typeId": 7,
      "type": "struct Address",
      "components": [
        {
          "name": "value",
          "type": 1,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 8,
      "type": "struct AdminChangedEvent",
      "components": [
        {
          "name": "mew_admin",
          "type": 4,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 9,
      "type": "struct ContractId",
      "components": [
        {
          "name": "value",
          "type": 1,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 10,
      "type": "struct ListNft",
      "components": [
        {
          "name": "owner",
          "type": 4,
          "typeArguments": null
        },
        {
          "name": "price",
          "type": 20,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 11,
      "type": "struct NFTBoughtEvent",
      "components": [
        {
          "name": "buyer",
          "type": 4,
          "typeArguments": null
        },
        {
          "name": "seller",
          "type": 4,
          "typeArguments": null
        },
        {
          "name": "nft_contract",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        },
        {
          "name": "price",
          "type": 20,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 12,
      "type": "struct NFTChangeOfferEvent",
      "components": [
        {
          "name": "offerer",
          "type": 4,
          "typeArguments": null
        },
        {
          "name": "nft_contract",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        },
        {
          "name": "new_price",
          "type": 20,
          "typeArguments": null
        },
        {
          "name": "old_price",
          "type": 20,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 13,
      "type": "struct NFTDeListedEvent",
      "components": [
        {
          "name": "owner",
          "type": 4,
          "typeArguments": null
        },
        {
          "name": "nft_contract",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 14,
      "type": "struct NFTListedEvent",
      "components": [
        {
          "name": "owner",
          "type": 4,
          "typeArguments": null
        },
        {
          "name": "nft_contract",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        },
        {
          "name": "price",
          "type": 20,
          "typeArguments": null
        },
        {
          "name": "token_uri",
          "type": 6,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 15,
      "type": "struct NFTOfferAcceptEvent",
      "components": [
        {
          "name": "offerer",
          "type": 4,
          "typeArguments": null
        },
        {
          "name": "owner",
          "type": 4,
          "typeArguments": null
        },
        {
          "name": "nft_contract",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        },
        {
          "name": "price",
          "type": 20,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 16,
      "type": "struct NFTOfferEvent",
      "components": [
        {
          "name": "offerer",
          "type": 4,
          "typeArguments": null
        },
        {
          "name": "nft_contract",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        },
        {
          "name": "price",
          "type": 20,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 17,
      "type": "struct NFTPriceChangeEvent",
      "components": [
        {
          "name": "owner",
          "type": 4,
          "typeArguments": null
        },
        {
          "name": "nft_contract",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        },
        {
          "name": "old_price",
          "type": 20,
          "typeArguments": null
        },
        {
          "name": "new_price",
          "type": 20,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 18,
      "type": "struct RoyaltyOfArtist",
      "components": [
        {
          "name": "artist",
          "type": 4,
          "typeArguments": null
        },
        {
          "name": "royalty",
          "type": 20,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 19,
      "type": "struct WalletNft",
      "components": [
        {
          "name": "contract_id",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token",
          "type": 20,
          "typeArguments": null
        }
      ],
      "typeParameters": null
    },
    {
      "typeId": 20,
      "type": "u64",
      "components": null,
      "typeParameters": null
    }
  ],
  "functions": [
    {
      "inputs": [
        {
          "name": "id",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        }
      ],
      "name": "accept_offer",
      "output": {
        "name": "",
        "type": 0,
        "typeArguments": null
      }
    },
    {
      "inputs": [],
      "name": "admin",
      "output": {
        "name": "",
        "type": 4,
        "typeArguments": null
      }
    },
    {
      "inputs": [
        {
          "name": "id",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        }
      ],
      "name": "buy_nft",
      "output": {
        "name": "",
        "type": 0,
        "typeArguments": null
      }
    },
    {
      "inputs": [
        {
          "name": "id",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        },
        {
          "name": "price",
          "type": 20,
          "typeArguments": null
        }
      ],
      "name": "change_nft_price",
      "output": {
        "name": "",
        "type": 0,
        "typeArguments": null
      }
    },
    {
      "inputs": [
        {
          "name": "id",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        },
        {
          "name": "price",
          "type": 20,
          "typeArguments": null
        }
      ],
      "name": "change_offer",
      "output": {
        "name": "",
        "type": 0,
        "typeArguments": null
      }
    },
    {
      "inputs": [
        {
          "name": "id",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        }
      ],
      "name": "delist_nft",
      "output": {
        "name": "",
        "type": 0,
        "typeArguments": null
      }
    },
    {
      "inputs": [
        {
          "name": "id",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        }
      ],
      "name": "get_nft_data",
      "output": {
        "name": "",
        "type": 10,
        "typeArguments": null
      }
    },
    {
      "inputs": [
        {
          "name": "id",
          "type": 9,
          "typeArguments": null
        }
      ],
      "name": "get_protocol_fee",
      "output": {
        "name": "",
        "type": 20,
        "typeArguments": null
      }
    },
    {
      "inputs": [
        {
          "name": "id",
          "type": 9,
          "typeArguments": null
        }
      ],
      "name": "get_royalty",
      "output": {
        "name": "",
        "type": 18,
        "typeArguments": null
      }
    },
    {
      "inputs": [
        {
          "name": "addr",
          "type": 4,
          "typeArguments": null
        }
      ],
      "name": "get_wallet_nft",
      "output": {
        "name": "",
        "type": 19,
        "typeArguments": null
      }
    },
    {
      "inputs": [
        {
          "name": "id",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        }
      ],
      "name": "is_nft_listed",
      "output": {
        "name": "",
        "type": 2,
        "typeArguments": null
      }
    },
    {
      "inputs": [
        {
          "name": "id",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        },
        {
          "name": "price",
          "type": 20,
          "typeArguments": null
        }
      ],
      "name": "list_nft",
      "output": {
        "name": "",
        "type": 0,
        "typeArguments": null
      }
    },
    {
      "inputs": [
        {
          "name": "id",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "token_id",
          "type": 20,
          "typeArguments": null
        },
        {
          "name": "price",
          "type": 20,
          "typeArguments": null
        }
      ],
      "name": "make_offer",
      "output": {
        "name": "",
        "type": 0,
        "typeArguments": null
      }
    },
    {
      "inputs": [
        {
          "name": "admin",
          "type": 4,
          "typeArguments": null
        }
      ],
      "name": "set_admin",
      "output": {
        "name": "",
        "type": 0,
        "typeArguments": null
      }
    },
    {
      "inputs": [
        {
          "name": "id",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "amount",
          "type": 20,
          "typeArguments": null
        }
      ],
      "name": "set_protocol_fee",
      "output": {
        "name": "",
        "type": 0,
        "typeArguments": null
      }
    },
    {
      "inputs": [
        {
          "name": "id",
          "type": 9,
          "typeArguments": null
        },
        {
          "name": "royalty",
          "type": 20,
          "typeArguments": null
        },
        {
          "name": "artist",
          "type": 4,
          "typeArguments": null
        }
      ],
      "name": "set_royalty",
      "output": {
        "name": "",
        "type": 0,
        "typeArguments": null
      }
    },
    {
      "inputs": [],
      "name": "withdraw_royalty",
      "output": {
        "name": "",
        "type": 0,
        "typeArguments": null
      }
    }
  ],
  "loggedTypes": [
    {
      "logId": 0,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 1,
      "loggedType": {
        "name": "",
        "type": 5,
        "typeArguments": []
      }
    },
    {
      "logId": 2,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 3,
      "loggedType": {
        "name": "",
        "type": 15,
        "typeArguments": []
      }
    },
    {
      "logId": 4,
      "loggedType": {
        "name": "",
        "type": 5,
        "typeArguments": []
      }
    },
    {
      "logId": 5,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 6,
      "loggedType": {
        "name": "",
        "type": 5,
        "typeArguments": []
      }
    },
    {
      "logId": 7,
      "loggedType": {
        "name": "",
        "type": 11,
        "typeArguments": []
      }
    },
    {
      "logId": 8,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 9,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 10,
      "loggedType": {
        "name": "",
        "type": 17,
        "typeArguments": []
      }
    },
    {
      "logId": 11,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 12,
      "loggedType": {
        "name": "",
        "type": 5,
        "typeArguments": []
      }
    },
    {
      "logId": 13,
      "loggedType": {
        "name": "",
        "type": 5,
        "typeArguments": []
      }
    },
    {
      "logId": 14,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 15,
      "loggedType": {
        "name": "",
        "type": 12,
        "typeArguments": []
      }
    },
    {
      "logId": 16,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 17,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 18,
      "loggedType": {
        "name": "",
        "type": 13,
        "typeArguments": []
      }
    },
    {
      "logId": 19,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 20,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 21,
      "loggedType": {
        "name": "",
        "type": 14,
        "typeArguments": []
      }
    },
    {
      "logId": 22,
      "loggedType": {
        "name": "",
        "type": 5,
        "typeArguments": []
      }
    },
    {
      "logId": 23,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 24,
      "loggedType": {
        "name": "",
        "type": 5,
        "typeArguments": []
      }
    },
    {
      "logId": 25,
      "loggedType": {
        "name": "",
        "type": 16,
        "typeArguments": []
      }
    },
    {
      "logId": 26,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 27,
      "loggedType": {
        "name": "",
        "type": 8,
        "typeArguments": []
      }
    },
    {
      "logId": 28,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 29,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    },
    {
      "logId": 30,
      "loggedType": {
        "name": "",
        "type": 3,
        "typeArguments": []
      }
    }
  ],
  "messagesTypes": []
}