// SPDX-License-Identifier: LGPL-3.0-only pragma solidity >=0.8.17; /// @dev Allocation represents a single allocation for an IBC fungible token transfer. struct ICS20Allocation { string sourcePort; string sourceChannel; Coin[] spendLimit; string[] allowList; } /// @dev Dec represents a fixed point decimal value. The value is stored as an integer, and the /// precision is stored as a uint8. The value is multiplied by 10^precision to get the actual value. struct Dec { uint256 value; uint8 precision; } /// @dev Coin is a struct that represents a token with a denomination and an amount. struct Coin { string denom; uint256 amount; } /// @dev DecCoin is a struct that represents a token with a denomination, an amount and a precision. struct DecCoin { string denom; uint256 amount; uint8 precision; } /// @dev PageResponse is a struct that represents a page response. struct PageResponse { bytes nextKey; uint64 total; } /// @dev PageRequest is a struct that represents a page request. struct PageRequest { bytes key; uint64 offset; uint64 limit; bool countTotal; bool reverse; } /// @dev Height is a monotonically increasing data type /// that can be compared against another Height for the purposes of updating and /// freezing clients /// /// Normally the RevisionHeight is incremented at each height while keeping /// RevisionNumber the same. However some consensus algorithms may choose to /// reset the height in certain conditions e.g. hard forks, state-machine /// breaking changes In these cases, the RevisionNumber is incremented so that /// height continues to be monotonically increasing even as the RevisionHeight /// gets reset struct Height { // the revision that the client is currently on uint64 revisionNumber; // the height within the given revision uint64 revisionHeight; }