mantra-claimdrop-std 1.2.1

Common types for the claimdrop contract.
Documentation
# 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`:

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

### Message Types

```rust
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

```rust
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