From fc3913834d140a4de6df6556a4f0fce6839b6613 Mon Sep 17 00:00:00 2001 From: StackClass Date: Mon, 29 Dec 2025 11:40:44 +0000 Subject: [PATCH] Initial commit from template --- .gitignore | 7 +++++++ Anchor.toml | 9 +++++++++ Cargo.toml | 21 ++++++++++++++++++++ migrations/deploy.ts | 5 +++++ package.json | 19 ++++++++++++++++++ programs/swap/Cargo.toml | 12 ++++++++++++ programs/swap/src/lib.rs | 42 ++++++++++++++++++++++++++++++++++++++++ tests/swap.ts | 15 ++++++++++++++ tsconfig.json | 16 +++++++++++++++ 9 files changed, 146 insertions(+) create mode 100644 .gitignore create mode 100644 Anchor.toml create mode 100644 Cargo.toml create mode 100644 migrations/deploy.ts create mode 100644 package.json create mode 100644 programs/swap/Cargo.toml create mode 100644 programs/swap/src/lib.rs create mode 100644 tests/swap.ts create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f5ab817 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +node_modules +dist +build +target +.env +.DS_Store +*.log diff --git a/Anchor.toml b/Anchor.toml new file mode 100644 index 0000000..8dadbec --- /dev/null +++ b/Anchor.toml @@ -0,0 +1,9 @@ +[provider] +cluster = "Localnet" +wallet = "~/.config/solana/id.json" + +[programs.localnet] +swap = "11111111111111111111111111111111" + +[scripts] +test = "cargo test -- --nocapture" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..d351525 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,21 @@ +[workspace] +members = [ + "programs/*" +] +resolver = "2" + +[package] +name = "stackclass-solana-swap-program" +version = "0.1.0" +authors = ["StackClass "] +edition = "2021" + +[profile.release] +overflow-checks = true +lto = "fat" +codegen-units = 1 + +[profile.release.build-override] +opt-level = 3 +incremental = false +codegen-units = 1 diff --git a/migrations/deploy.ts b/migrations/deploy.ts new file mode 100644 index 0000000..3fc6cba --- /dev/null +++ b/migrations/deploy.ts @@ -0,0 +1,5 @@ +use anchor_lang::prelude::*; + +pub fn deploy() -> Result<()> { + Ok(()) +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..8bce1aa --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "name": "solana-swap", + "version": "0.1.0", + "description": "Solana swap program built with Anchor", + "main": "index.js", + "scripts": { + "test": "cargo test -- --nocapture", + "build": "anchor build", + "deploy": "anchor deploy" + }, + "dependencies": { + "@coral-xyz/anchor": "^0.30.0", + "@solana/web3.js": "^1.91.0", + "@solana/spl-token": "^0.4.0" + }, + "devDependencies": { + "@types/node": "^20.0.0" + } +} diff --git a/programs/swap/Cargo.toml b/programs/swap/Cargo.toml new file mode 100644 index 0000000..d00c9b6 --- /dev/null +++ b/programs/swap/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "swap" +version = "0.1.0" +description = "Solana swap program" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] + +[dependencies] +anchor-lang = "0.30.1" +anchor-spl = "0.30.1" diff --git a/programs/swap/src/lib.rs b/programs/swap/src/lib.rs new file mode 100644 index 0000000..1ffb954 --- /dev/null +++ b/programs/swap/src/lib.rs @@ -0,0 +1,42 @@ +use anchor_lang::prelude::*; + +declare_id!("11111111111111111111111111111111"); + +#[program] +pub mod swap { + use super::*; + + pub fn make_offer( + ctx: Context, + id: u64, + token_a_offered_amount: u64, + token_b_wanted_amount: u64, + ) -> Result<()> { + // Students will implement this function + Ok(()) + } + + pub fn take_offer(ctx: Context) -> Result<()> { + // Students will implement this function + Ok(()) + } +} + +#[derive(Accounts)] +#[instruction(id: u64)] +pub struct MakeOffer<'info> { + pub maker: Signer<'info>, +} + +#[derive(Accounts)] +pub struct TakeOffer<'info> { + pub taker: Signer<'info>, +} + +#[cfg(test)] +mod tests { + #[test] + fn test_sample() { + assert_eq!(2 + 2, 4); + } +} diff --git a/tests/swap.ts b/tests/swap.ts new file mode 100644 index 0000000..f963f31 --- /dev/null +++ b/tests/swap.ts @@ -0,0 +1,15 @@ +import * as anchor from "@coral-xyz/anchor"; +import { Program } from "@coral-xyz/anchor"; +import { Swap } from "../target/types/swap"; + +describe("swap", async () => { + const provider = anchor.AnchorProvider.env(); + anchor.setProvider(provider); + + const program = anchor.workspace.Swap as Program; + + it("Is initialized!", async () => { + const tx = await program.methods.initialize().rpc(); + console.log("Transaction signature:", tx); + }); +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..6ee6233 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "types": ["mocha"], + "lib": ["es2020"], + "target": "es2020", + "module": "commonjs", + "moduleResolution": "node", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "outDir": "./dist", + "rootDir": "." + }, + "include": ["tests/**/*", "migrations/**/*"] +}