import { Address } from '../../../../../node_modules/@btc-vision/transaction/build/index.js'; import { CallResult } from '../../../../contracts/CallResult.js'; import { OPNetEvent } from '../../../../contracts/OPNetEvent.js'; import { IOP_NETContract } from './IOP_NETContract.js'; export type TransferredEventNFT = { readonly operator: Address; readonly from: Address; readonly to: Address; readonly amount: bigint; }; export type ApprovedEventNFT = { readonly owner: Address; readonly spender: Address; readonly amount: bigint; }; export type ApprovedForAllEventNFT = { readonly account: Address; readonly operator: Address; readonly approved: boolean; }; export type URIEventNFT = { readonly value: string; readonly id: bigint; }; export type NameNFT = CallResult<{ name: string; }, [ ]>; export type SymbolNFT = CallResult<{ symbol: string; }, [ ]>; export type MaxSupplyNFT = CallResult<{ maxSupply: bigint; }, [ ]>; export type CollectionInfo = CallResult<{ icon: string; banner: string; description: string; website: string; }, [ ]>; export type TokenURI = CallResult<{ uri: string; }, [ ]>; export type ChangeMetadata = CallResult<{}, []>; export type TotalSupplyNFT = CallResult<{ totalSupply: bigint; }, [ ]>; export type BalanceOfNFT = CallResult<{ balance: bigint; }, [ ]>; export type OwnerOfNFT = CallResult<{ owner: Address; }, [ ]>; export type SafeTransferNFT = CallResult<{}, [OPNetEvent]>; export type SafeTransferFromNFT = CallResult<{}, [OPNetEvent]>; export type ApproveNFT = CallResult<{}, [OPNetEvent]>; export type GetApprovedNFT = CallResult<{}, []>; export type SetApprovalForAllNFT = CallResult<{}, [OPNetEvent]>; export type IsApprovedForAllNFT = CallResult<{ approved: boolean; }, [ ]>; export type ApproveBySignatureNFT = CallResult<{}, [OPNetEvent]>; export type SetApprovalForAllBySignatureNFT = CallResult<{}, [OPNetEvent]>; export type BurnNFT = CallResult<{}, [OPNetEvent]>; export type DomainSeparatorNFT = CallResult<{ domainSeparator: Uint8Array; }, [ ]>; export type TokenOfOwnerByIndex = CallResult<{ tokenId: bigint; }, [ ]>; export type GetApproveNonce = CallResult<{ nonce: bigint; }, [ ]>; export type SetBaseURI = CallResult<{}, [OPNetEvent]>; export type MetadataNFT = CallResult<{ name: string; symbol: string; icon: string; banner: string; description: string; website: string; totalSupply: bigint; domainSeparator: Uint8Array; }, [ ]>; export interface IOP721Contract extends IOP_NETContract { name(): Promise; symbol(): Promise; maxSupply(): Promise; collectionInfo(): Promise; tokenURI(tokenId: bigint): Promise; changeMetadata(icon: string, banner: string, description: string, website: string): Promise; totalSupply(): Promise; balanceOf(owner: Address): Promise; ownerOf(tokenId: bigint): Promise; safeTransfer(to: Address, tokenId: bigint, data: Uint8Array): Promise; safeTransferFrom(from: Address, to: Address, tokenId: bigint, data: Uint8Array): Promise; approve(operator: Address, tokenId: bigint): Promise; getApproved(tokenId: bigint): Promise; setApprovalForAll(operator: Address, approved: boolean): Promise; isApprovedForAll(owner: Address, operator: Address): Promise; approveBySignature(owner: Uint8Array, ownerTweakedPublicKey: Uint8Array, operator: Address, tokenId: bigint, deadline: bigint, signature: Uint8Array): Promise; setApprovalForAllBySignature(owner: Uint8Array, ownerTweakedPublicKey: Uint8Array, operator: Address, approved: boolean, deadline: bigint, signature: Uint8Array): Promise; burn(tokenId: bigint): Promise; domainSeparator(): Promise; tokenOfOwnerByIndex(owner: Address, index: bigint): Promise; getApproveNonce(owner: Address): Promise; setBaseURI(baseURI: string): Promise; metadata(): Promise; } export type IOP721 = IOP721Contract;