///
import { BigNumber } from "ethers";
export declare enum ClaimType {
Airdrop = 0,
GnoOption = 1,
UserOption = 2,
Investor = 3,
Team = 4,
Advisor = 5
}
export interface Claim {
account: string;
type: ClaimType;
claimableAmount: BigNumber;
}
export interface ProvenClaim extends Claim {
index: number;
proof: string[];
}
export interface ProvenClaims {
claims: ProvenClaim[];
merkleRoot: string;
}
export interface ExecutableClaim extends ProvenClaim {
claimedAmount: BigNumber;
value?: BigNumber;
}
export declare const allClaimTypes: ClaimType[];
export declare function claimHash(index: number | BigNumber, { account, type, claimableAmount }: Claim): Buffer;
declare const claimInputEntries: readonly ["index", "type", "account", "claimableAmount", "claimedAmount", "proof"];
declare type MapIntoExecutableClaim = T extends readonly [infer U, ...infer Rest] ? U extends keyof ExecutableClaim ? [ExecutableClaim[U], ...MapIntoExecutableClaim] : never : [];
export declare type ClaimInput = MapIntoExecutableClaim;
declare type ArrayToVecArray = T extends readonly [infer U, ...infer Rest] ? [U[], ...ArrayToVecArray] : [];
export declare type ClaimManyInput = [...ArrayToVecArray, BigNumber[]];
export declare function getClaimInput(claim: ExecutableClaim): ClaimInput;
export declare function getClaimManyInput(claims: ExecutableClaim[]): ClaimManyInput;
export declare function computeProofs(claims: Claim[]): ProvenClaims;
export {};