QUERIER_ABI: 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: "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: "struct ISpotEngine.Balance";
                    name: "quote";
                    type: "tuple";
                }, {
                    components: readonly [(...), (...)];
                    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[]";
        }, {
            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[]";
        }];
        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: "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: "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: "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: "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: "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[]";
        }, {
            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[]";
        }, {
            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: "struct ISpotEngine.Balance";
                    name: "quote";
                    type: "tuple";
                }, {
                    components: readonly [(...), (...)];
                    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[]";
        }, {
            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[]";
        }];
        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";
}] = ...