Skip to main content

OrderIntent

Struct OrderIntent 

Source
pub struct OrderIntent {
    pub owner: Pubkey,
    pub buy_token_account: Pubkey,
    pub sell_token_account: Pubkey,
    pub sell_amount: u64,
    pub buy_amount: u64,
    pub valid_to: u32,
    pub kind: OrderKind,
    pub partially_fillable: bool,
    pub app_data: [u8; 32],
}

Fields§

§owner: Pubkey

Account authorized to create and invalidate this order and whose signature authenticates it. For off-chain orders this is the Ed25519 signer; for on-chain creation it must be the transaction signer.

§buy_token_account: Pubkey

Token account that receives the buy-side proceeds. Implicitly encodes both the recipient and the buy token, since SPL token accounts are token-specific.

§sell_token_account: Pubkey

Token account the sell-side funds are pulled from. Implicitly encodes both the spender and the sell token. The settlement state PDA must hold the SPL delegate on this account for the order to be settleable. This token account must be owned by the intent owner. An intent that doesn’t satisfy this property will be rejected.

§sell_amount: u64

Amount of the sell token. For Sell orders this is the exact amount to be sold (subject to partially_fillable); for Buy orders it is the maximum the user is willing to spend.

§buy_amount: u64

Amount of the buy token. For Buy orders this is the exact amount to be received (subject to partially_fillable); for Sell orders it is the minimum the user is willing to receive.

§valid_to: u32

Unix timestamp after which the order expires. The order cannot be executed after expiration.

§kind: OrderKind

Whether sell_amount or buy_amount is the exact figure; the other side is treated as the limit (minimum to receive for Sell, maximum to spend for Buy).

§partially_fillable: bool

If true, the order may be filled across multiple settlements; proceeds and consumption scale proportionally with the amount of the sell side that’s been used. If false, a single settlement must consume the full sell amount (fill-or-kill).

§app_data: [u8; 32]

Opaque 32 bytes set by the order creator. Not interpreted by the settlement program; used off-chain for metadata such as the frontend version, slippage hints, or attribution.

Implementations§

Source§

impl OrderIntent

Source

pub fn uid(&self) -> Hash

SHA-256 of the canonical bytes. Doubles as the order UID and the middle seed of the order PDA. On SBF this compiles to a single sol_sha256 syscall; off-target it goes through the sha2 crate.

Trait Implementations§

Source§

impl Clone for OrderIntent

Source§

fn clone(&self) -> OrderIntent

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for OrderIntent

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for OrderIntent

Source§

fn default() -> OrderIntent

Returns the “default value” for a type. Read more
Source§

impl Eq for OrderIntent

Source§

impl From<&OrderIntent> for EncodedOrderIntent

Source§

fn from(intent: &OrderIntent) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for OrderIntent

Source§

fn eq(&self, other: &OrderIntent) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for OrderIntent

Source§

impl TryFrom<&EncodedOrderIntent> for OrderIntent

Source§

type Error = ProgramError

The type returned in the event of a conversion error.
Source§

fn try_from(encoded: &EncodedOrderIntent) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<&[u8; 150]> for OrderIntent

Source§

type Error = ProgramError

The type returned in the event of a conversion error.
Source§

fn try_from(bytes: &[u8; 150]) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.