import { AccountUpdate, Bool, DeployArgs, PublicKey, SmartContract, State, VerificationKey, UInt64, Field } from "o1js";
import { FungibleTokenAdminBase } from "@silvana-one/token";
import { TransferExtendedParams } from "../interfaces/index.js";
import { Auction, AuctionFactory } from "./auction.js";
export interface NFTSharesAdminDeployProps extends Exclude<DeployArgs, undefined> {
    admin: PublicKey;
    owner: PublicKey;
}
export interface NFTSharesOwnerDeployProps extends Exclude<DeployArgs, undefined> {
    admin: PublicKey;
    owner: PublicKey;
    collection: PublicKey;
    nft: PublicKey;
    auction: PublicKey;
    maxBuyPrice: UInt64;
    minSellPrice: UInt64;
    uri: string;
}
declare const NFTSharesDataPacked_base: (new (value: {
    adminX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    ownerX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    collectionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    nftX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    auctionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    data: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
}) => {
    adminX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    ownerX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    collectionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    nftX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    auctionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    data: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
}) & {
    _isStruct: true;
} & Omit<import("node_modules/o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
    adminX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    ownerX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    collectionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    nftX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    auctionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    data: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
}, {
    adminX: bigint;
    ownerX: bigint;
    collectionX: bigint;
    nftX: bigint;
    auctionX: bigint;
    data: bigint;
}>, "fromFields"> & {
    fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]) => {
        adminX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        ownerX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        collectionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        nftX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        auctionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        data: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    };
} & {
    fromValue: (value: {
        adminX: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        ownerX: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        collectionX: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        nftX: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        auctionX: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        data: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    }) => {
        adminX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        ownerX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        collectionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        nftX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        auctionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        data: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    };
    toInput: (x: {
        adminX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        ownerX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        collectionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        nftX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        auctionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        data: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    }) => {
        fields?: Field[] | undefined;
        packed?: [Field, number][] | undefined;
    };
    toJSON: (x: {
        adminX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        ownerX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        collectionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        nftX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        auctionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        data: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    }) => {
        adminX: string;
        ownerX: string;
        collectionX: string;
        nftX: string;
        auctionX: string;
        data: string;
    };
    fromJSON: (x: {
        adminX: string;
        ownerX: string;
        collectionX: string;
        nftX: string;
        auctionX: string;
        data: string;
    }) => {
        adminX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        ownerX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        collectionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        nftX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        auctionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        data: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    };
    empty: () => {
        adminX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        ownerX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        collectionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        nftX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        auctionX: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
        data: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
    };
};
export declare class NFTSharesDataPacked extends NFTSharesDataPacked_base {
}
declare const NFTSharesData_base: (new (value: {
    admin: PublicKey;
    owner: PublicKey;
    collection: PublicKey;
    nft: PublicKey;
    auction: PublicKey;
    maxBuyPrice: UInt64;
    minSellPrice: UInt64;
}) => {
    admin: PublicKey;
    owner: PublicKey;
    collection: PublicKey;
    nft: PublicKey;
    auction: PublicKey;
    maxBuyPrice: UInt64;
    minSellPrice: UInt64;
}) & {
    _isStruct: true;
} & Omit<import("node_modules/o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
    admin: PublicKey;
    owner: PublicKey;
    collection: PublicKey;
    nft: PublicKey;
    auction: PublicKey;
    maxBuyPrice: UInt64;
    minSellPrice: UInt64;
}, {
    admin: {
        x: bigint;
        isOdd: boolean;
    };
    owner: {
        x: bigint;
        isOdd: boolean;
    };
    collection: {
        x: bigint;
        isOdd: boolean;
    };
    nft: {
        x: bigint;
        isOdd: boolean;
    };
    auction: {
        x: bigint;
        isOdd: boolean;
    };
    maxBuyPrice: bigint;
    minSellPrice: bigint;
}>, "fromFields"> & {
    fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]) => {
        admin: PublicKey;
        owner: PublicKey;
        collection: PublicKey;
        nft: PublicKey;
        auction: PublicKey;
        maxBuyPrice: UInt64;
        minSellPrice: UInt64;
    };
} & {
    fromValue: (value: {
        admin: PublicKey | {
            x: Field | bigint;
            isOdd: Bool | boolean;
        };
        owner: PublicKey | {
            x: Field | bigint;
            isOdd: Bool | boolean;
        };
        collection: PublicKey | {
            x: Field | bigint;
            isOdd: Bool | boolean;
        };
        nft: PublicKey | {
            x: Field | bigint;
            isOdd: Bool | boolean;
        };
        auction: PublicKey | {
            x: Field | bigint;
            isOdd: Bool | boolean;
        };
        maxBuyPrice: number | bigint | UInt64;
        minSellPrice: number | bigint | UInt64;
    }) => {
        admin: PublicKey;
        owner: PublicKey;
        collection: PublicKey;
        nft: PublicKey;
        auction: PublicKey;
        maxBuyPrice: UInt64;
        minSellPrice: UInt64;
    };
    toInput: (x: {
        admin: PublicKey;
        owner: PublicKey;
        collection: PublicKey;
        nft: PublicKey;
        auction: PublicKey;
        maxBuyPrice: UInt64;
        minSellPrice: UInt64;
    }) => {
        fields?: Field[] | undefined;
        packed?: [Field, number][] | undefined;
    };
    toJSON: (x: {
        admin: PublicKey;
        owner: PublicKey;
        collection: PublicKey;
        nft: PublicKey;
        auction: PublicKey;
        maxBuyPrice: UInt64;
        minSellPrice: UInt64;
    }) => {
        admin: string;
        owner: string;
        collection: string;
        nft: string;
        auction: string;
        maxBuyPrice: string;
        minSellPrice: string;
    };
    fromJSON: (x: {
        admin: string;
        owner: string;
        collection: string;
        nft: string;
        auction: string;
        maxBuyPrice: string;
        minSellPrice: string;
    }) => {
        admin: PublicKey;
        owner: PublicKey;
        collection: PublicKey;
        nft: PublicKey;
        auction: PublicKey;
        maxBuyPrice: UInt64;
        minSellPrice: UInt64;
    };
    empty: () => {
        admin: PublicKey;
        owner: PublicKey;
        collection: PublicKey;
        nft: PublicKey;
        auction: PublicKey;
        maxBuyPrice: UInt64;
        minSellPrice: UInt64;
    };
};
export declare class NFTSharesData extends NFTSharesData_base {
    pack(): NFTSharesDataPacked;
    static unpack(packed: NFTSharesDataPacked): NFTSharesData;
}
export type DefineNFTSharesFactory = (params: {
    auctionContract: () => ReturnType<typeof AuctionFactory>;
}) => ReturnType<typeof NFTSharesFactory>;
export declare function NFTSharesFactory(params: {
    auctionContract: () => ReturnType<typeof AuctionFactory>;
}): {
    NFTSharesAdmin: {
        new (address: PublicKey, tokenId?: Field): {
            admin: State<PublicKey>;
            owner: State<PublicKey>;
            deploy(props: NFTSharesAdminDeployProps): Promise<void>;
            updateVerificationKey(vk: VerificationKey): Promise<void>;
            ensureAdminSignature(): AccountUpdate;
            getOwner(): {
                /**
                 * The public key of the contract's administrator.
                 * This account has the authority to perform administrative actions such as pausing the contract or upgrading the verification key.
                 */
                data: State<NFTSharesDataPacked>;
                subscriptionOpen: State<import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool>;
                sharesOutstanding: State<UInt64>;
                /**
                 * Deploys the contract with initial settings.
                 * @param props - Deployment properties including admin, upgradeAuthority, uri, canPause, and isPaused.
                 */
                deploy(props: NFTSharesOwnerDeployProps): Promise<void>;
                /**
                 * Ensures that the transaction is authorized by the contract owner.
                 * @returns A signed `AccountUpdate` from the admin.
                 */
                ensureOwnerSignature(): NFTSharesData;
                getAuction(auction: PublicKey): {
                    auctionData: State<import("./auction.js").AuctionPacked>;
                    bidAmount: State<UInt64>;
                    settled: State<import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool>;
                    deploy(args: import("./auction.js").NonFungibleTokenAuctionContractDeployProps): Promise<void>;
                    events: {
                        bid: typeof import("./auction.js").AuctionBidEvent;
                        settleAuction: typeof import("../interfaces/types.js").TransferByProofParams;
                        canTransfer: typeof import("../interfaces/events.js").TransferEvent;
                        settlePayment: typeof UInt64;
                        settleAuctioneerPayment: typeof UInt64;
                        withdraw: typeof UInt64;
                    };
                    getCollectionContract(address: PublicKey): import("../interfaces/collection.js").NFTCollectionBase;
                    calculateSaleFee(params: {
                        price: UInt64;
                        saleFee: import("o1js").UInt32;
                        transferFee: UInt64;
                    }): UInt64;
                    bid(price: UInt64, bidder: PublicKey): Promise<Auction>;
                    getAuctionState(): Promise<import("./auction.js").AuctionState>;
                    settleAuction(): Promise<void>;
                    withdrawNFT(): Promise<void>;
                    canTransfer(params: TransferExtendedParams): Promise<Bool>;
                    settlePayment(): Promise<void>;
                    settleAuctioneerPayment(amount: UInt64): Promise<void>;
                    withdraw(): Promise<void>;
                    "__#private@#private": any;
                    address: PublicKey;
                    tokenId: Field;
                    init(): void;
                    requireSignature(): void;
                    skipAuthorization(): void;
                    get self(): AccountUpdate;
                    newSelf(methodName?: string): AccountUpdate;
                    sender: {
                        self: SmartContract;
                        getUnconstrained(): PublicKey;
                        getAndRequireSignature(): PublicKey;
                    };
                    get account(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").Account;
                    get network(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").Network;
                    get currentSlot(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").CurrentSlot;
                    approve(update: AccountUpdate | import("o1js").AccountUpdateTree | import("o1js").AccountUpdateForest): void;
                    send(args: {
                        to: PublicKey | AccountUpdate | SmartContract;
                        amount: number | bigint | UInt64;
                    }): AccountUpdate;
                    get balance(): {
                        addInPlace(x: string | number | bigint | UInt64 | import("o1js").UInt32 | import("o1js").Int64): void;
                        subInPlace(x: string | number | bigint | UInt64 | import("o1js").UInt32 | import("o1js").Int64): void;
                    };
                    emitEventIf<K extends "canTransfer" | "withdraw" | "bid" | "settleAuction" | "settlePayment" | "settleAuctioneerPayment">(condition: Bool, type: K, event: any): void;
                    emitEvent<K extends "canTransfer" | "withdraw" | "bid" | "settleAuction" | "settlePayment" | "settleAuctioneerPayment">(type: K, event: any): void;
                    fetchEvents(start?: import("o1js").UInt32, end?: import("o1js").UInt32): Promise<{
                        type: string;
                        event: {
                            data: import("o1js").ProvablePure<any>;
                            transactionInfo: {
                                transactionHash: string;
                                transactionStatus: string;
                                transactionMemo: string;
                            };
                        };
                        blockHeight: import("o1js").UInt32;
                        blockHash: string;
                        parentBlockHash: string;
                        globalSlot: import("o1js").UInt32;
                        chainStatus: string;
                    }[]>;
                };
                /**
                 * Allows the owner to mint shares.
                 * This method should NOT called directly, but through the FungibleToken.mint()
                 *
                 * @param _accountUpdate - The account update containing the sender's information.
                 * @returns A boolean indicating if the minting is allowed.
                 */
                canMint(_accountUpdate: AccountUpdate): Promise<Bool>;
                withdraw(shares: UInt64): Promise<void>;
                closeSubscription(): Promise<void>;
                bid(price: UInt64): Promise<void>;
                canTransfer(params: TransferExtendedParams): Promise<Bool>;
                canPause(collection: PublicKey, nft: PublicKey): Promise<Bool>;
                canResume(collection: PublicKey, nft: PublicKey): Promise<Bool>;
                canChangeVerificationKey(collection: PublicKey, nft: PublicKey, vk: VerificationKey): Promise<Bool>;
                canApproveAddress(collection: PublicKey, nft: PublicKey, approved: PublicKey): Promise<Bool>;
                "__#private@#private": any;
                address: PublicKey;
                tokenId: Field;
                init(): void;
                requireSignature(): void;
                skipAuthorization(): void;
                get self(): AccountUpdate;
                newSelf(methodName?: string): AccountUpdate;
                sender: {
                    self: SmartContract;
                    getUnconstrained(): PublicKey;
                    getAndRequireSignature(): PublicKey;
                };
                get account(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").Account;
                get network(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").Network;
                get currentSlot(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").CurrentSlot;
                approve(update: AccountUpdate | import("o1js").AccountUpdateTree | import("o1js").AccountUpdateForest): void;
                send(args: {
                    to: PublicKey | AccountUpdate | SmartContract;
                    amount: number | bigint | UInt64;
                }): AccountUpdate;
                get balance(): {
                    addInPlace(x: string | number | bigint | UInt64 | import("o1js").UInt32 | import("o1js").Int64): void;
                    subInPlace(x: string | number | bigint | UInt64 | import("o1js").UInt32 | import("o1js").Int64): void;
                };
                events: {
                    [key: string]: import("o1js").FlexibleProvablePure<any>;
                };
                emitEventIf<K extends string | number>(condition: Bool, type: K, event: any): void;
                emitEvent<K extends string | number>(type: K, event: any): void;
                fetchEvents(start?: import("o1js").UInt32, end?: import("o1js").UInt32): Promise<{
                    type: string;
                    event: {
                        data: import("o1js").ProvablePure<any>;
                        transactionInfo: {
                            transactionHash: string;
                            transactionStatus: string;
                            transactionMemo: string;
                        };
                    };
                    blockHeight: import("o1js").UInt32;
                    blockHash: string;
                    parentBlockHash: string;
                    globalSlot: import("o1js").UInt32;
                    chainStatus: string;
                }[]>;
            };
            canMint(_accountUpdate: AccountUpdate): Promise<import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool>;
            canChangeAdmin(_admin: PublicKey): Promise<import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool>;
            canPause(): Promise<Bool>;
            canResume(): Promise<Bool>;
            canChangeVerificationKey(_vk: VerificationKey): Promise<Bool>;
            "__#private@#private": any;
            address: PublicKey;
            tokenId: Field;
            init(): void;
            requireSignature(): void;
            skipAuthorization(): void;
            get self(): AccountUpdate;
            newSelf(methodName?: string): AccountUpdate;
            sender: {
                self: SmartContract;
                getUnconstrained(): PublicKey;
                getAndRequireSignature(): PublicKey;
            };
            get account(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").Account;
            get network(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").Network;
            get currentSlot(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").CurrentSlot;
            approve(update: AccountUpdate | import("o1js").AccountUpdateTree | import("o1js").AccountUpdateForest): void;
            send(args: {
                to: PublicKey | AccountUpdate | SmartContract;
                amount: number | bigint | UInt64;
            }): AccountUpdate;
            get balance(): {
                addInPlace(x: string | number | bigint | UInt64 | import("o1js").UInt32 | import("o1js").Int64): void;
                subInPlace(x: string | number | bigint | UInt64 | import("o1js").UInt32 | import("o1js").Int64): void;
            };
            events: {
                [key: string]: import("o1js").FlexibleProvablePure<any>;
            };
            emitEventIf<K extends string | number>(condition: Bool, type: K, event: any): void;
            emitEvent<K extends string | number>(type: K, event: any): void;
            fetchEvents(start?: import("o1js").UInt32, end?: import("o1js").UInt32): Promise<{
                type: string;
                event: {
                    data: import("o1js").ProvablePure<any>;
                    transactionInfo: {
                        transactionHash: string;
                        transactionStatus: string;
                        transactionMemo: string;
                    };
                };
                blockHeight: import("o1js").UInt32;
                blockHash: string;
                parentBlockHash: string;
                globalSlot: import("o1js").UInt32;
                chainStatus: string;
            }[]>;
        };
        _methods?: import("node_modules/o1js/dist/node/lib/proof-system/zkprogram.js").MethodInterface[];
        _methodMetadata?: Record<string, {
            actions: number;
            rows: number;
            digest: string;
            gates: import("node_modules/o1js/dist/node/bindings.js").Gate[];
            proofs: import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofClass[];
        }>;
        _provers?: import("node_modules/o1js/dist/node/bindings.js").Pickles.Prover[];
        _verificationKey?: {
            data: string;
            hash: Field;
        };
        Proof(): {
            new ({ proof, publicInput, publicOutput, maxProofsVerified, }: {
                proof: unknown;
                publicInput: import("o1js").ZkappPublicInput;
                publicOutput: undefined;
                maxProofsVerified: 0 | 2 | 1;
            }): {
                verify(): void;
                verifyIf(condition: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool): void;
                publicInput: import("o1js").ZkappPublicInput;
                publicOutput: undefined;
                proof: unknown;
                maxProofsVerified: 0 | 2 | 1;
                shouldVerify: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
                declare(): boolean;
                toJSON(): import("o1js").JsonProof;
                publicFields(): {
                    input: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
                    output: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
                };
            };
            publicInputType: Omit<import("node_modules/o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
                accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
            }, {
                accountUpdate: bigint;
                calls: bigint;
            }>, "fromFields"> & {
                fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]) => {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                };
            } & {
                toInput: (x: {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                }) => {
                    fields?: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[] | undefined;
                    packed?: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, number][] | undefined;
                };
                toJSON: (x: {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                }) => {
                    accountUpdate: string;
                    calls: string;
                };
                fromJSON: (x: {
                    accountUpdate: string;
                    calls: string;
                }) => {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                };
                empty: () => {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                };
            };
            publicOutputType: import("o1js").ProvablePureExtended<undefined, undefined, null>;
            tag: () => typeof SmartContract;
            fromJSON<S extends import("node_modules/o1js/dist/node/lib/util/types.js").Subclass<typeof import("o1js").Proof>>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("o1js").JsonProof): Promise<import("o1js").Proof<import("o1js").InferProvable<S["publicInputType"]>, import("o1js").InferProvable<S["publicOutputType"]>>>;
            dummy<Input, OutPut>(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 2 | 1, domainLog2?: number): Promise<import("o1js").Proof<Input, OutPut>>;
            readonly provable: {
                toFields: (value: import("o1js").Proof<any, any>) => import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
                toAuxiliary: (value?: import("o1js").Proof<any, any> | undefined) => any[];
                fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[], aux: any[]) => import("o1js").Proof<any, any>;
                sizeInFields(): number;
                check: (value: import("o1js").Proof<any, any>) => void;
                toValue: (x: import("o1js").Proof<any, any>) => import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>;
                fromValue: (x: import("o1js").Proof<any, any> | import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>) => import("o1js").Proof<any, any>;
                toCanonical?: ((x: import("o1js").Proof<any, any>) => import("o1js").Proof<any, any>) | undefined;
            };
            publicFields(value: import("o1js").ProofBase<any, any>): {
                input: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
                output: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
            };
            _proofFromBase64(proofString: string, maxProofsVerified: 0 | 2 | 1): unknown;
            _proofToBase64(proof: unknown, maxProofsVerified: 0 | 2 | 1): string;
        };
        compile({ cache, forceRecompile }?: {
            cache?: import("o1js").Cache | undefined;
            forceRecompile?: boolean | undefined;
        }): Promise<{
            verificationKey: {
                data: string;
                hash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
            };
            provers: import("node_modules/o1js/dist/node/bindings.js").Pickles.Prover[];
            verify: (statement: import("node_modules/o1js/dist/node/bindings.js").Pickles.Statement<import("node_modules/o1js/dist/node/lib/provable/core/fieldvar.js").FieldConst>, proof: unknown) => Promise<boolean>;
        }>;
        digest(): Promise<string>;
        getMaxProofsVerified(): Promise<0 | 2 | 1>;
        setVerificationKeyUnsafe(verificationKey: {
            data: string;
            hash: Field | string;
        }): void;
        runOutsideCircuit(run: () => void): void;
        analyzeMethods({ printSummary }?: {
            printSummary?: boolean | undefined;
        }): Promise<Record<string, {
            actions: number;
            rows: number;
            digest: string;
            gates: import("node_modules/o1js/dist/node/bindings.js").Gate[];
            proofs: import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofClass[];
        }>>;
    };
    NFTSharesOwner: {
        new (address: PublicKey, tokenId?: Field): {
            /**
             * The public key of the contract's administrator.
             * This account has the authority to perform administrative actions such as pausing the contract or upgrading the verification key.
             */
            data: State<NFTSharesDataPacked>;
            subscriptionOpen: State<import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool>;
            sharesOutstanding: State<UInt64>;
            /**
             * Deploys the contract with initial settings.
             * @param props - Deployment properties including admin, upgradeAuthority, uri, canPause, and isPaused.
             */
            deploy(props: NFTSharesOwnerDeployProps): Promise<void>;
            /**
             * Ensures that the transaction is authorized by the contract owner.
             * @returns A signed `AccountUpdate` from the admin.
             */
            ensureOwnerSignature(): NFTSharesData;
            getAuction(auction: PublicKey): {
                auctionData: State<import("./auction.js").AuctionPacked>;
                bidAmount: State<UInt64>;
                settled: State<import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool>;
                deploy(args: import("./auction.js").NonFungibleTokenAuctionContractDeployProps): Promise<void>;
                events: {
                    bid: typeof import("./auction.js").AuctionBidEvent;
                    settleAuction: typeof import("../interfaces/types.js").TransferByProofParams;
                    canTransfer: typeof import("../interfaces/events.js").TransferEvent;
                    settlePayment: typeof UInt64;
                    settleAuctioneerPayment: typeof UInt64;
                    withdraw: typeof UInt64;
                };
                getCollectionContract(address: PublicKey): import("../interfaces/collection.js").NFTCollectionBase;
                calculateSaleFee(params: {
                    price: UInt64;
                    saleFee: import("o1js").UInt32;
                    transferFee: UInt64;
                }): UInt64;
                bid(price: UInt64, bidder: PublicKey): Promise<Auction>;
                getAuctionState(): Promise<import("./auction.js").AuctionState>;
                settleAuction(): Promise<void>;
                withdrawNFT(): Promise<void>;
                canTransfer(params: TransferExtendedParams): Promise<Bool>;
                settlePayment(): Promise<void>;
                settleAuctioneerPayment(amount: UInt64): Promise<void>;
                withdraw(): Promise<void>;
                "__#private@#private": any;
                address: PublicKey;
                tokenId: Field;
                init(): void;
                requireSignature(): void;
                skipAuthorization(): void;
                get self(): AccountUpdate;
                newSelf(methodName?: string): AccountUpdate;
                sender: {
                    self: SmartContract;
                    getUnconstrained(): PublicKey;
                    getAndRequireSignature(): PublicKey;
                };
                get account(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").Account;
                get network(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").Network;
                get currentSlot(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").CurrentSlot;
                approve(update: AccountUpdate | import("o1js").AccountUpdateTree | import("o1js").AccountUpdateForest): void;
                send(args: {
                    to: PublicKey | AccountUpdate | SmartContract;
                    amount: number | bigint | UInt64;
                }): AccountUpdate;
                get balance(): {
                    addInPlace(x: string | number | bigint | UInt64 | import("o1js").UInt32 | import("o1js").Int64): void;
                    subInPlace(x: string | number | bigint | UInt64 | import("o1js").UInt32 | import("o1js").Int64): void;
                };
                emitEventIf<K extends "canTransfer" | "withdraw" | "bid" | "settleAuction" | "settlePayment" | "settleAuctioneerPayment">(condition: Bool, type: K, event: any): void;
                emitEvent<K extends "canTransfer" | "withdraw" | "bid" | "settleAuction" | "settlePayment" | "settleAuctioneerPayment">(type: K, event: any): void;
                fetchEvents(start?: import("o1js").UInt32, end?: import("o1js").UInt32): Promise<{
                    type: string;
                    event: {
                        data: import("o1js").ProvablePure<any>;
                        transactionInfo: {
                            transactionHash: string;
                            transactionStatus: string;
                            transactionMemo: string;
                        };
                    };
                    blockHeight: import("o1js").UInt32;
                    blockHash: string;
                    parentBlockHash: string;
                    globalSlot: import("o1js").UInt32;
                    chainStatus: string;
                }[]>;
            };
            /**
             * Allows the owner to mint shares.
             * This method should NOT called directly, but through the FungibleToken.mint()
             *
             * @param _accountUpdate - The account update containing the sender's information.
             * @returns A boolean indicating if the minting is allowed.
             */
            canMint(_accountUpdate: AccountUpdate): Promise<Bool>;
            withdraw(shares: UInt64): Promise<void>;
            closeSubscription(): Promise<void>;
            bid(price: UInt64): Promise<void>;
            canTransfer(params: TransferExtendedParams): Promise<Bool>;
            canPause(collection: PublicKey, nft: PublicKey): Promise<Bool>;
            canResume(collection: PublicKey, nft: PublicKey): Promise<Bool>;
            canChangeVerificationKey(collection: PublicKey, nft: PublicKey, vk: VerificationKey): Promise<Bool>;
            canApproveAddress(collection: PublicKey, nft: PublicKey, approved: PublicKey): Promise<Bool>;
            "__#private@#private": any;
            address: PublicKey;
            tokenId: Field;
            init(): void;
            requireSignature(): void;
            skipAuthorization(): void;
            get self(): AccountUpdate;
            newSelf(methodName?: string): AccountUpdate;
            sender: {
                self: SmartContract;
                getUnconstrained(): PublicKey;
                getAndRequireSignature(): PublicKey;
            };
            get account(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").Account;
            get network(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").Network;
            get currentSlot(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").CurrentSlot;
            approve(update: AccountUpdate | import("o1js").AccountUpdateTree | import("o1js").AccountUpdateForest): void;
            send(args: {
                to: PublicKey | AccountUpdate | SmartContract;
                amount: number | bigint | UInt64;
            }): AccountUpdate;
            get balance(): {
                addInPlace(x: string | number | bigint | UInt64 | import("o1js").UInt32 | import("o1js").Int64): void;
                subInPlace(x: string | number | bigint | UInt64 | import("o1js").UInt32 | import("o1js").Int64): void;
            };
            events: {
                [key: string]: import("o1js").FlexibleProvablePure<any>;
            };
            emitEventIf<K extends string | number>(condition: Bool, type: K, event: any): void;
            emitEvent<K extends string | number>(type: K, event: any): void;
            fetchEvents(start?: import("o1js").UInt32, end?: import("o1js").UInt32): Promise<{
                type: string;
                event: {
                    data: import("o1js").ProvablePure<any>;
                    transactionInfo: {
                        transactionHash: string;
                        transactionStatus: string;
                        transactionMemo: string;
                    };
                };
                blockHeight: import("o1js").UInt32;
                blockHash: string;
                parentBlockHash: string;
                globalSlot: import("o1js").UInt32;
                chainStatus: string;
            }[]>;
        };
        _methods?: import("node_modules/o1js/dist/node/lib/proof-system/zkprogram.js").MethodInterface[];
        _methodMetadata?: Record<string, {
            actions: number;
            rows: number;
            digest: string;
            gates: import("node_modules/o1js/dist/node/bindings.js").Gate[];
            proofs: import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofClass[];
        }>;
        _provers?: import("node_modules/o1js/dist/node/bindings.js").Pickles.Prover[];
        _verificationKey?: {
            data: string;
            hash: Field;
        };
        Proof(): {
            new ({ proof, publicInput, publicOutput, maxProofsVerified, }: {
                proof: unknown;
                publicInput: import("o1js").ZkappPublicInput;
                publicOutput: undefined;
                maxProofsVerified: 0 | 2 | 1;
            }): {
                verify(): void;
                verifyIf(condition: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool): void;
                publicInput: import("o1js").ZkappPublicInput;
                publicOutput: undefined;
                proof: unknown;
                maxProofsVerified: 0 | 2 | 1;
                shouldVerify: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
                declare(): boolean;
                toJSON(): import("o1js").JsonProof;
                publicFields(): {
                    input: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
                    output: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
                };
            };
            publicInputType: Omit<import("node_modules/o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
                accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
            }, {
                accountUpdate: bigint;
                calls: bigint;
            }>, "fromFields"> & {
                fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]) => {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                };
            } & {
                toInput: (x: {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                }) => {
                    fields?: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[] | undefined;
                    packed?: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, number][] | undefined;
                };
                toJSON: (x: {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                }) => {
                    accountUpdate: string;
                    calls: string;
                };
                fromJSON: (x: {
                    accountUpdate: string;
                    calls: string;
                }) => {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                };
                empty: () => {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                };
            };
            publicOutputType: import("o1js").ProvablePureExtended<undefined, undefined, null>;
            tag: () => typeof SmartContract;
            fromJSON<S extends import("node_modules/o1js/dist/node/lib/util/types.js").Subclass<typeof import("o1js").Proof>>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("o1js").JsonProof): Promise<import("o1js").Proof<import("o1js").InferProvable<S["publicInputType"]>, import("o1js").InferProvable<S["publicOutputType"]>>>;
            dummy<Input, OutPut>(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 2 | 1, domainLog2?: number): Promise<import("o1js").Proof<Input, OutPut>>;
            readonly provable: {
                toFields: (value: import("o1js").Proof<any, any>) => import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
                toAuxiliary: (value?: import("o1js").Proof<any, any> | undefined) => any[];
                fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[], aux: any[]) => import("o1js").Proof<any, any>;
                sizeInFields(): number;
                check: (value: import("o1js").Proof<any, any>) => void;
                toValue: (x: import("o1js").Proof<any, any>) => import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>;
                fromValue: (x: import("o1js").Proof<any, any> | import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>) => import("o1js").Proof<any, any>;
                toCanonical?: ((x: import("o1js").Proof<any, any>) => import("o1js").Proof<any, any>) | undefined;
            };
            publicFields(value: import("o1js").ProofBase<any, any>): {
                input: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
                output: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
            };
            _proofFromBase64(proofString: string, maxProofsVerified: 0 | 2 | 1): unknown;
            _proofToBase64(proof: unknown, maxProofsVerified: 0 | 2 | 1): string;
        };
        compile({ cache, forceRecompile }?: {
            cache?: import("o1js").Cache | undefined;
            forceRecompile?: boolean | undefined;
        }): Promise<{
            verificationKey: {
                data: string;
                hash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
            };
            provers: import("node_modules/o1js/dist/node/bindings.js").Pickles.Prover[];
            verify: (statement: import("node_modules/o1js/dist/node/bindings.js").Pickles.Statement<import("node_modules/o1js/dist/node/lib/provable/core/fieldvar.js").FieldConst>, proof: unknown) => Promise<boolean>;
        }>;
        digest(): Promise<string>;
        getMaxProofsVerified(): Promise<0 | 2 | 1>;
        setVerificationKeyUnsafe(verificationKey: {
            data: string;
            hash: Field | string;
        }): void;
        runOutsideCircuit(run: () => void): void;
        analyzeMethods({ printSummary }?: {
            printSummary?: boolean | undefined;
        }): Promise<Record<string, {
            actions: number;
            rows: number;
            digest: string;
            gates: import("node_modules/o1js/dist/node/bindings.js").Gate[];
            proofs: import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofClass[];
        }>>;
    };
    FungibleToken: {
        new (address: PublicKey, tokenId?: Field): {
            decimals: State<import("o1js").UInt8>;
            admin: State<PublicKey>;
            paused: State<import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool>;
            readonly events: {
                SetAdmin: typeof import("@silvana-one/token").SetAdminEvent;
                Pause: typeof import("@silvana-one/token").PauseEvent;
                Mint: typeof import("@silvana-one/token").MintEvent;
                Burn: typeof import("@silvana-one/token").BurnEvent;
                BalanceChange: typeof import("@silvana-one/token").BalanceChangeEvent;
            };
            deploy(props: import("@silvana-one/token").FungibleTokenDeployProps): Promise<void>;
            updateVerificationKey(vk: VerificationKey): Promise<void>;
            initialize(admin: PublicKey, decimals: import("o1js").UInt8, startPaused: Bool): Promise<void>;
            getAdminContract(): Promise<FungibleTokenAdminBase>;
            setAdmin(admin: PublicKey): Promise<void>;
            mint(recipient: PublicKey, amount: UInt64): Promise<AccountUpdate>;
            burn(from: PublicKey, amount: UInt64): Promise<AccountUpdate>;
            pause(): Promise<void>;
            resume(): Promise<void>;
            transfer(from: PublicKey, to: PublicKey, amount: UInt64): Promise<void>;
            checkPermissionsUpdate(update: AccountUpdate): void;
            approveBase(updates: import("o1js").AccountUpdateForest): Promise<void>;
            getBalanceOf(address: PublicKey): Promise<UInt64>;
            getCirculating(): Promise<UInt64>;
            getDecimals(): Promise<import("o1js").UInt8>;
            deriveTokenId(): import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
            get internal(): {
                mint({ address, amount, }: {
                    address: PublicKey | AccountUpdate | SmartContract;
                    amount: number | bigint | UInt64;
                }): AccountUpdate;
                burn({ address, amount, }: {
                    address: PublicKey | AccountUpdate | SmartContract;
                    amount: number | bigint | UInt64;
                }): AccountUpdate;
                send({ from, to, amount, }: {
                    from: PublicKey | AccountUpdate | SmartContract;
                    to: PublicKey | AccountUpdate | SmartContract;
                    amount: number | bigint | UInt64;
                }): AccountUpdate;
            };
            forEachUpdate(updates: import("o1js").AccountUpdateForest, callback: (update: AccountUpdate, usesToken: Bool) => void): void;
            checkZeroBalanceChange(updates: import("o1js").AccountUpdateForest): void;
            approveAccountUpdate(accountUpdate: AccountUpdate | import("o1js").AccountUpdateTree): Promise<void>;
            approveAccountUpdates(accountUpdates: (AccountUpdate | import("o1js").AccountUpdateTree)[]): Promise<void>;
            "__#private@#private": any;
            address: PublicKey;
            tokenId: Field;
            init(): void;
            requireSignature(): void;
            skipAuthorization(): void;
            get self(): AccountUpdate;
            newSelf(methodName?: string): AccountUpdate;
            sender: {
                self: SmartContract;
                getUnconstrained(): PublicKey;
                getAndRequireSignature(): PublicKey;
            };
            get account(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").Account;
            get network(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").Network;
            get currentSlot(): import("node_modules/o1js/dist/node/lib/mina/v1/precondition.js").CurrentSlot;
            approve(update: AccountUpdate | import("o1js").AccountUpdateTree | import("o1js").AccountUpdateForest): void;
            send(args: {
                to: PublicKey | AccountUpdate | SmartContract;
                amount: number | bigint | UInt64;
            }): AccountUpdate;
            get balance(): {
                addInPlace(x: string | number | bigint | UInt64 | import("o1js").UInt32 | import("o1js").Int64): void;
                subInPlace(x: string | number | bigint | UInt64 | import("o1js").UInt32 | import("o1js").Int64): void;
            };
            emitEventIf<K extends "SetAdmin" | "Pause" | "Mint" | "Burn" | "BalanceChange">(condition: Bool, type: K, event: any): void;
            emitEvent<K extends "SetAdmin" | "Pause" | "Mint" | "Burn" | "BalanceChange">(type: K, event: any): void;
            fetchEvents(start?: import("o1js").UInt32, end?: import("o1js").UInt32): Promise<{
                type: string;
                event: {
                    data: import("o1js").ProvablePure<any>;
                    transactionInfo: {
                        transactionHash: string;
                        transactionStatus: string;
                        transactionMemo: string;
                    };
                };
                blockHeight: import("o1js").UInt32;
                blockHash: string;
                parentBlockHash: string;
                globalSlot: import("o1js").UInt32;
                chainStatus: string;
            }[]>;
        };
        MAX_ACCOUNT_UPDATES: number;
        _methods?: import("node_modules/o1js/dist/node/lib/proof-system/zkprogram.js").MethodInterface[];
        _methodMetadata?: Record<string, {
            actions: number;
            rows: number;
            digest: string;
            gates: import("node_modules/o1js/dist/node/bindings.js").Gate[];
            proofs: import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofClass[];
        }>;
        _provers?: import("node_modules/o1js/dist/node/bindings.js").Pickles.Prover[];
        _verificationKey?: {
            data: string;
            hash: Field;
        };
        Proof(): {
            new ({ proof, publicInput, publicOutput, maxProofsVerified, }: {
                proof: unknown;
                publicInput: import("o1js").ZkappPublicInput;
                publicOutput: undefined;
                maxProofsVerified: 0 | 2 | 1;
            }): {
                verify(): void;
                verifyIf(condition: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool): void;
                publicInput: import("o1js").ZkappPublicInput;
                publicOutput: undefined;
                proof: unknown;
                maxProofsVerified: 0 | 2 | 1;
                shouldVerify: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
                declare(): boolean;
                toJSON(): import("o1js").JsonProof;
                publicFields(): {
                    input: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
                    output: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
                };
            };
            publicInputType: Omit<import("node_modules/o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
                accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
            }, {
                accountUpdate: bigint;
                calls: bigint;
            }>, "fromFields"> & {
                fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]) => {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                };
            } & {
                toInput: (x: {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                }) => {
                    fields?: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[] | undefined;
                    packed?: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, number][] | undefined;
                };
                toJSON: (x: {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                }) => {
                    accountUpdate: string;
                    calls: string;
                };
                fromJSON: (x: {
                    accountUpdate: string;
                    calls: string;
                }) => {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                };
                empty: () => {
                    accountUpdate: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                    calls: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
                };
            };
            publicOutputType: import("o1js").ProvablePureExtended<undefined, undefined, null>;
            tag: () => typeof SmartContract;
            fromJSON<S extends import("node_modules/o1js/dist/node/lib/util/types.js").Subclass<typeof import("o1js").Proof>>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("o1js").JsonProof): Promise<import("o1js").Proof<import("o1js").InferProvable<S["publicInputType"]>, import("o1js").InferProvable<S["publicOutputType"]>>>;
            dummy<Input, OutPut>(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 2 | 1, domainLog2?: number): Promise<import("o1js").Proof<Input, OutPut>>;
            readonly provable: {
                toFields: (value: import("o1js").Proof<any, any>) => import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
                toAuxiliary: (value?: import("o1js").Proof<any, any> | undefined) => any[];
                fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[], aux: any[]) => import("o1js").Proof<any, any>;
                sizeInFields(): number;
                check: (value: import("o1js").Proof<any, any>) => void;
                toValue: (x: import("o1js").Proof<any, any>) => import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>;
                fromValue: (x: import("o1js").Proof<any, any> | import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>) => import("o1js").Proof<any, any>;
                toCanonical?: ((x: import("o1js").Proof<any, any>) => import("o1js").Proof<any, any>) | undefined;
            };
            publicFields(value: import("o1js").ProofBase<any, any>): {
                input: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
                output: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
            };
            _proofFromBase64(proofString: string, maxProofsVerified: 0 | 2 | 1): unknown;
            _proofToBase64(proof: unknown, maxProofsVerified: 0 | 2 | 1): string;
        };
        compile({ cache, forceRecompile }?: {
            cache?: import("o1js").Cache | undefined;
            forceRecompile?: boolean | undefined;
        }): Promise<{
            verificationKey: {
                data: string;
                hash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
            };
            provers: import("node_modules/o1js/dist/node/bindings.js").Pickles.Prover[];
            verify: (statement: import("node_modules/o1js/dist/node/bindings.js").Pickles.Statement<import("node_modules/o1js/dist/node/lib/provable/core/fieldvar.js").FieldConst>, proof: unknown) => Promise<boolean>;
        }>;
        digest(): Promise<string>;
        getMaxProofsVerified(): Promise<0 | 2 | 1>;
        setVerificationKeyUnsafe(verificationKey: {
            data: string;
            hash: Field | string;
        }): void;
        runOutsideCircuit(run: () => void): void;
        analyzeMethods({ printSummary }?: {
            printSummary?: boolean | undefined;
        }): Promise<Record<string, {
            actions: number;
            rows: number;
            digest: string;
            gates: import("node_modules/o1js/dist/node/bindings.js").Gate[];
            proofs: import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofClass[];
        }>>;
    };
};
export {};
