Skip to content

Instantly share code, notes, and snippets.

@OkoliEvans
Last active May 30, 2024 09:49
Show Gist options
  • Save OkoliEvans/04f0590a3af6afc8015b1f089390cbc0 to your computer and use it in GitHub Desktop.
Save OkoliEvans/04f0590a3af6afc8015b1f089390cbc0 to your computer and use it in GitHub Desktop.
#[starknet::contract]
mod NftBase {
// use openzeppelin::access::ownable::ownable::OwnableComponent::InternalTrait;
use openzeppelin::token::erc721::erc721::ERC721Component::InternalTrait;
use openzeppelin::token::erc721::erc721::ERC721Component;
use openzeppelin::access::ownable::OwnableComponent;
use starknet::{ContractAddress};
component!(path: ERC721Component, storage: ERC721, event: ERC721Event);
component!(path: OwnableComponent, storage: ownable, event: OwnableEvent);
#[storage]
struct Storage {
#[substorage(v0)]
ERC721: ERC721Component::Storage,
#[substorage(v0)]
ownable: OwnableComponent::Storage
}
#[event]
#[derive(Drop, starknet::Event)]
enum Event {
#[flat]
ERC721Event: ERC721Component::Event,
#[flat]
OwnableEvent: OwnableComponent::Event,
}
#[constructor]
fn constructor(ref self: ContractState, owner: ContractAddress, name: ByteArray, symbol: ByteArray, base_uri: ByteArray) {
self.ERC721.initializer(name, symbol, base_uri);
// initializer() throws error: `Method `initializer` could not be called on type `openzeppelin::token::erc721::erc721::ERC721Component::ComponentState::<starkcon::nft::NftBase::ContractState>`.
//Candidate `InternalTrait::initializer` inference failed with: Trait has no implementation in context: openzeppelin::token::erc721::erc721::ERC721Component::InternalTrait::<starkcon::nft::NftBase::ContractState, ?0, ?1, ?2, ?3>`
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment