import { BigNumber } from 'ethers'; import type { namedAccounts } from 'hardhat'; import type { DecodedRemovalIdV0Struct } from '@/typechain-types/artifacts/contracts/Removal'; import type { Removal, Certificate, Market, LockedNORI, RestrictedNORI, NORI, BridgedPolygonNORI, RemovalTestHarness, NoriUSDC } from '@/typechain-types'; export * from './chai'; export * from './polygon'; interface ContractInstances { nori: NORI; bpNori: BridgedPolygonNORI; noriUSDC: NoriUSDC; removal: Removal; certificate: Certificate; market: Market; lNori: LockedNORI; rNori: RestrictedNORI; removalTestHarness: RemovalTestHarness; } export declare const NOW: number; export declare const getLatestBlockTime: ({ hre, }: { hre: CustomHardHatRuntimeEnvironment; }) => Promise; export declare const advanceTime: ({ hre, timestamp, }: { hre: CustomHardHatRuntimeEnvironment; timestamp: number; }) => Promise; interface UserFixture { purchaseTokenBalance?: BigNumber; bpBalance?: BigNumber; removalDataToList?: RemovalDataForListing; roles?: RoleFixtures; } export type UserFixtures = { [Property in keyof typeof namedAccounts]?: UserFixture; }; interface ContractFixture { paused?: boolean; } type ContractFixtures = { [Property in keyof Contracts]?: ContractFixture; }; type RoleFixtures = { [Property in keyof ContractFixtures]?: string[]; }; interface SetupTestOptions { userFixtures?: UserFixtures; contractFixtures?: ContractFixtures; feePercentage?: number; } type TestEnvironment = ContractInstances & Required & RemovalDataFromListing & { hre: CustomHardHatRuntimeEnvironment; contracts: Required; } & { userFixtures: RequiredKeys & TOptions['userFixtures'] & { buyer: RequiredKeys; }; }; export declare const createBatchMintData: ({ hre, projectId, scheduleStartTime, holdbackPercentage, }: { hre: CustomHardHatRuntimeEnvironment; projectId?: number | undefined; scheduleStartTime?: number | undefined; holdbackPercentage?: BigNumber | undefined; }) => Promise<{ projectId: Parameters[3]; scheduleStartTime: Parameters[4]; holdbackPercentage: Parameters[5]; }>; interface RemovalDataFromListing { listedRemovalIds: DecodedRemovalIdV0Struct[]; totalAmountOfSupply: BigNumber; totalAmountOfSuppliers: number; totalAmountOfRemovals: number; removalAmounts: BigNumber[]; projectId: number; scheduleStartTime: number; holdbackPercentage: BigNumber; } export interface RemovalDataForListing { projectId?: number; scheduleStartTime?: number; holdbackPercentage?: BigNumber; listNow?: boolean; removals: (Partial & { tokenId?: BigNumber; amount: BigNumber; projectId?: number; scheduleStartTime?: number; holdbackPercentage?: number; })[]; } export declare const batchMintAndListRemovalsForSale: (options: { hre: CustomHardHatRuntimeEnvironment; removal: Removal; market: Market; removalDataToList: RemovalDataForListing; }) => Promise; export declare const setupTest: (options?: SetupTestOptions | undefined) => Promise>;