Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Published Defindex-strategy-core #212

Merged
merged 4 commits into from
Nov 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading