lez-programs/artifacts/amm-idl.json
r4bbit 6b21c3695a feat(amm)!: add transaction deadlines to swap and liquidity instructions
All mutable AMM instructions now require a `deadline: u64` field (Unix
timestamp in milliseconds). Enforcement uses the LEZ-native timestamp
validity window set on ProgramOutput; the runtime rejects the
transaction if the sequencer submission timestamp is at or past the
deadline.

BREAKING CHANGE: AddLiquidity, RemoveLiquidity, SwapExactInput,
SwapExactOutput, and NewDefinition instruction variants now require a
`deadline` field.

Closes #8
2026-05-06 13:26:11 +02:00

343 lines
7.0 KiB
JSON

{
"version": "0.1.0",
"name": "amm",
"instructions": [
{
"name": "new_definition",
"accounts": [
{
"name": "pool",
"writable": false,
"signer": false,
"init": false
},
{
"name": "vault_a",
"writable": false,
"signer": false,
"init": false
},
{
"name": "vault_b",
"writable": false,
"signer": false,
"init": false
},
{
"name": "pool_definition_lp",
"writable": false,
"signer": false,
"init": false
},
{
"name": "lp_lock_holding",
"writable": false,
"signer": false,
"init": false
},
{
"name": "user_holding_a",
"writable": false,
"signer": false,
"init": false
},
{
"name": "user_holding_b",
"writable": false,
"signer": false,
"init": false
},
{
"name": "user_holding_lp",
"writable": false,
"signer": false,
"init": false
}
],
"args": [
{
"name": "token_a_amount",
"type": "u128"
},
{
"name": "token_b_amount",
"type": "u128"
},
{
"name": "fees",
"type": "u128"
},
{
"name": "amm_program_id",
"type": "program_id"
},
{
"name": "deadline",
"type": "u64"
}
]
},
{
"name": "add_liquidity",
"accounts": [
{
"name": "pool",
"writable": false,
"signer": false,
"init": false
},
{
"name": "vault_a",
"writable": false,
"signer": false,
"init": false
},
{
"name": "vault_b",
"writable": false,
"signer": false,
"init": false
},
{
"name": "pool_definition_lp",
"writable": false,
"signer": false,
"init": false
},
{
"name": "user_holding_a",
"writable": false,
"signer": false,
"init": false
},
{
"name": "user_holding_b",
"writable": false,
"signer": false,
"init": false
},
{
"name": "user_holding_lp",
"writable": false,
"signer": false,
"init": false
}
],
"args": [
{
"name": "min_amount_liquidity",
"type": "u128"
},
{
"name": "max_amount_to_add_token_a",
"type": "u128"
},
{
"name": "max_amount_to_add_token_b",
"type": "u128"
},
{
"name": "deadline",
"type": "u64"
}
]
},
{
"name": "remove_liquidity",
"accounts": [
{
"name": "pool",
"writable": false,
"signer": false,
"init": false
},
{
"name": "vault_a",
"writable": false,
"signer": false,
"init": false
},
{
"name": "vault_b",
"writable": false,
"signer": false,
"init": false
},
{
"name": "pool_definition_lp",
"writable": false,
"signer": false,
"init": false
},
{
"name": "user_holding_a",
"writable": false,
"signer": false,
"init": false
},
{
"name": "user_holding_b",
"writable": false,
"signer": false,
"init": false
},
{
"name": "user_holding_lp",
"writable": false,
"signer": false,
"init": false
}
],
"args": [
{
"name": "remove_liquidity_amount",
"type": "u128"
},
{
"name": "min_amount_to_remove_token_a",
"type": "u128"
},
{
"name": "min_amount_to_remove_token_b",
"type": "u128"
},
{
"name": "deadline",
"type": "u64"
}
]
},
{
"name": "swap_exact_input",
"accounts": [
{
"name": "pool",
"writable": false,
"signer": false,
"init": false
},
{
"name": "vault_a",
"writable": false,
"signer": false,
"init": false
},
{
"name": "vault_b",
"writable": false,
"signer": false,
"init": false
},
{
"name": "user_holding_a",
"writable": false,
"signer": false,
"init": false
},
{
"name": "user_holding_b",
"writable": false,
"signer": false,
"init": false
}
],
"args": [
{
"name": "swap_amount_in",
"type": "u128"
},
{
"name": "min_amount_out",
"type": "u128"
},
{
"name": "token_definition_id_in",
"type": "account_id"
},
{
"name": "deadline",
"type": "u64"
}
]
},
{
"name": "swap_exact_output",
"accounts": [
{
"name": "pool",
"writable": false,
"signer": false,
"init": false
},
{
"name": "vault_a",
"writable": false,
"signer": false,
"init": false
},
{
"name": "vault_b",
"writable": false,
"signer": false,
"init": false
},
{
"name": "user_holding_a",
"writable": false,
"signer": false,
"init": false
},
{
"name": "user_holding_b",
"writable": false,
"signer": false,
"init": false
}
],
"args": [
{
"name": "exact_amount_out",
"type": "u128"
},
{
"name": "max_amount_in",
"type": "u128"
},
{
"name": "token_definition_id_in",
"type": "account_id"
},
{
"name": "deadline",
"type": "u64"
}
]
},
{
"name": "sync_reserves",
"accounts": [
{
"name": "pool",
"writable": false,
"signer": false,
"init": false
},
{
"name": "vault_a",
"writable": false,
"signer": false,
"init": false
},
{
"name": "vault_b",
"writable": false,
"signer": false,
"init": false
}
],
"args": []
}
],
"instruction_type": "amm_core::Instruction"
}