syntax = "proto3"; package dex.v1; option go_package = "github.com/sonr-io/sonr/x/dex/types"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; import "google/protobuf/timestamp.proto"; import "cosmos/base/v1beta1/coin.proto"; // InterchainDEXAccount represents a DEX account on a remote chain message InterchainDEXAccount { option (gogoproto.goproto_getters) = false; // DID controller of this account string did = 1; // IBC connection to the remote chain string connection_id = 2; // Remote chain ID (e.g., osmosis-1) string host_chain_id = 3; // Account address on the remote chain string account_address = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // ICA port ID for this account string port_id = 5; // Account creation timestamp google.protobuf.Timestamp created_at = 6 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; // Enabled features for this account repeated string enabled_features = 7; // Account status AccountStatus status = 8; } // AccountStatus defines the status of an ICA account enum AccountStatus { option (gogoproto.goproto_enum_prefix) = false; // Account is pending creation ACCOUNT_STATUS_PENDING = 0; // Account is active and ready ACCOUNT_STATUS_ACTIVE = 1; // Account is temporarily disabled ACCOUNT_STATUS_DISABLED = 2; // Account creation failed ACCOUNT_STATUS_FAILED = 3; } // DEXFeatures defines available features for DEX accounts enum DEXFeatures { option (gogoproto.goproto_enum_prefix) = false; // Basic swap functionality DEX_FEATURE_SWAP = 0; // Liquidity provision DEX_FEATURE_LIQUIDITY = 1; // Limit orders DEX_FEATURE_ORDERS = 2; // Staking operations DEX_FEATURE_STAKING = 3; // Governance participation DEX_FEATURE_GOVERNANCE = 4; } // DEXActivity represents a DEX operation activity record message DEXActivity { // Type of activity (swap, provide_liquidity, remove_liquidity, create_order, cancel_order) string type = 1; // DID that performed the activity string did = 2; // Connection ID where the activity occurred string connection_id = 3; // Transaction hash of the activity string tx_hash = 4; // Block height when the activity occurred int64 block_height = 5; // Timestamp of the activity google.protobuf.Timestamp timestamp = 6 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; // Activity-specific details (JSON encoded) string details = 7; // Status of the activity (pending, success, failed) string status = 8; // Amount involved in the activity (if applicable) repeated cosmos.base.v1beta1.Coin amount = 9 [ (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", (gogoproto.nullable) = false ]; // Gas used for the activity uint64 gas_used = 10; }