import { Field, Mina, PrivateKey, PublicKey } from 'o1js';
import { MerkleTreeContractDepositAttestorInput } from '../depositAttestation.js';
import { SCRAMWitness } from '../scram.js';
import { NoriTokenBridge } from '../NoriTokenBridge.js';
export declare function getStagingEnv(): {
    NORI_MINA_TOKEN_BRIDGE_ADDRESS: string;
    NORI_MINA_TOKEN_BASE_ADDRESS: string;
    NORI_ETH_TOKEN_BRIDGE_ADDRESS: string;
    NORI_ETH_GENESIS_ROOT: string;
    NORI_MINA_TOKEN_BASE_TOKEN_ID: string;
    NORI_MINA_TOKEN_BRIDGE_TOKEN_ID: string;
    MINA_ARCHIVE_RPC_URL: string;
    MINA_RPC_NETWORK_URL: string;
    MINA_RPC_NETWORK_ID: import("o1js").NetworkId;
    MINA_ZKAPP_TRANSACTION_RPC_URL: string;
    NORI_WSS_URL: string;
    NORI_PCS_URL: string;
};
export declare function validateEnv(): {
    ethPrivateKey: string;
    ethRpcUrl: string;
    minaSenderPrivateKeyBase58: string;
};
export declare function getNewMinaLiteNetAccountSK(): Promise<string>;
export declare function getNewMinaLiteNetAccountKeyPair(): Promise<{
    sk: string;
    pk: string;
}>;
export declare function keyPairBase58ToKeyPair({ sk, pk }: {
    sk: string;
    pk: string;
}): {
    privateKey: PrivateKey;
    publicKey: PublicKey;
};
export declare class InvertedPromise<T = void, E = void> {
    resolve: (output: T) => void;
    reject: (error: E) => void;
    promise: Promise<T>;
    constructor();
}
export declare function hexStringToUint8Array(hex: string): Uint8Array;
export declare function lockTokens(codeChallenge: Field, amount: number): Promise<number>;
export declare function getEthereumEnvPrivateKey(): Promise<string>;
export declare function getEthWallet(): Promise<import("ethers").Wallet>;
export declare function minaSetup(): Promise<void>;
export declare function txSend({ body, sender, signers, fee: txFee, }: {
    body: () => Promise<void>;
    sender: PublicKey;
    signers: PrivateKey[];
    fee?: number;
}): Promise<Mina.IncludedTransaction>;
export declare function fetchAccounts(addrs: PublicKey[]): Promise<void>;
/**
 * Build a self-consistent synthetic deposit for noriMint() tests.
 * Signs a SCRAM message with the recipient's private key and builds
 * the deposit attestation from the resulting codeChallenge.
 */
export declare function buildSyntheticDeposit(recipientPrivateKey: PrivateKey, messageSCRAMStr: string, totalLockedBU?: bigint): {
    merkleInput: MerkleTreeContractDepositAttestorInput;
    scramWitness: SCRAMWitness;
};
/** Read the current on-chain windowStart to pass as the noriMint witness. */
export declare function fetchWindowStartWitness(bridge: NoriTokenBridge): Promise<Field>;
