Nado Typescript SDK Documentation
    Preparing search index...

    Variable NADO_ABISConst

    NADO_ABIS: {
        querier: readonly [
            {
                inputs: readonly [
                    { internalType: "int256"; name: "x"; type: "int256" },
                ];
                name: "PRBMathSD59x18__SqrtNegativeInput";
                type: "error";
            },
            {
                inputs: readonly [
                    { internalType: "int256"; name: "x"; type: "int256" },
                ];
                name: "PRBMathSD59x18__SqrtOverflow";
                type: "error";
            },
            {
                inputs: readonly [];
                name: "getAllProducts";
                outputs: readonly [
                    {
                        components: readonly [
                            {
                                components: readonly [
                                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                                    { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct RiskHelper.Risk";
                                        name: "risk";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct ISpotEngine.Config";
                                        name: "config";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct ISpotEngine.State";
                                        name: "state";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { components: ...; internalType: ...; name: ...; type: ... },
                                            { components: ...; internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct ISpotEngine.LpState";
                                        name: "lpState";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct FQuerier.BookInfo";
                                        name: "bookInfo";
                                        type: "tuple";
                                    },
                                ];
                                internalType: "struct FQuerier.SpotProduct[]";
                                name: "spotProducts";
                                type: "tuple[]";
                            },
                            {
                                components: readonly [
                                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                                    { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct RiskHelper.Risk";
                                        name: "risk";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct IPerpEngine.State";
                                        name: "state";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct IPerpEngine.LpState";
                                        name: "lpState";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct FQuerier.BookInfo";
                                        name: "bookInfo";
                                        type: "tuple";
                                    },
                                ];
                                internalType: "struct FQuerier.PerpProduct[]";
                                name: "perpProducts";
                                type: "tuple[]";
                            },
                        ];
                        internalType: "struct FQuerier.ProductInfo";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    {
                        internalType: "contract IProductEngine";
                        name: "engine";
                        type: "address";
                    },
                ];
                name: "getBookInfo";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "int128"; name: "sizeIncrement"; type: "int128" },
                            { internalType: "int128"; name: "priceIncrementX18"; type: "int128" },
                            { internalType: "int128"; name: "minSize"; type: "int128" },
                            { internalType: "int128"; name: "collectedFees"; type: "int128" },
                            { internalType: "int128"; name: "lpSpreadX18"; type: "int128" },
                        ];
                        internalType: "struct FQuerier.BookInfo";
                        name: "bookInfo";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getClearinghouse";
                outputs: readonly [
                    { internalType: "address"; name: ""; type: "address" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                ];
                name: "getPerpBalance";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "amount"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "lastCumulativeFundingX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct IPerpEngine.LpBalance";
                                name: "lpBalance";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "amount"; type: "int128" },
                                    { internalType: "int128"; name: "vQuoteBalance"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "lastCumulativeFundingX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct IPerpEngine.Balance";
                                name: "balance";
                                type: "tuple";
                            },
                        ];
                        internalType: "struct FQuerier.PerpBalance";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                    { internalType: "uint32[]"; name: "productIds"; type: "uint32[]" },
                ];
                name: "getPerpBalances";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "amount"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "lastCumulativeFundingX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct IPerpEngine.LpBalance";
                                name: "lpBalance";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "amount"; type: "int128" },
                                    { internalType: "int128"; name: "vQuoteBalance"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "lastCumulativeFundingX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct IPerpEngine.Balance";
                                name: "balance";
                                type: "tuple";
                            },
                        ];
                        internalType: "struct FQuerier.PerpBalance[]";
                        name: "perpBalances";
                        type: "tuple[]";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                ];
                name: "getPerpProduct";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                            {
                                components: readonly [
                                    {
                                        internalType: "int128";
                                        name: "longWeightInitialX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "shortWeightInitialX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "longWeightMaintenanceX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "shortWeightMaintenanceX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "largePositionPenaltyX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct RiskHelper.Risk";
                                name: "risk";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    {
                                        internalType: "int128";
                                        name: "cumulativeFundingLongX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "cumulativeFundingShortX18";
                                        type: "int128";
                                    },
                                    { internalType: "int128"; name: "availableSettle"; type: "int128" },
                                    { internalType: "int128"; name: "openInterest"; type: "int128" },
                                ];
                                internalType: "struct IPerpEngine.State";
                                name: "state";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "supply"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "lastCumulativeFundingX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "cumulativeFundingPerLpX18";
                                        type: "int128";
                                    },
                                    { internalType: "int128"; name: "base"; type: "int128" },
                                    { internalType: "int128"; name: "quote"; type: "int128" },
                                ];
                                internalType: "struct IPerpEngine.LpState";
                                name: "lpState";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "sizeIncrement"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "priceIncrementX18";
                                        type: "int128";
                                    },
                                    { internalType: "int128"; name: "minSize"; type: "int128" },
                                    { internalType: "int128"; name: "collectedFees"; type: "int128" },
                                    { internalType: "int128"; name: "lpSpreadX18"; type: "int128" },
                                ];
                                internalType: "struct FQuerier.BookInfo";
                                name: "bookInfo";
                                type: "tuple";
                            },
                        ];
                        internalType: "struct FQuerier.PerpProduct";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32[]"; name: "productIds"; type: "uint32[]" },
                ];
                name: "getPerpProducts";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                            {
                                components: readonly [
                                    {
                                        internalType: "int128";
                                        name: "longWeightInitialX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "shortWeightInitialX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "longWeightMaintenanceX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "shortWeightMaintenanceX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "largePositionPenaltyX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct RiskHelper.Risk";
                                name: "risk";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    {
                                        internalType: "int128";
                                        name: "cumulativeFundingLongX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "cumulativeFundingShortX18";
                                        type: "int128";
                                    },
                                    { internalType: "int128"; name: "availableSettle"; type: "int128" },
                                    { internalType: "int128"; name: "openInterest"; type: "int128" },
                                ];
                                internalType: "struct IPerpEngine.State";
                                name: "state";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "supply"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "lastCumulativeFundingX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "cumulativeFundingPerLpX18";
                                        type: "int128";
                                    },
                                    { internalType: "int128"; name: "base"; type: "int128" },
                                    { internalType: "int128"; name: "quote"; type: "int128" },
                                ];
                                internalType: "struct IPerpEngine.LpState";
                                name: "lpState";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "sizeIncrement"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "priceIncrementX18";
                                        type: "int128";
                                    },
                                    { internalType: "int128"; name: "minSize"; type: "int128" },
                                    { internalType: "int128"; name: "collectedFees"; type: "int128" },
                                    { internalType: "int128"; name: "lpSpreadX18"; type: "int128" },
                                ];
                                internalType: "struct FQuerier.BookInfo";
                                name: "bookInfo";
                                type: "tuple";
                            },
                        ];
                        internalType: "struct FQuerier.PerpProduct[]";
                        name: "perpProducts";
                        type: "tuple[]";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                ];
                name: "getSpotBalance";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "amount"; type: "int128" },
                                ];
                                internalType: "struct ISpotEngine.LpBalance";
                                name: "lpBalance";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "amount"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "lastCumulativeMultiplierX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct ISpotEngine.Balance";
                                name: "balance";
                                type: "tuple";
                            },
                        ];
                        internalType: "struct FQuerier.SpotBalance";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                    { internalType: "uint32[]"; name: "productIds"; type: "uint32[]" },
                ];
                name: "getSpotBalances";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "amount"; type: "int128" },
                                ];
                                internalType: "struct ISpotEngine.LpBalance";
                                name: "lpBalance";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "amount"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "lastCumulativeMultiplierX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct ISpotEngine.Balance";
                                name: "balance";
                                type: "tuple";
                            },
                        ];
                        internalType: "struct FQuerier.SpotBalance[]";
                        name: "spotBalances";
                        type: "tuple[]";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                ];
                name: "getSpotProduct";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                            {
                                components: readonly [
                                    {
                                        internalType: "int128";
                                        name: "longWeightInitialX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "shortWeightInitialX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "longWeightMaintenanceX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "shortWeightMaintenanceX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "largePositionPenaltyX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct RiskHelper.Risk";
                                name: "risk";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "address"; name: "token"; type: "address" },
                                    {
                                        internalType: "int128";
                                        name: "interestInflectionUtilX18";
                                        type: "int128";
                                    },
                                    { internalType: "int128"; name: "interestFloorX18"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "interestSmallCapX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "interestLargeCapX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct ISpotEngine.Config";
                                name: "config";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    {
                                        internalType: "int128";
                                        name: "cumulativeDepositsMultiplierX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "cumulativeBorrowsMultiplierX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "totalDepositsNormalized";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "totalBorrowsNormalized";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct ISpotEngine.State";
                                name: "state";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "supply"; type: "int128" },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct ISpotEngine.Balance";
                                        name: "quote";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct ISpotEngine.Balance";
                                        name: "base";
                                        type: "tuple";
                                    },
                                ];
                                internalType: "struct ISpotEngine.LpState";
                                name: "lpState";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "sizeIncrement"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "priceIncrementX18";
                                        type: "int128";
                                    },
                                    { internalType: "int128"; name: "minSize"; type: "int128" },
                                    { internalType: "int128"; name: "collectedFees"; type: "int128" },
                                    { internalType: "int128"; name: "lpSpreadX18"; type: "int128" },
                                ];
                                internalType: "struct FQuerier.BookInfo";
                                name: "bookInfo";
                                type: "tuple";
                            },
                        ];
                        internalType: "struct FQuerier.SpotProduct";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32[]"; name: "productIds"; type: "uint32[]" },
                ];
                name: "getSpotProducts";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                            {
                                components: readonly [
                                    {
                                        internalType: "int128";
                                        name: "longWeightInitialX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "shortWeightInitialX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "longWeightMaintenanceX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "shortWeightMaintenanceX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "largePositionPenaltyX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct RiskHelper.Risk";
                                name: "risk";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "address"; name: "token"; type: "address" },
                                    {
                                        internalType: "int128";
                                        name: "interestInflectionUtilX18";
                                        type: "int128";
                                    },
                                    { internalType: "int128"; name: "interestFloorX18"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "interestSmallCapX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "interestLargeCapX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct ISpotEngine.Config";
                                name: "config";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    {
                                        internalType: "int128";
                                        name: "cumulativeDepositsMultiplierX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "cumulativeBorrowsMultiplierX18";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "totalDepositsNormalized";
                                        type: "int128";
                                    },
                                    {
                                        internalType: "int128";
                                        name: "totalBorrowsNormalized";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct ISpotEngine.State";
                                name: "state";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "supply"; type: "int128" },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct ISpotEngine.Balance";
                                        name: "quote";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct ISpotEngine.Balance";
                                        name: "base";
                                        type: "tuple";
                                    },
                                ];
                                internalType: "struct ISpotEngine.LpState";
                                name: "lpState";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "sizeIncrement"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "priceIncrementX18";
                                        type: "int128";
                                    },
                                    { internalType: "int128"; name: "minSize"; type: "int128" },
                                    { internalType: "int128"; name: "collectedFees"; type: "int128" },
                                    { internalType: "int128"; name: "lpSpreadX18"; type: "int128" },
                                ];
                                internalType: "struct FQuerier.BookInfo";
                                name: "bookInfo";
                                type: "tuple";
                            },
                        ];
                        internalType: "struct FQuerier.SpotProduct[]";
                        name: "spotProducts";
                        type: "tuple[]";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "getSubaccountInfo";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                            { internalType: "bool"; name: "exists"; type: "bool" },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "assets"; type: "int128" },
                                    { internalType: "int128"; name: "liabilities"; type: "int128" },
                                    { internalType: "int128"; name: "health"; type: "int128" },
                                ];
                                internalType: "struct FQuerier.HealthInfo[]";
                                name: "healths";
                                type: "tuple[]";
                            },
                            {
                                internalType: "int128[][]";
                                name: "healthContributions";
                                type: "int128[][]";
                            },
                            { internalType: "uint32"; name: "spotCount"; type: "uint32" },
                            { internalType: "uint32"; name: "perpCount"; type: "uint32" },
                            {
                                components: readonly [
                                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct ISpotEngine.LpBalance";
                                        name: "lpBalance";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct ISpotEngine.Balance";
                                        name: "balance";
                                        type: "tuple";
                                    },
                                ];
                                internalType: "struct FQuerier.SpotBalance[]";
                                name: "spotBalances";
                                type: "tuple[]";
                            },
                            {
                                components: readonly [
                                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct IPerpEngine.LpBalance";
                                        name: "lpBalance";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct IPerpEngine.Balance";
                                        name: "balance";
                                        type: "tuple";
                                    },
                                ];
                                internalType: "struct FQuerier.PerpBalance[]";
                                name: "perpBalances";
                                type: "tuple[]";
                            },
                            {
                                components: readonly [
                                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                                    { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct RiskHelper.Risk";
                                        name: "risk";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct ISpotEngine.Config";
                                        name: "config";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct ISpotEngine.State";
                                        name: "state";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { components: ...; internalType: ...; name: ...; type: ... },
                                            { components: ...; internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct ISpotEngine.LpState";
                                        name: "lpState";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct FQuerier.BookInfo";
                                        name: "bookInfo";
                                        type: "tuple";
                                    },
                                ];
                                internalType: "struct FQuerier.SpotProduct[]";
                                name: "spotProducts";
                                type: "tuple[]";
                            },
                            {
                                components: readonly [
                                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                                    { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct RiskHelper.Risk";
                                        name: "risk";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct IPerpEngine.State";
                                        name: "state";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct IPerpEngine.LpState";
                                        name: "lpState";
                                        type: "tuple";
                                    },
                                    {
                                        components: readonly [
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                            { internalType: ...; name: ...; type: ... },
                                        ];
                                        internalType: "struct FQuerier.BookInfo";
                                        name: "bookInfo";
                                        type: "tuple";
                                    },
                                ];
                                internalType: "struct FQuerier.PerpProduct[]";
                                name: "perpProducts";
                                type: "tuple[]";
                            },
                        ];
                        internalType: "struct FQuerier.SubaccountInfo";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getVersion";
                outputs: readonly [{ internalType: "uint64"; name: ""; type: "uint64" }];
                stateMutability: "pure";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "address"; name: "_clearinghouse"; type: "address" },
                ];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
        ];
        endpoint: readonly [
            {
                anonymous: false;
                inputs: readonly [
                    {
                        indexed: false;
                        internalType: "uint8";
                        name: "version";
                        type: "uint8";
                    },
                ];
                name: "Initialized";
                type: "event";
            },
            {
                anonymous: false;
                inputs: readonly [
                    {
                        indexed: true;
                        internalType: "address";
                        name: "previousOwner";
                        type: "address";
                    },
                    {
                        indexed: true;
                        internalType: "address";
                        name: "newOwner";
                        type: "address";
                    },
                ];
                name: "OwnershipTransferred";
                type: "event";
            },
            {
                anonymous: false;
                inputs: readonly [];
                name: "SubmitTransactions";
                type: "event";
            },
            {
                inputs: readonly [];
                name: "clearinghouse";
                outputs: readonly [
                    {
                        internalType: "contract IClearinghouse";
                        name: "";
                        type: "address";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes12"; name: "subaccountName"; type: "bytes12" },
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "uint128"; name: "amount"; type: "uint128" },
                ];
                name: "depositCollateral";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "uint128"; name: "amount"; type: "uint128" },
                    { internalType: "string"; name: "referralCode"; type: "string" },
                ];
                name: "depositCollateralWithReferral";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes12"; name: "subaccountName"; type: "bytes12" },
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "uint128"; name: "amount"; type: "uint128" },
                    { internalType: "string"; name: "referralCode"; type: "string" },
                ];
                name: "depositCollateralWithReferral";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "count"; type: "uint32" },
                ];
                name: "executeSlowModeTransactions";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                ];
                name: "getBook";
                outputs: readonly [
                    { internalType: "address"; name: ""; type: "address" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "address"; name: "sender"; type: "address" },
                ];
                name: "getNonce";
                outputs: readonly [{ internalType: "uint64"; name: ""; type: "uint64" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                ];
                name: "getPriceX18";
                outputs: readonly [
                    { internalType: "int128"; name: "priceX18"; type: "int128" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "healthGroup"; type: "uint32" },
                ];
                name: "getPricesX18";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "int128"; name: "spotPriceX18"; type: "int128" },
                            { internalType: "int128"; name: "perpPriceX18"; type: "int128" },
                        ];
                        internalType: "struct IEndpoint.Prices";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getSequencer";
                outputs: readonly [
                    { internalType: "address"; name: ""; type: "address" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "getSubaccountId";
                outputs: readonly [{ internalType: "uint64"; name: ""; type: "uint64" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getTime";
                outputs: readonly [
                    { internalType: "uint128"; name: ""; type: "uint128" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getVersion";
                outputs: readonly [{ internalType: "uint64"; name: ""; type: "uint64" }];
                stateMutability: "pure";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "address"; name: "_sanctions"; type: "address" },
                    { internalType: "address"; name: "_sequencer"; type: "address" },
                    {
                        internalType: "contract IClearinghouse";
                        name: "_clearinghouse";
                        type: "address";
                    },
                    { internalType: "uint64"; name: "slowModeTimeout"; type: "uint64" },
                    { internalType: "uint128"; name: "_time"; type: "uint128" },
                    { internalType: "int128[]"; name: "_prices"; type: "int128[]" },
                ];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "nSubmissions";
                outputs: readonly [{ internalType: "uint64"; name: ""; type: "uint64" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "owner";
                outputs: readonly [
                    { internalType: "address"; name: ""; type: "address" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "address"; name: "sender"; type: "address" },
                    { internalType: "bytes"; name: "transaction"; type: "bytes" },
                ];
                name: "processSlowModeTransaction";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "address"; name: ""; type: "address" },
                ];
                name: "referralCodes";
                outputs: readonly [{ internalType: "string"; name: ""; type: "string" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "address"; name: "wallet"; type: "address" },
                    { internalType: "bool"; name: "transferable"; type: "bool" },
                ];
                name: "registerTransferableWallet";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "renounceOwnership";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "requireSubaccount";
                outputs: readonly [];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: ""; type: "uint32" },
                ];
                name: "sequencerFee";
                outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "sequencerFees";
                outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "address"; name: "book"; type: "address" },
                ];
                name: "setBook";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "address"; name: "_sequencer"; type: "address" },
                ];
                name: "setSequencer";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "slowModeConfig";
                outputs: readonly [
                    { internalType: "uint64"; name: "timeout"; type: "uint64" },
                    { internalType: "uint64"; name: "txCount"; type: "uint64" },
                    { internalType: "uint64"; name: "txUpTo"; type: "uint64" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint64"; name: ""; type: "uint64" },
                ];
                name: "slowModeTxs";
                outputs: readonly [
                    { internalType: "uint64"; name: "executableAt"; type: "uint64" },
                    { internalType: "address"; name: "sender"; type: "address" },
                    { internalType: "bytes"; name: "tx"; type: "bytes" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes"; name: "transaction"; type: "bytes" },
                ];
                name: "submitSlowModeTransaction";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes[]"; name: "transactions"; type: "bytes[]" },
                ];
                name: "submitTransactions";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint64"; name: "idx"; type: "uint64" },
                    { internalType: "bytes[]"; name: "transactions"; type: "bytes[]" },
                ];
                name: "submitTransactionsChecked";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint64"; name: "idx"; type: "uint64" },
                    { internalType: "bytes[]"; name: "transactions"; type: "bytes[]" },
                    { internalType: "uint256"; name: "gasLimit"; type: "uint256" },
                ];
                name: "submitTransactionsCheckedWithGasLimit";
                outputs: readonly [
                    { internalType: "uint64"; name: ""; type: "uint64" },
                    { internalType: "uint256"; name: ""; type: "uint256" },
                ];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "address"; name: "newOwner"; type: "address" },
                ];
                name: "transferOwnership";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
        ];
        clearinghouse: readonly [
            {
                anonymous: false;
                inputs: readonly [
                    {
                        indexed: false;
                        internalType: "address";
                        name: "endpoint";
                        type: "address";
                    },
                    {
                        indexed: false;
                        internalType: "address";
                        name: "quote";
                        type: "address";
                    },
                ];
                name: "ClearinghouseInitialized";
                type: "event";
            },
            {
                anonymous: false;
                inputs: readonly [
                    {
                        indexed: true;
                        internalType: "bytes32";
                        name: "liquidatorSubaccount";
                        type: "bytes32";
                    },
                    {
                        indexed: true;
                        internalType: "bytes32";
                        name: "liquidateeSubaccount";
                        type: "bytes32";
                    },
                    {
                        indexed: false;
                        internalType: "uint32";
                        name: "productId";
                        type: "uint32";
                    },
                    {
                        indexed: false;
                        internalType: "bool";
                        name: "isEncodedSpread";
                        type: "bool";
                    },
                    {
                        indexed: false;
                        internalType: "int128";
                        name: "amount";
                        type: "int128";
                    },
                    {
                        indexed: false;
                        internalType: "int128";
                        name: "amountQuote";
                        type: "int128";
                    },
                ];
                name: "Liquidation";
                type: "event";
            },
            {
                anonymous: false;
                inputs: readonly [
                    {
                        indexed: false;
                        internalType: "int128";
                        name: "amount";
                        type: "int128";
                    },
                    {
                        indexed: true;
                        internalType: "bytes32";
                        name: "subaccount";
                        type: "bytes32";
                    },
                    {
                        indexed: false;
                        internalType: "uint32";
                        name: "productId";
                        type: "uint32";
                    },
                ];
                name: "ModifyCollateral";
                type: "event";
            },
            {
                inputs: readonly [
                    { internalType: "address"; name: "engine"; type: "address" },
                    { internalType: "address"; name: "offchainExchange"; type: "address" },
                    {
                        internalType: "enum IProductEngine.EngineType";
                        name: "engineType";
                        type: "uint8";
                    },
                ];
                name: "addEngine";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    {
                        components: readonly [
                            { internalType: "bytes32"; name: "sender"; type: "bytes32" },
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            { internalType: "uint128"; name: "amount"; type: "uint128" },
                            { internalType: "uint64"; name: "nonce"; type: "uint64" },
                        ];
                        internalType: "struct IEndpoint.BurnLp";
                        name: "tx";
                        type: "tuple";
                    },
                ];
                name: "burnLp";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    {
                        components: readonly [
                            { internalType: "bytes32"; name: "sender"; type: "bytes32" },
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            { internalType: "uint128"; name: "amount"; type: "uint128" },
                            { internalType: "bytes32"; name: "recipient"; type: "bytes32" },
                        ];
                        internalType: "struct IEndpoint.BurnLpAndTransfer";
                        name: "txn";
                        type: "tuple";
                    },
                ];
                name: "burnLpAndTransfer";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    {
                        components: readonly [
                            { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                        ];
                        internalType: "struct IEndpoint.ClaimSequencerFees";
                        name: "tx";
                        type: "tuple";
                    },
                    { internalType: "int128[]"; name: "fees"; type: "int128[]" },
                ];
                name: "claimSequencerFees";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    {
                        components: readonly [
                            { internalType: "bytes32"; name: "sender"; type: "bytes32" },
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            { internalType: "uint128"; name: "amount"; type: "uint128" },
                        ];
                        internalType: "struct IEndpoint.DepositCollateral";
                        name: "tx";
                        type: "tuple";
                    },
                ];
                name: "depositCollateral";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    {
                        components: readonly [
                            { internalType: "uint128"; name: "amount"; type: "uint128" },
                        ];
                        internalType: "struct IEndpoint.DepositInsurance";
                        name: "tx";
                        type: "tuple";
                    },
                ];
                name: "depositInsurance";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getClearinghouseLiq";
                outputs: readonly [
                    { internalType: "address"; name: ""; type: "address" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getEndpoint";
                outputs: readonly [
                    { internalType: "address"; name: "endpoint"; type: "address" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                ];
                name: "getEngineByProduct";
                outputs: readonly [
                    { internalType: "address"; name: ""; type: "address" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    {
                        internalType: "enum IProductEngine.EngineType";
                        name: "engineType";
                        type: "uint8";
                    },
                ];
                name: "getEngineByType";
                outputs: readonly [
                    { internalType: "address"; name: ""; type: "address" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                    {
                        internalType: "enum IProductEngine.HealthType";
                        name: "healthType";
                        type: "uint8";
                    },
                ];
                name: "getHealth";
                outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getInsurance";
                outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getQuote";
                outputs: readonly [
                    { internalType: "address"; name: ""; type: "address" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getSpreads";
                outputs: readonly [
                    { internalType: "uint256"; name: ""; type: "uint256" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getVersion";
                outputs: readonly [{ internalType: "uint64"; name: ""; type: "uint64" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    {
                        components: readonly [
                            { internalType: "bytes32"; name: "sender"; type: "bytes32" },
                            { internalType: "bytes32"; name: "liquidatee"; type: "bytes32" },
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            { internalType: "bool"; name: "isEncodedSpread"; type: "bool" },
                            { internalType: "int128"; name: "amount"; type: "int128" },
                            { internalType: "uint64"; name: "nonce"; type: "uint64" },
                        ];
                        internalType: "struct IEndpoint.LiquidateSubaccount";
                        name: "tx";
                        type: "tuple";
                    },
                ];
                name: "liquidateSubaccount";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    {
                        components: readonly [
                            { internalType: "bytes32"; name: "sender"; type: "bytes32" },
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            { internalType: "uint128"; name: "amountBase"; type: "uint128" },
                            { internalType: "uint128"; name: "quoteAmountLow"; type: "uint128" },
                            { internalType: "uint128"; name: "quoteAmountHigh"; type: "uint128" },
                            { internalType: "uint64"; name: "nonce"; type: "uint64" },
                        ];
                        internalType: "struct IEndpoint.MintLp";
                        name: "tx";
                        type: "tuple";
                    },
                ];
                name: "mintLp";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                ];
                name: "registerProduct";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    {
                        components: readonly [
                            {
                                internalType: "bytes32[]";
                                name: "subaccounts";
                                type: "bytes32[]";
                            },
                            { internalType: "uint256[]"; name: "productIds"; type: "uint256[]" },
                        ];
                        internalType: "struct IEndpoint.SettlePnl";
                        name: "tx";
                        type: "tuple";
                    },
                ];
                name: "settlePnl";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    {
                        components: readonly [
                            { internalType: "bytes32"; name: "sender"; type: "bytes32" },
                            { internalType: "bytes32"; name: "recipient"; type: "bytes32" },
                            { internalType: "uint128"; name: "amount"; type: "uint128" },
                            { internalType: "uint64"; name: "nonce"; type: "uint64" },
                        ];
                        internalType: "struct IEndpoint.TransferQuote";
                        name: "tx";
                        type: "tuple";
                    },
                ];
                name: "transferQuote";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    {
                        internalType: "address";
                        name: "_clearinghouseLiq";
                        type: "address";
                    },
                ];
                name: "upgradeClearinghouseLiq";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "sender"; type: "bytes32" },
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "uint128"; name: "amount"; type: "uint128" },
                    { internalType: "address"; name: "sendTo"; type: "address" },
                ];
                name: "withdrawCollateral";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
        ];
        spotEngine: readonly [
            {
                anonymous: false;
                inputs: readonly [
                    {
                        indexed: false;
                        internalType: "uint32";
                        name: "productId";
                        type: "uint32";
                    },
                ];
                name: "AddProduct";
                type: "event";
            },
            {
                inputs: readonly [
                    {
                        components: readonly [
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                            { internalType: "int128"; name: "amountDelta"; type: "int128" },
                            { internalType: "int128"; name: "vQuoteDelta"; type: "int128" },
                        ];
                        internalType: "struct IProductEngine.ProductDelta[]";
                        name: "deltas";
                        type: "tuple[]";
                    },
                ];
                name: "applyDeltas";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                    { internalType: "int128"; name: "amountLp"; type: "int128" },
                ];
                name: "burnLp";
                outputs: readonly [
                    { internalType: "int128"; name: ""; type: "int128" },
                    { internalType: "int128"; name: ""; type: "int128" },
                ];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "liquidatee"; type: "bytes32" },
                    { internalType: "bytes32"; name: "liquidator"; type: "bytes32" },
                    { internalType: "address"; name: "feeCalculator"; type: "address" },
                ];
                name: "decomposeLps";
                outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "getBalance";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "int128"; name: "amount"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeMultiplierX18";
                                type: "int128";
                            },
                        ];
                        internalType: "struct ISpotEngine.Balance";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "getBalanceAmount";
                outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "getBalances";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "int128"; name: "amount"; type: "int128" },
                        ];
                        internalType: "struct ISpotEngine.LpBalance";
                        name: "";
                        type: "tuple";
                    },
                    {
                        components: readonly [
                            { internalType: "int128"; name: "amount"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeMultiplierX18";
                                type: "int128";
                            },
                        ];
                        internalType: "struct ISpotEngine.Balance";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getClearinghouse";
                outputs: readonly [
                    { internalType: "address"; name: ""; type: "address" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                ];
                name: "getConfig";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "address"; name: "token"; type: "address" },
                            {
                                internalType: "int128";
                                name: "interestInflectionUtilX18";
                                type: "int128";
                            },
                            { internalType: "int128"; name: "interestFloorX18"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "interestSmallCapX18";
                                type: "int128";
                            },
                            {
                                internalType: "int128";
                                name: "interestLargeCapX18";
                                type: "int128";
                            },
                        ];
                        internalType: "struct ISpotEngine.Config";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getEngineType";
                outputs: readonly [
                    {
                        internalType: "enum IProductEngine.EngineType";
                        name: "";
                        type: "uint8";
                    },
                ];
                stateMutability: "pure";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                ];
                name: "getLpState";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "int128"; name: "supply"; type: "int128" },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "amount"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "lastCumulativeMultiplierX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct ISpotEngine.Balance";
                                name: "quote";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "amount"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "lastCumulativeMultiplierX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct ISpotEngine.Balance";
                                name: "base";
                                type: "tuple";
                            },
                        ];
                        internalType: "struct ISpotEngine.LpState";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                ];
                name: "getOrderbook";
                outputs: readonly [
                    { internalType: "address"; name: ""; type: "address" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getProductIds";
                outputs: readonly [
                    { internalType: "uint32[]"; name: ""; type: "uint32[]" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "getStateAndBalance";
                outputs: readonly [
                    {
                        components: readonly [
                            {
                                internalType: "int128";
                                name: "cumulativeDepositsMultiplierX18";
                                type: "int128";
                            },
                            {
                                internalType: "int128";
                                name: "cumulativeBorrowsMultiplierX18";
                                type: "int128";
                            },
                            {
                                internalType: "int128";
                                name: "totalDepositsNormalized";
                                type: "int128";
                            },
                            {
                                internalType: "int128";
                                name: "totalBorrowsNormalized";
                                type: "int128";
                            },
                        ];
                        internalType: "struct ISpotEngine.State";
                        name: "";
                        type: "tuple";
                    },
                    {
                        components: readonly [
                            { internalType: "int128"; name: "amount"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeMultiplierX18";
                                type: "int128";
                            },
                        ];
                        internalType: "struct ISpotEngine.Balance";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "getStatesAndBalances";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "int128"; name: "supply"; type: "int128" },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "amount"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "lastCumulativeMultiplierX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct ISpotEngine.Balance";
                                name: "quote";
                                type: "tuple";
                            },
                            {
                                components: readonly [
                                    { internalType: "int128"; name: "amount"; type: "int128" },
                                    {
                                        internalType: "int128";
                                        name: "lastCumulativeMultiplierX18";
                                        type: "int128";
                                    },
                                ];
                                internalType: "struct ISpotEngine.Balance";
                                name: "base";
                                type: "tuple";
                            },
                        ];
                        internalType: "struct ISpotEngine.LpState";
                        name: "";
                        type: "tuple";
                    },
                    {
                        components: readonly [
                            { internalType: "int128"; name: "amount"; type: "int128" },
                        ];
                        internalType: "struct ISpotEngine.LpBalance";
                        name: "";
                        type: "tuple";
                    },
                    {
                        components: readonly [
                            {
                                internalType: "int128";
                                name: "cumulativeDepositsMultiplierX18";
                                type: "int128";
                            },
                            {
                                internalType: "int128";
                                name: "cumulativeBorrowsMultiplierX18";
                                type: "int128";
                            },
                            {
                                internalType: "int128";
                                name: "totalDepositsNormalized";
                                type: "int128";
                            },
                            {
                                internalType: "int128";
                                name: "totalBorrowsNormalized";
                                type: "int128";
                            },
                        ];
                        internalType: "struct ISpotEngine.State";
                        name: "";
                        type: "tuple";
                    },
                    {
                        components: readonly [
                            { internalType: "int128"; name: "amount"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeMultiplierX18";
                                type: "int128";
                            },
                        ];
                        internalType: "struct ISpotEngine.Balance";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                ];
                name: "getWithdrawFee";
                outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "hasBalance";
                outputs: readonly [{ internalType: "bool"; name: ""; type: "bool" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "address"; name: "_clearinghouse"; type: "address" },
                    { internalType: "address"; name: "_quote"; type: "address" },
                    { internalType: "address"; name: "_endpoint"; type: "address" },
                    { internalType: "address"; name: "_admin"; type: "address" },
                    { internalType: "address"; name: "_fees"; type: "address" },
                ];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "int128[]"; name: "totalDeposits"; type: "int128[]" },
                    { internalType: "int128[]"; name: "totalBorrows"; type: "int128[]" },
                ];
                name: "manualAssert";
                outputs: readonly [];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                    { internalType: "int128"; name: "amountBase"; type: "int128" },
                    { internalType: "int128"; name: "quoteAmountLow"; type: "int128" },
                    { internalType: "int128"; name: "quoteAmountHigh"; type: "int128" },
                ];
                name: "mintLp";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "socializeSubaccount";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "int128"; name: "baseDelta"; type: "int128" },
                    { internalType: "int128"; name: "quoteDelta"; type: "int128" },
                ];
                name: "swapLp";
                outputs: readonly [
                    { internalType: "int128"; name: ""; type: "int128" },
                    { internalType: "int128"; name: ""; type: "int128" },
                ];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "int128"; name: "amount"; type: "int128" },
                    { internalType: "int128"; name: "priceX18"; type: "int128" },
                    { internalType: "int128"; name: "sizeIncrement"; type: "int128" },
                    { internalType: "int128"; name: "lpSpreadX18"; type: "int128" },
                ];
                name: "swapLp";
                outputs: readonly [
                    { internalType: "int128"; name: ""; type: "int128" },
                    { internalType: "int128"; name: ""; type: "int128" },
                ];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes"; name: "txn"; type: "bytes" },
                ];
                name: "updateProduct";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint128"; name: "dt"; type: "uint128" },
                ];
                name: "updateStates";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
        ];
        perpEngine: readonly [
            {
                anonymous: false;
                inputs: readonly [
                    {
                        indexed: false;
                        internalType: "uint32";
                        name: "productId";
                        type: "uint32";
                    },
                ];
                name: "AddProduct";
                type: "event";
            },
            {
                inputs: readonly [
                    {
                        components: readonly [
                            { internalType: "uint32"; name: "productId"; type: "uint32" },
                            { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                            { internalType: "int128"; name: "amountDelta"; type: "int128" },
                            { internalType: "int128"; name: "vQuoteDelta"; type: "int128" },
                        ];
                        internalType: "struct IProductEngine.ProductDelta[]";
                        name: "deltas";
                        type: "tuple[]";
                    },
                ];
                name: "applyDeltas";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                    { internalType: "int128"; name: "amountLp"; type: "int128" },
                ];
                name: "burnLp";
                outputs: readonly [
                    { internalType: "int128"; name: ""; type: "int128" },
                    { internalType: "int128"; name: ""; type: "int128" },
                ];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "liquidatee"; type: "bytes32" },
                    { internalType: "bytes32"; name: "liquidator"; type: "bytes32" },
                    { internalType: "address"; name: "feeCalculator"; type: "address" },
                ];
                name: "decomposeLps";
                outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "getBalance";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "int128"; name: "amount"; type: "int128" },
                            { internalType: "int128"; name: "vQuoteBalance"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeFundingX18";
                                type: "int128";
                            },
                        ];
                        internalType: "struct IPerpEngine.Balance";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "getBalanceAmount";
                outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "getBalances";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "int128"; name: "amount"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeFundingX18";
                                type: "int128";
                            },
                        ];
                        internalType: "struct IPerpEngine.LpBalance";
                        name: "";
                        type: "tuple";
                    },
                    {
                        components: readonly [
                            { internalType: "int128"; name: "amount"; type: "int128" },
                            { internalType: "int128"; name: "vQuoteBalance"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeFundingX18";
                                type: "int128";
                            },
                        ];
                        internalType: "struct IPerpEngine.Balance";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getClearinghouse";
                outputs: readonly [
                    { internalType: "address"; name: ""; type: "address" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getEngineType";
                outputs: readonly [
                    {
                        internalType: "enum IProductEngine.EngineType";
                        name: "";
                        type: "uint8";
                    },
                ];
                stateMutability: "pure";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                ];
                name: "getLpState";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "int128"; name: "supply"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeFundingX18";
                                type: "int128";
                            },
                            {
                                internalType: "int128";
                                name: "cumulativeFundingPerLpX18";
                                type: "int128";
                            },
                            { internalType: "int128"; name: "base"; type: "int128" },
                            { internalType: "int128"; name: "quote"; type: "int128" },
                        ];
                        internalType: "struct IPerpEngine.LpState";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                ];
                name: "getOrderbook";
                outputs: readonly [
                    { internalType: "address"; name: ""; type: "address" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "getPositionPnl";
                outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "getProductIds";
                outputs: readonly [
                    { internalType: "uint32[]"; name: ""; type: "uint32[]" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "getSettlementState";
                outputs: readonly [
                    { internalType: "int128"; name: "availableSettle"; type: "int128" },
                    {
                        components: readonly [
                            { internalType: "int128"; name: "supply"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeFundingX18";
                                type: "int128";
                            },
                            {
                                internalType: "int128";
                                name: "cumulativeFundingPerLpX18";
                                type: "int128";
                            },
                            { internalType: "int128"; name: "base"; type: "int128" },
                            { internalType: "int128"; name: "quote"; type: "int128" },
                        ];
                        internalType: "struct IPerpEngine.LpState";
                        name: "lpState";
                        type: "tuple";
                    },
                    {
                        components: readonly [
                            { internalType: "int128"; name: "amount"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeFundingX18";
                                type: "int128";
                            },
                        ];
                        internalType: "struct IPerpEngine.LpBalance";
                        name: "lpBalance";
                        type: "tuple";
                    },
                    {
                        components: readonly [
                            {
                                internalType: "int128";
                                name: "cumulativeFundingLongX18";
                                type: "int128";
                            },
                            {
                                internalType: "int128";
                                name: "cumulativeFundingShortX18";
                                type: "int128";
                            },
                            { internalType: "int128"; name: "availableSettle"; type: "int128" },
                            { internalType: "int128"; name: "openInterest"; type: "int128" },
                        ];
                        internalType: "struct IPerpEngine.State";
                        name: "state";
                        type: "tuple";
                    },
                    {
                        components: readonly [
                            { internalType: "int128"; name: "amount"; type: "int128" },
                            { internalType: "int128"; name: "vQuoteBalance"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeFundingX18";
                                type: "int128";
                            },
                        ];
                        internalType: "struct IPerpEngine.Balance";
                        name: "balance";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "getStateAndBalance";
                outputs: readonly [
                    {
                        components: readonly [
                            {
                                internalType: "int128";
                                name: "cumulativeFundingLongX18";
                                type: "int128";
                            },
                            {
                                internalType: "int128";
                                name: "cumulativeFundingShortX18";
                                type: "int128";
                            },
                            { internalType: "int128"; name: "availableSettle"; type: "int128" },
                            { internalType: "int128"; name: "openInterest"; type: "int128" },
                        ];
                        internalType: "struct IPerpEngine.State";
                        name: "";
                        type: "tuple";
                    },
                    {
                        components: readonly [
                            { internalType: "int128"; name: "amount"; type: "int128" },
                            { internalType: "int128"; name: "vQuoteBalance"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeFundingX18";
                                type: "int128";
                            },
                        ];
                        internalType: "struct IPerpEngine.Balance";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "getStatesAndBalances";
                outputs: readonly [
                    {
                        components: readonly [
                            { internalType: "int128"; name: "supply"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeFundingX18";
                                type: "int128";
                            },
                            {
                                internalType: "int128";
                                name: "cumulativeFundingPerLpX18";
                                type: "int128";
                            },
                            { internalType: "int128"; name: "base"; type: "int128" },
                            { internalType: "int128"; name: "quote"; type: "int128" },
                        ];
                        internalType: "struct IPerpEngine.LpState";
                        name: "";
                        type: "tuple";
                    },
                    {
                        components: readonly [
                            { internalType: "int128"; name: "amount"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeFundingX18";
                                type: "int128";
                            },
                        ];
                        internalType: "struct IPerpEngine.LpBalance";
                        name: "";
                        type: "tuple";
                    },
                    {
                        components: readonly [
                            {
                                internalType: "int128";
                                name: "cumulativeFundingLongX18";
                                type: "int128";
                            },
                            {
                                internalType: "int128";
                                name: "cumulativeFundingShortX18";
                                type: "int128";
                            },
                            { internalType: "int128"; name: "availableSettle"; type: "int128" },
                            { internalType: "int128"; name: "openInterest"; type: "int128" },
                        ];
                        internalType: "struct IPerpEngine.State";
                        name: "";
                        type: "tuple";
                    },
                    {
                        components: readonly [
                            { internalType: "int128"; name: "amount"; type: "int128" },
                            { internalType: "int128"; name: "vQuoteBalance"; type: "int128" },
                            {
                                internalType: "int128";
                                name: "lastCumulativeFundingX18";
                                type: "int128";
                            },
                        ];
                        internalType: "struct IPerpEngine.Balance";
                        name: "";
                        type: "tuple";
                    },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                ];
                name: "hasBalance";
                outputs: readonly [{ internalType: "bool"; name: ""; type: "bool" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "address"; name: "_clearinghouse"; type: "address" },
                    { internalType: "address"; name: "_quote"; type: "address" },
                    { internalType: "address"; name: "_endpoint"; type: "address" },
                    { internalType: "address"; name: "_admin"; type: "address" },
                    { internalType: "address"; name: "_fees"; type: "address" },
                ];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "int128[]"; name: "openInterests"; type: "int128[]" },
                ];
                name: "manualAssert";
                outputs: readonly [];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                    { internalType: "int128"; name: "amountBase"; type: "int128" },
                    { internalType: "int128"; name: "quoteAmountLow"; type: "int128" },
                    { internalType: "int128"; name: "quoteAmountHigh"; type: "int128" },
                ];
                name: "mintLp";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                    { internalType: "uint256"; name: "productIds"; type: "uint256" },
                ];
                name: "settlePnl";
                outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                    { internalType: "int128"; name: "insurance"; type: "int128" },
                ];
                name: "socializeSubaccount";
                outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "int128"; name: "baseDelta"; type: "int128" },
                    { internalType: "int128"; name: "quoteDelta"; type: "int128" },
                ];
                name: "swapLp";
                outputs: readonly [
                    { internalType: "int128"; name: ""; type: "int128" },
                    { internalType: "int128"; name: ""; type: "int128" },
                ];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "int128"; name: "amount"; type: "int128" },
                    { internalType: "int128"; name: "priceX18"; type: "int128" },
                    { internalType: "int128"; name: "sizeIncrement"; type: "int128" },
                    { internalType: "int128"; name: "lpSpreadX18"; type: "int128" },
                ];
                name: "swapLp";
                outputs: readonly [
                    { internalType: "int128"; name: ""; type: "int128" },
                    { internalType: "int128"; name: ""; type: "int128" },
                ];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "bytes"; name: "txn"; type: "bytes" },
                ];
                name: "updateProduct";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint128"; name: "dt"; type: "uint128" },
                    { internalType: "int128[]"; name: "avgPriceDiffs"; type: "int128[]" },
                ];
                name: "updateStates";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
        ];
        withdrawPool: readonly [
            {
                inputs: readonly [];
                stateMutability: "nonpayable";
                type: "constructor";
            },
            {
                anonymous: false;
                inputs: readonly [
                    {
                        indexed: false;
                        internalType: "uint8";
                        name: "version";
                        type: "uint8";
                    },
                ];
                name: "Initialized";
                type: "event";
            },
            {
                anonymous: false;
                inputs: readonly [
                    {
                        indexed: true;
                        internalType: "address";
                        name: "previousOwner";
                        type: "address";
                    },
                    {
                        indexed: true;
                        internalType: "address";
                        name: "newOwner";
                        type: "address";
                    },
                ];
                name: "OwnershipTransferred";
                type: "event";
            },
            {
                inputs: readonly [
                    { internalType: "uint64[]"; name: "idxs"; type: "uint64[]" },
                ];
                name: "checkMarkedIdxs";
                outputs: readonly [{ internalType: "bool[]"; name: ""; type: "bool[]" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32[]"; name: "productIds"; type: "uint32[]" },
                ];
                name: "checkProductBalances";
                outputs: readonly [
                    { internalType: "uint256[]"; name: ""; type: "uint256[]" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    {
                        internalType: "contract IERC20Base";
                        name: "token";
                        type: "address";
                    },
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "uint128"; name: "amount"; type: "uint128" },
                ];
                name: "fastWithdrawalFeeAmount";
                outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: ""; type: "uint32" },
                ];
                name: "fees";
                outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "address"; name: "_clearinghouse"; type: "address" },
                    { internalType: "address"; name: "_verifier"; type: "address" },
                ];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint64"; name: ""; type: "uint64" },
                ];
                name: "markedIdxs";
                outputs: readonly [{ internalType: "bool"; name: ""; type: "bool" }];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "owner";
                outputs: readonly [
                    { internalType: "address"; name: ""; type: "address" },
                ];
                stateMutability: "view";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint32"; name: "productId"; type: "uint32" },
                    { internalType: "uint128"; name: "amount"; type: "uint128" },
                    { internalType: "address"; name: "sendTo"; type: "address" },
                ];
                name: "removeLiquidity";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [];
                name: "renounceOwnership";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "uint64"; name: "idx"; type: "uint64" },
                    { internalType: "bytes"; name: "transaction"; type: "bytes" },
                    { internalType: "bytes[]"; name: "signatures"; type: "bytes[]" },
                ];
                name: "submitFastWithdrawal";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    {
                        internalType: "contract IERC20Base";
                        name: "token";
                        type: "address";
                    },
                    { internalType: "address"; name: "sendTo"; type: "address" },
                    { internalType: "uint128"; name: "amount"; type: "uint128" },
                    { internalType: "uint64"; name: "idx"; type: "uint64" },
                ];
                name: "submitWithdrawal";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
            {
                inputs: readonly [
                    { internalType: "address"; name: "newOwner"; type: "address" },
                ];
                name: "transferOwnership";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            },
        ];
    } = ...

    Type declaration

    • Readonlyquerier: readonly [
          {
              inputs: readonly [
                  { internalType: "int256"; name: "x"; type: "int256" },
              ];
              name: "PRBMathSD59x18__SqrtNegativeInput";
              type: "error";
          },
          {
              inputs: readonly [
                  { internalType: "int256"; name: "x"; type: "int256" },
              ];
              name: "PRBMathSD59x18__SqrtOverflow";
              type: "error";
          },
          {
              inputs: readonly [];
              name: "getAllProducts";
              outputs: readonly [
                  {
                      components: readonly [
                          {
                              components: readonly [
                                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                                  { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct RiskHelper.Risk";
                                      name: "risk";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct ISpotEngine.Config";
                                      name: "config";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct ISpotEngine.State";
                                      name: "state";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { components: ...; internalType: ...; name: ...; type: ... },
                                          { components: ...; internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct ISpotEngine.LpState";
                                      name: "lpState";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct FQuerier.BookInfo";
                                      name: "bookInfo";
                                      type: "tuple";
                                  },
                              ];
                              internalType: "struct FQuerier.SpotProduct[]";
                              name: "spotProducts";
                              type: "tuple[]";
                          },
                          {
                              components: readonly [
                                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                                  { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct RiskHelper.Risk";
                                      name: "risk";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct IPerpEngine.State";
                                      name: "state";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct IPerpEngine.LpState";
                                      name: "lpState";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct FQuerier.BookInfo";
                                      name: "bookInfo";
                                      type: "tuple";
                                  },
                              ];
                              internalType: "struct FQuerier.PerpProduct[]";
                              name: "perpProducts";
                              type: "tuple[]";
                          },
                      ];
                      internalType: "struct FQuerier.ProductInfo";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  {
                      internalType: "contract IProductEngine";
                      name: "engine";
                      type: "address";
                  },
              ];
              name: "getBookInfo";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "int128"; name: "sizeIncrement"; type: "int128" },
                          { internalType: "int128"; name: "priceIncrementX18"; type: "int128" },
                          { internalType: "int128"; name: "minSize"; type: "int128" },
                          { internalType: "int128"; name: "collectedFees"; type: "int128" },
                          { internalType: "int128"; name: "lpSpreadX18"; type: "int128" },
                      ];
                      internalType: "struct FQuerier.BookInfo";
                      name: "bookInfo";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getClearinghouse";
              outputs: readonly [{ internalType: "address"; name: ""; type: "address" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
              ];
              name: "getPerpBalance";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "amount"; type: "int128" },
                                  {
                                      internalType: "int128";
                                      name: "lastCumulativeFundingX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct IPerpEngine.LpBalance";
                              name: "lpBalance";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "amount"; type: "int128" },
                                  { internalType: "int128"; name: "vQuoteBalance"; type: "int128" },
                                  {
                                      internalType: "int128";
                                      name: "lastCumulativeFundingX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct IPerpEngine.Balance";
                              name: "balance";
                              type: "tuple";
                          },
                      ];
                      internalType: "struct FQuerier.PerpBalance";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                  { internalType: "uint32[]"; name: "productIds"; type: "uint32[]" },
              ];
              name: "getPerpBalances";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "amount"; type: "int128" },
                                  {
                                      internalType: "int128";
                                      name: "lastCumulativeFundingX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct IPerpEngine.LpBalance";
                              name: "lpBalance";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "amount"; type: "int128" },
                                  { internalType: "int128"; name: "vQuoteBalance"; type: "int128" },
                                  {
                                      internalType: "int128";
                                      name: "lastCumulativeFundingX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct IPerpEngine.Balance";
                              name: "balance";
                              type: "tuple";
                          },
                      ];
                      internalType: "struct FQuerier.PerpBalance[]";
                      name: "perpBalances";
                      type: "tuple[]";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
              ];
              name: "getPerpProduct";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                          {
                              components: readonly [
                                  {
                                      internalType: "int128";
                                      name: "longWeightInitialX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "shortWeightInitialX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "longWeightMaintenanceX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "shortWeightMaintenanceX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "largePositionPenaltyX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct RiskHelper.Risk";
                              name: "risk";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  {
                                      internalType: "int128";
                                      name: "cumulativeFundingLongX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "cumulativeFundingShortX18";
                                      type: "int128";
                                  },
                                  { internalType: "int128"; name: "availableSettle"; type: "int128" },
                                  { internalType: "int128"; name: "openInterest"; type: "int128" },
                              ];
                              internalType: "struct IPerpEngine.State";
                              name: "state";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "supply"; type: "int128" },
                                  {
                                      internalType: "int128";
                                      name: "lastCumulativeFundingX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "cumulativeFundingPerLpX18";
                                      type: "int128";
                                  },
                                  { internalType: "int128"; name: "base"; type: "int128" },
                                  { internalType: "int128"; name: "quote"; type: "int128" },
                              ];
                              internalType: "struct IPerpEngine.LpState";
                              name: "lpState";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "sizeIncrement"; type: "int128" },
                                  { internalType: "int128"; name: "priceIncrementX18"; type: "int128" },
                                  { internalType: "int128"; name: "minSize"; type: "int128" },
                                  { internalType: "int128"; name: "collectedFees"; type: "int128" },
                                  { internalType: "int128"; name: "lpSpreadX18"; type: "int128" },
                              ];
                              internalType: "struct FQuerier.BookInfo";
                              name: "bookInfo";
                              type: "tuple";
                          },
                      ];
                      internalType: "struct FQuerier.PerpProduct";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32[]"; name: "productIds"; type: "uint32[]" },
              ];
              name: "getPerpProducts";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                          {
                              components: readonly [
                                  {
                                      internalType: "int128";
                                      name: "longWeightInitialX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "shortWeightInitialX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "longWeightMaintenanceX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "shortWeightMaintenanceX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "largePositionPenaltyX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct RiskHelper.Risk";
                              name: "risk";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  {
                                      internalType: "int128";
                                      name: "cumulativeFundingLongX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "cumulativeFundingShortX18";
                                      type: "int128";
                                  },
                                  { internalType: "int128"; name: "availableSettle"; type: "int128" },
                                  { internalType: "int128"; name: "openInterest"; type: "int128" },
                              ];
                              internalType: "struct IPerpEngine.State";
                              name: "state";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "supply"; type: "int128" },
                                  {
                                      internalType: "int128";
                                      name: "lastCumulativeFundingX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "cumulativeFundingPerLpX18";
                                      type: "int128";
                                  },
                                  { internalType: "int128"; name: "base"; type: "int128" },
                                  { internalType: "int128"; name: "quote"; type: "int128" },
                              ];
                              internalType: "struct IPerpEngine.LpState";
                              name: "lpState";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "sizeIncrement"; type: "int128" },
                                  { internalType: "int128"; name: "priceIncrementX18"; type: "int128" },
                                  { internalType: "int128"; name: "minSize"; type: "int128" },
                                  { internalType: "int128"; name: "collectedFees"; type: "int128" },
                                  { internalType: "int128"; name: "lpSpreadX18"; type: "int128" },
                              ];
                              internalType: "struct FQuerier.BookInfo";
                              name: "bookInfo";
                              type: "tuple";
                          },
                      ];
                      internalType: "struct FQuerier.PerpProduct[]";
                      name: "perpProducts";
                      type: "tuple[]";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
              ];
              name: "getSpotBalance";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "amount"; type: "int128" },
                              ];
                              internalType: "struct ISpotEngine.LpBalance";
                              name: "lpBalance";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "amount"; type: "int128" },
                                  {
                                      internalType: "int128";
                                      name: "lastCumulativeMultiplierX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct ISpotEngine.Balance";
                              name: "balance";
                              type: "tuple";
                          },
                      ];
                      internalType: "struct FQuerier.SpotBalance";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                  { internalType: "uint32[]"; name: "productIds"; type: "uint32[]" },
              ];
              name: "getSpotBalances";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "amount"; type: "int128" },
                              ];
                              internalType: "struct ISpotEngine.LpBalance";
                              name: "lpBalance";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "amount"; type: "int128" },
                                  {
                                      internalType: "int128";
                                      name: "lastCumulativeMultiplierX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct ISpotEngine.Balance";
                              name: "balance";
                              type: "tuple";
                          },
                      ];
                      internalType: "struct FQuerier.SpotBalance[]";
                      name: "spotBalances";
                      type: "tuple[]";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
              ];
              name: "getSpotProduct";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                          {
                              components: readonly [
                                  {
                                      internalType: "int128";
                                      name: "longWeightInitialX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "shortWeightInitialX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "longWeightMaintenanceX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "shortWeightMaintenanceX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "largePositionPenaltyX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct RiskHelper.Risk";
                              name: "risk";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "address"; name: "token"; type: "address" },
                                  {
                                      internalType: "int128";
                                      name: "interestInflectionUtilX18";
                                      type: "int128";
                                  },
                                  { internalType: "int128"; name: "interestFloorX18"; type: "int128" },
                                  {
                                      internalType: "int128";
                                      name: "interestSmallCapX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "interestLargeCapX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct ISpotEngine.Config";
                              name: "config";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  {
                                      internalType: "int128";
                                      name: "cumulativeDepositsMultiplierX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "cumulativeBorrowsMultiplierX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "totalDepositsNormalized";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "totalBorrowsNormalized";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct ISpotEngine.State";
                              name: "state";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "supply"; type: "int128" },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct ISpotEngine.Balance";
                                      name: "quote";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct ISpotEngine.Balance";
                                      name: "base";
                                      type: "tuple";
                                  },
                              ];
                              internalType: "struct ISpotEngine.LpState";
                              name: "lpState";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "sizeIncrement"; type: "int128" },
                                  { internalType: "int128"; name: "priceIncrementX18"; type: "int128" },
                                  { internalType: "int128"; name: "minSize"; type: "int128" },
                                  { internalType: "int128"; name: "collectedFees"; type: "int128" },
                                  { internalType: "int128"; name: "lpSpreadX18"; type: "int128" },
                              ];
                              internalType: "struct FQuerier.BookInfo";
                              name: "bookInfo";
                              type: "tuple";
                          },
                      ];
                      internalType: "struct FQuerier.SpotProduct";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32[]"; name: "productIds"; type: "uint32[]" },
              ];
              name: "getSpotProducts";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                          {
                              components: readonly [
                                  {
                                      internalType: "int128";
                                      name: "longWeightInitialX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "shortWeightInitialX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "longWeightMaintenanceX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "shortWeightMaintenanceX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "largePositionPenaltyX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct RiskHelper.Risk";
                              name: "risk";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "address"; name: "token"; type: "address" },
                                  {
                                      internalType: "int128";
                                      name: "interestInflectionUtilX18";
                                      type: "int128";
                                  },
                                  { internalType: "int128"; name: "interestFloorX18"; type: "int128" },
                                  {
                                      internalType: "int128";
                                      name: "interestSmallCapX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "interestLargeCapX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct ISpotEngine.Config";
                              name: "config";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  {
                                      internalType: "int128";
                                      name: "cumulativeDepositsMultiplierX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "cumulativeBorrowsMultiplierX18";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "totalDepositsNormalized";
                                      type: "int128";
                                  },
                                  {
                                      internalType: "int128";
                                      name: "totalBorrowsNormalized";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct ISpotEngine.State";
                              name: "state";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "supply"; type: "int128" },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct ISpotEngine.Balance";
                                      name: "quote";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct ISpotEngine.Balance";
                                      name: "base";
                                      type: "tuple";
                                  },
                              ];
                              internalType: "struct ISpotEngine.LpState";
                              name: "lpState";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "sizeIncrement"; type: "int128" },
                                  { internalType: "int128"; name: "priceIncrementX18"; type: "int128" },
                                  { internalType: "int128"; name: "minSize"; type: "int128" },
                                  { internalType: "int128"; name: "collectedFees"; type: "int128" },
                                  { internalType: "int128"; name: "lpSpreadX18"; type: "int128" },
                              ];
                              internalType: "struct FQuerier.BookInfo";
                              name: "bookInfo";
                              type: "tuple";
                          },
                      ];
                      internalType: "struct FQuerier.SpotProduct[]";
                      name: "spotProducts";
                      type: "tuple[]";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "getSubaccountInfo";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                          { internalType: "bool"; name: "exists"; type: "bool" },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "assets"; type: "int128" },
                                  { internalType: "int128"; name: "liabilities"; type: "int128" },
                                  { internalType: "int128"; name: "health"; type: "int128" },
                              ];
                              internalType: "struct FQuerier.HealthInfo[]";
                              name: "healths";
                              type: "tuple[]";
                          },
                          {
                              internalType: "int128[][]";
                              name: "healthContributions";
                              type: "int128[][]";
                          },
                          { internalType: "uint32"; name: "spotCount"; type: "uint32" },
                          { internalType: "uint32"; name: "perpCount"; type: "uint32" },
                          {
                              components: readonly [
                                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct ISpotEngine.LpBalance";
                                      name: "lpBalance";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct ISpotEngine.Balance";
                                      name: "balance";
                                      type: "tuple";
                                  },
                              ];
                              internalType: "struct FQuerier.SpotBalance[]";
                              name: "spotBalances";
                              type: "tuple[]";
                          },
                          {
                              components: readonly [
                                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct IPerpEngine.LpBalance";
                                      name: "lpBalance";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct IPerpEngine.Balance";
                                      name: "balance";
                                      type: "tuple";
                                  },
                              ];
                              internalType: "struct FQuerier.PerpBalance[]";
                              name: "perpBalances";
                              type: "tuple[]";
                          },
                          {
                              components: readonly [
                                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                                  { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct RiskHelper.Risk";
                                      name: "risk";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct ISpotEngine.Config";
                                      name: "config";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct ISpotEngine.State";
                                      name: "state";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { components: ...; internalType: ...; name: ...; type: ... },
                                          { components: ...; internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct ISpotEngine.LpState";
                                      name: "lpState";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct FQuerier.BookInfo";
                                      name: "bookInfo";
                                      type: "tuple";
                                  },
                              ];
                              internalType: "struct FQuerier.SpotProduct[]";
                              name: "spotProducts";
                              type: "tuple[]";
                          },
                          {
                              components: readonly [
                                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                                  { internalType: "int128"; name: "oraclePriceX18"; type: "int128" },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct RiskHelper.Risk";
                                      name: "risk";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct IPerpEngine.State";
                                      name: "state";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct IPerpEngine.LpState";
                                      name: "lpState";
                                      type: "tuple";
                                  },
                                  {
                                      components: readonly [
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                          { internalType: ...; name: ...; type: ... },
                                      ];
                                      internalType: "struct FQuerier.BookInfo";
                                      name: "bookInfo";
                                      type: "tuple";
                                  },
                              ];
                              internalType: "struct FQuerier.PerpProduct[]";
                              name: "perpProducts";
                              type: "tuple[]";
                          },
                      ];
                      internalType: "struct FQuerier.SubaccountInfo";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getVersion";
              outputs: readonly [{ internalType: "uint64"; name: ""; type: "uint64" }];
              stateMutability: "pure";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "address"; name: "_clearinghouse"; type: "address" },
              ];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
      ]
    • Readonlyendpoint: readonly [
          {
              anonymous: false;
              inputs: readonly [
                  {
                      indexed: false;
                      internalType: "uint8";
                      name: "version";
                      type: "uint8";
                  },
              ];
              name: "Initialized";
              type: "event";
          },
          {
              anonymous: false;
              inputs: readonly [
                  {
                      indexed: true;
                      internalType: "address";
                      name: "previousOwner";
                      type: "address";
                  },
                  {
                      indexed: true;
                      internalType: "address";
                      name: "newOwner";
                      type: "address";
                  },
              ];
              name: "OwnershipTransferred";
              type: "event";
          },
          {
              anonymous: false;
              inputs: readonly [];
              name: "SubmitTransactions";
              type: "event";
          },
          {
              inputs: readonly [];
              name: "clearinghouse";
              outputs: readonly [
                  { internalType: "contract IClearinghouse"; name: ""; type: "address" },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes12"; name: "subaccountName"; type: "bytes12" },
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "uint128"; name: "amount"; type: "uint128" },
              ];
              name: "depositCollateral";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "uint128"; name: "amount"; type: "uint128" },
                  { internalType: "string"; name: "referralCode"; type: "string" },
              ];
              name: "depositCollateralWithReferral";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes12"; name: "subaccountName"; type: "bytes12" },
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "uint128"; name: "amount"; type: "uint128" },
                  { internalType: "string"; name: "referralCode"; type: "string" },
              ];
              name: "depositCollateralWithReferral";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "count"; type: "uint32" },
              ];
              name: "executeSlowModeTransactions";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
              ];
              name: "getBook";
              outputs: readonly [{ internalType: "address"; name: ""; type: "address" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "address"; name: "sender"; type: "address" },
              ];
              name: "getNonce";
              outputs: readonly [{ internalType: "uint64"; name: ""; type: "uint64" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
              ];
              name: "getPriceX18";
              outputs: readonly [
                  { internalType: "int128"; name: "priceX18"; type: "int128" },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "healthGroup"; type: "uint32" },
              ];
              name: "getPricesX18";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "int128"; name: "spotPriceX18"; type: "int128" },
                          { internalType: "int128"; name: "perpPriceX18"; type: "int128" },
                      ];
                      internalType: "struct IEndpoint.Prices";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getSequencer";
              outputs: readonly [{ internalType: "address"; name: ""; type: "address" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "getSubaccountId";
              outputs: readonly [{ internalType: "uint64"; name: ""; type: "uint64" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getTime";
              outputs: readonly [{ internalType: "uint128"; name: ""; type: "uint128" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getVersion";
              outputs: readonly [{ internalType: "uint64"; name: ""; type: "uint64" }];
              stateMutability: "pure";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "address"; name: "_sanctions"; type: "address" },
                  { internalType: "address"; name: "_sequencer"; type: "address" },
                  {
                      internalType: "contract IClearinghouse";
                      name: "_clearinghouse";
                      type: "address";
                  },
                  { internalType: "uint64"; name: "slowModeTimeout"; type: "uint64" },
                  { internalType: "uint128"; name: "_time"; type: "uint128" },
                  { internalType: "int128[]"; name: "_prices"; type: "int128[]" },
              ];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "nSubmissions";
              outputs: readonly [{ internalType: "uint64"; name: ""; type: "uint64" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "owner";
              outputs: readonly [{ internalType: "address"; name: ""; type: "address" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "address"; name: "sender"; type: "address" },
                  { internalType: "bytes"; name: "transaction"; type: "bytes" },
              ];
              name: "processSlowModeTransaction";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "address"; name: ""; type: "address" },
              ];
              name: "referralCodes";
              outputs: readonly [{ internalType: "string"; name: ""; type: "string" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "address"; name: "wallet"; type: "address" },
                  { internalType: "bool"; name: "transferable"; type: "bool" },
              ];
              name: "registerTransferableWallet";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "renounceOwnership";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "requireSubaccount";
              outputs: readonly [];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [{ internalType: "uint32"; name: ""; type: "uint32" }];
              name: "sequencerFee";
              outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "sequencerFees";
              outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "address"; name: "book"; type: "address" },
              ];
              name: "setBook";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "address"; name: "_sequencer"; type: "address" },
              ];
              name: "setSequencer";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "slowModeConfig";
              outputs: readonly [
                  { internalType: "uint64"; name: "timeout"; type: "uint64" },
                  { internalType: "uint64"; name: "txCount"; type: "uint64" },
                  { internalType: "uint64"; name: "txUpTo"; type: "uint64" },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [{ internalType: "uint64"; name: ""; type: "uint64" }];
              name: "slowModeTxs";
              outputs: readonly [
                  { internalType: "uint64"; name: "executableAt"; type: "uint64" },
                  { internalType: "address"; name: "sender"; type: "address" },
                  { internalType: "bytes"; name: "tx"; type: "bytes" },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes"; name: "transaction"; type: "bytes" },
              ];
              name: "submitSlowModeTransaction";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes[]"; name: "transactions"; type: "bytes[]" },
              ];
              name: "submitTransactions";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint64"; name: "idx"; type: "uint64" },
                  { internalType: "bytes[]"; name: "transactions"; type: "bytes[]" },
              ];
              name: "submitTransactionsChecked";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint64"; name: "idx"; type: "uint64" },
                  { internalType: "bytes[]"; name: "transactions"; type: "bytes[]" },
                  { internalType: "uint256"; name: "gasLimit"; type: "uint256" },
              ];
              name: "submitTransactionsCheckedWithGasLimit";
              outputs: readonly [
                  { internalType: "uint64"; name: ""; type: "uint64" },
                  { internalType: "uint256"; name: ""; type: "uint256" },
              ];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "address"; name: "newOwner"; type: "address" },
              ];
              name: "transferOwnership";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
      ]
    • Readonlyclearinghouse: readonly [
          {
              anonymous: false;
              inputs: readonly [
                  {
                      indexed: false;
                      internalType: "address";
                      name: "endpoint";
                      type: "address";
                  },
                  {
                      indexed: false;
                      internalType: "address";
                      name: "quote";
                      type: "address";
                  },
              ];
              name: "ClearinghouseInitialized";
              type: "event";
          },
          {
              anonymous: false;
              inputs: readonly [
                  {
                      indexed: true;
                      internalType: "bytes32";
                      name: "liquidatorSubaccount";
                      type: "bytes32";
                  },
                  {
                      indexed: true;
                      internalType: "bytes32";
                      name: "liquidateeSubaccount";
                      type: "bytes32";
                  },
                  {
                      indexed: false;
                      internalType: "uint32";
                      name: "productId";
                      type: "uint32";
                  },
                  {
                      indexed: false;
                      internalType: "bool";
                      name: "isEncodedSpread";
                      type: "bool";
                  },
                  {
                      indexed: false;
                      internalType: "int128";
                      name: "amount";
                      type: "int128";
                  },
                  {
                      indexed: false;
                      internalType: "int128";
                      name: "amountQuote";
                      type: "int128";
                  },
              ];
              name: "Liquidation";
              type: "event";
          },
          {
              anonymous: false;
              inputs: readonly [
                  {
                      indexed: false;
                      internalType: "int128";
                      name: "amount";
                      type: "int128";
                  },
                  {
                      indexed: true;
                      internalType: "bytes32";
                      name: "subaccount";
                      type: "bytes32";
                  },
                  {
                      indexed: false;
                      internalType: "uint32";
                      name: "productId";
                      type: "uint32";
                  },
              ];
              name: "ModifyCollateral";
              type: "event";
          },
          {
              inputs: readonly [
                  { internalType: "address"; name: "engine"; type: "address" },
                  { internalType: "address"; name: "offchainExchange"; type: "address" },
                  {
                      internalType: "enum IProductEngine.EngineType";
                      name: "engineType";
                      type: "uint8";
                  },
              ];
              name: "addEngine";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  {
                      components: readonly [
                          { internalType: "bytes32"; name: "sender"; type: "bytes32" },
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          { internalType: "uint128"; name: "amount"; type: "uint128" },
                          { internalType: "uint64"; name: "nonce"; type: "uint64" },
                      ];
                      internalType: "struct IEndpoint.BurnLp";
                      name: "tx";
                      type: "tuple";
                  },
              ];
              name: "burnLp";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  {
                      components: readonly [
                          { internalType: "bytes32"; name: "sender"; type: "bytes32" },
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          { internalType: "uint128"; name: "amount"; type: "uint128" },
                          { internalType: "bytes32"; name: "recipient"; type: "bytes32" },
                      ];
                      internalType: "struct IEndpoint.BurnLpAndTransfer";
                      name: "txn";
                      type: "tuple";
                  },
              ];
              name: "burnLpAndTransfer";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  {
                      components: readonly [
                          { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                      ];
                      internalType: "struct IEndpoint.ClaimSequencerFees";
                      name: "tx";
                      type: "tuple";
                  },
                  { internalType: "int128[]"; name: "fees"; type: "int128[]" },
              ];
              name: "claimSequencerFees";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  {
                      components: readonly [
                          { internalType: "bytes32"; name: "sender"; type: "bytes32" },
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          { internalType: "uint128"; name: "amount"; type: "uint128" },
                      ];
                      internalType: "struct IEndpoint.DepositCollateral";
                      name: "tx";
                      type: "tuple";
                  },
              ];
              name: "depositCollateral";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  {
                      components: readonly [
                          { internalType: "uint128"; name: "amount"; type: "uint128" },
                      ];
                      internalType: "struct IEndpoint.DepositInsurance";
                      name: "tx";
                      type: "tuple";
                  },
              ];
              name: "depositInsurance";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getClearinghouseLiq";
              outputs: readonly [{ internalType: "address"; name: ""; type: "address" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getEndpoint";
              outputs: readonly [
                  { internalType: "address"; name: "endpoint"; type: "address" },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
              ];
              name: "getEngineByProduct";
              outputs: readonly [{ internalType: "address"; name: ""; type: "address" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  {
                      internalType: "enum IProductEngine.EngineType";
                      name: "engineType";
                      type: "uint8";
                  },
              ];
              name: "getEngineByType";
              outputs: readonly [{ internalType: "address"; name: ""; type: "address" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                  {
                      internalType: "enum IProductEngine.HealthType";
                      name: "healthType";
                      type: "uint8";
                  },
              ];
              name: "getHealth";
              outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getInsurance";
              outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getQuote";
              outputs: readonly [{ internalType: "address"; name: ""; type: "address" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getSpreads";
              outputs: readonly [{ internalType: "uint256"; name: ""; type: "uint256" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getVersion";
              outputs: readonly [{ internalType: "uint64"; name: ""; type: "uint64" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  {
                      components: readonly [
                          { internalType: "bytes32"; name: "sender"; type: "bytes32" },
                          { internalType: "bytes32"; name: "liquidatee"; type: "bytes32" },
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          { internalType: "bool"; name: "isEncodedSpread"; type: "bool" },
                          { internalType: "int128"; name: "amount"; type: "int128" },
                          { internalType: "uint64"; name: "nonce"; type: "uint64" },
                      ];
                      internalType: "struct IEndpoint.LiquidateSubaccount";
                      name: "tx";
                      type: "tuple";
                  },
              ];
              name: "liquidateSubaccount";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  {
                      components: readonly [
                          { internalType: "bytes32"; name: "sender"; type: "bytes32" },
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          { internalType: "uint128"; name: "amountBase"; type: "uint128" },
                          { internalType: "uint128"; name: "quoteAmountLow"; type: "uint128" },
                          { internalType: "uint128"; name: "quoteAmountHigh"; type: "uint128" },
                          { internalType: "uint64"; name: "nonce"; type: "uint64" },
                      ];
                      internalType: "struct IEndpoint.MintLp";
                      name: "tx";
                      type: "tuple";
                  },
              ];
              name: "mintLp";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
              ];
              name: "registerProduct";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  {
                      components: readonly [
                          {
                              internalType: "bytes32[]";
                              name: "subaccounts";
                              type: "bytes32[]";
                          },
                          { internalType: "uint256[]"; name: "productIds"; type: "uint256[]" },
                      ];
                      internalType: "struct IEndpoint.SettlePnl";
                      name: "tx";
                      type: "tuple";
                  },
              ];
              name: "settlePnl";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  {
                      components: readonly [
                          { internalType: "bytes32"; name: "sender"; type: "bytes32" },
                          { internalType: "bytes32"; name: "recipient"; type: "bytes32" },
                          { internalType: "uint128"; name: "amount"; type: "uint128" },
                          { internalType: "uint64"; name: "nonce"; type: "uint64" },
                      ];
                      internalType: "struct IEndpoint.TransferQuote";
                      name: "tx";
                      type: "tuple";
                  },
              ];
              name: "transferQuote";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  {
                      internalType: "address";
                      name: "_clearinghouseLiq";
                      type: "address";
                  },
              ];
              name: "upgradeClearinghouseLiq";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "sender"; type: "bytes32" },
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "uint128"; name: "amount"; type: "uint128" },
                  { internalType: "address"; name: "sendTo"; type: "address" },
              ];
              name: "withdrawCollateral";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
      ]
    • ReadonlyspotEngine: readonly [
          {
              anonymous: false;
              inputs: readonly [
                  {
                      indexed: false;
                      internalType: "uint32";
                      name: "productId";
                      type: "uint32";
                  },
              ];
              name: "AddProduct";
              type: "event";
          },
          {
              inputs: readonly [
                  {
                      components: readonly [
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                          { internalType: "int128"; name: "amountDelta"; type: "int128" },
                          { internalType: "int128"; name: "vQuoteDelta"; type: "int128" },
                      ];
                      internalType: "struct IProductEngine.ProductDelta[]";
                      name: "deltas";
                      type: "tuple[]";
                  },
              ];
              name: "applyDeltas";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                  { internalType: "int128"; name: "amountLp"; type: "int128" },
              ];
              name: "burnLp";
              outputs: readonly [
                  { internalType: "int128"; name: ""; type: "int128" },
                  { internalType: "int128"; name: ""; type: "int128" },
              ];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "liquidatee"; type: "bytes32" },
                  { internalType: "bytes32"; name: "liquidator"; type: "bytes32" },
                  { internalType: "address"; name: "feeCalculator"; type: "address" },
              ];
              name: "decomposeLps";
              outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "getBalance";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "int128"; name: "amount"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeMultiplierX18";
                              type: "int128";
                          },
                      ];
                      internalType: "struct ISpotEngine.Balance";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "getBalanceAmount";
              outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "getBalances";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "int128"; name: "amount"; type: "int128" },
                      ];
                      internalType: "struct ISpotEngine.LpBalance";
                      name: "";
                      type: "tuple";
                  },
                  {
                      components: readonly [
                          { internalType: "int128"; name: "amount"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeMultiplierX18";
                              type: "int128";
                          },
                      ];
                      internalType: "struct ISpotEngine.Balance";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getClearinghouse";
              outputs: readonly [{ internalType: "address"; name: ""; type: "address" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
              ];
              name: "getConfig";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "address"; name: "token"; type: "address" },
                          {
                              internalType: "int128";
                              name: "interestInflectionUtilX18";
                              type: "int128";
                          },
                          { internalType: "int128"; name: "interestFloorX18"; type: "int128" },
                          { internalType: "int128"; name: "interestSmallCapX18"; type: "int128" },
                          { internalType: "int128"; name: "interestLargeCapX18"; type: "int128" },
                      ];
                      internalType: "struct ISpotEngine.Config";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getEngineType";
              outputs: readonly [
                  {
                      internalType: "enum IProductEngine.EngineType";
                      name: "";
                      type: "uint8";
                  },
              ];
              stateMutability: "pure";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
              ];
              name: "getLpState";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "int128"; name: "supply"; type: "int128" },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "amount"; type: "int128" },
                                  {
                                      internalType: "int128";
                                      name: "lastCumulativeMultiplierX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct ISpotEngine.Balance";
                              name: "quote";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "amount"; type: "int128" },
                                  {
                                      internalType: "int128";
                                      name: "lastCumulativeMultiplierX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct ISpotEngine.Balance";
                              name: "base";
                              type: "tuple";
                          },
                      ];
                      internalType: "struct ISpotEngine.LpState";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
              ];
              name: "getOrderbook";
              outputs: readonly [{ internalType: "address"; name: ""; type: "address" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getProductIds";
              outputs: readonly [
                  { internalType: "uint32[]"; name: ""; type: "uint32[]" },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "getStateAndBalance";
              outputs: readonly [
                  {
                      components: readonly [
                          {
                              internalType: "int128";
                              name: "cumulativeDepositsMultiplierX18";
                              type: "int128";
                          },
                          {
                              internalType: "int128";
                              name: "cumulativeBorrowsMultiplierX18";
                              type: "int128";
                          },
                          {
                              internalType: "int128";
                              name: "totalDepositsNormalized";
                              type: "int128";
                          },
                          {
                              internalType: "int128";
                              name: "totalBorrowsNormalized";
                              type: "int128";
                          },
                      ];
                      internalType: "struct ISpotEngine.State";
                      name: "";
                      type: "tuple";
                  },
                  {
                      components: readonly [
                          { internalType: "int128"; name: "amount"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeMultiplierX18";
                              type: "int128";
                          },
                      ];
                      internalType: "struct ISpotEngine.Balance";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "getStatesAndBalances";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "int128"; name: "supply"; type: "int128" },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "amount"; type: "int128" },
                                  {
                                      internalType: "int128";
                                      name: "lastCumulativeMultiplierX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct ISpotEngine.Balance";
                              name: "quote";
                              type: "tuple";
                          },
                          {
                              components: readonly [
                                  { internalType: "int128"; name: "amount"; type: "int128" },
                                  {
                                      internalType: "int128";
                                      name: "lastCumulativeMultiplierX18";
                                      type: "int128";
                                  },
                              ];
                              internalType: "struct ISpotEngine.Balance";
                              name: "base";
                              type: "tuple";
                          },
                      ];
                      internalType: "struct ISpotEngine.LpState";
                      name: "";
                      type: "tuple";
                  },
                  {
                      components: readonly [
                          { internalType: "int128"; name: "amount"; type: "int128" },
                      ];
                      internalType: "struct ISpotEngine.LpBalance";
                      name: "";
                      type: "tuple";
                  },
                  {
                      components: readonly [
                          {
                              internalType: "int128";
                              name: "cumulativeDepositsMultiplierX18";
                              type: "int128";
                          },
                          {
                              internalType: "int128";
                              name: "cumulativeBorrowsMultiplierX18";
                              type: "int128";
                          },
                          {
                              internalType: "int128";
                              name: "totalDepositsNormalized";
                              type: "int128";
                          },
                          {
                              internalType: "int128";
                              name: "totalBorrowsNormalized";
                              type: "int128";
                          },
                      ];
                      internalType: "struct ISpotEngine.State";
                      name: "";
                      type: "tuple";
                  },
                  {
                      components: readonly [
                          { internalType: "int128"; name: "amount"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeMultiplierX18";
                              type: "int128";
                          },
                      ];
                      internalType: "struct ISpotEngine.Balance";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
              ];
              name: "getWithdrawFee";
              outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "hasBalance";
              outputs: readonly [{ internalType: "bool"; name: ""; type: "bool" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "address"; name: "_clearinghouse"; type: "address" },
                  { internalType: "address"; name: "_quote"; type: "address" },
                  { internalType: "address"; name: "_endpoint"; type: "address" },
                  { internalType: "address"; name: "_admin"; type: "address" },
                  { internalType: "address"; name: "_fees"; type: "address" },
              ];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "int128[]"; name: "totalDeposits"; type: "int128[]" },
                  { internalType: "int128[]"; name: "totalBorrows"; type: "int128[]" },
              ];
              name: "manualAssert";
              outputs: readonly [];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                  { internalType: "int128"; name: "amountBase"; type: "int128" },
                  { internalType: "int128"; name: "quoteAmountLow"; type: "int128" },
                  { internalType: "int128"; name: "quoteAmountHigh"; type: "int128" },
              ];
              name: "mintLp";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "socializeSubaccount";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "int128"; name: "baseDelta"; type: "int128" },
                  { internalType: "int128"; name: "quoteDelta"; type: "int128" },
              ];
              name: "swapLp";
              outputs: readonly [
                  { internalType: "int128"; name: ""; type: "int128" },
                  { internalType: "int128"; name: ""; type: "int128" },
              ];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "int128"; name: "amount"; type: "int128" },
                  { internalType: "int128"; name: "priceX18"; type: "int128" },
                  { internalType: "int128"; name: "sizeIncrement"; type: "int128" },
                  { internalType: "int128"; name: "lpSpreadX18"; type: "int128" },
              ];
              name: "swapLp";
              outputs: readonly [
                  { internalType: "int128"; name: ""; type: "int128" },
                  { internalType: "int128"; name: ""; type: "int128" },
              ];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes"; name: "txn"; type: "bytes" },
              ];
              name: "updateProduct";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint128"; name: "dt"; type: "uint128" },
              ];
              name: "updateStates";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
      ]
    • ReadonlyperpEngine: readonly [
          {
              anonymous: false;
              inputs: readonly [
                  {
                      indexed: false;
                      internalType: "uint32";
                      name: "productId";
                      type: "uint32";
                  },
              ];
              name: "AddProduct";
              type: "event";
          },
          {
              inputs: readonly [
                  {
                      components: readonly [
                          { internalType: "uint32"; name: "productId"; type: "uint32" },
                          { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                          { internalType: "int128"; name: "amountDelta"; type: "int128" },
                          { internalType: "int128"; name: "vQuoteDelta"; type: "int128" },
                      ];
                      internalType: "struct IProductEngine.ProductDelta[]";
                      name: "deltas";
                      type: "tuple[]";
                  },
              ];
              name: "applyDeltas";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                  { internalType: "int128"; name: "amountLp"; type: "int128" },
              ];
              name: "burnLp";
              outputs: readonly [
                  { internalType: "int128"; name: ""; type: "int128" },
                  { internalType: "int128"; name: ""; type: "int128" },
              ];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "liquidatee"; type: "bytes32" },
                  { internalType: "bytes32"; name: "liquidator"; type: "bytes32" },
                  { internalType: "address"; name: "feeCalculator"; type: "address" },
              ];
              name: "decomposeLps";
              outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "getBalance";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "int128"; name: "amount"; type: "int128" },
                          { internalType: "int128"; name: "vQuoteBalance"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeFundingX18";
                              type: "int128";
                          },
                      ];
                      internalType: "struct IPerpEngine.Balance";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "getBalanceAmount";
              outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "getBalances";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "int128"; name: "amount"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeFundingX18";
                              type: "int128";
                          },
                      ];
                      internalType: "struct IPerpEngine.LpBalance";
                      name: "";
                      type: "tuple";
                  },
                  {
                      components: readonly [
                          { internalType: "int128"; name: "amount"; type: "int128" },
                          { internalType: "int128"; name: "vQuoteBalance"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeFundingX18";
                              type: "int128";
                          },
                      ];
                      internalType: "struct IPerpEngine.Balance";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getClearinghouse";
              outputs: readonly [{ internalType: "address"; name: ""; type: "address" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getEngineType";
              outputs: readonly [
                  {
                      internalType: "enum IProductEngine.EngineType";
                      name: "";
                      type: "uint8";
                  },
              ];
              stateMutability: "pure";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
              ];
              name: "getLpState";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "int128"; name: "supply"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeFundingX18";
                              type: "int128";
                          },
                          {
                              internalType: "int128";
                              name: "cumulativeFundingPerLpX18";
                              type: "int128";
                          },
                          { internalType: "int128"; name: "base"; type: "int128" },
                          { internalType: "int128"; name: "quote"; type: "int128" },
                      ];
                      internalType: "struct IPerpEngine.LpState";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
              ];
              name: "getOrderbook";
              outputs: readonly [{ internalType: "address"; name: ""; type: "address" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "getPositionPnl";
              outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "getProductIds";
              outputs: readonly [
                  { internalType: "uint32[]"; name: ""; type: "uint32[]" },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "getSettlementState";
              outputs: readonly [
                  { internalType: "int128"; name: "availableSettle"; type: "int128" },
                  {
                      components: readonly [
                          { internalType: "int128"; name: "supply"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeFundingX18";
                              type: "int128";
                          },
                          {
                              internalType: "int128";
                              name: "cumulativeFundingPerLpX18";
                              type: "int128";
                          },
                          { internalType: "int128"; name: "base"; type: "int128" },
                          { internalType: "int128"; name: "quote"; type: "int128" },
                      ];
                      internalType: "struct IPerpEngine.LpState";
                      name: "lpState";
                      type: "tuple";
                  },
                  {
                      components: readonly [
                          { internalType: "int128"; name: "amount"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeFundingX18";
                              type: "int128";
                          },
                      ];
                      internalType: "struct IPerpEngine.LpBalance";
                      name: "lpBalance";
                      type: "tuple";
                  },
                  {
                      components: readonly [
                          {
                              internalType: "int128";
                              name: "cumulativeFundingLongX18";
                              type: "int128";
                          },
                          {
                              internalType: "int128";
                              name: "cumulativeFundingShortX18";
                              type: "int128";
                          },
                          { internalType: "int128"; name: "availableSettle"; type: "int128" },
                          { internalType: "int128"; name: "openInterest"; type: "int128" },
                      ];
                      internalType: "struct IPerpEngine.State";
                      name: "state";
                      type: "tuple";
                  },
                  {
                      components: readonly [
                          { internalType: "int128"; name: "amount"; type: "int128" },
                          { internalType: "int128"; name: "vQuoteBalance"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeFundingX18";
                              type: "int128";
                          },
                      ];
                      internalType: "struct IPerpEngine.Balance";
                      name: "balance";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "getStateAndBalance";
              outputs: readonly [
                  {
                      components: readonly [
                          {
                              internalType: "int128";
                              name: "cumulativeFundingLongX18";
                              type: "int128";
                          },
                          {
                              internalType: "int128";
                              name: "cumulativeFundingShortX18";
                              type: "int128";
                          },
                          { internalType: "int128"; name: "availableSettle"; type: "int128" },
                          { internalType: "int128"; name: "openInterest"; type: "int128" },
                      ];
                      internalType: "struct IPerpEngine.State";
                      name: "";
                      type: "tuple";
                  },
                  {
                      components: readonly [
                          { internalType: "int128"; name: "amount"; type: "int128" },
                          { internalType: "int128"; name: "vQuoteBalance"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeFundingX18";
                              type: "int128";
                          },
                      ];
                      internalType: "struct IPerpEngine.Balance";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "getStatesAndBalances";
              outputs: readonly [
                  {
                      components: readonly [
                          { internalType: "int128"; name: "supply"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeFundingX18";
                              type: "int128";
                          },
                          {
                              internalType: "int128";
                              name: "cumulativeFundingPerLpX18";
                              type: "int128";
                          },
                          { internalType: "int128"; name: "base"; type: "int128" },
                          { internalType: "int128"; name: "quote"; type: "int128" },
                      ];
                      internalType: "struct IPerpEngine.LpState";
                      name: "";
                      type: "tuple";
                  },
                  {
                      components: readonly [
                          { internalType: "int128"; name: "amount"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeFundingX18";
                              type: "int128";
                          },
                      ];
                      internalType: "struct IPerpEngine.LpBalance";
                      name: "";
                      type: "tuple";
                  },
                  {
                      components: readonly [
                          {
                              internalType: "int128";
                              name: "cumulativeFundingLongX18";
                              type: "int128";
                          },
                          {
                              internalType: "int128";
                              name: "cumulativeFundingShortX18";
                              type: "int128";
                          },
                          { internalType: "int128"; name: "availableSettle"; type: "int128" },
                          { internalType: "int128"; name: "openInterest"; type: "int128" },
                      ];
                      internalType: "struct IPerpEngine.State";
                      name: "";
                      type: "tuple";
                  },
                  {
                      components: readonly [
                          { internalType: "int128"; name: "amount"; type: "int128" },
                          { internalType: "int128"; name: "vQuoteBalance"; type: "int128" },
                          {
                              internalType: "int128";
                              name: "lastCumulativeFundingX18";
                              type: "int128";
                          },
                      ];
                      internalType: "struct IPerpEngine.Balance";
                      name: "";
                      type: "tuple";
                  },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
              ];
              name: "hasBalance";
              outputs: readonly [{ internalType: "bool"; name: ""; type: "bool" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "address"; name: "_clearinghouse"; type: "address" },
                  { internalType: "address"; name: "_quote"; type: "address" },
                  { internalType: "address"; name: "_endpoint"; type: "address" },
                  { internalType: "address"; name: "_admin"; type: "address" },
                  { internalType: "address"; name: "_fees"; type: "address" },
              ];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "int128[]"; name: "openInterests"; type: "int128[]" },
              ];
              name: "manualAssert";
              outputs: readonly [];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                  { internalType: "int128"; name: "amountBase"; type: "int128" },
                  { internalType: "int128"; name: "quoteAmountLow"; type: "int128" },
                  { internalType: "int128"; name: "quoteAmountHigh"; type: "int128" },
              ];
              name: "mintLp";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                  { internalType: "uint256"; name: "productIds"; type: "uint256" },
              ];
              name: "settlePnl";
              outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes32"; name: "subaccount"; type: "bytes32" },
                  { internalType: "int128"; name: "insurance"; type: "int128" },
              ];
              name: "socializeSubaccount";
              outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "int128"; name: "baseDelta"; type: "int128" },
                  { internalType: "int128"; name: "quoteDelta"; type: "int128" },
              ];
              name: "swapLp";
              outputs: readonly [
                  { internalType: "int128"; name: ""; type: "int128" },
                  { internalType: "int128"; name: ""; type: "int128" },
              ];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "int128"; name: "amount"; type: "int128" },
                  { internalType: "int128"; name: "priceX18"; type: "int128" },
                  { internalType: "int128"; name: "sizeIncrement"; type: "int128" },
                  { internalType: "int128"; name: "lpSpreadX18"; type: "int128" },
              ];
              name: "swapLp";
              outputs: readonly [
                  { internalType: "int128"; name: ""; type: "int128" },
                  { internalType: "int128"; name: ""; type: "int128" },
              ];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "bytes"; name: "txn"; type: "bytes" },
              ];
              name: "updateProduct";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint128"; name: "dt"; type: "uint128" },
                  { internalType: "int128[]"; name: "avgPriceDiffs"; type: "int128[]" },
              ];
              name: "updateStates";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
      ]
    • ReadonlywithdrawPool: readonly [
          {
              inputs: readonly [];
              stateMutability: "nonpayable";
              type: "constructor";
          },
          {
              anonymous: false;
              inputs: readonly [
                  {
                      indexed: false;
                      internalType: "uint8";
                      name: "version";
                      type: "uint8";
                  },
              ];
              name: "Initialized";
              type: "event";
          },
          {
              anonymous: false;
              inputs: readonly [
                  {
                      indexed: true;
                      internalType: "address";
                      name: "previousOwner";
                      type: "address";
                  },
                  {
                      indexed: true;
                      internalType: "address";
                      name: "newOwner";
                      type: "address";
                  },
              ];
              name: "OwnershipTransferred";
              type: "event";
          },
          {
              inputs: readonly [
                  { internalType: "uint64[]"; name: "idxs"; type: "uint64[]" },
              ];
              name: "checkMarkedIdxs";
              outputs: readonly [{ internalType: "bool[]"; name: ""; type: "bool[]" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32[]"; name: "productIds"; type: "uint32[]" },
              ];
              name: "checkProductBalances";
              outputs: readonly [
                  { internalType: "uint256[]"; name: ""; type: "uint256[]" },
              ];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  {
                      internalType: "contract IERC20Base";
                      name: "token";
                      type: "address";
                  },
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "uint128"; name: "amount"; type: "uint128" },
              ];
              name: "fastWithdrawalFeeAmount";
              outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [{ internalType: "uint32"; name: ""; type: "uint32" }];
              name: "fees";
              outputs: readonly [{ internalType: "int128"; name: ""; type: "int128" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "address"; name: "_clearinghouse"; type: "address" },
                  { internalType: "address"; name: "_verifier"; type: "address" },
              ];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [{ internalType: "uint64"; name: ""; type: "uint64" }];
              name: "markedIdxs";
              outputs: readonly [{ internalType: "bool"; name: ""; type: "bool" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "owner";
              outputs: readonly [{ internalType: "address"; name: ""; type: "address" }];
              stateMutability: "view";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint32"; name: "productId"; type: "uint32" },
                  { internalType: "uint128"; name: "amount"; type: "uint128" },
                  { internalType: "address"; name: "sendTo"; type: "address" },
              ];
              name: "removeLiquidity";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [];
              name: "renounceOwnership";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "uint64"; name: "idx"; type: "uint64" },
                  { internalType: "bytes"; name: "transaction"; type: "bytes" },
                  { internalType: "bytes[]"; name: "signatures"; type: "bytes[]" },
              ];
              name: "submitFastWithdrawal";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  {
                      internalType: "contract IERC20Base";
                      name: "token";
                      type: "address";
                  },
                  { internalType: "address"; name: "sendTo"; type: "address" },
                  { internalType: "uint128"; name: "amount"; type: "uint128" },
                  { internalType: "uint64"; name: "idx"; type: "uint64" },
              ];
              name: "submitWithdrawal";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
          {
              inputs: readonly [
                  { internalType: "address"; name: "newOwner"; type: "address" },
              ];
              name: "transferOwnership";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          },
      ]