import { ethers, Wallet as HDNodeWallet } from "ethers"; import DecimalContractEVM from "./contract"; import { Stake, NFTStake } from "./interfaces/delegation"; import { ValidatorStatus } from "./interfaces/validator"; import { NETWORKS } from "../endpoints"; import { MetaTransaction, SafeSignature, SafeTransaction } from "./multisig/execution"; export declare enum TypeNFT { DRC721 = 0, DRC1155 = 1 } export declare enum FreezeType { Unknown = 0, Withdraw = 1, Transfer = 2, Completed = 3 } export type Token = { creator: string; symbol: string; name: string; crr: string | number | bigint; initialMint: ethers.BigNumberish; minTotalSupply: ethers.BigNumberish; maxTotalSupply: ethers.BigNumberish; identity: string; }; export type NFTCollection = { creator: string; symbol: string; name: string; contractURI: string; allowMint: boolean; burnable: boolean; refundable: boolean; }; export type NFTCollectionReserveless = Omit; export type ValidotorStake = { token: string; amount: ethers.BigNumberish; }; export default class Call { private readonly network; private readonly provider; private readonly account; contractCenter?: DecimalContractEVM; tokenCenter?: DecimalContractEVM; delegation?: DecimalContractEVM; nftCenter?: DecimalContractEVM; delegationNft?: DecimalContractEVM; masterValidator?: DecimalContractEVM; multiCall?: DecimalContractEVM; safe?: DecimalContractEVM; safeFactory?: DecimalContractEVM; multiSend?: DecimalContractEVM; checks?: DecimalContractEVM; bridgeV2?: DecimalContractEVM; gasCenter?: DecimalContractEVM; private bridgeV2Nonce; private debug; constructor(network: NETWORKS, provider: ethers.providers.JsonRpcProvider, account: HDNodeWallet); setDecimalContractEVM(decimalContractEVM: DecimalContractEVM, name: string): void; private txOptions; private parseLog; multicall(value: string | number | bigint, calls: { target: string; value: string; callData: string; }[], estimateGas?: boolean): Promise; createToken(token: Token, reserve: string | number | bigint, estimateGas?: boolean): Promise; createTokenReserveless(name: string, symbol: string, mintable: boolean, burnable: boolean, initialMint: string | number | bigint, cap: string | number | bigint | undefined | null, identity: string, estimateGas?: boolean): Promise; convertToken(tokenIn: string, tokenOut: string, amountIn: string | number | bigint, amountOutMin: string | number | bigint, recipient: string, sign?: ethers.Signature, estimateGas?: boolean): Promise; mintTokenReserveless(contract: ethers.Contract, amount: string | number | bigint, recipient: string, estimateGas?: boolean): Promise; convertToDEL(owner: string, token: string, amount: string | number | bigint, estimateGas: string | number | bigint, sign: ethers.Signature, estimateGasUsage?: boolean): Promise; approveToken(contract: ethers.Contract, spender: string, amount: string | number | bigint, estimateGas?: boolean): Promise; transferToken(contract: ethers.Contract, to: string, amount: string | number | bigint, estimateGas?: boolean): Promise; transferFromToken(contract: ethers.Contract, from: string, to: string, amount: string | number | bigint, estimateGas?: boolean): Promise; burnToken(contract: ethers.Contract, amount: string | number | bigint, estimateGas?: boolean): Promise; buyTokenForExactDEL(contract: ethers.Contract, amountDel: string | number | bigint, amountOutMin: string | number | bigint, recipient: string, estimateGas?: boolean): Promise; buyExactTokenForDEL(contract: ethers.Contract, amountDel: string | number | bigint, amountOut: string | number | bigint, recipient: string, estimateGas?: boolean): Promise; sellTokensForExactDEL(contract: ethers.Contract, amountOut: string | number | bigint, amountInMax: string | number | bigint, recipient: string, estimateGas?: boolean): Promise; sellExactTokensForDEL(contract: ethers.Contract, amountIn: string | number | bigint, amountOutMin: string | number | bigint, recipient: string, estimateGas?: boolean): Promise; updateTokenIdentity(contract: ethers.Contract, newIdentity: string, estimateGas?: boolean): Promise; updateTokenMaxTotalSupply(contract: ethers.Contract, newMaxTotalSupply: string | number | bigint, estimateGas?: boolean): Promise; updateTokenMinTotalSupply(contract: ethers.Contract, newMinTotalSupply: string | number | bigint, estimateGas?: boolean): Promise; permitToken(contract: ethers.Contract, owner: string, spender: string, amount: string | number | bigint, sign: ethers.Signature, estimateGas?: boolean): Promise; delegateDEL(validator: string, amount: string | number | bigint, estimateGas?: boolean): Promise; delegateDELHold(validator: string, amount: string | number | bigint, holdTimestamp: number, estimateGas?: boolean): Promise; delegateToken(validator: string, tokenAddress: string, amount: string | number | bigint, sign?: ethers.Signature, estimateGas?: boolean): Promise; delegateTokenHold(validator: string, tokenAddress: string, amount: string | number | bigint, holdTimestamp: number, sign?: ethers.Signature, estimateGas?: boolean): Promise; transferStakeToken(validator: string, tokenAddress: string, amount: string | number | bigint, newValidator: string, estimateGas?: boolean): Promise; transferStakeTokenHold(validator: string, tokenAddress: string, amount: string | number | bigint, holdTimestamp: number, newValidator: string, estimateGas?: boolean): Promise; withdrawStakeToken(validator: string, tokenAddress: string, amount: string | number | bigint, estimateGas?: boolean): Promise; withdrawStakeTokenHold(validator: string, tokenAddress: string, amount: string | number | bigint, holdTimestamp: number, estimateGas?: boolean): Promise; stakeTokenToHold(validator: string, tokenAddress: string, amount: string | number | bigint, oldHoldTimestamp: number, newHoldTimestamp: number, estimateGas?: boolean): Promise; stakeTokenResetHold(validator: string, delegator: string, tokenAddress: string, holdTimestamp: number, estimateGas?: boolean): Promise; stakeTokenResetHoldDEL(validator: string, delegator: string, holdTimestamp: number, estimateGas?: boolean): Promise; withdrawTokenWithReset(validator: string, tokenAddress: string, amount: string | number | bigint, holdTimestampsToReset: number[], estimateGas?: boolean): Promise; transferTokenWithReset(oldValidator: string, tokenAddress: string, amount: string | number | bigint, newValidator: string, holdTimestampsToReset: number[], estimateGas?: boolean): Promise; holdTokenWithReset(validator: string, tokenAddress: string, amount: string | number | bigint, newHoldTimestamp: number, holdTimestampsToReset: number[], estimateGas?: boolean): Promise; applyPenaltyToStakeToken(validator: string, delegator: string, tokenAddress: string, estimateGas?: boolean): Promise; applyPenaltiesToStakeToken(validator: string, delegator: string, tokenAddress: string, estimateGas?: boolean): Promise; completeStakeToken(indexes: string[] | number[], estimateGas?: boolean): Promise; delegateNFT(validator: string, nftContract: string, tokenId: bigint, estimateGas?: boolean): Promise; delegateNFTHold(validator: string, nftContract: string, tokenId: bigint, holdTimestamp: number, estimateGas?: boolean): Promise; delegateNFTByPermit(validator: string, nftContract: string, tokenId: bigint, sign: ethers.Signature, estimateGas?: boolean): Promise; withdrawNFT(validator: string, nftContract: string, tokenId: bigint, estimateGas?: boolean): Promise; withdrawNFTHold(validator: string, nftContract: string, tokenId: bigint, holdTimestamp: number, estimateGas?: boolean): Promise; transferNFTStake(oldValidator: string, nftContract: string, tokenId: bigint, newValidator: string, estimateGas?: boolean): Promise; transferNFTStakeHold(oldValidator: string, nftContract: string, tokenId: bigint, holdTimestamp: number, newValidator: string, estimateGas?: boolean): Promise; delegateNFT1155(validator: string, nftContract: string, tokenId: bigint, amount: bigint, estimateGas?: boolean): Promise; delegateNFT1155Hold(validator: string, nftContract: string, tokenId: bigint, amount: bigint, holdTimestamp: number, estimateGas?: boolean): Promise; withdrawNFT1155(validator: string, nftContract: string, tokenId: bigint, estimateGas?: boolean): Promise; withdrawNFT1155Hold(validator: string, nftContract: string, tokenId: bigint, holdTimestamp: number, estimateGas?: boolean): Promise; transferNFT1155Stake(oldValidator: string, nftContract: string, tokenId: bigint, newValidator: string, estimateGas?: boolean): Promise; transferNFT1155StakeHold(oldValidator: string, nftContract: string, tokenId: bigint, holdTimestamp: number, newValidator: string, estimateGas?: boolean): Promise; createCollection(nft: NFTCollection | NFTCollectionReserveless, typeNFT: TypeNFT, withReserve: boolean, estimateGas?: boolean): Promise; setApprovalForAllNFT(contract: ethers.Contract, to: string, approved: boolean, estimateGas?: boolean): Promise; transferNFT(contract: ethers.Contract, from: string, to: string, tokenId: string | number | bigint, amount?: string | number | bigint, estimateGas?: boolean): Promise; disableMintNFT(contract: ethers.Contract, estimateGas?: boolean): Promise; burnNFT(contract: ethers.Contract, tokenId: string | number | bigint, amount?: string | number | bigint, estimateGas?: boolean): Promise; setTokenURINFT(contract: ethers.Contract, tokenId: string | number | bigint, tokenURI: string, estimateGas?: boolean): Promise; mintNFT(contract: ethers.Contract, to: string, tokenURI: string, tokenId?: string | number | bigint, amount?: string | number | bigint, estimateGas?: boolean): Promise; mintNFTWithDELReserve(contract: ethers.Contract, to: string, tokenURI: string, reserve: string | number | bigint, tokenId?: string | number | bigint, amount?: string | number | bigint, estimateGas?: boolean): Promise; mintReserveless(contract: ethers.Contract, to: string, tokenURI: string, tokenId?: string | number | bigint, amount?: string | number | bigint, estimateGas?: boolean): Promise; mintNFTWithTokenReserve(contract: ethers.Contract, to: string, tokenURI: string, reserveAmount: string | number | bigint, reserveToken: string, sign?: ethers.Signature, tokenId?: string | number | bigint, amount?: string | number | bigint, estimateGas?: boolean): Promise; addDELReserveNFT(contract: ethers.Contract, tokenId: string | number | bigint, amountReserve: string | number | bigint, estimateGas?: boolean): Promise; addTokenReserveNFT(contract: ethers.Contract, tokenId: string | number | bigint, amountReserve: string | number | bigint, sign?: ethers.Signature, estimateGas?: boolean): Promise; approveNFT721(contract: ethers.Contract, to: string, tokenId: string | number | bigint, estimateGas?: boolean): Promise; transferBatchNFT1155(contract: ethers.Contract, from: string, to: string, tokenIds: string[] | number[], amounts: string[] | number[], estimateGas?: boolean): Promise; delegateDRC721(validator: string, nftAddress: string, tokenId: string | number | bigint, sign?: ethers.Signature, estimateGas?: boolean): Promise; delegateDRC721Hold(validator: string, nftAddress: string, tokenId: string | number | bigint, holdTimestamp: number, sign?: ethers.Signature, estimateGas?: boolean): Promise; delegateDRC1155(validator: string, nftAddress: string, tokenId: string | number | bigint, amount: string | number | bigint, sign?: ethers.Signature, estimateGas?: boolean): Promise; delegateDRC1155Hold(validator: string, nftAddress: string, tokenId: string | number | bigint, amount: string | number | bigint, holdTimestamp: number, sign?: ethers.Signature, estimateGas?: boolean): Promise; transferStakeNFT(validator: string, nftAddress: string, tokenId: string | number | bigint, amount: string | number | bigint, newValidator: string, estimateGas?: boolean): Promise; transferStakeNFTHold(validator: string, nftAddress: string, tokenId: string | number | bigint, amount: string | number | bigint, holdTimestamp: number, newValidator: string, estimateGas?: boolean): Promise; withdrawStakeNFT(validator: string, nftAddress: string, tokenId: string | number | bigint, amount: string | number | bigint, estimateGas?: boolean): Promise; withdrawStakeNFTHold(validator: string, nftAddress: string, tokenId: string | number | bigint, amount: string | number | bigint, holdTimestamp: number, estimateGas?: boolean): Promise; stakeNFTToHold(validator: string, nftAddress: string, tokenId: string | number | bigint, amount: string | number | bigint, oldHoldTimestamp: number, newHoldTimestamp: number, estimateGas?: boolean): Promise; stakeNFTResetHold(validator: string, delegator: string, tokenAddress: string, tokenId: string | number | bigint, holdTimestamp: number, estimateGas?: boolean): Promise; withdrawNFTWithReset(validator: string, tokenAddress: string, tokenId: string | number | bigint, amount: string | number | bigint, holdTimestampsToReset: number[], estimateGas?: boolean): Promise; transferNFTWithReset(oldValidator: string, tokenAddress: string, tokenId: string | number | bigint, amount: string | number | bigint, newValidator: string, holdTimestampsToReset: number[], estimateGas?: boolean): Promise; holdNFTWithReset(validator: string, tokenAddress: string, tokenId: string | number | bigint, amountToHold: string | number | bigint, newHoldTimestamp: number, holdTimestampsToReset: number[], estimateGas?: boolean): Promise; completeStakeNFT(indexes: string[] | number[], estimateGas?: boolean): Promise; addValidatorWithToken(validator: string, meta: string, stake: ValidotorStake, sign?: ethers.Signature, estimateGas?: boolean): Promise; addValidatorWithETH(validator: string, meta: string, amount: string | number | bigint, estimateGas?: boolean): Promise; removeValidator(validator: string, estimateGas?: boolean): Promise; pauseValidator(validator: string, estimateGas?: boolean): Promise; unpauseValidator(validator: string, estimateGas?: boolean): Promise; updateValidatorMeta(validator: string, meta: string, estimateGas?: boolean): Promise; wrapAndTransferETH(contract: ethers.Contract, to: string, amount: string | number | bigint, serviceFee: string | number | bigint, toChainId: number, estimateGas?: boolean): Promise; transferTokens(contract: ethers.Contract, tokenAddress: string, to: string, amount: string | number | bigint, serviceFee: string | number | bigint, toChainId: number, estimateGas?: boolean): Promise; completeTransfer(contract: ethers.Contract, encodedVM: string, unwrapWETH: boolean, estimateGas?: boolean): Promise; createChecksDEL(signers: string[], amount: string | number | bigint, dueBlock: string | number | bigint, estimateGas?: boolean): Promise; createChecksToken(signers: string[], amount: string | number | bigint, dueBlock: string | number | bigint, tokenAddress: string, sign?: ethers.Signature, estimateGas?: boolean): Promise; redeemChecks(signatures: string[], checks: string[], callStatic?: boolean, estimateGas?: boolean): Promise; checkTokenExists(address: string): Promise; getAddressTokenBySymbol(symbol: string): Promise; getCommissionSymbol(symbol: string): Promise; calculateBuyOutput(contract: ethers.Contract, amount: string | number | bigint): Promise; calculateBuyInput(contract: ethers.Contract, amount: string | number | bigint): Promise; calculateSellInput(contract: ethers.Contract, amount: string | number | bigint): Promise; calculateSellOutput(contract: ethers.Contract, amount: string | number | bigint): Promise; getSignPermitToken(contract: ethers.Contract, spender: string, amount: string | number | bigint): Promise; allowanceToken(contract: ethers.Contract, owner: string, spender: string): Promise; balanceOfToken(contract: ethers.Contract, account: string): Promise; supportsInterfaceToken(contract: ethers.Contract, interfaceId: string): Promise; getNftType(address: string): Promise; getAllowMintNFT(contract: ethers.Contract): Promise; isApprovedForAllNFT(contract: ethers.Contract, owner: string, operator: string): Promise; balanceOfNFT(contract: ethers.Contract, account: string, tokenId?: string | number | bigint): Promise; supportsInterfaceNFT(contract: ethers.Contract, interfaceId: string): Promise; getReserveNFT(contract: ethers.Contract, tokenId: string | number | bigint): Promise<{ token: any; amount: any; reserveType: TypeNFT; }>; getRefundableNFT(contract: ethers.Contract): Promise; getApprovedNFT721(contract: ethers.Contract, tokenId: string | number | bigint): Promise; ownerOfNFT721(contract: ethers.Contract, tokenId: string | number | bigint): Promise; getTokenURINFT721(contract: ethers.Contract, tokenId: string | number | bigint): Promise; getTokenURINFT1155(contract: ethers.Contract, tokenId: string | number | bigint): Promise; getRateNFT1155(contract: ethers.Contract, tokenId: string | number | bigint): Promise; getSupplyNFT1155(contract: ethers.Contract, tokenId: string | number | bigint): Promise; getTokenStakesByMember(account: string): Promise; getTokenStakesPageByMember(account: string, size: string | number | bigint, offset: string | number | bigint): Promise; getFrozenStakesQueueToken(): Promise; getFreezeTimeToken(): Promise<{ Withdraw: any; Transfer: any; }>; getStakeToken(validator: string, delegator: string, tokenAddress: string): Promise; getStakeIdToken(validator: string, delegator: string, tokenAddress: string): Promise; getNFTStakeFromDelegation(nftContract: string, tokenId: bigint, delegator: string, validator: string, holdTimestamp: number): Promise; getNFTStakeIdFromDelegation(nftContract: string, tokenId: bigint, delegator: string, validator: string, holdTimestamp: number): Promise; getAvailableCoinAmount(validator: string, delegator: string, token: string, holdTimestamp: number): Promise; getNFTBackedAmount(validator: string, delegator: string, token: string, holdTimestamp: number): Promise; getNFTStakesByMember(account: string): Promise; getNFTStakesPageByMember(account: string, size: string | number | bigint, offset: string | number | bigint): Promise; getFrozenStakesQueueNFT(): Promise; getFreezeTimeNFT(): Promise<{ Withdraw: any; Transfer: any; }>; getValidatorStatus(validator: string): Promise; validatorIsActive(validator: string): Promise; validatorIsMember(validator: string): Promise; getDecimalContract(contractName: string, address?: boolean): string | ethers.Contract; getSignPermitDRC721(contract: ethers.Contract, spender: string, tokenId: string | number | bigint): Promise; getSignPermitDRC1155(contract: ethers.Contract, spender: string): Promise; getBridgeV2ServiceFees(toChainId: number): Promise; getChecksNonces(): Promise; createMultiSig(ownersData: { owner: string; weight: number; }[], weightThreshold: number, estimateGas?: boolean, fallbackHandler?: string): Promise; buildMultiSigTx(txs: MetaTransaction[], safe: ethers.Contract): Promise; signMultiSigTx(safeAddress: string, safeTx: SafeTransaction): Promise; executeMultiSigTx(safeTx: SafeTransaction, signatures: SafeSignature[], safe: ethers.Contract, estimateGas?: boolean): Promise; getNonceMultiSig(safe: ethers.Contract): Promise; }