VERTEX_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";
    }];
    foundationRewardsAirdrop: readonly [{
        inputs: readonly [{
            components: readonly [{
                internalType: "uint32";
                name: "week";
                type: "uint32";
            }, {
                internalType: "uint256";
                name: "totalAmount";
                type: "uint256";
            }, {
                internalType: "bytes32[]";
                name: "proof";
                type: "bytes32[]";
            }];
            internalType: "struct IArbAirdrop.ClaimProof[]";
            name: "claimProofs";
            type: "tuple[]";
        }];
        name: "claim";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getClaimed";
        outputs: readonly [{
            internalType: "uint256[]";
            name: "";
            type: "uint256[]";
        }];
        stateMutability: "view";
        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";
    }];
    vrtxToken: readonly [{
        anonymous: false;
        inputs: readonly [{
            indexed: true;
            internalType: "address";
            name: "owner";
            type: "address";
        }, {
            indexed: true;
            internalType: "address";
            name: "spender";
            type: "address";
        }, {
            indexed: false;
            internalType: "uint256";
            name: "value";
            type: "uint256";
        }];
        name: "Approval";
        type: "event";
    }, {
        anonymous: false;
        inputs: readonly [{
            indexed: true;
            internalType: "address";
            name: "from";
            type: "address";
        }, {
            indexed: true;
            internalType: "address";
            name: "to";
            type: "address";
        }, {
            indexed: false;
            internalType: "uint256";
            name: "value";
            type: "uint256";
        }];
        name: "Transfer";
        type: "event";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "owner";
            type: "address";
        }, {
            internalType: "address";
            name: "spender";
            type: "address";
        }];
        name: "allowance";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "spender";
            type: "address";
        }, {
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }];
        name: "approve";
        outputs: readonly [{
            internalType: "bool";
            name: "";
            type: "bool";
        }];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "balanceOf";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "totalSupply";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "to";
            type: "address";
        }, {
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }];
        name: "transfer";
        outputs: readonly [{
            internalType: "bool";
            name: "";
            type: "bool";
        }];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "from";
            type: "address";
        }, {
            internalType: "address";
            name: "to";
            type: "address";
        }, {
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }];
        name: "transferFrom";
        outputs: readonly [{
            internalType: "bool";
            name: "";
            type: "bool";
        }];
        stateMutability: "nonpayable";
        type: "function";
    }];
    vrtxAirdrop: readonly [{
        anonymous: false;
        inputs: readonly [{
            indexed: true;
            internalType: "address";
            name: "account";
            type: "address";
        }, {
            indexed: false;
            internalType: "uint32";
            name: "epoch";
            type: "uint32";
        }, {
            indexed: false;
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }];
        name: "ClaimVrtx";
        type: "event";
    }, {
        inputs: readonly [{
            internalType: "uint32";
            name: "epoch";
            type: "uint32";
        }, {
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }, {
            internalType: "uint256";
            name: "totalAmount";
            type: "uint256";
        }, {
            internalType: "bytes32[]";
            name: "proof";
            type: "bytes32[]";
        }];
        name: "claim";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "uint32";
            name: "epoch";
            type: "uint32";
        }, {
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }, {
            internalType: "uint256";
            name: "totalAmount";
            type: "uint256";
        }, {
            internalType: "bytes32[]";
            name: "proof";
            type: "bytes32[]";
        }];
        name: "claimAndStake";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }, {
            internalType: "uint256";
            name: "totalAmount";
            type: "uint256";
        }, {
            internalType: "bytes32[]";
            name: "proof";
            type: "bytes32[]";
        }];
        name: "claimToLBA";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getClaimed";
        outputs: readonly [{
            internalType: "uint256[]";
            name: "";
            type: "uint256[]";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getClaimingDeadlines";
        outputs: readonly [{
            internalType: "uint64[]";
            name: "";
            type: "uint64[]";
        }];
        stateMutability: "view";
        type: "function";
    }];
    vrtxLba: readonly [{
        inputs: readonly [];
        name: "claimRewards";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }];
        name: "depositUsdc";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }, {
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }];
        name: "depositVrtx";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }];
        name: "distributeRewards";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getClaimableRewards";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getClaimedRewards";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getConfig";
        outputs: readonly [{
            components: readonly [{
                internalType: "uint64";
                name: "depositStartTime";
                type: "uint64";
            }, {
                internalType: "uint64";
                name: "depositEndTime";
                type: "uint64";
            }, {
                internalType: "uint64";
                name: "withdrawEndTime";
                type: "uint64";
            }, {
                internalType: "uint64";
                name: "lpVestStartTime";
                type: "uint64";
            }, {
                internalType: "uint64";
                name: "lpVestEndTime";
                type: "uint64";
            }];
            internalType: "struct ILBA.Config";
            name: "";
            type: "tuple";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getDepositedUsdc";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getDepositedVrtx";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getLockedLpBalance";
        outputs: readonly [{
            internalType: "uint256";
            name: "lockedLpBalance";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getLpBalance";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getMaxWithdrawableUsdc";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getStage";
        outputs: readonly [{
            internalType: "enum ILBA.Stage";
            name: "stage";
            type: "uint8";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getState";
        outputs: readonly [{
            components: readonly [{
                internalType: "uint256";
                name: "totalVrtxDeposited";
                type: "uint256";
            }, {
                internalType: "uint256";
                name: "totalUsdcDeposited";
                type: "uint256";
            }, {
                internalType: "uint256";
                name: "totalLpMinted";
                type: "uint256";
            }, {
                internalType: "uint256";
                name: "totalLpWithdrawn";
                type: "uint256";
            }, {
                internalType: "uint256";
                name: "cumulativeRewardsPerShareX18";
                type: "uint256";
            }];
            internalType: "struct ILBA.State";
            name: "";
            type: "tuple";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getVrtxInitialPriceX18";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getWithdrawableLpBalance";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "uint256";
            name: "lpAmount";
            type: "uint256";
        }];
        name: "withdrawLiquidity";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }];
        name: "withdrawUsdc";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }];
    vrtxVesting: readonly [{
        inputs: readonly [];
        name: "claim";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getClaimable";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "uint64";
            name: "vestingScheduleId";
            type: "uint64";
        }];
        name: "getVestable";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "uint64";
            name: "vestingScheduleId";
            type: "uint64";
        }];
        name: "getVested";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }, {
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }, {
            internalType: "uint64";
            name: "period";
            type: "uint64";
        }];
        name: "registerVesting";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }];
    vrtxStaking: readonly [{
        inputs: readonly [];
        name: "claimUsdc";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [];
        name: "claimUsdcAndStake";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [];
        name: "claimVrtx";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getEstimatedVrtxToStake";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getGlobalRewardsBreakdown";
        outputs: readonly [{
            components: readonly [{
                internalType: "uint64";
                name: "distributionTime";
                type: "uint64";
            }, {
                internalType: "uint256";
                name: "rewardsAmount";
                type: "uint256";
            }];
            internalType: "struct IStaking.GlobalRewardsBreakdown[]";
            name: "";
            type: "tuple[]";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getLastActionTimes";
        outputs: readonly [{
            components: readonly [{
                internalType: "uint64";
                name: "lastStakeTime";
                type: "uint64";
            }, {
                internalType: "uint64";
                name: "lastWithdrawTime";
                type: "uint64";
            }];
            internalType: "struct IStaking.LastActionTimes";
            name: "";
            type: "tuple";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getRewardsBreakdown";
        outputs: readonly [{
            internalType: "uint256[]";
            name: "";
            type: "uint256[]";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getScore";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getTotalScore";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getTotalVrtxStaked";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getUsdcClaimable";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getV2Bonus";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getV2BonusDeadline";
        outputs: readonly [{
            internalType: "uint64";
            name: "";
            type: "uint64";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getV2StartTime";
        outputs: readonly [{
            internalType: "uint64";
            name: "";
            type: "uint64";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getVrtxStaked";
        outputs: readonly [{
            internalType: "uint256";
            name: "";
            type: "uint256";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getWithdrawLockingTime";
        outputs: readonly [{
            internalType: "uint64";
            name: "";
            type: "uint64";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getWithdrawnVrtxStates";
        outputs: readonly [{
            components: readonly [{
                internalType: "uint256";
                name: "vrtxClaimable";
                type: "uint256";
            }, {
                internalType: "uint256";
                name: "vrtxPendingUnlock";
                type: "uint256";
            }];
            internalType: "struct IStaking.WithdrawnVrtxStates";
            name: "";
            type: "tuple";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "migrateToV2";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "staker";
            type: "address";
        }];
        name: "migrateToV2WithNewWallet";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }];
        name: "stake";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "staker";
            type: "address";
        }, {
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }];
        name: "stakeAs";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "uint256";
            name: "amount";
            type: "uint256";
        }];
        name: "withdraw";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }];
    vrtxStakingV2: readonly [{
        anonymous: false;
        inputs: readonly [{
            indexed: true;
            internalType: "address";
            name: "account";
            type: "address";
        }, {
            indexed: true;
            internalType: "address";
            name: "wallet";
            type: "address";
        }];
        name: "ConnectTradingWallet";
        type: "event";
    }, {
        anonymous: false;
        inputs: readonly [{
            indexed: true;
            internalType: "address";
            name: "account";
            type: "address";
        }, {
            indexed: false;
            internalType: "int128";
            name: "vrtxDelta";
            type: "int128";
        }, {
            indexed: false;
            internalType: "int128";
            name: "liquidDelta";
            type: "int128";
        }];
        name: "ModifyStake";
        type: "event";
    }, {
        inputs: readonly [];
        name: "claimWithdraw";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "wallet";
            type: "address";
        }];
        name: "connectTradingWallet";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getConfig";
        outputs: readonly [{
            components: readonly [{
                internalType: "uint64";
                name: "withdrawLockingTime";
                type: "uint64";
            }, {
                internalType: "uint64";
                name: "minimumStakingPeriod";
                type: "uint64";
            }, {
                internalType: "uint128";
                name: "toDistributeRatio";
                type: "uint128";
            }, {
                internalType: "uint128";
                name: "toTreasuryRatio";
                type: "uint128";
            }];
            internalType: "struct IStakingV2.Config";
            name: "";
            type: "tuple";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getDefaultConfig";
        outputs: readonly [{
            components: readonly [{
                internalType: "uint64";
                name: "withdrawLockingTime";
                type: "uint64";
            }, {
                internalType: "uint64";
                name: "minimumStakingPeriod";
                type: "uint64";
            }, {
                internalType: "uint128";
                name: "toDistributeRatio";
                type: "uint128";
            }, {
                internalType: "uint128";
                name: "toTreasuryRatio";
                type: "uint128";
            }];
            internalType: "struct IStakingV2.Config";
            name: "";
            type: "tuple";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getGlobalYieldsBreakdown";
        outputs: readonly [{
            components: readonly [{
                internalType: "uint64";
                name: "distributionTime";
                type: "uint64";
            }, {
                internalType: "uint128";
                name: "baseYieldAmount";
                type: "uint128";
            }, {
                internalType: "uint128";
                name: "feesYieldAmount";
                type: "uint128";
            }, {
                internalType: "uint128";
                name: "totalVrtxBalance";
                type: "uint128";
            }, {
                internalType: "uint128";
                name: "usdcAmount";
                type: "uint128";
            }];
            internalType: "struct IStakingV2.GlobalYieldsBreakdown[]";
            name: "";
            type: "tuple[]";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getLastActionTimes";
        outputs: readonly [{
            components: readonly [{
                internalType: "uint64";
                name: "lastStakeTime";
                type: "uint64";
            }, {
                internalType: "uint64";
                name: "lastWithdrawTime";
                type: "uint64";
            }];
            internalType: "struct IStakingV2.LastActionTimes";
            name: "";
            type: "tuple";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getMigrationBonusPool";
        outputs: readonly [{
            internalType: "uint128";
            name: "";
            type: "uint128";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getReleaseSchedule";
        outputs: readonly [{
            components: readonly [{
                internalType: "uint64";
                name: "releaseTime";
                type: "uint64";
            }, {
                internalType: "uint128";
                name: "amount";
                type: "uint128";
            }];
            internalType: "struct IStakingV2.ReleaseSchedule";
            name: "";
            type: "tuple";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getState";
        outputs: readonly [{
            components: readonly [{
                internalType: "uint128";
                name: "cumulativeStakedAmount";
                type: "uint128";
            }, {
                internalType: "uint128";
                name: "cumulativeWithdrawnAmount";
                type: "uint128";
            }, {
                internalType: "uint128";
                name: "cumulativeBurnedAmount";
                type: "uint128";
            }, {
                internalType: "uint128";
                name: "currentStakedAmount";
                type: "uint128";
            }];
            internalType: "struct IStakingV2.State";
            name: "";
            type: "tuple";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [];
        name: "getTotalVrtxBalance";
        outputs: readonly [{
            internalType: "uint128";
            name: "";
            type: "uint128";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getTradingWallet";
        outputs: readonly [{
            internalType: "address";
            name: "";
            type: "address";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getVrtxBalance";
        outputs: readonly [{
            internalType: "uint128";
            name: "";
            type: "uint128";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "account";
            type: "address";
        }];
        name: "getWithdrawableTime";
        outputs: readonly [{
            internalType: "uint64";
            name: "";
            type: "uint64";
        }];
        stateMutability: "view";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "staker";
            type: "address";
        }, {
            internalType: "uint128";
            name: "amount";
            type: "uint128";
        }, {
            internalType: "uint128";
            name: "bonus";
            type: "uint128";
        }];
        name: "migrate";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "uint128";
            name: "amount";
            type: "uint128";
        }];
        name: "stake";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [{
            internalType: "address";
            name: "staker";
            type: "address";
        }, {
            internalType: "uint128";
            name: "amount";
            type: "uint128";
        }];
        name: "stakeAs";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [];
        name: "withdraw";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }, {
        inputs: readonly [];
        name: "withdrawSlow";
        outputs: readonly [];
        stateMutability: "nonpayable";
        type: "function";
    }];
} = ...