const provider = new ethers.providers.Web3Provider(window.ethereum);
const singer = provider.getSigner();
const network = '';
const phantaci = new EtherPhantaciClient();
phantaci.connectProvider(DeploymentInfo[network].phantaci.proxyAddress, provider);
phantaci.connectSigner(singer);
phantaci.setWaitConfirmations(1);
import {Provider} from "@ethersproject/providers";
import {BigNumber, PayableOverrides, Signer} from "ethers";
import {ERC721Client} from "./ERC721Client";
import {ContractBuyResult, ContractClaimResult, TokenInfo} from "../model/chain";
import {TokenMintedEvent, TransferEvent} from "../model/event.model";
export interface PhantaciClient extends ERC721Client {
connectProvider(address: string, provider: Provider): Promise<PhantaciClient>;
connectSigner(signer: Signer): PhantaciClient;
/*======== PhantaciClient specific views======*/
/**
* @returns the number of available tokens to be purchased
*/
stockSupply(config?: PayableOverrides): Promise<BigNumber>;
/**
* @returns the current token price
*/
tokenPrice(config?: PayableOverrides): Promise<BigNumber>;
/**
* Return token detailed information including owner address
* @param tokenId the token to be searched for
* @returns returns the token owner address
*/
tokenInfo(tokenId: BigNumber, config?: PayableOverrides): Promise<TokenInfo>;
/*======== PhantaciClient specific transactions======*/
/**
* buy
* @param quantity the amount of tokens to buy, will trigger Web3Provider to send transaction in browser
* @param config ethers PayableOverrides
* @returns BuyResult including transactionHash and a list of awarded tokenIds
*/
buy(quantity: BigNumber, config?: PayableOverrides): Promise<ContractBuyResult>;
/**
* claim
* @param quantity the amount of tokens to buy, will trigger Web3Provider to send transaction in browser
* @param config ethers PayableOverrides
* @returns BuyResult including transactionHash and a list of awarded tokenIds
* address account,
uint256 numberOfToken,
uint256 nonce,
uint256 chainId,
bytes memory signature
*/
claim(
account: string,
numberOfToken: number,
nonce: number,
signature: string,
config?: PayableOverrides
): Promise<ContractClaimResult>;
/*======== Util functions======*/
/**
* filers all the TokenMintedEvent between 'from' and 'to' blocks
* @param fromBlock the starting block
* @param toBlock the ending block
* @returns promise of all the TokenMintedEvent in an array
*/
queryTokenMintedEvent(fromBlock: number, toBlock: number): Promise<TokenMintedEvent[]>;
/**
* filers all the ERC721 TransferEvent between 'from' and 'to' blocks
* @param fromBlock the starting block
* @param toBlock the ending block
* @returns promise of all the TransferEvent in an array
*/
queryTransferEvent(fromBlock: number, toBlock: number): Promise<TransferEvent[]>;
/**
* 对Claim签名
* @param privateKey contract owner private key
* @param number of tokens
* @param nonce
* @param chainId
* @returns signature is verified in the preOrder transaction
*/
signClaimMessage(
privateKey: string,
account: string,
numberOfToken: number,
nonce: number,
chainId: number
): Promise<string>;
/**
* @returns the block number (or height) of the most recently mined block.
*/
getBlockNumber(): Promise<number>;
}