Skip to main content

OrderIntent

Struct OrderIntent 

Source
pub struct OrderIntent {
    pub owner: Pubkey,
    pub sell_token_account: Pubkey,
    pub sell_mint: Pubkey,
    pub buy_token_account: Pubkey,
    pub buy_mint: Pubkey,
    pub sell_amount: u64,
    pub buy_amount: u64,
    pub valid_to: u32,
    pub flags: Flags,
    pub app_data: [u8; 32],
}
Expand description

Canonical order intent. Also the exact bytes hashed (SHA-256) to produce the order UID used in the order PDA’s seeds, and the exact wire format of create_order’s intent argument. Field order and encoding here are load-bearing: they must match this program’s Rust definition exactly.

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.

§sell_token_account: Pubkey

Token account the sell-side funds are pulled from. Implicitly encodes the spender. 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_mint: Pubkey

Mint of the sell token.

§buy_token_account: Pubkey

Token account that receives the buy-side proceeds. Implicitly encodes the recipient.

§buy_mint: Pubkey

Mint of the buy token.

§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.

§flags: Flags

The settings the encoding packs bit by bit into a single byte; see Flags.

§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; 213]> for OrderIntent

Source§

type Error = ProgramError

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

fn try_from(bytes: &[u8; 213]) -> 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 = !

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

fn try_from(value: U) -> Result<T, !>

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.