import { SmartContract, State, Field, UInt64, Provable, Bool } from 'o1js';
import { SettlementProof } from './SettlementProof.js';
import { ValidateReduceProof } from './ValidateReduce.js';
import { Batch, PulsarAction } from './types/PulsarAction.js';
import { ReduceMask } from './types/common.js';
import { ActionStackProof } from './ActionStack.js';
export { SettlementContract, SettlementEvent };
declare const SettlementEvent_base: (new (value: {
    fromActionState: import("o1js/dist/node/lib/provable/field.js").Field;
    endActionState: import("o1js/dist/node/lib/provable/field.js").Field;
    mask: import("o1js/dist/node/lib/provable/field.js").Field;
}) => {
    fromActionState: import("o1js/dist/node/lib/provable/field.js").Field;
    endActionState: import("o1js/dist/node/lib/provable/field.js").Field;
    mask: import("o1js/dist/node/lib/provable/field.js").Field;
}) & {
    _isStruct: true;
} & Omit<import("o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
    fromActionState: import("o1js/dist/node/lib/provable/field.js").Field;
    endActionState: import("o1js/dist/node/lib/provable/field.js").Field;
    mask: import("o1js/dist/node/lib/provable/field.js").Field;
}, {
    fromActionState: bigint;
    endActionState: bigint;
    mask: bigint;
}>, "fromFields"> & {
    fromFields: (fields: import("o1js/dist/node/lib/provable/field.js").Field[]) => {
        fromActionState: import("o1js/dist/node/lib/provable/field.js").Field;
        endActionState: import("o1js/dist/node/lib/provable/field.js").Field;
        mask: import("o1js/dist/node/lib/provable/field.js").Field;
    };
} & {
    fromValue: (value: {
        fromActionState: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field;
        endActionState: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field;
        mask: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field;
    }) => {
        fromActionState: import("o1js/dist/node/lib/provable/field.js").Field;
        endActionState: import("o1js/dist/node/lib/provable/field.js").Field;
        mask: import("o1js/dist/node/lib/provable/field.js").Field;
    };
    toInput: (x: {
        fromActionState: import("o1js/dist/node/lib/provable/field.js").Field;
        endActionState: import("o1js/dist/node/lib/provable/field.js").Field;
        mask: import("o1js/dist/node/lib/provable/field.js").Field;
    }) => {
        fields?: Field[] | undefined;
        packed?: [Field, number][] | undefined;
    };
    toJSON: (x: {
        fromActionState: import("o1js/dist/node/lib/provable/field.js").Field;
        endActionState: import("o1js/dist/node/lib/provable/field.js").Field;
        mask: import("o1js/dist/node/lib/provable/field.js").Field;
    }) => {
        fromActionState: string;
        endActionState: string;
        mask: string;
    };
    fromJSON: (x: {
        fromActionState: string;
        endActionState: string;
        mask: string;
    }) => {
        fromActionState: import("o1js/dist/node/lib/provable/field.js").Field;
        endActionState: import("o1js/dist/node/lib/provable/field.js").Field;
        mask: import("o1js/dist/node/lib/provable/field.js").Field;
    };
    empty: () => {
        fromActionState: import("o1js/dist/node/lib/provable/field.js").Field;
        endActionState: import("o1js/dist/node/lib/provable/field.js").Field;
        mask: import("o1js/dist/node/lib/provable/field.js").Field;
    };
};
declare class SettlementEvent extends SettlementEvent_base {
}
declare class SettlementContract extends SmartContract {
    actionState: State<import("o1js/dist/node/lib/provable/field.js").Field>;
    merkleListRoot: State<import("o1js/dist/node/lib/provable/field.js").Field>;
    stateRoot: State<import("o1js/dist/node/lib/provable/field.js").Field>;
    blockHeight: State<import("o1js/dist/node/lib/provable/field.js").Field>;
    depositListHash: State<import("o1js/dist/node/lib/provable/field.js").Field>;
    withdrawalListHash: State<import("o1js/dist/node/lib/provable/field.js").Field>;
    rewardListHash: State<import("o1js/dist/node/lib/provable/field.js").Field>;
    reducer: {
        dispatch(action: PulsarAction): void;
        reduce<State>(actions: import("o1js").MerkleList<import("o1js").MerkleList<PulsarAction>>, stateType: Provable<State>, reduce: (state: State, action: PulsarAction) => State, initial: State, options?: {
            maxUpdatesWithActions?: number;
            maxActionsPerUpdate?: number;
            skipActionStatePrecondition?: boolean;
        }): State;
        forEach(actions: import("o1js").MerkleList<import("o1js").MerkleList<PulsarAction>>, reduce: (action: PulsarAction) => void, options?: {
            maxUpdatesWithActions?: number;
            maxActionsPerUpdate?: number;
            skipActionStatePrecondition?: boolean;
        }): void;
        getActions({ fromActionState, endActionState, }?: {
            fromActionState?: Field;
            endActionState?: Field;
        }): import("o1js").MerkleList<import("o1js").MerkleList<PulsarAction>>;
        fetchActions({ fromActionState, endActionState, }?: {
            fromActionState?: Field;
            endActionState?: Field;
        }): Promise<PulsarAction[][]>;
    };
    readonly events: {
        Settlement: typeof SettlementEvent;
    };
    deploy(): Promise<void>;
    initialize(merkleListRoot: Field): Promise<void>;
    settle(settlementProof: SettlementProof): Promise<void>;
    deposit(amount: UInt64): Promise<void>;
    withdraw(amount: UInt64): Promise<void>;
    reduce(batch: Batch, useActionStack: Bool, actionStackProof: ActionStackProof, mask: ReduceMask, validateReduceProof: ValidateReduceProof): Promise<void>;
}
