import { Addressish, ChainId } from '@monaxlabs/phloem/dist/types'; import { BigNumber, BigNumberish, ContractTransaction } from 'ethers'; import { ClaimConditionsState, OperationStatus, Signerish, TokenMetadata, WriteOverrides } from '../..'; import { CollectionContract } from '../collections'; import { CollectionContractClaimCondition } from '../features'; import { ContractObject } from './object'; export type AllowlistStatusGetter = { (chain: ChainId, contractAddress: Addressish, walletAddress: Addressish, tokenId: BigNumberish | null): Promise; }; export declare class Token extends ContractObject { protected readonly base: CollectionContract; readonly tokenId: BigNumberish | null; constructor(base: CollectionContract, tokenId: BigNumberish | null); getUri(): Promise; totalSupply(): Promise; exists(): Promise; getMetadata(): Promise>; static getMetadataFromUri(ipfsUri: string): Promise; /** Requires authenticated Publishing API */ getFullUserClaimConditions(userAddress: Addressish, allowlistStatusGetter: AllowlistStatusGetter): Promise>; setTokenURI(signer: Signerish, tokenUri: string, overrides?: WriteOverrides): Promise>; setPermantentTokenURI(signer: Signerish, tokenUri: string, overrides?: WriteOverrides): Promise>; setMaxTotalSupply(signer: Signerish, totalSupply: BigNumberish, overrides?: WriteOverrides): Promise>; setClaimConditions(signer: Signerish, conditions: CollectionContractClaimCondition[], resetClaimEligibility: boolean, overrides?: WriteOverrides): Promise>; } export type AllowlistStatus = { enabled: true; status: 'included'; proofs: string[]; proofMaxQuantityPerTransaction: number; } | { enabled: true; status: 'excluded'; proofs: []; proofMaxQuantityPerTransaction: 0; } | { enabled: false; status: 'no-active-phase'; proofs: []; proofMaxQuantityPerTransaction: 0; } | { enabled: false; status: 'no-allowlist'; proofs: []; proofMaxQuantityPerTransaction: 0; };