import type { ContractTransactionResponse, Signer } from "ethers";
import type { IInterfold, Interfold } from "../../types/contracts/Interfold";
import type { MockUSDC } from "../../types/contracts/test/MockStableToken.sol/MockUSDC";
/**
 * Build ABI-encoded fake DKG proof bytes accepted by `MockPkVerifier`.
 * The last public input must equal `pkCommitment`.
 */
export declare const encodeMockDkgProof: (pkCommitment: string) => string;
/**
 * Run the full committee submission → finalisation → publication flow for an
 * E3. Operators each submit one ticket, time advances past the submission
 * window, the committee is finalised, then the public key is published.
 *
 * @param registry        CiphernodeRegistryOwnable instance.
 * @param e3Id            Target E3 id.
 * @param nodes           Pre-resolved node addresses (sorted as caller wants).
 * @param publicKey       Bytes published as the committee public key.
 * @param operators       Signers who submit tickets (typically === nodes).
 * @param committeeProof  Bytes passed to `publishCommittee` (default "0x").
 */
export declare const setupAndPublishCommittee: (registry: any, e3Id: number, publicKey: string, operators: Signer[], committeeProof?: string, dkgAttestationBundle?: string) => Promise<void>;
/**
 * Approve USDC for the quoted fee and submit an E3 request.
 *
 * @param interfold       Interfold instance.
 * @param usdcToken     MockUSDC instance funding the request.
 * @param requestParams Struct passed to `interfold.request`.
 * @param signer        Optional non-default signer; defaults to the contracts'
 *                      currently-bound runner.
 */
export declare const makeRequest: (interfold: Interfold, usdcToken: MockUSDC, requestParams: IInterfold.E3RequestParamsStruct, signer?: Signer) => Promise<ContractTransactionResponse>;
/** Options for {@link buildRequestParams}. */
export interface BuildRequestParamsOptions {
    /** `CommitteeSize` enum value. Defaults to `0` (Micro). */
    committeeSize?: number;
    /** Seconds added to `time.latest()` for `inputWindow[0]`. Defaults to `10`. */
    startOffset?: number;
    /** `inputWindow[1] - time.latest()`. Defaults to `300` (5 minutes). */
    windowDuration?: number;
    /** Defaults to `false`. */
    proofAggregationEnabled?: boolean;
    /** Override custom params bytes. Defaults to an ABI-encoded throwaway address. */
    customParams?: string;
    /** Param-set id registered on the Interfold. Defaults to `0`. */
    paramSet?: number;
}
/**
 * Build a fresh `Interfold.request(...)` struct anchored at the current block
 * timestamp. Useful when a test needs a second request after `time.increase`.
 */
export declare const buildRequestParams: (e3Program: {
    getAddress: () => Promise<string>;
} | string, decryptionVerifier: {
    getAddress: () => Promise<string>;
} | string, opts?: BuildRequestParamsOptions) => Promise<IInterfold.E3RequestParamsStruct>;
//# sourceMappingURL=helpers.d.ts.map