import { type AccountWallet, type AztecAddress, type AztecNode, type Logger, type PXE } from '@aztec/aztec.js';
import { CheatCodes } from '@aztec/aztec/testing';
import { type DeployL1ContractsArgs, RollupContract } from '@aztec/ethereum';
import { ChainMonitor } from '@aztec/ethereum/test';
import { EthAddress } from '@aztec/foundation/eth-address';
import { AppSubscriptionContract } from '@aztec/noir-contracts.js/AppSubscription';
import { FPCContract } from '@aztec/noir-contracts.js/FPC';
import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
import { TokenContract as BananaCoin } from '@aztec/noir-contracts.js/Token';
import { CounterContract } from '@aztec/noir-test-contracts.js/Counter';
import { GasSettings } from '@aztec/stdlib/gas';
import { type SubsystemsContext } from '../fixtures/snapshot_manager.js';
import { type BalancesFn, type SetupOptions } from '../fixtures/utils.js';
import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.js';
/**
 * Test fixture for testing fees. Provides the following snapshots:
 * InitialAccounts: Initializes 3 Schnorr account contracts.
 * PublicDeployAccounts: Deploys the accounts publicly.
 * DeployFeeJuice: Deploys the Fee Juice contract.
 * FPCSetup: Deploys BananaCoin and FPC contracts, and bridges gas from L1.
 * SponsoredFPCSetup: Deploys Sponsored FPC contract, and bridges gas from L1.
 * FundAlice: Mints private and public bananas to Alice.
 * SetupSubscription: Deploys a counter contract and a subscription contract, and mints Fee Juice to the subscription contract.
 */
export declare class FeesTest {
    private numberOfAccounts;
    private snapshotManager;
    private wallets;
    private accounts;
    logger: Logger;
    pxe: PXE;
    aztecNode: AztecNode;
    cheatCodes: CheatCodes;
    aliceWallet: AccountWallet;
    aliceAddress: AztecAddress;
    bobWallet: AccountWallet;
    bobAddress: AztecAddress;
    sequencerAddress: AztecAddress;
    coinbase: EthAddress;
    fpcAdmin: AztecAddress;
    gasSettings: GasSettings;
    rollupContract: RollupContract;
    feeJuiceContract: FeeJuiceContract;
    bananaCoin: BananaCoin;
    bananaFPC: FPCContract;
    sponsoredFPC: SponsoredFPCContract;
    counterContract: CounterContract;
    subscriptionContract: AppSubscriptionContract;
    feeJuiceBridgeTestHarness: GasBridgingTestHarness;
    context: SubsystemsContext;
    chainMonitor: ChainMonitor;
    getCoinbaseBalance: () => Promise<bigint>;
    getCoinbaseSequencerRewards: () => Promise<bigint>;
    getGasBalanceFn: BalancesFn;
    getBananaPublicBalanceFn: BalancesFn;
    getBananaPrivateBalanceFn: BalancesFn;
    getProverFee: (blockNumber: number) => Promise<bigint>;
    readonly ALICE_INITIAL_BANANAS: bigint;
    readonly SUBSCRIPTION_AMOUNT: bigint;
    readonly APP_SPONSORED_TX_GAS_LIMIT: bigint;
    constructor(testName: string, numberOfAccounts?: number, setupOptions?: Partial<SetupOptions & DeployL1ContractsArgs>);
    setup(): Promise<this>;
    teardown(): Promise<void>;
    setIsMarkingAsProven(b: boolean): void;
    catchUpProvenChain(): Promise<void>;
    getBlockRewards(): Promise<{
        sequencerBlockRewards: bigint;
        proverBlockRewards: bigint;
    }>;
    mintAndBridgeFeeJuice(minter: AztecAddress, recipient: AztecAddress): Promise<void>;
    /** Alice mints bananaCoin tokens privately to the target address and redeems them. */
    mintPrivateBananas(amount: bigint, address: AztecAddress): Promise<void>;
    applyBaseSnapshots(): Promise<void>;
    applyInitialAccountsSnapshot(): Promise<void>;
    applyPublicDeployAccountsSnapshot(): Promise<void>;
    applySetupFeeJuiceSnapshot(): Promise<void>;
    applyDeployBananaTokenSnapshot(): Promise<void>;
    applyFPCSetupSnapshot(): Promise<void>;
    applySponsoredFPCSetupSnapshot(): Promise<void>;
    applyFundAliceWithBananas(): Promise<void>;
    applyFundAliceWithPrivateBananas(): Promise<void>;
}
//# sourceMappingURL=fees_test.d.ts.map