import { GenericLayout } from '../../../lib/from-layout.js';
import { GenericProvableExtended } from '../../../lib/generic.js';
import { AuthRequired, BalanceChange, Bool, Field, PublicKey, Sign, TokenId, UInt32, UInt64 } from '../../v1/transaction-leaves.js';
import * as Value from './transaction-bigint.js';
import * as Json from './transaction-json.js';
export * from '../../v1/transaction-leaves.js';
export { Account, AccountUpdate, Json, Layout, TypeMap, ZkappCommand, customTypes, empty, provableFromLayout, toJSONEssential, };
type TypeMap = {
    PublicKey: PublicKey;
    UInt64: UInt64;
    UInt32: UInt32;
    TokenId: TokenId;
    Field: Field;
    AuthRequired: AuthRequired;
    BalanceChange: BalanceChange;
    Sign: Sign;
    Bool: Bool;
};
declare const TypeMap: {
    [K in keyof TypeMap]: ProvableExtended<TypeMap[K], Value.TypeMap[K], Json.TypeMap[K]>;
};
type ProvableExtended<T, TValue, TJson> = GenericProvableExtended<T, TValue, TJson, Field>;
type Layout = GenericLayout<TypeMap>;
type CustomTypes = {
    TransactionVersion: ProvableExtended<UInt32, Value.TypeMap['UInt32'], Json.TypeMap['UInt32']>;
    ZkappUri: ProvableExtended<{
        data: string;
        hash: Field;
    }, {
        data: string;
        hash: Value.TypeMap['Field'];
    }, string>;
    TokenSymbol: ProvableExtended<{
        symbol: string;
        field: Field;
    }, {
        symbol: string;
        field: Value.TypeMap['Field'];
    }, string>;
    StateHash: ProvableExtended<Field, Value.TypeMap['Field'], Json.TypeMap['Field']>;
    BalanceChange: ProvableExtended<BalanceChange, Value.TypeMap['BalanceChange'], {
        magnitude: Json.TypeMap['UInt64'];
        sgn: Json.TypeMap['Sign'];
    }>;
    Events: ProvableExtended<{
        data: Field[][];
        hash: Field;
    }, {
        data: Value.TypeMap['Field'][][];
        hash: Value.TypeMap['Field'];
    }, Json.TypeMap['Field'][][]>;
    Actions: ProvableExtended<{
        data: Field[][];
        hash: Field;
    }, {
        data: Value.TypeMap['Field'][][];
        hash: Value.TypeMap['Field'];
    }, Json.TypeMap['Field'][][]>;
    ActionState: ProvableExtended<Field, Value.TypeMap['Field'], Json.TypeMap['Field']>;
    MayUseToken: ProvableExtended<{
        parentsOwnToken: Bool;
        inheritFromParent: Bool;
    }, {
        parentsOwnToken: Value.TypeMap['Bool'];
        inheritFromParent: Value.TypeMap['Bool'];
    }, {
        parentsOwnToken: Json.TypeMap['Bool'];
        inheritFromParent: Json.TypeMap['Bool'];
    }>;
    VerificationKeyHash: ProvableExtended<Field, Value.TypeMap['Field'], Json.TypeMap['Field']>;
    ReceiptChainHash: ProvableExtended<Field, Value.TypeMap['Field'], Json.TypeMap['Field']>;
};
declare let customTypes: CustomTypes;
declare let provableFromLayout: <T, TValue, TJson>(typeData: GenericLayout<TypeMap>) => GenericProvableExtended<T, TValue, TJson, import("../../v2/leaves.js").Field>, toJSONEssential: (typeData: GenericLayout<TypeMap>, value: any) => any, empty: (typeData: GenericLayout<TypeMap>) => any;
type ZkappCommand = {
    feePayer: {
        body: {
            publicKey: PublicKey;
            fee: UInt64;
            validUntil?: UInt32;
            nonce: UInt32;
        };
        authorization: string;
    };
    accountUpdates: {
        body: {
            publicKey: PublicKey;
            tokenId: TokenId;
            update: {
                appState: {
                    isSome: Bool;
                    value: Field;
                }[];
                delegate: {
                    isSome: Bool;
                    value: PublicKey;
                };
                verificationKey: {
                    isSome: Bool;
                    value: {
                        data: string;
                        hash: Field;
                    };
                };
                permissions: {
                    isSome: Bool;
                    value: {
                        editState: AuthRequired;
                        access: AuthRequired;
                        send: AuthRequired;
                        receive: AuthRequired;
                        setDelegate: AuthRequired;
                        setPermissions: AuthRequired;
                        setVerificationKey: {
                            auth: AuthRequired;
                            txnVersion: UInt32;
                        };
                        setZkappUri: AuthRequired;
                        editActionState: AuthRequired;
                        setTokenSymbol: AuthRequired;
                        incrementNonce: AuthRequired;
                        setVotingFor: AuthRequired;
                        setTiming: AuthRequired;
                    };
                };
                zkappUri: {
                    isSome: Bool;
                    value: {
                        data: string;
                        hash: Field;
                    };
                };
                tokenSymbol: {
                    isSome: Bool;
                    value: {
                        symbol: string;
                        field: Field;
                    };
                };
                timing: {
                    isSome: Bool;
                    value: {
                        initialMinimumBalance: UInt64;
                        cliffTime: UInt32;
                        cliffAmount: UInt64;
                        vestingPeriod: UInt32;
                        vestingIncrement: UInt64;
                    };
                };
                votingFor: {
                    isSome: Bool;
                    value: Field;
                };
            };
            balanceChange: BalanceChange;
            incrementNonce: Bool;
            events: {
                data: Field[][];
                hash: Field;
            };
            actions: {
                data: Field[][];
                hash: Field;
            };
            callData: Field;
            callDepth: number;
            preconditions: {
                network: {
                    snarkedLedgerHash: {
                        isSome: Bool;
                        value: Field;
                    };
                    blockchainLength: {
                        isSome: Bool;
                        value: {
                            lower: UInt32;
                            upper: UInt32;
                        };
                    };
                    minWindowDensity: {
                        isSome: Bool;
                        value: {
                            lower: UInt32;
                            upper: UInt32;
                        };
                    };
                    totalCurrency: {
                        isSome: Bool;
                        value: {
                            lower: UInt64;
                            upper: UInt64;
                        };
                    };
                    globalSlotSinceGenesis: {
                        isSome: Bool;
                        value: {
                            lower: UInt32;
                            upper: UInt32;
                        };
                    };
                    stakingEpochData: {
                        ledger: {
                            hash: {
                                isSome: Bool;
                                value: Field;
                            };
                            totalCurrency: {
                                isSome: Bool;
                                value: {
                                    lower: UInt64;
                                    upper: UInt64;
                                };
                            };
                        };
                        seed: {
                            isSome: Bool;
                            value: Field;
                        };
                        startCheckpoint: {
                            isSome: Bool;
                            value: Field;
                        };
                        lockCheckpoint: {
                            isSome: Bool;
                            value: Field;
                        };
                        epochLength: {
                            isSome: Bool;
                            value: {
                                lower: UInt32;
                                upper: UInt32;
                            };
                        };
                    };
                    nextEpochData: {
                        ledger: {
                            hash: {
                                isSome: Bool;
                                value: Field;
                            };
                            totalCurrency: {
                                isSome: Bool;
                                value: {
                                    lower: UInt64;
                                    upper: UInt64;
                                };
                            };
                        };
                        seed: {
                            isSome: Bool;
                            value: Field;
                        };
                        startCheckpoint: {
                            isSome: Bool;
                            value: Field;
                        };
                        lockCheckpoint: {
                            isSome: Bool;
                            value: Field;
                        };
                        epochLength: {
                            isSome: Bool;
                            value: {
                                lower: UInt32;
                                upper: UInt32;
                            };
                        };
                    };
                };
                account: {
                    balance: {
                        isSome: Bool;
                        value: {
                            lower: UInt64;
                            upper: UInt64;
                        };
                    };
                    nonce: {
                        isSome: Bool;
                        value: {
                            lower: UInt32;
                            upper: UInt32;
                        };
                    };
                    receiptChainHash: {
                        isSome: Bool;
                        value: Field;
                    };
                    delegate: {
                        isSome: Bool;
                        value: PublicKey;
                    };
                    state: {
                        isSome: Bool;
                        value: Field;
                    }[];
                    actionState: {
                        isSome: Bool;
                        value: Field;
                    };
                    provedState: {
                        isSome: Bool;
                        value: Bool;
                    };
                    isNew: {
                        isSome: Bool;
                        value: Bool;
                    };
                };
                validWhile: {
                    isSome: Bool;
                    value: {
                        lower: UInt32;
                        upper: UInt32;
                    };
                };
            };
            useFullCommitment: Bool;
            implicitAccountCreationFee: Bool;
            mayUseToken: {
                parentsOwnToken: Bool;
                inheritFromParent: Bool;
            };
            authorizationKind: {
                isSigned: Bool;
                isProved: Bool;
                verificationKeyHash: Field;
            };
        };
        authorization: {
            proof?: string;
            signature?: string;
        };
    }[];
    memo: string;
};
declare let ZkappCommand: GenericProvableExtended<ZkappCommand, Value.ZkappCommand, Value.Json.ZkappCommand, import("../../v2/leaves.js").Field>;
type AccountUpdate = {
    body: {
        publicKey: PublicKey;
        tokenId: TokenId;
        update: {
            appState: {
                isSome: Bool;
                value: Field;
            }[];
            delegate: {
                isSome: Bool;
                value: PublicKey;
            };
            verificationKey: {
                isSome: Bool;
                value: {
                    data: string;
                    hash: Field;
                };
            };
            permissions: {
                isSome: Bool;
                value: {
                    editState: AuthRequired;
                    access: AuthRequired;
                    send: AuthRequired;
                    receive: AuthRequired;
                    setDelegate: AuthRequired;
                    setPermissions: AuthRequired;
                    setVerificationKey: {
                        auth: AuthRequired;
                        txnVersion: UInt32;
                    };
                    setZkappUri: AuthRequired;
                    editActionState: AuthRequired;
                    setTokenSymbol: AuthRequired;
                    incrementNonce: AuthRequired;
                    setVotingFor: AuthRequired;
                    setTiming: AuthRequired;
                };
            };
            zkappUri: {
                isSome: Bool;
                value: {
                    data: string;
                    hash: Field;
                };
            };
            tokenSymbol: {
                isSome: Bool;
                value: {
                    symbol: string;
                    field: Field;
                };
            };
            timing: {
                isSome: Bool;
                value: {
                    initialMinimumBalance: UInt64;
                    cliffTime: UInt32;
                    cliffAmount: UInt64;
                    vestingPeriod: UInt32;
                    vestingIncrement: UInt64;
                };
            };
            votingFor: {
                isSome: Bool;
                value: Field;
            };
        };
        balanceChange: BalanceChange;
        incrementNonce: Bool;
        events: {
            data: Field[][];
            hash: Field;
        };
        actions: {
            data: Field[][];
            hash: Field;
        };
        callData: Field;
        callDepth: number;
        preconditions: {
            network: {
                snarkedLedgerHash: {
                    isSome: Bool;
                    value: Field;
                };
                blockchainLength: {
                    isSome: Bool;
                    value: {
                        lower: UInt32;
                        upper: UInt32;
                    };
                };
                minWindowDensity: {
                    isSome: Bool;
                    value: {
                        lower: UInt32;
                        upper: UInt32;
                    };
                };
                totalCurrency: {
                    isSome: Bool;
                    value: {
                        lower: UInt64;
                        upper: UInt64;
                    };
                };
                globalSlotSinceGenesis: {
                    isSome: Bool;
                    value: {
                        lower: UInt32;
                        upper: UInt32;
                    };
                };
                stakingEpochData: {
                    ledger: {
                        hash: {
                            isSome: Bool;
                            value: Field;
                        };
                        totalCurrency: {
                            isSome: Bool;
                            value: {
                                lower: UInt64;
                                upper: UInt64;
                            };
                        };
                    };
                    seed: {
                        isSome: Bool;
                        value: Field;
                    };
                    startCheckpoint: {
                        isSome: Bool;
                        value: Field;
                    };
                    lockCheckpoint: {
                        isSome: Bool;
                        value: Field;
                    };
                    epochLength: {
                        isSome: Bool;
                        value: {
                            lower: UInt32;
                            upper: UInt32;
                        };
                    };
                };
                nextEpochData: {
                    ledger: {
                        hash: {
                            isSome: Bool;
                            value: Field;
                        };
                        totalCurrency: {
                            isSome: Bool;
                            value: {
                                lower: UInt64;
                                upper: UInt64;
                            };
                        };
                    };
                    seed: {
                        isSome: Bool;
                        value: Field;
                    };
                    startCheckpoint: {
                        isSome: Bool;
                        value: Field;
                    };
                    lockCheckpoint: {
                        isSome: Bool;
                        value: Field;
                    };
                    epochLength: {
                        isSome: Bool;
                        value: {
                            lower: UInt32;
                            upper: UInt32;
                        };
                    };
                };
            };
            account: {
                balance: {
                    isSome: Bool;
                    value: {
                        lower: UInt64;
                        upper: UInt64;
                    };
                };
                nonce: {
                    isSome: Bool;
                    value: {
                        lower: UInt32;
                        upper: UInt32;
                    };
                };
                receiptChainHash: {
                    isSome: Bool;
                    value: Field;
                };
                delegate: {
                    isSome: Bool;
                    value: PublicKey;
                };
                state: {
                    isSome: Bool;
                    value: Field;
                }[];
                actionState: {
                    isSome: Bool;
                    value: Field;
                };
                provedState: {
                    isSome: Bool;
                    value: Bool;
                };
                isNew: {
                    isSome: Bool;
                    value: Bool;
                };
            };
            validWhile: {
                isSome: Bool;
                value: {
                    lower: UInt32;
                    upper: UInt32;
                };
            };
        };
        useFullCommitment: Bool;
        implicitAccountCreationFee: Bool;
        mayUseToken: {
            parentsOwnToken: Bool;
            inheritFromParent: Bool;
        };
        authorizationKind: {
            isSigned: Bool;
            isProved: Bool;
            verificationKeyHash: Field;
        };
    };
    authorization: {
        proof?: string;
        signature?: string;
    };
};
declare let AccountUpdate: GenericProvableExtended<AccountUpdate, Value.AccountUpdate, Value.Json.AccountUpdate, import("../../v2/leaves.js").Field>;
type Account = {
    publicKey: PublicKey;
    tokenId: TokenId;
    tokenSymbol: string;
    balance: UInt64;
    nonce: UInt32;
    receiptChainHash: Field;
    delegate?: PublicKey;
    votingFor: Field;
    timing: {
        isTimed: Bool;
        initialMinimumBalance: UInt64;
        cliffTime: UInt32;
        cliffAmount: UInt64;
        vestingPeriod: UInt32;
        vestingIncrement: UInt64;
    };
    permissions: {
        editState: AuthRequired;
        access: AuthRequired;
        send: AuthRequired;
        receive: AuthRequired;
        setDelegate: AuthRequired;
        setPermissions: AuthRequired;
        setVerificationKey: {
            auth: AuthRequired;
            txnVersion: UInt32;
        };
        setZkappUri: AuthRequired;
        editActionState: AuthRequired;
        setTokenSymbol: AuthRequired;
        incrementNonce: AuthRequired;
        setVotingFor: AuthRequired;
        setTiming: AuthRequired;
    };
    zkapp?: {
        appState: Field[];
        verificationKey?: {
            data: string;
            hash: Field;
        };
        zkappVersion: UInt32;
        actionState: Field[];
        lastActionSlot: UInt32;
        provedState: Bool;
        zkappUri: string;
    };
};
declare let Account: GenericProvableExtended<Account, Value.Account, Value.Json.Account, import("../../v2/leaves.js").Field>;
