Skip to main content

Cluster

Implements the core logic of an individual Clusters.

InstantiateMsg#

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]pub struct InstantiateMsg {    /// Cluster's permissioned owner    pub owner: String,
    /// Factory address    pub factory: String,
    /// Cluster name (title)    pub name: String,
    /// Cluster description (title)    pub description: String,
    /// Cluster token CW20 address    pub cluster_token: Option<String>,
    /// Pricing oracle address    pub pricing_oracle: String,
    /// Target composition oracle address    pub target_oracle: String,
    /// Asset addresses and target weights    pub target: Vec<Asset>,
    /// Penalty function address    pub penalty: String,}
KeyTypeDescription
ownerString(address) owner of the contract
factoryString(address) Nebula factory contract
nameStringcluster name / title
descriptionStringshort explanation of cluster strategy
cluster_tokenOption\<String>(address) cluster token contract
pricing_oracleString(address) pricing oracle contract
target_oracleString(address) target oracle contract
targetVec\<Asset>cluster target asset allocation
penaltyString(address) penalty function contract

ExecuteMsg#

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]#[serde(rename_all = "snake_case")]pub enum ExecuteMsg {    /// OWNER-CALLABLE    UpdateConfig {        owner: Option<String>,        name: Option<String>,        description: Option<String>,        cluster_token: Option<String>,        pricing_oracle: Option<String>,        composition_oracle: Option<String>,        target: Option<Vec<Asset>>, // recomp oracle        penalty: Option<String>,    },    /// Called by recomposition oracle    UpdateTarget { target: Vec<Asset> },
    /// Called by factory only and sets active to false    Decommission {},
    /// USER-CALLABLE    RebalanceCreate {        /// Asset amounts deposited for minting (cluster must be granted allowance or        /// sent native assets within the MsgExecuteContract)        asset_amounts: Vec<Asset>,        /// Minimum tokens to receive        min_tokens: Option<Uint128>,    },    /// Burns assets    RebalanceRedeem {        /// optional proposed set of weights to use        max_tokens: Uint128,        asset_amounts: Option<Vec<Asset>>,    },}

UpdateConfig#

KeyTypeDescription
ownerOption\<String>(address) owner of the contract
nameOption\<String>cluster name / title
descriptionOption<String>short explanation of cluster strategy
cluster_tokenOption\<String>(address) cluster token contract
pricing_oracleOption\<String>(address) pricing oracle contract
target_oracleOption\<String>(address) target oracle contract
targetOption\<Vec\<Asset>>cluster target asset allocation
penaltyOption\<String>(address) penalty function contract

UpdateTarget#

KeyTypeDescription
targetOption\<String>(address) owner of the contract

Decommission#

KeyTypeDescription
This message takes no arguments.

RebalanceCreate#

KeyTypeDescription
asset_amountsVec\<Asset>asset amounts to spend in CREATE operation
min_tokensOption\<Uint128>minimum amount of cluster tokens to receive

RebalanceRedeem#

KeyTypeDescription
max_tokensUint128maximum cluster tokens to spend in REDEEM operation
asset_amountsOption\<Vec\<Asset>>asset amounts to withdraw in REDEEM operation

QueryMsg#

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]#[serde(rename_all = "snake_case")]pub enum QueryMsg {    Config {},    Target {},    ClusterState {},    ClusterInfo {},}

Config#

Request#

KeyTypeDescription
This message takes no arguments.

Response#

Target#

Request#

KeyTypeDescription
This message takes no arguments.

Response#

ClusterState#

Request#

KeyTypeDescription
This message takes no arguments.

Response#

ClusterInfo#

Request#

KeyTypeDescription
This message takes no arguments.

Response#