fix(idl): align LEZ account metadata

Mark unconditional signer, init, and mutable accounts in guest entrypoints.

Regenerate IDL artifacts for token, ATA, stablecoin, TWAP oracle, and AMM.
This commit is contained in:
Ricardo Guilherme Schmidt 2026-06-26 16:55:23 -03:00 committed by r4bbit
parent e4447617f6
commit 66afb1850e
No known key found for this signature in database
GPG Key ID: E95F1E9447DC91A9
10 changed files with 220 additions and 125 deletions

View File

@ -7,9 +7,9 @@
"accounts": [ "accounts": [
{ {
"name": "config", "name": "config",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": true
} }
], ],
"args": [ "args": [
@ -32,14 +32,14 @@
"accounts": [ "accounts": [
{ {
"name": "config", "name": "config",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "authority", "name": "authority",
"writable": false, "writable": false,
"signer": false, "signer": true,
"init": false "init": false
} }
], ],
@ -87,9 +87,9 @@
}, },
{ {
"name": "price_observations", "name": "price_observations",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": true
}, },
{ {
"name": "clock", "name": "clock",
@ -122,9 +122,9 @@
}, },
{ {
"name": "oracle_price_account", "name": "oracle_price_account",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": true
}, },
{ {
"name": "clock", "name": "clock",
@ -151,57 +151,57 @@
}, },
{ {
"name": "pool", "name": "pool",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": true
}, },
{ {
"name": "vault_a", "name": "vault_a",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "vault_b", "name": "vault_b",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "pool_definition_lp", "name": "pool_definition_lp",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": true
}, },
{ {
"name": "lp_lock_holding", "name": "lp_lock_holding",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": true
}, },
{ {
"name": "user_holding_a", "name": "user_holding_a",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
"name": "user_holding_b", "name": "user_holding_b",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
"name": "user_holding_lp", "name": "user_holding_lp",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "current_tick_account", "name": "current_tick_account",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": true
}, },
{ {
"name": "clock", "name": "clock",
@ -240,49 +240,49 @@
}, },
{ {
"name": "pool", "name": "pool",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "vault_a", "name": "vault_a",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "vault_b", "name": "vault_b",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "pool_definition_lp", "name": "pool_definition_lp",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "user_holding_a", "name": "user_holding_a",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
"name": "user_holding_b", "name": "user_holding_b",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
"name": "user_holding_lp", "name": "user_holding_lp",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "current_tick_account", "name": "current_tick_account",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
@ -323,49 +323,49 @@
}, },
{ {
"name": "pool", "name": "pool",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "vault_a", "name": "vault_a",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "vault_b", "name": "vault_b",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "pool_definition_lp", "name": "pool_definition_lp",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "user_holding_a", "name": "user_holding_a",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "user_holding_b", "name": "user_holding_b",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "user_holding_lp", "name": "user_holding_lp",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
"name": "current_tick_account", "name": "current_tick_account",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
@ -406,37 +406,37 @@
}, },
{ {
"name": "pool", "name": "pool",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "vault_a", "name": "vault_a",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "vault_b", "name": "vault_b",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "user_holding_a", "name": "user_holding_a",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "user_holding_b", "name": "user_holding_b",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "current_tick_account", "name": "current_tick_account",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
@ -477,37 +477,37 @@
}, },
{ {
"name": "pool", "name": "pool",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "vault_a", "name": "vault_a",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "vault_b", "name": "vault_b",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "user_holding_a", "name": "user_holding_a",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "user_holding_b", "name": "user_holding_b",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "current_tick_account", "name": "current_tick_account",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
@ -548,7 +548,7 @@
}, },
{ {
"name": "pool", "name": "pool",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
@ -566,7 +566,7 @@
}, },
{ {
"name": "current_tick_account", "name": "current_tick_account",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },

View File

@ -7,7 +7,7 @@
"accounts": [ "accounts": [
{ {
"name": "owner", "name": "owner",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
@ -19,7 +19,7 @@
}, },
{ {
"name": "ata_account", "name": "ata_account",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
} }
@ -37,18 +37,18 @@
{ {
"name": "owner", "name": "owner",
"writable": false, "writable": false,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
"name": "sender_ata", "name": "sender_ata",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "recipient", "name": "recipient",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
} }
@ -70,18 +70,18 @@
{ {
"name": "owner", "name": "owner",
"writable": false, "writable": false,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
"name": "holder_ata", "name": "holder_ata",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "token_definition", "name": "token_definition",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
} }

View File

@ -8,25 +8,25 @@
{ {
"name": "owner", "name": "owner",
"writable": false, "writable": false,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
"name": "position", "name": "position",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": true
}, },
{ {
"name": "vault", "name": "vault",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": true
}, },
{ {
"name": "user_holding", "name": "user_holding",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
@ -49,24 +49,24 @@
{ {
"name": "owner", "name": "owner",
"writable": false, "writable": false,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
"name": "position", "name": "position",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "vault", "name": "vault",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "destination", "name": "destination",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
} }
@ -84,25 +84,25 @@
{ {
"name": "owner", "name": "owner",
"writable": false, "writable": false,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
"name": "position", "name": "position",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "stablecoin_definition", "name": "stablecoin_definition",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "user_stablecoin_holding", "name": "user_stablecoin_holding",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": false
} }
], ],

View File

@ -7,13 +7,13 @@
"accounts": [ "accounts": [
{ {
"name": "sender", "name": "sender",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
"name": "recipient", "name": "recipient",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
} }
@ -30,15 +30,15 @@
"accounts": [ "accounts": [
{ {
"name": "definition_target_account", "name": "definition_target_account",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": true
}, },
{ {
"name": "holding_target_account", "name": "holding_target_account",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": true
} }
], ],
"args": [ "args": [
@ -57,21 +57,21 @@
"accounts": [ "accounts": [
{ {
"name": "definition_target_account", "name": "definition_target_account",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": true
}, },
{ {
"name": "holding_target_account", "name": "holding_target_account",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": true
}, },
{ {
"name": "metadata_target_account", "name": "metadata_target_account",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": true
} }
], ],
"args": [ "args": [
@ -100,9 +100,9 @@
}, },
{ {
"name": "account_to_initialize", "name": "account_to_initialize",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": true
} }
], ],
"args": [] "args": []
@ -112,14 +112,14 @@
"accounts": [ "accounts": [
{ {
"name": "definition_account", "name": "definition_account",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "user_holding_account", "name": "user_holding_account",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": false
} }
], ],
@ -135,13 +135,13 @@
"accounts": [ "accounts": [
{ {
"name": "definition_account", "name": "definition_account",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
"name": "user_holding_account", "name": "user_holding_account",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
} }
@ -158,15 +158,15 @@
"accounts": [ "accounts": [
{ {
"name": "master_account", "name": "master_account",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
"name": "printed_account", "name": "printed_account",
"writable": false, "writable": true,
"signer": false, "signer": true,
"init": false "init": true
} }
], ],
"args": [] "args": []

View File

@ -7,14 +7,14 @@
"accounts": [ "accounts": [
{ {
"name": "price_observations", "name": "price_observations",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": true
}, },
{ {
"name": "price_source", "name": "price_source",
"writable": false, "writable": false,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
@ -40,14 +40,14 @@
"accounts": [ "accounts": [
{ {
"name": "oracle_price_account", "name": "oracle_price_account",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": true
}, },
{ {
"name": "price_source", "name": "price_source",
"writable": false, "writable": false,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
@ -81,14 +81,14 @@
"accounts": [ "accounts": [
{ {
"name": "current_tick_account", "name": "current_tick_account",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": true
}, },
{ {
"name": "price_source", "name": "price_source",
"writable": false, "writable": false,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {
@ -116,7 +116,7 @@
}, },
{ {
"name": "oracle_price_account", "name": "oracle_price_account",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
@ -149,7 +149,7 @@
"accounts": [ "accounts": [
{ {
"name": "price_observations", "name": "price_observations",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
@ -182,14 +182,14 @@
"accounts": [ "accounts": [
{ {
"name": "current_tick_account", "name": "current_tick_account",
"writable": false, "writable": true,
"signer": false, "signer": false,
"init": false "init": false
}, },
{ {
"name": "price_source", "name": "price_source",
"writable": false, "writable": false,
"signer": false, "signer": true,
"init": false "init": false
}, },
{ {

View File

@ -1,4 +1,8 @@
#![cfg_attr(not(test), no_main)] #![cfg_attr(not(test), no_main)]
#![allow(
clippy::cloned_ref_to_slice_refs,
reason = "SPEL macro emits cloned validation slices for one-account instructions"
)]
use std::num::NonZeroU128; use std::num::NonZeroU128;
@ -27,6 +31,7 @@ mod amm {
#[instruction] #[instruction]
pub fn initialize( pub fn initialize(
ctx: ProgramContext, ctx: ProgramContext,
#[account(init)]
config: AccountWithMetadata, config: AccountWithMetadata,
token_program_id: ProgramId, token_program_id: ProgramId,
twap_oracle_program_id: ProgramId, twap_oracle_program_id: ProgramId,
@ -50,7 +55,9 @@ mod amm {
#[instruction] #[instruction]
pub fn update_config( pub fn update_config(
ctx: ProgramContext, ctx: ProgramContext,
#[account(mut)]
config: AccountWithMetadata, config: AccountWithMetadata,
#[account(signer)]
authority: AccountWithMetadata, authority: AccountWithMetadata,
token_program_id: Option<ProgramId>, token_program_id: Option<ProgramId>,
twap_oracle_program_id: Option<ProgramId>, twap_oracle_program_id: Option<ProgramId>,
@ -83,6 +90,7 @@ mod amm {
config: AccountWithMetadata, config: AccountWithMetadata,
pool: AccountWithMetadata, pool: AccountWithMetadata,
current_tick_account: AccountWithMetadata, current_tick_account: AccountWithMetadata,
#[account(init)]
price_observations: AccountWithMetadata, price_observations: AccountWithMetadata,
clock: AccountWithMetadata, clock: AccountWithMetadata,
window_duration: u64, window_duration: u64,
@ -114,6 +122,7 @@ mod amm {
ctx: ProgramContext, ctx: ProgramContext,
config: AccountWithMetadata, config: AccountWithMetadata,
pool: AccountWithMetadata, pool: AccountWithMetadata,
#[account(init)]
oracle_price_account: AccountWithMetadata, oracle_price_account: AccountWithMetadata,
clock: AccountWithMetadata, clock: AccountWithMetadata,
window_duration: u64, window_duration: u64,
@ -140,14 +149,23 @@ mod amm {
pub fn new_definition( pub fn new_definition(
ctx: ProgramContext, ctx: ProgramContext,
config: AccountWithMetadata, config: AccountWithMetadata,
#[account(init)]
pool: AccountWithMetadata, pool: AccountWithMetadata,
#[account(mut)]
vault_a: AccountWithMetadata, vault_a: AccountWithMetadata,
#[account(mut)]
vault_b: AccountWithMetadata, vault_b: AccountWithMetadata,
#[account(init)]
pool_definition_lp: AccountWithMetadata, pool_definition_lp: AccountWithMetadata,
#[account(init)]
lp_lock_holding: AccountWithMetadata, lp_lock_holding: AccountWithMetadata,
#[account(mut, signer)]
user_holding_a: AccountWithMetadata, user_holding_a: AccountWithMetadata,
#[account(mut, signer)]
user_holding_b: AccountWithMetadata, user_holding_b: AccountWithMetadata,
#[account(mut)]
user_holding_lp: AccountWithMetadata, user_holding_lp: AccountWithMetadata,
#[account(init)]
current_tick_account: AccountWithMetadata, current_tick_account: AccountWithMetadata,
clock: AccountWithMetadata, clock: AccountWithMetadata,
token_a_amount: u128, token_a_amount: u128,
@ -185,13 +203,21 @@ mod amm {
pub fn add_liquidity( pub fn add_liquidity(
ctx: ProgramContext, ctx: ProgramContext,
config: AccountWithMetadata, config: AccountWithMetadata,
#[account(mut)]
pool: AccountWithMetadata, pool: AccountWithMetadata,
#[account(mut)]
vault_a: AccountWithMetadata, vault_a: AccountWithMetadata,
#[account(mut)]
vault_b: AccountWithMetadata, vault_b: AccountWithMetadata,
#[account(mut)]
pool_definition_lp: AccountWithMetadata, pool_definition_lp: AccountWithMetadata,
#[account(mut, signer)]
user_holding_a: AccountWithMetadata, user_holding_a: AccountWithMetadata,
#[account(mut, signer)]
user_holding_b: AccountWithMetadata, user_holding_b: AccountWithMetadata,
#[account(mut)]
user_holding_lp: AccountWithMetadata, user_holding_lp: AccountWithMetadata,
#[account(mut)]
current_tick_account: AccountWithMetadata, current_tick_account: AccountWithMetadata,
clock: AccountWithMetadata, clock: AccountWithMetadata,
min_amount_liquidity: u128, min_amount_liquidity: u128,
@ -228,13 +254,21 @@ mod amm {
pub fn remove_liquidity( pub fn remove_liquidity(
ctx: ProgramContext, ctx: ProgramContext,
config: AccountWithMetadata, config: AccountWithMetadata,
#[account(mut)]
pool: AccountWithMetadata, pool: AccountWithMetadata,
#[account(mut)]
vault_a: AccountWithMetadata, vault_a: AccountWithMetadata,
#[account(mut)]
vault_b: AccountWithMetadata, vault_b: AccountWithMetadata,
#[account(mut)]
pool_definition_lp: AccountWithMetadata, pool_definition_lp: AccountWithMetadata,
#[account(mut)]
user_holding_a: AccountWithMetadata, user_holding_a: AccountWithMetadata,
#[account(mut)]
user_holding_b: AccountWithMetadata, user_holding_b: AccountWithMetadata,
#[account(mut, signer)]
user_holding_lp: AccountWithMetadata, user_holding_lp: AccountWithMetadata,
#[account(mut)]
current_tick_account: AccountWithMetadata, current_tick_account: AccountWithMetadata,
clock: AccountWithMetadata, clock: AccountWithMetadata,
remove_liquidity_amount: u128, remove_liquidity_amount: u128,
@ -272,11 +306,17 @@ mod amm {
pub fn swap_exact_input( pub fn swap_exact_input(
ctx: ProgramContext, ctx: ProgramContext,
config: AccountWithMetadata, config: AccountWithMetadata,
#[account(mut)]
pool: AccountWithMetadata, pool: AccountWithMetadata,
#[account(mut)]
vault_a: AccountWithMetadata, vault_a: AccountWithMetadata,
#[account(mut)]
vault_b: AccountWithMetadata, vault_b: AccountWithMetadata,
#[account(mut)]
user_holding_a: AccountWithMetadata, user_holding_a: AccountWithMetadata,
#[account(mut)]
user_holding_b: AccountWithMetadata, user_holding_b: AccountWithMetadata,
#[account(mut)]
current_tick_account: AccountWithMetadata, current_tick_account: AccountWithMetadata,
clock: AccountWithMetadata, clock: AccountWithMetadata,
swap_amount_in: u128, swap_amount_in: u128,
@ -311,11 +351,17 @@ mod amm {
pub fn swap_exact_output( pub fn swap_exact_output(
ctx: ProgramContext, ctx: ProgramContext,
config: AccountWithMetadata, config: AccountWithMetadata,
#[account(mut)]
pool: AccountWithMetadata, pool: AccountWithMetadata,
#[account(mut)]
vault_a: AccountWithMetadata, vault_a: AccountWithMetadata,
#[account(mut)]
vault_b: AccountWithMetadata, vault_b: AccountWithMetadata,
#[account(mut)]
user_holding_a: AccountWithMetadata, user_holding_a: AccountWithMetadata,
#[account(mut)]
user_holding_b: AccountWithMetadata, user_holding_b: AccountWithMetadata,
#[account(mut)]
current_tick_account: AccountWithMetadata, current_tick_account: AccountWithMetadata,
clock: AccountWithMetadata, clock: AccountWithMetadata,
exact_amount_out: u128, exact_amount_out: u128,
@ -346,9 +392,14 @@ mod amm {
pub fn sync_reserves( pub fn sync_reserves(
ctx: ProgramContext, ctx: ProgramContext,
config: AccountWithMetadata, config: AccountWithMetadata,
#[account(mut)]
pool: AccountWithMetadata, pool: AccountWithMetadata,
// vault_a / vault_b are only read to compute balances in
// amm_program::sync::sync_reserves (their post-states are unchanged
// clones), so they are not writable — no `mut` metadata.
vault_a: AccountWithMetadata, vault_a: AccountWithMetadata,
vault_b: AccountWithMetadata, vault_b: AccountWithMetadata,
#[account(mut)]
current_tick_account: AccountWithMetadata, current_tick_account: AccountWithMetadata,
clock: AccountWithMetadata, clock: AccountWithMetadata,
) -> SpelResult { ) -> SpelResult {

View File

@ -22,8 +22,10 @@ mod ata {
#[instruction] #[instruction]
pub fn create( pub fn create(
ctx: ProgramContext, ctx: ProgramContext,
#[account(mut)]
owner: AccountWithMetadata, owner: AccountWithMetadata,
token_definition: AccountWithMetadata, token_definition: AccountWithMetadata,
#[account(mut)]
ata_account: AccountWithMetadata, ata_account: AccountWithMetadata,
token_program_id: ProgramId, token_program_id: ProgramId,
) -> SpelResult { ) -> SpelResult {
@ -45,8 +47,11 @@ mod ata {
#[instruction] #[instruction]
pub fn transfer( pub fn transfer(
ctx: ProgramContext, ctx: ProgramContext,
#[account(signer)]
owner: AccountWithMetadata, owner: AccountWithMetadata,
#[account(mut)]
sender_ata: AccountWithMetadata, sender_ata: AccountWithMetadata,
#[account(mut)]
recipient: AccountWithMetadata, recipient: AccountWithMetadata,
token_program_id: ProgramId, token_program_id: ProgramId,
amount: u128, amount: u128,
@ -69,8 +74,11 @@ mod ata {
#[instruction] #[instruction]
pub fn burn( pub fn burn(
ctx: ProgramContext, ctx: ProgramContext,
#[account(signer)]
owner: AccountWithMetadata, owner: AccountWithMetadata,
#[account(mut)]
holder_ata: AccountWithMetadata, holder_ata: AccountWithMetadata,
#[account(mut)]
token_definition: AccountWithMetadata, token_definition: AccountWithMetadata,
token_program_id: ProgramId, token_program_id: ProgramId,
amount: u128, amount: u128,

View File

@ -20,9 +20,13 @@ mod stablecoin {
#[instruction] #[instruction]
pub fn open_position( pub fn open_position(
ctx: ProgramContext, ctx: ProgramContext,
#[account(signer)]
owner: AccountWithMetadata, owner: AccountWithMetadata,
#[account(init)]
position: AccountWithMetadata, position: AccountWithMetadata,
#[account(init)]
vault: AccountWithMetadata, vault: AccountWithMetadata,
#[account(mut, signer)]
user_holding: AccountWithMetadata, user_holding: AccountWithMetadata,
token_definition: AccountWithMetadata, token_definition: AccountWithMetadata,
collateral_amount: u128, collateral_amount: u128,
@ -53,9 +57,13 @@ mod stablecoin {
#[instruction] #[instruction]
pub fn withdraw_collateral( pub fn withdraw_collateral(
ctx: ProgramContext, ctx: ProgramContext,
#[account(signer)]
owner: AccountWithMetadata, owner: AccountWithMetadata,
#[account(mut)]
position: AccountWithMetadata, position: AccountWithMetadata,
#[account(mut)]
vault: AccountWithMetadata, vault: AccountWithMetadata,
#[account(mut)]
destination: AccountWithMetadata, destination: AccountWithMetadata,
amount: u128, amount: u128,
) -> SpelResult { ) -> SpelResult {
@ -83,9 +91,13 @@ mod stablecoin {
#[instruction] #[instruction]
pub fn repay_debt( pub fn repay_debt(
ctx: ProgramContext, ctx: ProgramContext,
#[account(signer)]
owner: AccountWithMetadata, owner: AccountWithMetadata,
#[account(mut)]
position: AccountWithMetadata, position: AccountWithMetadata,
#[account(mut)]
stablecoin_definition: AccountWithMetadata, stablecoin_definition: AccountWithMetadata,
#[account(mut, signer)]
user_stablecoin_holding: AccountWithMetadata, user_stablecoin_holding: AccountWithMetadata,
amount: u128, amount: u128,
) -> SpelResult { ) -> SpelResult {

View File

@ -19,7 +19,9 @@ mod token {
/// Fresh public recipients must be explicitly authorized in the same transaction. /// Fresh public recipients must be explicitly authorized in the same transaction.
#[instruction] #[instruction]
pub fn transfer( pub fn transfer(
#[account(mut, signer)]
sender: AccountWithMetadata, sender: AccountWithMetadata,
#[account(mut)]
recipient: AccountWithMetadata, recipient: AccountWithMetadata,
amount_to_transfer: u128, amount_to_transfer: u128,
) -> SpelResult { ) -> SpelResult {
@ -34,7 +36,9 @@ mod token {
/// Definition and holding targets must be uninitialized and authorized. /// Definition and holding targets must be uninitialized and authorized.
#[instruction] #[instruction]
pub fn new_fungible_definition( pub fn new_fungible_definition(
#[account(init, signer)]
definition_target_account: AccountWithMetadata, definition_target_account: AccountWithMetadata,
#[account(init, signer)]
holding_target_account: AccountWithMetadata, holding_target_account: AccountWithMetadata,
name: String, name: String,
total_supply: u128, total_supply: u128,
@ -58,8 +62,11 @@ mod token {
)] )]
#[instruction] #[instruction]
pub fn new_definition_with_metadata( pub fn new_definition_with_metadata(
#[account(init, signer)]
definition_target_account: AccountWithMetadata, definition_target_account: AccountWithMetadata,
#[account(init, signer)]
holding_target_account: AccountWithMetadata, holding_target_account: AccountWithMetadata,
#[account(init, signer)]
metadata_target_account: AccountWithMetadata, metadata_target_account: AccountWithMetadata,
new_definition: token_core::NewTokenDefinition, new_definition: token_core::NewTokenDefinition,
metadata: Box<token_core::NewTokenMetadata>, metadata: Box<token_core::NewTokenMetadata>,
@ -82,6 +89,7 @@ mod token {
pub fn initialize_account( pub fn initialize_account(
ctx: ProgramContext, ctx: ProgramContext,
definition_account: AccountWithMetadata, definition_account: AccountWithMetadata,
#[account(init, signer)]
account_to_initialize: AccountWithMetadata, account_to_initialize: AccountWithMetadata,
) -> SpelResult { ) -> SpelResult {
Ok(spel_framework::SpelOutput::execute( Ok(spel_framework::SpelOutput::execute(
@ -97,7 +105,9 @@ mod token {
/// Burn tokens from the holder's account. /// Burn tokens from the holder's account.
#[instruction] #[instruction]
pub fn burn( pub fn burn(
#[account(mut)]
definition_account: AccountWithMetadata, definition_account: AccountWithMetadata,
#[account(mut, signer)]
user_holding_account: AccountWithMetadata, user_holding_account: AccountWithMetadata,
amount_to_burn: u128, amount_to_burn: u128,
) -> SpelResult { ) -> SpelResult {
@ -113,7 +123,9 @@ mod token {
#[instruction] #[instruction]
pub fn mint( pub fn mint(
ctx: ProgramContext, ctx: ProgramContext,
#[account(mut, signer)]
definition_account: AccountWithMetadata, definition_account: AccountWithMetadata,
#[account(mut)]
user_holding_account: AccountWithMetadata, user_holding_account: AccountWithMetadata,
amount_to_mint: u128, amount_to_mint: u128,
) -> SpelResult { ) -> SpelResult {
@ -129,7 +141,9 @@ mod token {
/// The printed copy target must be uninitialized and authorized. /// The printed copy target must be uninitialized and authorized.
#[instruction] #[instruction]
pub fn print_nft( pub fn print_nft(
#[account(mut, signer)]
master_account: AccountWithMetadata, master_account: AccountWithMetadata,
#[account(init, signer)]
printed_account: AccountWithMetadata, printed_account: AccountWithMetadata,
) -> SpelResult { ) -> SpelResult {
Ok(spel_framework::SpelOutput::execute(token_program::print_nft::print_nft( Ok(spel_framework::SpelOutput::execute(token_program::print_nft::print_nft(

View File

@ -22,7 +22,9 @@ mod twap_oracle {
#[instruction] #[instruction]
pub fn create_price_observations( pub fn create_price_observations(
ctx: ProgramContext, ctx: ProgramContext,
#[account(init)]
price_observations: AccountWithMetadata, price_observations: AccountWithMetadata,
#[account(signer)]
price_source: AccountWithMetadata, price_source: AccountWithMetadata,
clock: AccountWithMetadata, clock: AccountWithMetadata,
initial_tick: i32, initial_tick: i32,
@ -56,7 +58,9 @@ mod twap_oracle {
#[instruction] #[instruction]
pub fn create_oracle_price_account( pub fn create_oracle_price_account(
ctx: ProgramContext, ctx: ProgramContext,
#[account(init)]
oracle_price_account: AccountWithMetadata, oracle_price_account: AccountWithMetadata,
#[account(signer)]
price_source: AccountWithMetadata, price_source: AccountWithMetadata,
clock: AccountWithMetadata, clock: AccountWithMetadata,
base_asset: AccountId, base_asset: AccountId,
@ -89,7 +93,9 @@ mod twap_oracle {
#[instruction] #[instruction]
pub fn create_current_tick_account( pub fn create_current_tick_account(
ctx: ProgramContext, ctx: ProgramContext,
#[account(init)]
current_tick_account: AccountWithMetadata, current_tick_account: AccountWithMetadata,
#[account(signer)]
price_source: AccountWithMetadata, price_source: AccountWithMetadata,
clock: AccountWithMetadata, clock: AccountWithMetadata,
initial_price: u128, initial_price: u128,
@ -118,6 +124,7 @@ mod twap_oracle {
pub fn publish_price( pub fn publish_price(
ctx: ProgramContext, ctx: ProgramContext,
price_observations: AccountWithMetadata, price_observations: AccountWithMetadata,
#[account(mut)]
oracle_price_account: AccountWithMetadata, oracle_price_account: AccountWithMetadata,
current_tick_account: AccountWithMetadata, current_tick_account: AccountWithMetadata,
clock: AccountWithMetadata, clock: AccountWithMetadata,
@ -145,6 +152,7 @@ mod twap_oracle {
#[instruction] #[instruction]
pub fn record_tick( pub fn record_tick(
ctx: ProgramContext, ctx: ProgramContext,
#[account(mut)]
price_observations: AccountWithMetadata, price_observations: AccountWithMetadata,
current_tick_account: AccountWithMetadata, current_tick_account: AccountWithMetadata,
clock: AccountWithMetadata, clock: AccountWithMetadata,
@ -173,7 +181,9 @@ mod twap_oracle {
#[instruction] #[instruction]
pub fn update_current_tick( pub fn update_current_tick(
ctx: ProgramContext, ctx: ProgramContext,
#[account(mut)]
current_tick_account: AccountWithMetadata, current_tick_account: AccountWithMetadata,
#[account(signer)]
price_source: AccountWithMetadata, price_source: AccountWithMetadata,
clock: AccountWithMetadata, clock: AccountWithMetadata,
price: u128, price: u128,