Skip to content

Generated schema for tokenization/approval_conditions.proto: 7 messages in the x/tokenization module.

Proto package tokenization, part of the x/tokenization module. It declares 7 messages. Read the raw source.

Messages

AddressChecks

AddressChecks defines checks for address types (EVM contract, liquidity pool, etc.)

Field#TypeRuleDescription
mustBeEvmContract1boolsingularRequire the address to be an EVM contract (has code).
mustNotBeEvmContract2boolsingularRequire the address to not be an EVM contract (no code).
mustBeLiquidityPool3boolsingularRequire the address to be a liquidity pool.
mustNotBeLiquidityPool4boolsingularRequire the address to not be a liquidity pool.

AltTimeChecks

AltTimeChecks defines alternative time-based checks for approval denial.

If the transfer time falls within any of the specified offline hours or days, the approval is denied.

Uses UTC timezone for neutral timezone approach.

offlineHours: ranges of hours (0-23) when transfers should be denied

offlineDays: ranges of days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied

Field#TypeRuleDescription
offlineHours1UintRangerepeatedHours (0-23) when transfers should be denied.
offlineDays2UintRangerepeatedDays (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied.
offlineMonths3UintRangerepeatedMonths (1-12, where 1=January, 12=December) when transfers should be denied.
offlineDaysOfMonth4UintRangerepeatedDays of month (1-31) when transfers should be denied.
offlineWeeksOfYear5UintRangerepeatedWeeks of year (1-52) when transfers should be denied. Uses ISO 8601 week numbering.
timezoneOffsetMinutes6stringsingularTimezone offset magnitude in minutes from UTC. Default 0 = UTC. Examples: 300 for EST (UTC-5), 330 for IST (UTC+5:30). All time checks are evaluated after applying this offset to the block time.
timezoneOffsetNegative7boolsingularIf true, the timezone offset is subtracted (west of UTC). If false, it is added (east of UTC). Example: EST (UTC-5) = timezoneOffsetMinutes: 300, timezoneOffsetNegative: true

CoinTransfer

Field#TypeRuleDescription
to1stringsingularThe address of the recipient of the transfer.
coins2cosmos.base.v1beta1.CoinrepeatedThe sdk.Coins to be transferred.
overrideFromWithApproverAddress3boolsingularBy default, the from address is the initiator of the transaction. If this is set to true, we will override the from address with the approver address. Note: This is not applicable for collection approvals (since approverAddress == '').
overrideToWithInitiator4boolsingularBy default, the to address is what is specified in the coin transfer. If this is set to true, we will override the to address with the initiator of the transaction.

DynamicStoreChallenge

DynamicStoreChallenge defines a challenge that requires the initiator to pass a dynamic store check.

Field#TypeRuleDescription
storeId1stringsingularThe ID of the dynamic store to check.
ownershipCheckParty2stringsingularThe party to check ownership for. Options are "initiator", "sender", "recipient", or any valid bb1 address. If a valid bb1 address is provided, ownership will be checked for that specific address. This enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner). Defaults to "initiator" if empty or if the value is not a recognized option or valid bb1 address.

MustOwnTokens

MustOwnTokens represents a condition where a user must own specific tokens to be approved to transfer.

  • collectionId: The ID of the collection for the tokens that must be owned - amountRange: The range of amounts the user must own (min to max) - ownershipTimes: The time ranges during which the user must own the tokens. - tokenIds: The token IDs the user must own. - overrideWithCurrentTime: If true, auto override ownershipTimes with the current time. - mustSatisfyForAllAssets: If true, the user must own all specified tokens; otherwise, owning any one for >= 1 millisecond is sufficient.
Field#TypeRuleDescription
collectionId1stringsingularThe ID of the collection.
amountRange2UintRangesingularThe range of amounts the user must own (min to max).
ownershipTimes3UintRangerepeatedThe time ranges during which the user must own the tokens.
tokenIds4UintRangerepeatedThe token IDs the user must own.
overrideWithCurrentTime5boolsingularIf true, override ownershipTimes with the current time.
mustSatisfyForAllAssets6boolsingularIf true, the user must meet ownership requirements for all specified tokens; else, must meet requirements for any single token.
ownershipCheckParty7stringsingularThe party to check ownership for. Options are "initiator", "sender", "recipient", or any valid bb1 address. If a valid bb1 address is provided, ownership will be checked for that specific address. This enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner). Defaults to "initiator" if empty or if the value is not a recognized option or valid bb1 address.

UserApprovalSettings

UserApprovalSettings defines issuer-imposed constraints on user-level approvals.

Set on collection-level ApprovalCriteria and propagated to user-level approvals

during greedy transfer matching. Each balance slice carries its own settings.

Field#TypeRuleDescription
allowedDenoms1stringrepeatedRestricts which denoms user-level coinTransfers can reference (beyond params-level AllowedDenoms). If empty, all params-allowed denoms are permitted.
disableUserCoinTransfers2boolsingularIf true, user-level approvals cannot trigger coinTransfers at all for transfers matched by this collection approval.
userRoyalties3UserRoyaltiessingularUser-level royalties to enforce for transfers matched by this collection approval.

UserRoyalties

UserRoyalties defines the royalties for a user.

Field#TypeRuleDescription
percentage1stringsingularPercentage of the transfer amount to apply as royalties. 1 to 10000 represents basis points.
payoutAddress2stringsingularPayout address for the royalties.

Edit this page on GitHub