mantra-claimdrop-std

Crates.iomantra-claimdrop-std
lib.rsmantra-claimdrop-std
version1.2.1
created_at2025-07-04 11:44:25.121024+00
updated_at2025-09-19 15:43:06.027674+00
descriptionCommon types for the claimdrop contract.
homepagehttps://mantra.zone
repositoryhttps://github.com/MANTRA-Chain/mantrachain-rust
max_upload_size
id1737873
size54,255
desamtralized (desamtralized)

documentation

README

mantra-claimdrop-std

Common types and error definitions for the Mantra claimdrop contract V2.

Overview

This package provides shared types, message definitions, and error handling for claimdrop (airdrop) contracts in the Mantra ecosystem. It enables code reuse across different claimdrop-related contracts and provides a consistent interface for campaign management, token distribution, and reward claiming.

Features

  • Message Types: Complete set of execute, query, and response messages for claimdrop operations
  • Campaign Management: Types for creating, managing, and closing airdrop campaigns
  • Distribution Types: Support for linear vesting and lump sum distribution mechanisms
  • Error Handling: Comprehensive error types for validation and runtime errors
  • Validation: Built-in validation for campaign parameters, distribution settings, and time constraints

Usage

Add this package to your Cargo.toml:

[dependencies]
mantra-claimdrop-std = { version = "1.0.0", path = "path/to/mantra-claimdrop-std" }

Message Types

use mantra_claimdrop_std::msg::{
    ExecuteMsg, QueryMsg, CampaignParams, DistributionType
};

// Create a campaign
let campaign_params = CampaignParams {
    name: "My Airdrop".to_string(),
    description: "Token distribution campaign".to_string(),
    ty: "airdrop".to_string(),
    total_reward: Coin::new(1000000u128, "umantra"),
    distribution_type: vec![DistributionType::LumpSum {
        percentage: Decimal::percent(100),
        start_time: 1640995200, // Unix timestamp
    }],
    start_time: 1640995200,
    end_time: 1672531200,
};

let execute_msg = ExecuteMsg::ManageCampaign {
    action: CampaignAction::CreateCampaign {
        params: Box::new(campaign_params),
    },
};

Error Handling

use mantra_claimdrop_std::error::ContractError;

fn validate_campaign(params: &CampaignParams) -> Result<(), ContractError> {
    params.validate_campaign_name_description()?;
    params.validate_campaign_type()?;
    params.validate_rewards()?;
    Ok(())
}

Types

Campaign Types

  • Campaign: Complete campaign information including status and claimed amounts
  • CampaignParams: Parameters for creating new campaigns
  • CampaignAction: Actions for managing campaigns (create/close)

Distribution Types

  • DistributionType::LinearVesting: Gradual token release over time with optional cliff
  • DistributionType::LumpSum: Immediate token release at specified time

Response Types

  • RewardsResponse: Information about claimed, pending, and available rewards
  • ClaimedResponse: Details about claimed tokens per address
  • AllocationsResponse: Address allocation information
  • BlacklistResponse: Address blacklist status

Validation

The package includes comprehensive validation for:

  • Campaign name and description length limits
  • Time constraints (start/end times, distribution schedules)
  • Distribution percentage totals (must equal 100%)
  • Reward amounts and denominations
  • Cliff duration limits for linear vesting
Commit count: 42

cargo fmt