Skip to content

Commit

Permalink
Merge pull request #212 from paltalabs/publish-core
Browse files Browse the repository at this point in the history
Published Defindex-strategy-core
  • Loading branch information
chopan123 authored Nov 20, 2024
2 parents 960f365 + fe508d8 commit fe80341
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 11 deletions.
16 changes: 8 additions & 8 deletions apps/contracts/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion apps/contracts/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@ exclude = [
resolver = "2"

[workspace.package]
version = "1.0.0"
version = "0.1.0"
edition = "2021"
license = "GPL-3.0"
repository = "https://github.com/paltalabs/defindex"
homepage = "https://defindex.io"

[workspace.dependencies]
soroban-sdk = "21.7.6"
Expand Down
6 changes: 5 additions & 1 deletion apps/contracts/strategies/core/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
[package]
name = "defindex-strategy-core"
description = "A foundational library for developing and integrating strategies into the DeFindex ecosystem, providing reusable abstractions, events, and custom error handling."
version = { workspace = true }
authors = ["coderipper <[email protected]>"]
license = { workspace = true }
edition = { workspace = true }
publish = false
publish = true
repository = { workspace = true }
homepage = { workspace = true }
keywords = ["soroban", "defindex", "strategy", "core", "stellar"]
categories = ["cryptography::cryptocurrencies", "no-std", "development-tools"]

[dependencies]
soroban-sdk = { workspace = true }
Expand Down
77 changes: 77 additions & 0 deletions apps/contracts/strategies/core/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# DeFindex Strategy Core

The defindex-strategy-core package is a foundational library designed to facilitate the development of strategies for DeFindex. It provides reusable abstractions and utilities that streamline the creation, management, and integration of strategies into the DeFindex ecosystem.

### Features

- **Reusable Events**: Predefined events to log actions such as deposits, withdrawals, and harvests.
- **Custom Errors**: A unified error handling system to ensure consistent and informative feedback across strategies.
- **Core Abstractions**: Base traits and utilities to define and implement strategies with minimal boilerplate.

### Structure

This package includes the following modules:
1. **Error**: Provides custom error types to handle various edge cases and ensure smooth execution.
2. **Event**: Includes predefined events for logging and monitoring strategy activity.
3. **Core Traits**: Defines the DeFindexStrategyTrait, which serves as the contract for developing new strategies.

### Installation

Add the defindex-strategy-core package to your Cargo.toml dependencies:

```toml
[dependencies]
defindex-strategy-core = "0.1.0"
```

### Usage

Here is a simple example of how to use this package to build a custom strategy:

1. Import the Core Library
```rust
use defindex_strategy_core::{DeFindexStrategyTrait, StrategyError, event};
```

2. Implement the Strategy Trait

Define your custom strategy by implementing the DeFindexStrategyTrait:
```rust
#[contract]
struct MyCustomStrategy;

#[contractimpl]
impl DeFindexStrategyTrait for MyCustomStrategy {
fn initialize(e: Env, asset: Address, init_args: Vec<Val>) -> Result<(), StrategyError> {
// Initialization logic
Ok(())
}

fn deposit(e: Env, amount: i128, from: Address) -> Result<(), StrategyError> {
// Deposit logic
Ok(())
}

fn withdraw(e: Env, amount: i128, from: Address) -> Result<i128, StrategyError> {
// Withdrawal logic
Ok(amount)
}

fn balance(e: Env, from: Address) -> Result<i128, StrategyError> {
// Balance check logic
Ok(0)
}

fn harvest(e: Env, from: Address) -> Result<(), StrategyError> {
// Harvest logic
Ok(())
}
}
```

3. Emit Events

Use the event module to log actions:
```rust
event::emit_deposit(&e, String::from("MyCustomStrategy"), amount, from.clone());
```
2 changes: 1 addition & 1 deletion scf-tracker.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@

- **Result:**
- ✅ Code available on [GitHub](https://github.com/paltalabs/defindex/tree/main/apps/contracts/strategies)
- 🛠️ Adapter Struct published at crates.io
- Adapter Struct published at crates.io
- 🛠️ SEP proposal

---
Expand Down

0 comments on commit fe80341

Please sign in to comment.