import { ONFT721RewardContractError, EVMAccountAddress, TokenId, TokenUri, BaseURI, BlockchainCommonErrors } from "@snickerdoodlelabs/objects"; import { ethers } from "ethers"; import { ResultAsync } from "neverthrow"; import { IBaseContract, IRBCContract, IERC7529Contract } from "../interfaces/index.js"; import { ContractOverrides, WrappedTransactionResponse } from "../interfaces/objects"; export interface IONFT721RewardContract extends IBaseContract, IERC7529Contract, IRBCContract { getOwner(): ResultAsync; getDefaultAdminRoleMembers(): ResultAsync; getMinterRoleMembers(): ResultAsync; /** * Returns the number of Reward tokens owned by a specific address * @param address owner address */ balanceOf(address: EVMAccountAddress): ResultAsync; /** * Returns the owner account for a token Id * @param tokenId token Id */ ownerOf(tokenId: TokenId): ResultAsync; /** * Returns the token uri for a specific token Id * @param tokenId token Id */ tokenURI(tokenId: TokenId): ResultAsync; /** * Returns the baseURI of the Reward contract */ baseURI(): ResultAsync; /** * Sets a new baseURI for the Reward contract * Only callable by addresses that have the DEFAULT_ADMIN_ROLE on the Reward contract */ setBaseURI(baseUri: BaseURI, overrides?: ContractOverrides): ResultAsync; filters: IONFT721Filters; /** * Returns if operatorToApprove is approved to transfer tokens that belong to tokenOwnerAddress */ isApprovedForAll(tokenOwnerAddress: EVMAccountAddress, operatorToApprove: EVMAccountAddress): ResultAsync; /** * Allows the token owner to approve the escrow wallet to transfer all token ids he owns on this rewards contract * NOTE: To support this, the user would need to connect their external wallet that owns the NFTs to sign the approval txs */ setApproveForAll(addressToApprove: EVMAccountAddress, approved: boolean, overrides?: ContractOverrides): ResultAsync; /** * Allows the escrow wallet to transfer NFTs to reward receiver after they have been approvedForAll by the token owner */ safeTransferFrom(from: EVMAccountAddress, to: EVMAccountAddress, tokenId: TokenId, overrides?: ContractOverrides): ResultAsync; } export interface IONFT721Filters { Transfer(fromAddress: EVMAccountAddress | null, toAddress: EVMAccountAddress | null): ethers.DeferredTopicFilter; } export declare const IONFT721RewardContractType: unique symbol; //# sourceMappingURL=IONFT721RewardContract.d.ts.map