import { Contract, ethers, BigNumberish, BigNumber, providers, Event } from 'ethers';
import { ChallengeClearedEvent, ChallengeRegisteredStruct } from '../src/contract/challenge';
import { Bytes } from '../src/contract/types';
import { AllocationAssetOutcome, Guarantee, Outcome, AllocationItem } from '../src/contract/outcome';
import { Bytes32 } from '../src';
export interface AssetOutcomeShortHand {
    [destination: string]: BigNumberish;
}
export interface OutcomeShortHand {
    [assetHolder: string]: AssetOutcomeShortHand;
}
export interface AddressesLookup {
    [shorthand: string]: string | undefined;
}
export declare const getTestProvider: () => ethers.providers.JsonRpcProvider;
export declare function setupContracts(provider: ethers.providers.JsonRpcProvider, artifact: {
    abi: ethers.ContractInterface;
}, address: string): Promise<ethers.Contract>;
export declare function getPlaceHolderContractAddress(): string;
export declare const nonParticipant: ethers.Wallet;
export declare const clearedChallengeFingerprint: (turnNumRecord?: number) => Bytes32;
export declare const ongoingChallengeFingerprint: (turnNumRecord?: number) => Bytes32;
export declare const finalizedFingerprint: (turnNumRecord?: number, finalizesAt?: number, outcome?: Outcome, state?: any, challengerAddress?: any) => Bytes32;
export declare const newChallengeRegisteredEvent: (contract: ethers.Contract, channelId: string) => Promise<ChallengeRegisteredStruct[keyof ChallengeRegisteredStruct]>;
export declare const newChallengeClearedEvent: (contract: ethers.Contract, channelId: string) => Promise<ChallengeClearedEvent[keyof ChallengeClearedEvent]>;
export declare const newConcludedEvent: (contract: ethers.Contract, channelId: string) => Promise<[Bytes32]>;
export declare const newDepositedEvent: (contract: ethers.Contract, destination: string) => Promise<[string, BigNumber, BigNumber]>;
export declare function randomChannelId(channelNonce?: number): Bytes32;
export declare const randomExternalDestination: () => string;
export declare function sendTransaction(provider: ethers.providers.JsonRpcProvider, contractAddress: string, transaction: providers.TransactionRequest): Promise<providers.TransactionReceipt>;
export declare function allocationToParams(allocation: AllocationItem[]): [Bytes, Bytes32];
export declare function guaranteeToParams(guarantee: Guarantee): [Bytes, Bytes32];
export declare function replaceAddressesAndBigNumberify(object: AssetOutcomeShortHand | OutcomeShortHand | string, addresses: AddressesLookup): AssetOutcomeShortHand | OutcomeShortHand | string;
export declare function resetMultipleHoldings(multipleHoldings: OutcomeShortHand, contractsArray: Contract[]): void;
export declare function checkMultipleHoldings(multipleHoldings: OutcomeShortHand, contractsArray: Contract[]): void;
export declare function checkMultipleAssetOutcomeHashes(channelId: string, outcome: OutcomeShortHand, contractsArray: Contract[]): void;
export declare function computeOutcome(outcomeShortHand: OutcomeShortHand): AllocationAssetOutcome[];
export declare function compileEventsFromLogs(logs: any[], contractsArray: Contract[]): Event[];
export declare function writeGasConsumption(filename: string, description: string, gas: BigNumberish): Promise<void>;
export declare function getRandomNonce(seed: string): number;
export declare const largeOutcome: (numAllocationItems: number, assetHolderAddress?: string) => AllocationAssetOutcome[];
//# sourceMappingURL=test-helpers.d.ts.map