{
"address": "MatchingEngine11111111111111111111111111111",
"metadata": {
"name": "matching_engine",
"version": "0.0.0",
"spec": "0.1.0",
"description": "Example Matching Engine Program",
"repository": "https://github.com/wormhole-foundation/example-liquidity-layer"
},
"instructions": [
{
"name": "close_redeemed_fast_fill",
"docs": [
"This instruction is used to return lamports to the creator of the `FastFill` account only",
"when this fill was redeemed via the Token Router program.",
"",
"# Arguments",
"",
"* `ctx` - `CloseRedeemedFastFill` context."
],
"discriminator": [
44,
104,
207,
178,
224,
7,
28,
219
],
"accounts": [
{
"name": "prepared_by",
"docs": [
"Instead of having the preparer sign for this instruction, we allow anyone to call this",
"instruction on behalf of the preparer.",
""
],
"writable": true
},
{
"name": "fast_fill",
"writable": true
}
],
"args": []
},
{
"name": "complete_fast_fill",
"docs": [
"This instruction is used to complete the fast fill after the `FastFill` account has been",
"created. The Token Router program on Solana will invoke this instruction to complete the",
"fast fill, marking it as redeemed. Tokens will be deposited into the local endpoint's",
"custody account.",
"",
"# Arguments",
"",
"* `ctx` - `CompleteFastFill` context."
],
"discriminator": [
113,
252,
68,
134,
84,
61,
113,
203
],
"accounts": [
{
"name": "custodian",
"accounts": [
{
"name": "custodian"
}
]
},
{
"name": "fast_fill",
"docs": [
"Fast fill account.",
"",
"NOTE: This account may have been closed if the fast fill was already redeemed, so this",
"deserialization will fail in this case.",
"",
"Seeds must be \\[\"fast-fill\", source_chain, order_sender, sequence\\]."
],
"writable": true
},
{
"name": "token_router_emitter",
"docs": [
"Only the registered local Token Router program can call this instruction. It is allowed to",
"invoke this instruction by using its emitter (i.e. its Custodian account) as a signer. We",
"double-check that this signer is the same one registered for the local router endpoint."
],
"signer": true
},
{
"name": "token_router_custody_token",
"writable": true
},
{
"name": "path",
"accounts": [
{
"name": "from_endpoint",
"accounts": [
{
"name": "endpoint"
}
]
},
{
"name": "to_endpoint",
"accounts": [
{
"name": "endpoint"
}
]
}
]
},
{
"name": "local_custody_token",
"writable": true
},
{
"name": "token_program"
},
{
"name": "event_authority"
},
{
"name": "program"
}
],
"args": []
},
{
"name": "execute_fast_order_cctp",
"docs": [
"This instruction is used to execute the fast order after the auction period has ended.",
"It should be executed before the `grace_period` has ended, otherwise the best offer will",
"incur a penalty. Once executed, a CCTP transfer will be sent to the recipient encoded in the",
"`FastMarketOrder` VAA on the target chain.",
"",
"# Arguments",
"",
"* `ctx` - `ExecuteFastOrderCctp` context."
],
"discriminator": [
176,
38,
30,
17,
230,
78,
206,
157
],
"accounts": [
{
"name": "payer",
"writable": true,
"signer": true
},
{
"name": "core_message",
"writable": true
},
{
"name": "cctp_message",
"writable": true
},
{
"name": "custodian",
"accounts": [
{
"name": "custodian"
}
]
},
{
"name": "execute_order",
"accounts": [
{
"name": "fast_vaa",
"accounts": [
{
"name": "vaa"
}
]
},
{
"name": "active_auction",
"accounts": [
{
"name": "auction",
"writable": true
},
{
"name": "custody_token",
"writable": true
},
{
"name": "config"
},
{
"name": "best_offer_token",
"writable": true
}
]
},
{
"name": "executor_token",
"docs": [
"Must be a token account, whose mint is [common::USDC_MINT]."
],
"writable": true
},
{
"name": "initial_offer_token",
"writable": true
},
{
"name": "initial_participant",
"writable": true
}
]
},
{
"name": "to_router_endpoint",
"accounts": [
{
"name": "endpoint"
}
]
},
{
"name": "wormhole",
"accounts": [
{
"name": "config",
"writable": true
},
{
"name": "emitter_sequence",
"writable": true
},
{
"name": "fee_collector",
"writable": true
},
{
"name": "core_bridge_program"
}
]
},
{
"name": "cctp",
"accounts": [
{
"name": "mint",
"docs": [
"Circle-supported mint.",
"",
"Token Messenger Minter program's local token account."
],
"writable": true
},
{
"name": "token_messenger_minter_sender_authority"
},
{
"name": "message_transmitter_config",
"writable": true
},
{
"name": "token_messenger"
},
{
"name": "remote_token_messenger",
"docs": [
"Messenger Minter program)."
]
},
{
"name": "token_minter",
"docs": [
"CHECK Seeds must be \\[\"token_minter\"\\] (CCTP Token Messenger Minter program)."
]
},
{
"name": "local_token",
"docs": [
"Local token account, which this program uses to validate the `mint` used to burn.",
""
],
"writable": true
},
{
"name": "token_messenger_minter_event_authority"
},
{
"name": "token_messenger_minter_program"
},
{
"name": "message_transmitter_program"
}
]
},
{
"name": "system_program"
},
{
"name": "token_program"
},
{
"name": "sysvars",
"accounts": [
{
"name": "clock",
"docs": [
"Wormhole Core Bridge needs the clock sysvar based on its legacy implementation.",
""
]
},
{
"name": "rent",
"docs": [
"Wormhole Core Bridge needs the rent sysvar based on its legacy implementation.",
""
]
}
]
},
{
"name": "event_authority"
},
{
"name": "program"
}
],
"args": []
},
{
"name": "execute_fast_order_local",
"docs": [
"This instruction is used to execute the fast order after the auction period has ended.",
"It should be executed before the `grace_period` has ended, otherwise the best offer will",
"incur a penalty. Once executed, a `FastFill` account will be created.",
"",
"# Arguments",
"",
"* `ctx` - `ExecuteFastOrderLocal` context."
],
"discriminator": [
140,
206,
26,
243,
243,
66,
24,
240
],
"accounts": [
{
"name": "payer",
"writable": true,
"signer": true
},
{
"name": "custodian",
"accounts": [
{
"name": "custodian"
}
]
},
{
"name": "execute_order",
"accounts": [
{
"name": "fast_vaa",
"accounts": [
{
"name": "vaa"
}
]
},
{
"name": "active_auction",
"accounts": [
{
"name": "auction",
"writable": true
},
{
"name": "custody_token",
"writable": true
},
{
"name": "config"
},
{
"name": "best_offer_token",
"writable": true
}
]
},
{
"name": "executor_token",
"docs": [
"Must be a token account, whose mint is [common::USDC_MINT]."
],
"writable": true
},
{
"name": "initial_offer_token",
"writable": true
},
{
"name": "initial_participant",
"writable": true
}
]
},
{
"name": "reserved_sequence",
"docs": [
"This account will be closed at the end of this instruction instead of using the close",
"account directive here.",
"",
"NOTE: We do not need to do a VAA hash check because that was already performed when the",
"reserved sequence was created."
],
"writable": true
},
{
"name": "reserve_beneficiary",
"docs": [
"When the reserved sequence account was created, the beneficiary was set to the best offer",
"token's owner if it existed (and if not, to whomever executed the reserve fast fill sequence",
"instruction). This account will receive the lamports from the reserved sequence account.",
""
],
"writable": true
},
{
"name": "fast_fill",
"writable": true
},
{
"name": "local_custody_token",
"writable": true
},
{
"name": "system_program"
},
{
"name": "token_program"
},
{
"name": "sysvars",
"accounts": [
{
"name": "clock",
"docs": [
"Wormhole Core Bridge needs the clock sysvar based on its legacy implementation.",
""
]
},
{
"name": "rent",
"docs": [
"Wormhole Core Bridge needs the rent sysvar based on its legacy implementation.",
""
]
}
]
},
{
"name": "event_authority"
},
{
"name": "program"
}
],
"args": []
},
{
"name": "improve_offer",
"docs": [
"This instruction is used to improve an existing auction offer. The `offer_price` must be",
"greater than the current `offer_price` in the auction. This instruction will revert if the",
"`offer_price` is less than the current `offer_price`. This instruction can be called by",
"anyone.",
"",
"# Arguments",
"",
"* `ctx` - `ImproveOffer` context.",
"* `offer_price` - The fee that the caller is willing to accept in order for fufilling the",
"fast order. This fee is paid in USDC."
],
"discriminator": [
171,
112,
46,
172,
194,
135,
23,
102
],
"accounts": [
{
"name": "transfer_authority",
"docs": [
"The auction participant needs to set approval to this PDA.",
""
]
},
{
"name": "active_auction",
"accounts": [
{
"name": "auction",
"writable": true
},
{
"name": "custody_token",
"writable": true
},
{
"name": "config"
},
{
"name": "best_offer_token",
"writable": true
}
]
},
{
"name": "offer_token"
},
{
"name": "token_program"
},
{
"name": "event_authority"
},
{
"name": "program"
}
],
"args": [
{
"name": "offer_price",
"type": "u64"
}
]
},
{
"name": "initialize",
"docs": [
"This instruction is be used to generate the program's `custodian` and `auction_config`",
"configs. It also reates the `owner` and `fee_recipient` accounts. Finally, it sets the",
"upgrade authority to the `upgrade_manager_authority`. Upgrades are managed by the",
"`upgrade_manager_program`.",
"",
"# Arguments",
"",
"* `ctx` - `Initialize` context.",
"* `args` - Initialize args, which has the initial [AuctionParameters]."
],
"discriminator": [
175,
175,
109,
31,
13,
152,
155,
237
],
"accounts": [
{
"name": "owner",
"docs": [
"Owner of the program, who presumably deployed this program."
],
"writable": true,
"signer": true
},
{
"name": "custodian",
"docs": [
"Custodian account, which saves program data useful for other",
"instructions."
],
"writable": true
},
{
"name": "auction_config",
"writable": true
},
{
"name": "owner_assistant",
"docs": [
"TODO: do we prevent the owner from being the owner assistant?"
]
},
{
"name": "fee_recipient"
},
{
"name": "fee_recipient_token"
},
{
"name": "cctp_mint_recipient",
"writable": true
},
{
"name": "usdc",
"accounts": [
{
"name": "mint"
}
]
},
{
"name": "program_data",
"docs": [
"We use the program data to make sure this owner is the upgrade authority (the true owner,",
"who deployed this program)."
],
"writable": true
},
{
"name": "upgrade_manager_authority"
},
{
"name": "upgrade_manager_program"
},
{
"name": "bpf_loader_upgradeable_program"
},
{
"name": "system_program"
},
{
"name": "token_program"
},
{
"name": "associated_token_program"
}
],
"args": [
{
"name": "args",
"type": {
"defined": {
"name": "InitializeArgs"
}
}
}
]
},
{
"name": "migrate",
"docs": [
"This instruction is used for executing logic during an upgrade. This instruction can only be",
"called by the `upgrade_manager_program`.",
"",
"# Arguments",
"",
"* `ctx` - `Migrate` context."
],
"discriminator": [
155,
234,
231,
146,
236,
158,
162,
30
],
"accounts": [
{
"name": "admin",
"accounts": [
{
"name": "owner",
"signer": true
},
{
"name": "custodian",
"accounts": [
{
"name": "custodian"
}
]
}
]
}
],
"args": []
},
{
"name": "place_initial_offer_cctp",
"docs": [
"This instruction is used to create a new auction given a valid `FastMarketOrder` vaa. This",
"instruction will record information about the auction and transfer funds from the payer to",
"an auction-specific token custody account. This instruction can be called by anyone.",
"# Arguments",
"",
"* `ctx` - `PlaceInitialOfferCctp` context.",
"* `offer_price` - The fee that the caller is willing to accept in order for fufilling the",
"fast order. This fee is paid in USDC."
],
"discriminator": [
157,
156,
175,
35,
91,
249,
1,
129
],
"accounts": [
{
"name": "payer",
"writable": true,
"signer": true
},
{
"name": "transfer_authority",
"docs": [
"The auction participant needs to set approval to this PDA.",
""
]
},
{
"name": "custodian",
"accounts": [
{
"name": "custodian"
}
]
},
{
"name": "auction_config"
},
{
"name": "fast_order_path",
"accounts": [
{
"name": "fast_vaa",
"accounts": [
{
"name": "vaa"
}
]
},
{
"name": "path",
"accounts": [
{
"name": "from_endpoint",
"accounts": [
{
"name": "endpoint"
}
]
},
{
"name": "to_endpoint",
"accounts": [
{
"name": "endpoint"
}
]
}
]
}
]
},
{
"name": "auction",
"docs": [
"This account should only be created once, and should never be changed to",
"init_if_needed. Otherwise someone can game an existing auction."
],
"writable": true
},
{
"name": "offer_token"
},
{
"name": "auction_custody_token",
"writable": true
},
{
"name": "usdc",
"accounts": [
{
"name": "mint"
}
]
},
{
"name": "system_program"
},
{
"name": "token_program"
},
{
"name": "event_authority"
},
{
"name": "program"
}
],
"args": [
{
"name": "offer_price",
"type": "u64"
}
]
},
{
"name": "prepare_order_response_cctp",
"docs": [
"This instruction is used to prepare the order response for a CCTP transfer. This instruction",
"will redeem the finalized transfer associated with a particular auction, and deposit the",
"funds to the `prepared_custody_token` account that is created during execution. This",
"instruction will create a `PreparedOrderResponse` account that will be used to settle the",
"auction.",
"",
"# Arguments",
"",
"* `ctx` - `PrepareOrderResponseCctp` context."
],
"discriminator": [
221,
178,
184,
43,
247,
248,
90,
160
],
"accounts": [
{
"name": "payer",
"writable": true,
"signer": true
},
{
"name": "custodian",
"accounts": [
{
"name": "custodian"
}
]
},
{
"name": "fast_order_path",
"accounts": [
{
"name": "fast_vaa",
"accounts": [
{
"name": "vaa"
}
]
},
{
"name": "path",
"accounts": [
{
"name": "from_endpoint",
"accounts": [
{
"name": "endpoint"
}
]
},
{
"name": "to_endpoint",
"accounts": [
{
"name": "endpoint"
}
]
}
]
}
]
},
{
"name": "finalized_vaa",
"accounts": [
{
"name": "vaa"
}
]
},
{
"name": "prepared_order_response",
"writable": true
},
{
"name": "prepared_custody_token",
"writable": true
},
{
"name": "base_fee_token",
"docs": [
"This token account will be the one that collects the base fee only if an auction's order",
"was executed late. Otherwise, the protocol's fee recipient token account will be used for",
"non-existent auctions and the best offer token account will be used for orders executed on",
"time."
]
},
{
"name": "usdc",
"accounts": [
{
"name": "mint"
}
]
},
{
"name": "cctp",
"accounts": [
{
"name": "mint_recipient",
"accounts": [
{
"name": "mint_recipient",
"writable": true
}
]
},
{
"name": "message_transmitter_authority"
},
{
"name": "message_transmitter_config"
},
{
"name": "used_nonces",
"docs": [
"first_nonce.to_string()\\] (CCTP Message Transmitter program)."
],
"writable": true
},
{
"name": "message_transmitter_event_authority"
},
{
"name": "token_messenger"
},
{
"name": "remote_token_messenger",
"docs": [
"Messenger Minter program)."
]
},
{
"name": "token_minter"
},
{
"name": "local_token",
"docs": [
"Token Messenger Minter's Local Token account. This program uses the mint of this account to",
"validate the `mint_recipient` token account's mint.",
""
],
"writable": true
},
{
"name": "token_pair",
"docs": [
"Token Messenger Minter program)."
]
},
{
"name": "token_messenger_minter_custody_token",
"writable": true
},
{
"name": "token_messenger_minter_event_authority"
},
{
"name": "token_messenger_minter_program"
},
{
"name": "message_transmitter_program"
}
]
},
{
"name": "token_program"
},
{
"name": "system_program"
}
],
"args": [
{
"name": "args",
"type": {
"defined": {
"name": "CctpMessageArgs"
}
}
}
]
},
{
"name": "propose_auction_parameters",
"docs": [
"This instruction is used to propose new auction parameters. A proposal cannot be enacted",
"until one epoch has passed. This instruction can only be called by the `owner` or",
"`owner_assistant`.",
"",
"# Arguments",
"",
"* `ctx` - `ProposeAuctionParameters` context.",
"* `params` - The new `AuctionParameters`, see `auction_config.rs`."
],
"discriminator": [
86,
19,
21,
43,
32,
106,
249,
80
],
"accounts": [
{
"name": "payer",
"writable": true,
"signer": true
},
{
"name": "admin",
"accounts": [
{
"name": "owner_or_assistant",
"signer": true
},
{
"name": "custodian",
"accounts": [
{
"name": "custodian"
}
]
}
]
},
{
"name": "proposal",
"writable": true
},
{
"name": "system_program"
},
{
"name": "epoch_schedule"
},
{
"name": "event_authority"
},
{
"name": "program"
}
],
"args": [
{
"name": "params",
"type": {
"defined": {
"name": "AuctionParameters"
}
}
}
]
},
{
"name": "reserve_fast_fill_sequence_active_auction",
"docs": [
"This instruction is used to reserve a sequence number for a fast fill. Fast fills are orders",
"that have been fulfilled and are destined for Solana and are seeded by source chain, order",
"sender and sequence number (similar to how Wormhole VAAs are identified by emitter chain,",
"emitter address and sequence number).",
"",
"Prior to executing `execute_fast_order_local` after the duration of an auction, the winning",
"auction participant should call this instruction to reserve the fast fill's sequence number.",
"This sequence number is warehoused in the `ReservedFastFillSequence` account and will be",
"closed when the order is executed.",
"",
"Auction participants can listen to the `FastFillSequenceReserved` event to track when he",
"(or associated payer) called this instruction so he can execute local orders easily.",
"",
"# Arguments",
"",
"* `ctx` - `ReserveFastFillSequenceActiveAuction` context."
],
"discriminator": [
206,
255,
241,
68,
224,
129,
210,
187
],
"accounts": [
{
"name": "reserve_sequence",
"accounts": [
{
"name": "payer",
"writable": true,
"signer": true
},
{
"name": "fast_order_path",
"accounts": [
{
"name": "fast_vaa",
"accounts": [
{
"name": "vaa"
}
]
},
{
"name": "path",
"accounts": [
{
"name": "from_endpoint",
"accounts": [
{
"name": "endpoint"
}
]
},
{
"name": "to_endpoint",
"accounts": [
{
"name": "endpoint"
}
]
}
]
}
]
},
{
"name": "sequencer",
"docs": [
"This sequencer determines the next reserved sequence. If it does not exist for a given",
"source chain and sender, it will be created.",
"",
"Auction participants may want to consider pricing the creation of this account into their",
"offer prices by checking whether this sequencer already exists for those orders destined for",
"Solana."
],
"writable": true
},
{
"name": "reserved",
"docs": [
"This account will be used to determine the sequence of the next fast fill. When a local",
"order is executed or an non-existent auction is settled, this account will be closed."
],
"writable": true
},
{
"name": "auction",
"docs": [
"must have been created by this point. Otherwise the auction account must reflect a completed",
"auction."
],
"writable": true
},
{
"name": "system_program"
}
]
},
{
"name": "auction_config"
},
{
"name": "event_authority"
},
{
"name": "program"
}
],
"args": []
},
{
"name": "reserve_fast_fill_sequence_no_auction",
"docs": [
"This instruction is used to reserve a sequence number for a fast fill. Fast fills are orders",
"that have been fulfilled and are destined for Solana and are seeded by source chain, order",
"sender and sequence number (similar to how Wormhole VAAs are identified by emitter chain,",
"emitter address and sequence number).",
"",
"Prior to executing `settle_auction_none_local` if there is no auction, whomever prepared the",
"order response should call this instruction to reserve the fast fill's sequence number.",
"This sequence number is warehoused in the `ReservedFastFillSequence` account and will be",
"closed when the funds are finally settled.",
"",
"NOTE: This instruction is expected to be in the same transaction as the one that executes",
"the prepare order response instruction. If it is not, there is a risk that after preparing",
"the order response that someone starts an auction. This scenario risks the preparer's rent",
"that he paid because the winning auction participant can take his lamports when he calls",
"settle auction complete. Although this is an unlikely scenario, it is possible if there is",
"no deadline specified to start the auction and no participants use the fast VAA to start an",
"auction until the finalized VAA exists (which guarantees that the funds have finalized on",
"the source network).",
"",
"# Arguments",
"",
"* `ctx` - `ReserveFastFillSequenceNoAuction` context."
],
"discriminator": [
61,
148,
140,
87,
186,
87,
212,
239
],
"accounts": [
{
"name": "reserve_sequence",
"accounts": [
{
"name": "payer",
"writable": true,
"signer": true
},
{
"name": "fast_order_path",
"accounts": [
{
"name": "fast_vaa",
"accounts": [
{
"name": "vaa"
}
]
},
{
"name": "path",
"accounts": [
{
"name": "from_endpoint",
"accounts": [
{
"name": "endpoint"
}
]
},
{
"name": "to_endpoint",
"accounts": [
{
"name": "endpoint"
}
]
}
]
}
]
},
{
"name": "sequencer",
"docs": [
"This sequencer determines the next reserved sequence. If it does not exist for a given",
"source chain and sender, it will be created.",
"",
"Auction participants may want to consider pricing the creation of this account into their",
"offer prices by checking whether this sequencer already exists for those orders destined for",
"Solana."
],
"writable": true
},
{
"name": "reserved",
"docs": [
"This account will be used to determine the sequence of the next fast fill. When a local",
"order is executed or an non-existent auction is settled, this account will be closed."
],
"writable": true
},
{
"name": "auction",
"docs": [
"must have been created by this point. Otherwise the auction account must reflect a completed",
"auction."
],
"writable": true
},
{
"name": "system_program"
}
]
},
{
"name": "prepared_order_response",
"docs": [
"The preparer will be the beneficiary of the reserved fast fill sequence account when it is",
"closed. This instruction will not allow this account to be provided if there is an existing",
"auction, which would enforce the order be executed when it is time to complete the auction."
]
},
{
"name": "event_authority"
},
{
"name": "program"
}
],
"args": []
},
{
"name": "set_pause",
"docs": [
"This instruction is used to pause or unpause further processing of new auctions. Only the",
"`owner` or `owner_assistant` can pause the program.",
"",
"# Arguments",
"",
"* `ctx` - `SetPause` context.",
"* `pause` - Boolean indicating whether to pause the program."
],
"discriminator": [
63,
32,
154,
2,
56,
103,
79,
45
],
"accounts": [
{
"name": "admin",
"accounts": [
{
"name": "owner_or_assistant",
"signer": true
},
{
"name": "custodian",
"writable": true
}
]
}
],
"args": [
{
"name": "pause",
"type": "bool"
}
]
},
{
"name": "settle_auction_complete",
"docs": [
"This instruction is used to settle the acution after the `FastMarketOrder` has been",
"executed, and the `PreparedOrderResponse` has been created. This instruction will settle the",
"auction by transferring the funds from the `prepared_custody_token` account to the best",
"offer account.",
"",
"# Arguments",
"",
"* `ctx` - `SettleAuctionComplete` context."
],
"discriminator": [
84,
39,
0,
132,
21,
101,
222,
137
],
"accounts": [
{
"name": "beneficiary",
"docs": [
"finalized VAA."
],
"writable": true
},
{
"name": "base_fee_token",
"docs": [
"This token account will receive the base fee only if there was a penalty when executing the",
"order. If it does not exist when there is a penalty, this instruction handler will revert.",
""
],
"writable": true
},
{
"name": "best_offer_token",
"docs": [
"Destination token account, which the redeemer may not own. But because the redeemer is a",
"signer and is the one encoded in the Deposit Fill message, he may have the tokens be sent",
"to any account he chooses (this one).",
"",
"of the tokens to the base fee token account."
],
"writable": true
},
{
"name": "prepared_order_response",
"writable": true
},
{
"name": "prepared_custody_token",
"writable": true
},
{
"name": "auction",
"writable": true
},
{
"name": "token_program"
},
{
"name": "event_authority"
},
{
"name": "program"
}
],
"args": []
},
{
"name": "settle_auction_none_cctp",
"docs": [
"This instruction is used to route funds to the `recipient` for a `FastMarketOrder` with",
"no corresponding auction on Solana. This instruction can be called by anyone, but the sum of",
"`init_auction_fee` and `base_fee` associated with relaying a finalized VAA will be paid to",
"the `fee_recipient`. This instruction generates a `Fill` message.",
"",
"# Arguments",
"",
"* `ctx` - `SettleAuctionNoneCctp` context."
],
"discriminator": [
120,
236,
82,
121,
242,
118,
74,
161
],
"accounts": [
{
"name": "payer",
"writable": true,
"signer": true
},
{
"name": "core_message",
"writable": true
},
{
"name": "cctp_message",
"writable": true
},
{
"name": "custodian",
"accounts": [
{
"name": "custodian"
}
]
},
{
"name": "fee_recipient_token",
"docs": [
"Destination token account, which the redeemer may not own. But because the redeemer is a",
"signer and is the one encoded in the Deposit Fill message, he may have the tokens be sent",
"to any account he chooses (this one).",
""
],
"writable": true
},
{
"name": "prepared",
"accounts": [
{
"name": "by",
"writable": true
},
{
"name": "order_response",
"writable": true
},
{
"name": "custody_token",
"writable": true
}
]
},
{
"name": "auction",
"docs": [
"There should be no account data here because an auction was never created."
],
"writable": true
},
{
"name": "wormhole",
"accounts": [
{
"name": "config",
"writable": true
},
{
"name": "emitter_sequence",
"writable": true
},
{
"name": "fee_collector",
"writable": true
},
{
"name": "core_bridge_program"
}
]
},
{
"name": "cctp",
"accounts": [
{
"name": "mint",
"docs": [
"Circle-supported mint.",
"",
"Token Messenger Minter program's local token account."
],
"writable": true
},
{
"name": "token_messenger_minter_sender_authority"
},
{
"name": "message_transmitter_config",
"writable": true
},
{
"name": "token_messenger"
},
{
"name": "remote_token_messenger",
"docs": [
"Messenger Minter program)."
]
},
{
"name": "token_minter",
"docs": [
"CHECK Seeds must be \\[\"token_minter\"\\] (CCTP Token Messenger Minter program)."
]
},
{
"name": "local_token",
"docs": [
"Local token account, which this program uses to validate the `mint` used to burn.",
""
],
"writable": true
},
{
"name": "token_messenger_minter_event_authority"
},
{
"name": "token_messenger_minter_program"
},
{
"name": "message_transmitter_program"
}
]
},
{
"name": "token_program"
},
{
"name": "system_program"
},
{
"name": "sysvars",
"accounts": [
{
"name": "clock",
"docs": [
"Wormhole Core Bridge needs the clock sysvar based on its legacy implementation.",
""
]
},
{
"name": "rent",
"docs": [
"Wormhole Core Bridge needs the rent sysvar based on its legacy implementation.",
""
]
}
]
},
{
"name": "event_authority"
},
{
"name": "program"
}
],
"args": []
},
{
"name": "settle_auction_none_local",
"docs": [
"This instruction is used to settle a `FastMarketOrder` with no corresponding auction. This",
"instruction can be called by anyone, but the sum of `init_auction_fee` and `base_fee`",
"associated with relaying a finalized VAA will be paid to the `fee_recipient`. This",
"instruction creates a `FastFill` account.",
"",
"# Arguments",
"",
"* `ctx` - `SettleAuctionNoneLocal` context."
],
"discriminator": [
253,
213,
132,
148,
31,
119,
215,
162
],
"accounts": [
{
"name": "payer",
"writable": true,
"signer": true
},
{
"name": "custodian",
"accounts": [
{
"name": "custodian"
}
]
},
{
"name": "fee_recipient_token",
"docs": [
"Destination token account, which the redeemer may not own. But because the redeemer is a",
"signer and is the one encoded in the Deposit Fill message, he may have the tokens be sent",
"to any account he chooses (this one).",
""
],
"writable": true
},
{
"name": "prepared",
"accounts": [
{
"name": "by",
"writable": true
},
{
"name": "order_response",
"writable": true
},
{
"name": "custody_token",
"writable": true
}
]
},
{
"name": "auction",
"docs": [
"This account will have been created using the reserve fast fill sequence (no auction)",
"instruction. We need to make sure that this account has not been used in an auction."
],
"writable": true
},
{
"name": "reserved_sequence",
"docs": [
"This account will be closed at the end of this instruction instead of using the close",
"account directive here.",
"",
"If we could reference the beneficiary using `prepared.by`, this would be a different story.",
"",
"NOTE: We do not need to do a VAA hash check because that was already performed when the",
"reserved sequence was created."
],
"writable": true
},
{
"name": "fast_fill",
"writable": true
},
{
"name": "local_custody_token",
"writable": true
},
{
"name": "token_program"
},
{
"name": "system_program"
},
{
"name": "sysvars",
"accounts": [
{
"name": "clock",
"docs": [
"Wormhole Core Bridge needs the clock sysvar based on its legacy implementation.",
""
]
},
{
"name": "rent",
"docs": [
"Wormhole Core Bridge needs the rent sysvar based on its legacy implementation.",
""
]
}
]
},
{
"name": "event_authority"
},
{
"name": "program"
}
],
"args": []
},
{
"name": "submit_ownership_transfer_request",
"docs": [
"This instruction sets the `pending_owner` field in the `Custodian` account. This instruction",
"can only be called by the `owner`. The `pending_owner` address must be valid, meaning it",
"cannot be the zero address or the current owner.",
"",
"# Arguments",
"",
"* `ctx` - `SubmitOwnershipTransferRequest` context."
],
"discriminator": [
215,
13,
88,
199,
48,
195,
19,
225
],
"accounts": [
{
"name": "admin",
"accounts": [
{
"name": "owner",
"signer": true
},
{
"name": "custodian",
"writable": true
}
]
},
{
"name": "new_owner",
"docs": [
"New Owner.",
""
]
}
],
"args": []
},
{
"name": "update_auction_parameters",
"docs": [
"This instruction is used to enact an existing auction update proposal. It can only be",
"executed after the `slot_enact_delay` has passed. This instruction can only be called by the",
"`owner`.",
"",
"# Arguments",
"",
"* `ctx` - `UpdateAuctionParameters` context."
],
"discriminator": [
10,
33,
10,
75,
17,
63,
21,
245
],
"accounts": [
{
"name": "payer",
"writable": true,
"signer": true
},
{
"name": "admin",
"accounts": [
{
"name": "owner",
"signer": true
},
{
"name": "custodian",
"writable": true
}
]
},
{
"name": "proposal",
"writable": true
},
{
"name": "auction_config",
"writable": true
},
{
"name": "system_program"
},
{
"name": "event_authority"
},
{
"name": "program"
}
],
"args": []
},
{
"name": "update_cctp_router_endpoint",
"docs": [
"This instruction is used to update a CCTP router endpoint. It allows the caller to change",
"the `address`, `mint_recipient`, and `domain`. This instruction can only be called by the",
"`owner`.",
"",
"# Arguments",
"",
"* `ctx` - `UpdateCctpRouterEndpoint` context.",
"* `args` - The `AddCctpRouterEndpointArgs`, see `admin.rs`."
],
"discriminator": [
34,
122,
31,
38,
73,
126,
94,
127
],
"accounts": [
{
"name": "admin",
"accounts": [
{
"name": "owner",
"signer": true
},
{
"name": "custodian",
"accounts": [
{
"name": "custodian"
}
]
}
]
},
{
"name": "router_endpoint",
"accounts": [
{
"name": "endpoint",
"writable": true
}
]
},
{
"name": "remote_token_messenger",
"docs": [
"Messenger Minter program)."
]
}
],
"args": [
{
"name": "args",
"type": {
"defined": {
"name": "AddCctpRouterEndpointArgs"
}
}
}
]
},
{
"name": "update_fee_recipient",
"docs": [
"This instruction is used to update the `fee_recipient` field in the `Custodian` account.",
"This instruction can only be called by the `owner` or `owner_assistant`.",
"",
"# Arguments",
"",
"* `ctx` - `UpdateFeeRecipient` context."
],
"discriminator": [
249,
0,
198,
35,
183,
123,
57,
188
],
"accounts": [
{
"name": "admin",
"accounts": [
{
"name": "owner_or_assistant",
"signer": true
},
{
"name": "custodian",
"writable": true
}
]
},
{
"name": "new_fee_recipient_token"
},
{
"name": "new_fee_recipient",
"docs": [
"New Fee Recipient.",
""
]
}
],
"args": []
},
{
"name": "update_local_router_endpoint",
"docs": [
"This instruction is used to update a Local router endpoint. It allows the caller to change",
"the `address` and `mint_recipient`. This instruction can only be called by the `owner`.",
"",
"# Arguments",
"",
"* `ctx` - `UpdateLocalRouterEndpoint` context."
],
"discriminator": [
222,
237,
142,
228,
88,
3,
49,
102
],
"accounts": [
{
"name": "admin",
"accounts": [
{
"name": "owner",
"signer": true
},
{
"name": "custodian",
"accounts": [
{
"name": "custodian"
}
]
}
]
},
{
"name": "router_endpoint",
"accounts": [
{
"name": "endpoint",
"writable": true
}
]
},
{
"name": "local",
"accounts": [
{
"name": "token_router_program",
"docs": [
"emitter (router endpoint) address."
]
},
{
"name": "token_router_emitter"
},
{
"name": "token_router_mint_recipient"
}
]
}
],
"args": []
},
{
"name": "update_owner_assistant",
"docs": [
"This instruction is used to update the `owner_assistant` field in the `Custodian` account.",
"This instruction can only be called by the `owner`.",
"",
"# Arguments",
"",
"* `ctx` - `UpdateOwnerAssistant` context."
],
"discriminator": [
153,
83,
175,
53,
168,
34,
131,
22
],
"accounts": [
{
"name": "admin",
"accounts": [
{
"name": "owner",
"signer": true
},
{
"name": "custodian",
"writable": true
}
]
},
{
"name": "new_owner_assistant",
"docs": [
"New Assistant.",
""
]
}
],
"args": []
}
],
"accounts": [
{
"name": "Auction",
"discriminator": [
218,
94,
247,
242,
126,
233,
131,
81
]
},
{
"name": "AuctionConfig",
"discriminator": [
195,
54,
8,
51,
28,
231,
33,
142
]
},
{
"name": "AuctionHistory",
"discriminator": [
149,
208,
45,
154,
47,
248,
102,
245
]
},
{
"name": "AuctionHistoryInternal",
"discriminator": [
149,
208,
45,
154,
47,
248,
102,
245
]
},
{
"name": "Custodian",
"discriminator": [
132,
228,
139,
184,
112,
228,
108,
240
]
},
{
"name": "FastFill",
"discriminator": [
89,
120,
166,
41,
106,
227,
218,
121
]
},
{
"name": "FastFillSequencer",
"discriminator": [
70,
193,
18,
127,
227,
183,
46,
177
]
},
{
"name": "PreparedOrderResponse",
"discriminator": [
20,
123,
155,
182,
141,
189,
18,
173
]
},
{
"name": "Proposal",
"discriminator": [
26,
94,
189,
187,
116,
136,
53,
33
]
},
{
"name": "RemoteTokenMessenger",
"discriminator": [
105,
115,
174,
34,
95,
233,
138,
252
]
},
{
"name": "ReservedFastFillSequence",
"discriminator": [
77,
151,
219,
66,
126,
238,
151,
179
]
},
{
"name": "RouterEndpoint",
"discriminator": [
217,
148,
188,
203,
183,
105,
154,
205
]
}
],
"events": [
{
"name": "AuctionSettled",
"discriminator": [
61,
151,
131,
170,
95,
203,
219,
147
]
},
{
"name": "AuctionUpdated",
"discriminator": [
67,
35,
50,
236,
108,
230,
253,
111
]
},
{
"name": "Enacted",
"discriminator": [
200,
226,
146,
0,
188,
24,
141,
143
]
},
{
"name": "FastFillRedeemed",
"discriminator": [
192,
96,
201,
180,
102,
112,
34,
102
]
},
{
"name": "FastFillSequenceReserved",
"discriminator": [
6,
154,
159,
87,
13,
183,
211,
152
]
},
{
"name": "LocalFastOrderFilled",
"discriminator": [
131,
247,
217,
194,
154,
179,
238,
193
]
},
{
"name": "OrderExecuted",
"discriminator": [
74,
135,
231,
5,
168,
106,
194,
117
]
},
{
"name": "Proposed",
"discriminator": [
216,
37,
138,
141,
130,
208,
180,
153
]
}
],
"errors": [
{
"code": 6002,
"name": "OwnerOnly"
},
{
"code": 6004,
"name": "OwnerOrAssistantOnly"
},
{
"code": 6016,
"name": "U64Overflow"
},
{
"code": 6018,
"name": "U32Overflow"
},
{
"code": 6032,
"name": "SameEndpoint"
},
{
"code": 6034,
"name": "InvalidEndpoint"
},
{
"code": 6048,
"name": "InvalidVaa"
},
{
"code": 6066,
"name": "InvalidDeposit"
},
{
"code": 6068,
"name": "InvalidDepositMessage"
},
{
"code": 6070,
"name": "InvalidPayloadId"
},
{
"code": 6072,
"name": "InvalidDepositPayloadId"
},
{
"code": 6074,
"name": "NotFastMarketOrder"
},
{
"code": 6076,
"name": "VaaMismatch"
},
{
"code": 6078,
"name": "RedeemerMessageTooLarge"
},
{
"code": 6096,
"name": "InvalidSourceRouter"
},
{
"code": 6098,
"name": "InvalidTargetRouter"
},
{
"code": 6100,
"name": "EndpointDisabled"
},
{
"code": 6102,
"name": "InvalidCctpEndpoint"
},
{
"code": 6128,
"name": "Paused"
},
{
"code": 6256,
"name": "AssistantZeroPubkey"
},
{
"code": 6257,
"name": "FeeRecipientZeroPubkey"
},
{
"code": 6258,
"name": "ImmutableProgram"
},
{
"code": 6260,
"name": "ZeroDuration"
},
{
"code": 6262,
"name": "ZeroGracePeriod"
},
{
"code": 6263,
"name": "ZeroPenaltyPeriod"
},
{
"code": 6264,
"name": "UserPenaltyRewardBpsTooLarge",
"msg": "Value exceeds 1000000"
},
{
"code": 6266,
"name": "InitialPenaltyBpsTooLarge",
"msg": "Value exceeds 1000000"
},
{
"code": 6268,
"name": "MinOfferDeltaBpsTooLarge",
"msg": "Value exceeds 1000000"
},
{
"code": 6270,
"name": "ZeroSecurityDepositBase"
},
{
"code": 6271,
"name": "SecurityDepositBpsTooLarge",
"msg": "Value exceeds 1000000"
},
{
"code": 6514,
"name": "InvalidNewOwner"
},
{
"code": 6516,
"name": "AlreadyOwner"
},
{
"code": 6518,
"name": "NoTransferOwnershipRequest"
},
{
"code": 6520,
"name": "NotPendingOwner"
},
{
"code": 6524,
"name": "InvalidChain"
},
{
"code": 6576,
"name": "ChainNotAllowed"
},
{
"code": 6578,
"name": "InvalidMintRecipient"
},
{
"code": 6768,
"name": "ProposalAlreadyEnacted"
},
{
"code": 6770,
"name": "ProposalDelayNotExpired"
},
{
"code": 6772,
"name": "InvalidProposal"
},
{
"code": 6832,
"name": "AuctionConfigMismatch"
},
{
"code": 7024,
"name": "FastMarketOrderExpired"
},
{
"code": 7026,
"name": "OfferPriceTooHigh"
},
{
"code": 7032,
"name": "AuctionNotActive"
},
{
"code": 7034,
"name": "AuctionPeriodExpired"
},
{
"code": 7036,
"name": "AuctionPeriodNotExpired"
},
{
"code": 7044,
"name": "ExecutorTokenMismatch"
},
{
"code": 7050,
"name": "AuctionNotCompleted"
},
{
"code": 7054,
"name": "CarpingNotAllowed"
},
{
"code": 7056,
"name": "AuctionNotSettled"
},
{
"code": 7058,
"name": "ExecutorNotPreparedBy"
},
{
"code": 7060,
"name": "InvalidOfferToken"
},
{
"code": 7062,
"name": "FastFillTooLarge"
},
{
"code": 7064,
"name": "AuctionExists"
},
{
"code": 7065,
"name": "NoAuction"
},
{
"code": 7066,
"name": "BestOfferTokenMismatch"
},
{
"code": 7068,
"name": "BestOfferTokenRequired"
},
{
"code": 7070,
"name": "PreparedByMismatch"
},
{
"code": 7071,
"name": "PreparedOrderResponseNotRequired"
},
{
"code": 7072,
"name": "AuctionConfigNotRequired"
},
{
"code": 7073,
"name": "BestOfferTokenNotRequired"
},
{
"code": 7076,
"name": "FastFillAlreadyRedeemed"
},
{
"code": 7077,
"name": "FastFillNotRedeemed"
},
{
"code": 7080,
"name": "ReservedSequenceMismatch"
},
{
"code": 7082,
"name": "AuctionAlreadySettled"
},
{
"code": 7084,
"name": "InvalidBaseFeeToken"
},
{
"code": 7086,
"name": "BaseFeeTokenRequired"
},
{
"code": 7280,
"name": "CannotCloseAuctionYet"
},
{
"code": 7282,
"name": "AuctionHistoryNotFull"
},
{
"code": 7284,
"name": "AuctionHistoryFull"
}
],
"types": [
{
"name": "AddCctpRouterEndpointArgs",
"type": {
"kind": "struct",
"fields": [
{
"name": "chain",
"type": "u16"
},
{
"name": "cctp_domain",
"type": "u32"
},
{
"name": "address",
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "mint_recipient",
"type": {
"option": {
"array": [
"u8",
32
]
}
}
}
]
}
},
{
"name": "Auction",
"type": {
"kind": "struct",
"fields": [
{
"name": "bump",
"type": "u8"
},
{
"name": "vaa_hash",
"docs": [
"VAA hash of the auction."
],
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "vaa_timestamp",
"docs": [
"Timestamp of the fast market order VAA."
],
"type": "u32"
},
{
"name": "target_protocol",
"docs": [
"Transfer protocol used to move assets."
],
"type": {
"defined": {
"name": "MessageProtocol"
}
}
},
{
"name": "status",
"docs": [
"Auction status."
],
"type": {
"defined": {
"name": "AuctionStatus"
}
}
},
{
"name": "prepared_by",
"docs": [
"The fee payer when placing the initial offer."
],
"type": "pubkey"
},
{
"name": "info",
"docs": [
"Optional auction info. This field will be `None`` if there is no auction."
],
"type": {
"option": {
"defined": {
"name": "AuctionInfo"
}
}
}
}
]
}
},
{
"name": "AuctionConfig",
"type": {
"kind": "struct",
"fields": [
{
"name": "id",
"docs": [
"Monotonically increasing identifier for auction configs."
],
"type": "u32"
},
{
"name": "parameters",
"docs": [
"Auction parameters, which are validated by [crate::utils::auction::require_valid_parameters]."
],
"type": {
"defined": {
"name": "AuctionParameters"
}
}
}
]
}
},
{
"name": "AuctionDestinationAssetInfo",
"type": {
"kind": "struct",
"fields": [
{
"name": "custody_token_bump",
"type": "u8"
},
{
"name": "amount_out",
"type": "u64"
}
]
}
},
{
"name": "AuctionEntry",
"type": {
"kind": "struct",
"fields": [
{
"name": "vaa_hash",
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "vaa_timestamp",
"type": "u32"
},
{
"name": "info",
"type": {
"defined": {
"name": "AuctionInfo"
}
}
}
]
}
},
{
"name": "AuctionHistory",
"type": {
"kind": "struct",
"fields": [
{
"name": "header",
"type": {
"defined": {
"name": "AuctionHistoryHeader"
}
}
},
{
"name": "data",
"type": {
"vec": {
"defined": {
"name": "AuctionEntry"
}
}
}
}
]
}
},
{
"name": "AuctionHistoryHeader",
"type": {
"kind": "struct",
"fields": [
{
"name": "id",
"type": "u64"
},
{
"name": "min_timestamp",
"type": {
"option": "u32"
}
},
{
"name": "max_timestamp",
"type": {
"option": "u32"
}
}
]
}
},
{
"name": "AuctionHistoryInternal",
"type": {
"kind": "struct",
"fields": [
{
"name": "header",
"type": {
"defined": {
"name": "AuctionHistoryHeader"
}
}
},
{
"name": "num_entries",
"type": "u32"
}
]
}
},
{
"name": "AuctionInfo",
"type": {
"kind": "struct",
"fields": [
{
"name": "config_id",
"type": "u32"
},
{
"name": "custody_token_bump",
"type": "u8"
},
{
"name": "vaa_sequence",
"docs": [
"Sequence of the fast market order VAA."
],
"type": "u64"
},
{
"name": "source_chain",
"docs": [
"The chain where the transfer is initiated."
],
"type": "u16"
},
{
"name": "best_offer_token",
"docs": [
"The highest bidder of the auction."
],
"type": "pubkey"
},
{
"name": "initial_offer_token",
"docs": [
"The initial bidder of the auction."
],
"type": "pubkey"
},
{
"name": "start_slot",
"docs": [
"The slot when the auction started."
],
"type": "u64"
},
{
"name": "amount_in",
"docs": [
"The amount reflecting the amount of assets transferred into the matching engine. This plus",
"and the security deposit are used to participate in the auction."
],
"type": "u64"
},
{
"name": "security_deposit",
"docs": [
"The additional deposit made by the highest bidder.",
"",
"NOTE: This may not be the same denomination as the `amount_in`."
],
"type": "u64"
},
{
"name": "offer_price",
"docs": [
"The offer price of the auction."
],
"type": "u64"
},
{
"name": "redeemer_message_len",
"docs": [
"Length of the redeemer message, which may impact the expense to execute the auction."
],
"type": "u16"
},
{
"name": "destination_asset_info",
"docs": [
"If the destination asset is not equal to the asset used for auctions, this will be some",
"value specifying its custody token bump and amount out.",
"",
"NOTE: Because this is an option, the `AuctionDestinationAssetInfo` having some definition while this",
"field is None will not impact future serialization because the option's serialized value is",
"zero. Only when there will be other assets will this struct's members have to be carefully",
"considered."
],
"type": {
"option": {
"defined": {
"name": "AuctionDestinationAssetInfo"
}
}
}
}
]
}
},
{
"name": "AuctionParameters",
"type": {
"kind": "struct",
"fields": [
{
"name": "user_penalty_reward_bps",
"type": "u32"
},
{
"name": "initial_penalty_bps",
"type": "u32"
},
{
"name": "duration",
"type": "u16"
},
{
"name": "grace_period",
"docs": [
"* The grace period of the auction in slots. This is the number of slots the highest bidder\n * has to execute the fast order before incurring a penalty. About 15 seconds on Avalanche.\n * This value INCLUDES the `_auctionDuration`."
],
"type": "u16"
},
{
"name": "penalty_period",
"type": "u16"
},
{
"name": "min_offer_delta_bps",
"type": "u32"
},
{
"name": "security_deposit_base",
"docs": [
"The base security deposit, which will the the additional amount an auction participant must",
"deposit to participate in an auction."
],
"type": "u64"
},
{
"name": "security_deposit_bps",
"docs": [
"Additional security deposit based on the notional of the order amount."
],
"type": "u32"
}
]
}
},
{
"name": "AuctionSettled",
"type": {
"kind": "struct",
"fields": [
{
"name": "fast_vaa_hash",
"docs": [
"The pubkey of the auction that was settled."
],
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "best_offer_token",
"docs": [
"If there was an active auction, this field will have the pubkey of the best offer token that",
"was paid back and its balance after repayment."
],
"type": {
"option": {
"defined": {
"name": "SettledTokenAccountInfo"
}
}
}
},
{
"name": "base_fee_token",
"docs": [
"Depending on whether there was an active auction, this field will have the pubkey of the",
"base fee token account (if there was an auction) or fee recipient token (if there was no",
"auction)."
],
"type": {
"option": {
"defined": {
"name": "SettledTokenAccountInfo"
}
}
}
},
{
"name": "with_execute",
"docs": [
"This value will only be some if there was no active auction."
],
"type": {
"option": {
"defined": {
"name": "MessageProtocol"
}
}
}
}
]
}
},
{
"name": "AuctionStatus",
"type": {
"kind": "enum",
"variants": [
{
"name": "NotStarted"
},
{
"name": "Active"
},
{
"name": "Completed",
"fields": [
{
"name": "slot",
"type": "u64"
},
{
"name": "execute_penalty",
"type": {
"option": "u64"
}
}
]
},
{
"name": "Settled",
"fields": [
{
"name": "fee",
"type": "u64"
},
{
"name": "total_penalty",
"type": {
"option": "u64"
}
}
]
}
]
}
},
{
"name": "AuctionUpdated",
"type": {
"kind": "struct",
"fields": [
{
"name": "config_id",
"type": "u32"
},
{
"name": "fast_vaa_hash",
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "vaa",
"type": {
"option": "pubkey"
}
},
{
"name": "source_chain",
"type": "u16"
},
{
"name": "target_protocol",
"type": {
"defined": {
"name": "MessageProtocol"
}
}
},
{
"name": "redeemer_message_len",
"type": "u16"
},
{
"name": "end_slot",
"type": "u64"
},
{
"name": "best_offer_token",
"type": "pubkey"
},
{
"name": "token_balance_before",
"type": "u64"
},
{
"name": "amount_in",
"type": "u64"
},
{
"name": "total_deposit",
"type": "u64"
},
{
"name": "max_offer_price_allowed",
"type": {
"option": "u64"
}
}
]
}
},
{
"name": "CctpMessageArgs",
"type": {
"kind": "struct",
"fields": [
{
"name": "encoded_cctp_message",
"type": "bytes"
},
{
"name": "cctp_attestation",
"type": "bytes"
}
]
}
},
{
"name": "Custodian",
"type": {
"kind": "struct",
"fields": [
{
"name": "owner",
"docs": [
"Program's owner."
],
"type": "pubkey"
},
{
"name": "pending_owner",
"type": {
"option": "pubkey"
}
},
{
"name": "paused",
"docs": [
"Boolean indicating whether inbound auctions are paused."
],
"type": "bool"
},
{
"name": "paused_set_by",
"type": "pubkey"
},
{
"name": "owner_assistant",
"docs": [
"Program's assistant."
],
"type": "pubkey"
},
{
"name": "fee_recipient_token",
"type": "pubkey"
},
{
"name": "auction_config_id",
"type": "u32"
},
{
"name": "next_proposal_id",
"type": "u64"
}
]
}
},
{
"name": "Enacted",
"type": {
"kind": "struct",
"fields": [
{
"name": "action",
"type": {
"defined": {
"name": "ProposalAction"
}
}
}
]
}
},
{
"name": "EndpointInfo",
"type": {
"kind": "struct",
"fields": [
{
"name": "chain",
"docs": [
"Emitter chain. Cannot equal `1` (Solana's Chain ID)."
],
"type": "u16"
},
{
"name": "address",
"docs": [
"Emitter address. Cannot be zero address."
],
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "mint_recipient",
"docs": [
"Future-proof field in case another network has token accounts to send assets to instead of",
"sending to the address directly."
],
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "protocol",
"docs": [
"Specific message protocol used to move assets."
],
"type": {
"defined": {
"name": "MessageProtocol"
}
}
}
]
}
},
{
"name": "FastFill",
"type": {
"kind": "struct",
"fields": [
{
"name": "seeds",
"type": {
"defined": {
"name": "FastFillSeeds"
}
}
},
{
"name": "redeemed",
"docs": [
"Whether the [FastFill] has been redeemed via the local Token Router."
],
"type": "bool"
},
{
"name": "info",
"type": {
"defined": {
"name": "FastFillInfo"
}
}
},
{
"name": "redeemer_message",
"type": "bytes"
}
]
}
},
{
"name": "FastFillInfo",
"type": {
"kind": "struct",
"fields": [
{
"name": "prepared_by",
"docs": [
"Who paid the lamports to create the [FastFill] account."
],
"type": "pubkey"
},
{
"name": "amount",
"docs": [
"Fill amount."
],
"type": "u64"
},
{
"name": "redeemer",
"docs": [
"Authority allowed to redeem [FastFill]."
],
"type": "pubkey"
},
{
"name": "timestamp",
"docs": [
"Timestamp at the time a fill was issued. When the fast fill is created, it is set using the",
"current [Clock] unix timestamp."
],
"type": "i64"
}
]
}
},
{
"name": "FastFillRedeemed",
"type": {
"kind": "struct",
"fields": [
{
"name": "prepared_by",
"type": "pubkey"
},
{
"name": "fast_fill",
"type": {
"defined": {
"name": "FastFillSeeds"
}
}
}
]
}
},
{
"name": "FastFillSeeds",
"type": {
"kind": "struct",
"fields": [
{
"name": "source_chain",
"docs": [
"Wormhole chain ID reflecting where the order was created."
],
"type": "u16"
},
{
"name": "order_sender",
"docs": [
"Universal address of the order sender."
],
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "sequence",
"docs": [
"Sequence generated by the [FastFillSequencer](crate::state::FastFillSequencer) when it",
"reserved a sequence number for this fill."
],
"type": "u64"
},
{
"name": "bump",
"docs": [
"Bump seed for the [FastFill] account."
],
"type": "u8"
}
]
}
},
{
"name": "FastFillSequenceReserved",
"type": {
"kind": "struct",
"fields": [
{
"name": "fast_vaa_hash",
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "fast_fill",
"type": {
"defined": {
"name": "FastFillSeeds"
}
}
}
]
}
},
{
"name": "FastFillSequencer",
"type": {
"kind": "struct",
"fields": [
{
"name": "seeds",
"type": {
"defined": {
"name": "FastFillSequencerSeeds"
}
}
},
{
"name": "next_sequence",
"type": "u64"
}
]
}
},
{
"name": "FastFillSequencerSeeds",
"type": {
"kind": "struct",
"fields": [
{
"name": "source_chain",
"type": "u16"
},
{
"name": "sender",
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "bump",
"type": "u8"
}
]
}
},
{
"name": "InitializeArgs",
"type": {
"kind": "struct",
"fields": [
{
"name": "auction_params",
"type": {
"defined": {
"name": "AuctionParameters"
}
}
}
]
}
},
{
"name": "LocalFastOrderFilled",
"type": {
"kind": "struct",
"fields": [
{
"name": "seeds",
"type": {
"defined": {
"name": "FastFillSeeds"
}
}
},
{
"name": "info",
"type": {
"defined": {
"name": "FastFillInfo"
}
}
},
{
"name": "auction",
"type": {
"option": "pubkey"
}
}
]
}
},
{
"name": "MessageProtocol",
"docs": [
"Protocol used to transfer assets."
],
"type": {
"kind": "enum",
"variants": [
{
"name": "None"
},
{
"name": "Local",
"fields": [
{
"name": "program_id",
"type": "pubkey"
}
]
},
{
"name": "Cctp",
"fields": [
{
"name": "domain",
"docs": [
"CCTP domain, which is how CCTP registers identifies foreign networks."
],
"type": "u32"
}
]
}
]
}
},
{
"name": "OrderExecuted",
"type": {
"kind": "struct",
"fields": [
{
"name": "fast_vaa_hash",
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "vaa",
"type": "pubkey"
},
{
"name": "source_chain",
"type": "u16"
},
{
"name": "target_protocol",
"type": {
"defined": {
"name": "MessageProtocol"
}
}
},
{
"name": "penalized",
"type": "bool"
}
]
}
},
{
"name": "PreparedOrderResponse",
"type": {
"kind": "struct",
"fields": [
{
"name": "seeds",
"type": {
"defined": {
"name": "PreparedOrderResponseSeeds"
}
}
},
{
"name": "info",
"type": {
"defined": {
"name": "PreparedOrderResponseInfo"
}
}
},
{
"name": "to_endpoint",
"type": {
"defined": {
"name": "EndpointInfo"
}
}
},
{
"name": "redeemer_message",
"type": "bytes"
}
]
}
},
{
"name": "PreparedOrderResponseInfo",
"type": {
"kind": "struct",
"fields": [
{
"name": "prepared_by",
"type": "pubkey"
},
{
"name": "base_fee_token",
"type": "pubkey"
},
{
"name": "fast_vaa_timestamp",
"type": "u32"
},
{
"name": "source_chain",
"type": "u16"
},
{
"name": "base_fee",
"type": "u64"
},
{
"name": "init_auction_fee",
"type": "u64"
},
{
"name": "sender",
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "redeemer",
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "amount_in",
"type": "u64"
}
]
}
},
{
"name": "PreparedOrderResponseSeeds",
"type": {
"kind": "struct",
"fields": [
{
"name": "fast_vaa_hash",
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "bump",
"type": "u8"
}
]
}
},
{
"name": "Proposal",
"type": {
"kind": "struct",
"fields": [
{
"name": "id",
"type": "u64"
},
{
"name": "bump",
"type": "u8"
},
{
"name": "action",
"type": {
"defined": {
"name": "ProposalAction"
}
}
},
{
"name": "by",
"type": "pubkey"
},
{
"name": "owner",
"type": "pubkey"
},
{
"name": "slot_proposed_at",
"type": "u64"
},
{
"name": "slot_enact_delay",
"type": "u64"
},
{
"name": "slot_enacted_at",
"type": {
"option": "u64"
}
}
]
}
},
{
"name": "ProposalAction",
"type": {
"kind": "enum",
"variants": [
{
"name": "None"
},
{
"name": "UpdateAuctionParameters",
"fields": [
{
"name": "id",
"type": "u32"
},
{
"name": "parameters",
"type": {
"defined": {
"name": "AuctionParameters"
}
}
}
]
}
]
}
},
{
"name": "Proposed",
"type": {
"kind": "struct",
"fields": [
{
"name": "action",
"type": {
"defined": {
"name": "ProposalAction"
}
}
}
]
}
},
{
"name": "RemoteTokenMessenger",
"type": {
"kind": "struct",
"fields": [
{
"name": "domain",
"type": "u32"
},
{
"name": "token_messenger",
"type": {
"array": [
"u8",
32
]
}
}
]
}
},
{
"name": "ReservedFastFillSequence",
"type": {
"kind": "struct",
"fields": [
{
"name": "seeds",
"type": {
"defined": {
"name": "ReservedFastFillSequenceSeeds"
}
}
},
{
"name": "beneficiary",
"type": "pubkey"
},
{
"name": "fast_fill_seeds",
"type": {
"defined": {
"name": "FastFillSeeds"
}
}
}
]
}
},
{
"name": "ReservedFastFillSequenceSeeds",
"type": {
"kind": "struct",
"fields": [
{
"name": "fast_vaa_hash",
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "bump",
"type": "u8"
}
]
}
},
{
"name": "RouterEndpoint",
"docs": [
"Foreign emitter account data."
],
"type": {
"kind": "struct",
"fields": [
{
"name": "bump",
"type": "u8"
},
{
"name": "info",
"type": {
"defined": {
"name": "EndpointInfo"
}
}
}
]
}
},
{
"name": "SettledTokenAccountInfo",
"type": {
"kind": "struct",
"fields": [
{
"name": "key",
"type": "pubkey"
},
{
"name": "balance_after",
"type": "u64"
}
]
}
}
]
}