{ "address": "9uF64swnFqo34oFJtv8Qx9JDyXXJz73eDFF4cKRBfQBZ", "metadata": { "name": "solisting", "version": "0.1.0", "spec": "0.1.0" }, "instructions": [ { "name": "accept_order", "discriminator": [ 118, 157, 62, 39, 239, 234, 231, 193 ], "accounts": [ { "name": "seller", "writable": true, "signer": true }, { "name": "resolver" }, { "name": "listing_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 108, 105, 115, 116, 105, 110, 103 ] }, { "kind": "account", "path": "listing_account.seller", "account": "ListingAccount" }, { "kind": "account", "path": "listing_account.listing_id", "account": "ListingAccount" } ] } }, { "name": "order_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 111, 114, 100, 101, 114 ] }, { "kind": "account", "path": "order_account.listing", "account": "OrderAccount" }, { "kind": "account", "path": "order_account.buyer", "account": "OrderAccount" }, { "kind": "account", "path": "order_account.order_id", "account": "OrderAccount" } ] } }, { "name": "escrow_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 101, 115, 99, 114, 111, 119 ] }, { "kind": "account", "path": "seller" }, { "kind": "account", "path": "order_account.escrow_id", "account": "OrderAccount" } ], "program": { "kind": "const", "value": [ 189, 46, 196, 9, 38, 68, 13, 236, 154, 101, 74, 161, 29, 155, 110, 167, 230, 204, 79, 86, 74, 46, 229, 168, 214, 228, 65, 126, 160, 53, 53, 204 ] } } }, { "name": "resolver_entry" }, { "name": "descro_program" }, { "name": "system_program", "address": "11111111111111111111111111111111" } ], "args": [] }, { "name": "cancel_order", "discriminator": [ 95, 129, 237, 240, 8, 49, 223, 132 ], "accounts": [ { "name": "buyer", "writable": true, "signer": true }, { "name": "listing_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 108, 105, 115, 116, 105, 110, 103 ] }, { "kind": "account", "path": "listing_account.seller", "account": "ListingAccount" }, { "kind": "account", "path": "listing_account.listing_id", "account": "ListingAccount" } ] } }, { "name": "order_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 111, 114, 100, 101, 114 ] }, { "kind": "account", "path": "order_account.listing", "account": "OrderAccount" }, { "kind": "account", "path": "order_account.buyer", "account": "OrderAccount" }, { "kind": "account", "path": "order_account.order_id", "account": "OrderAccount" } ] } }, { "name": "escrow_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 101, 115, 99, 114, 111, 119 ] }, { "kind": "account", "path": "order_account.seller", "account": "OrderAccount" }, { "kind": "account", "path": "order_account.escrow_id", "account": "OrderAccount" } ], "program": { "kind": "const", "value": [ 189, 46, 196, 9, 38, 68, 13, 236, 154, 101, 74, 161, 29, 155, 110, 167, 230, 204, 79, 86, 74, 46, 229, 168, 214, 228, 65, 126, 160, 53, 53, 204 ] } } }, { "name": "vault", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 118, 97, 117, 108, 116 ] }, { "kind": "account", "path": "escrow_account" } ], "program": { "kind": "const", "value": [ 189, 46, 196, 9, 38, 68, 13, 236, 154, 101, 74, 161, 29, 155, 110, 167, 230, 204, 79, 86, 74, 46, 229, 168, 214, 228, 65, 126, 160, 53, 53, 204 ] } } }, { "name": "descro_program" }, { "name": "system_program", "address": "11111111111111111111111111111111" } ], "args": [] }, { "name": "close_listing", "discriminator": [ 33, 15, 192, 81, 78, 175, 159, 97 ], "accounts": [ { "name": "seller", "writable": true, "signer": true }, { "name": "listing_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 108, 105, 115, 116, 105, 110, 103 ] }, { "kind": "account", "path": "listing_account.seller", "account": "ListingAccount" }, { "kind": "account", "path": "listing_account.listing_id", "account": "ListingAccount" } ] } } ], "args": [] }, { "name": "close_stale_order", "discriminator": [ 167, 12, 32, 252, 132, 106, 131, 250 ], "accounts": [ { "name": "caller", "writable": true, "signer": true }, { "name": "order_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 111, 114, 100, 101, 114 ] }, { "kind": "account", "path": "order_account.listing", "account": "OrderAccount" }, { "kind": "account", "path": "order_account.buyer", "account": "OrderAccount" }, { "kind": "account", "path": "order_account.order_id", "account": "OrderAccount" } ] } }, { "name": "escrow_account" } ], "args": [] }, { "name": "create_listing", "discriminator": [ 18, 168, 45, 24, 191, 31, 117, 54 ], "accounts": [ { "name": "seller", "writable": true, "signer": true }, { "name": "listing_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 108, 105, 115, 116, 105, 110, 103 ] }, { "kind": "account", "path": "seller" }, { "kind": "arg", "path": "listing_id" } ] } }, { "name": "system_program", "address": "11111111111111111111111111111111" } ], "args": [ { "name": "listing_id", "type": "u64" }, { "name": "canonical_currency", "type": { "defined": { "name": "Currency" } } }, { "name": "price", "type": "u64" }, { "name": "canonical_oracle", "type": { "option": "pubkey" } }, { "name": "alt_currencies", "type": { "vec": { "defined": { "name": "AltCurrencyConfig" } } } }, { "name": "accepted_resolvers", "type": { "vec": "pubkey" } }, { "name": "quantity", "type": "u32" }, { "name": "name", "type": "string" }, { "name": "description", "type": "string" }, { "name": "metadata_uri", "type": "string" } ] }, { "name": "create_order", "discriminator": [ 141, 54, 37, 207, 237, 210, 250, 215 ], "accounts": [ { "name": "buyer", "writable": true, "signer": true }, { "name": "seller" }, { "name": "listing_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 108, 105, 115, 116, 105, 110, 103 ] }, { "kind": "account", "path": "listing_account.seller", "account": "ListingAccount" }, { "kind": "account", "path": "listing_account.listing_id", "account": "ListingAccount" } ] } }, { "name": "order_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 111, 114, 100, 101, 114 ] }, { "kind": "account", "path": "listing_account" }, { "kind": "account", "path": "buyer" }, { "kind": "arg", "path": "order_id" } ] } }, { "name": "escrow_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 101, 115, 99, 114, 111, 119 ] }, { "kind": "account", "path": "seller" }, { "kind": "arg", "path": "escrow_id" } ], "program": { "kind": "const", "value": [ 189, 46, 196, 9, 38, 68, 13, 236, 154, 101, 74, 161, 29, 155, 110, 167, 230, 204, 79, 86, 74, 46, 229, 168, 214, 228, 65, 126, 160, 53, 53, 204 ] } } }, { "name": "descro_vault", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 118, 97, 117, 108, 116 ] }, { "kind": "account", "path": "escrow_account" } ], "program": { "kind": "const", "value": [ 189, 46, 196, 9, 38, 68, 13, 236, 154, 101, 74, 161, 29, 155, 110, 167, 230, 204, 79, 86, 74, 46, 229, 168, 214, 228, 65, 126, 160, 53, 53, 204 ] } } }, { "name": "canonical_oracle", "docs": [ "Pass SystemProgram as placeholder when canonical_oracle is None (stablecoin)." ] }, { "name": "target_oracle", "docs": [ "Pass SystemProgram as placeholder when usd_oracle is None or paying canonical." ] }, { "name": "descro_program" }, { "name": "system_program", "address": "11111111111111111111111111111111" } ], "args": [ { "name": "order_id", "type": "u64" }, { "name": "escrow_id", "type": "u64" }, { "name": "resolver", "type": { "option": "pubkey" } }, { "name": "payment_currency", "type": { "defined": { "name": "Currency" } } }, { "name": "expected_amount", "type": "u64" }, { "name": "max_slippage_bps", "type": "u16" } ] }, { "name": "initialize", "discriminator": [ 175, 175, 109, 31, 13, 152, 155, 237 ], "accounts": [], "args": [] }, { "name": "reject_order", "discriminator": [ 216, 154, 15, 81, 179, 14, 75, 62 ], "accounts": [ { "name": "seller", "writable": true, "signer": true }, { "name": "buyer", "writable": true }, { "name": "listing_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 108, 105, 115, 116, 105, 110, 103 ] }, { "kind": "account", "path": "listing_account.seller", "account": "ListingAccount" }, { "kind": "account", "path": "listing_account.listing_id", "account": "ListingAccount" } ] } }, { "name": "order_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 111, 114, 100, 101, 114 ] }, { "kind": "account", "path": "order_account.listing", "account": "OrderAccount" }, { "kind": "account", "path": "order_account.buyer", "account": "OrderAccount" }, { "kind": "account", "path": "order_account.order_id", "account": "OrderAccount" } ] } }, { "name": "escrow_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 101, 115, 99, 114, 111, 119 ] }, { "kind": "account", "path": "seller" }, { "kind": "account", "path": "order_account.escrow_id", "account": "OrderAccount" } ], "program": { "kind": "const", "value": [ 189, 46, 196, 9, 38, 68, 13, 236, 154, 101, 74, 161, 29, 155, 110, 167, 230, 204, 79, 86, 74, 46, 229, 168, 214, 228, 65, 126, 160, 53, 53, 204 ] } } }, { "name": "vault", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 118, 97, 117, 108, 116 ] }, { "kind": "account", "path": "escrow_account" } ], "program": { "kind": "const", "value": [ 189, 46, 196, 9, 38, 68, 13, 236, 154, 101, 74, 161, 29, 155, 110, 167, 230, 204, 79, 86, 74, 46, 229, 168, 214, 228, 65, 126, 160, 53, 53, 204 ] } } }, { "name": "descro_program" }, { "name": "system_program", "address": "11111111111111111111111111111111" } ], "args": [] }, { "name": "update_listing", "discriminator": [ 192, 174, 210, 68, 116, 40, 242, 253 ], "accounts": [ { "name": "seller", "signer": true }, { "name": "listing_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 108, 105, 115, 116, 105, 110, 103 ] }, { "kind": "account", "path": "listing_account.seller", "account": "ListingAccount" }, { "kind": "account", "path": "listing_account.listing_id", "account": "ListingAccount" } ] } } ], "args": [ { "name": "canonical_currency", "type": { "defined": { "name": "Currency" } } }, { "name": "price", "type": "u64" }, { "name": "canonical_oracle", "type": { "option": "pubkey" } }, { "name": "alt_currencies", "type": { "vec": { "defined": { "name": "AltCurrencyConfig" } } } }, { "name": "accepted_resolvers", "type": { "vec": "pubkey" } }, { "name": "quantity", "type": "u32" }, { "name": "name", "type": "string" }, { "name": "description", "type": "string" }, { "name": "metadata_uri", "type": "string" } ] } ], "accounts": [ { "name": "ListingAccount", "discriminator": [ 59, 89, 136, 25, 21, 196, 183, 13 ] }, { "name": "OrderAccount", "discriminator": [ 79, 67, 112, 155, 214, 14, 32, 55 ] } ], "errors": [ { "code": 6000, "name": "ListingNotActive", "msg": "Listing is not active" }, { "code": 6001, "name": "OutOfStock", "msg": "No quantity available" }, { "code": 6002, "name": "Unauthorized", "msg": "Signer is not authorized" }, { "code": 6003, "name": "CurrencyNotAccepted", "msg": "Currency not accepted by this listing" }, { "code": 6004, "name": "ResolverNotAccepted", "msg": "Resolver is not accepted by this listing" }, { "code": 6005, "name": "OracleRequired", "msg": "Oracle account is required but was not provided (non-stablecoin currency)" }, { "code": 6006, "name": "OracleMismatch", "msg": "Passed oracle account key does not match the address stored in the listing" }, { "code": 6007, "name": "OraclePriceUnavailable", "msg": "Oracle price is unavailable, stale, or has too wide a confidence interval" }, { "code": 6008, "name": "SlippageExceeded", "msg": "Slippage tolerance exceeded — oracle rate moved unfavorably since tx was built" }, { "code": 6009, "name": "SplNotImplemented", "msg": "SPL payment path not yet implemented — descro_spl does not exist" }, { "code": 6010, "name": "EscrowStateUnexpected", "msg": "Descro escrow is not in expected state" }, { "code": 6011, "name": "InvalidDescroProgram", "msg": "Descro program address mismatch" } ], "types": [ { "name": "AltCurrencyConfig", "docs": [ "Per-alt-currency oracle configuration. Each alt currency carries its own Pyth feed", "because different tokens have different price feeds." ], "type": { "kind": "struct", "fields": [ { "name": "currency", "type": { "defined": { "name": "Currency" } } }, { "name": "usd_oracle", "docs": [ "Pyth V2 PriceFeedAccount for this token priced in USD (TOKEN/USD).", "`None` = treat as a $1.00 USD stablecoin — no oracle account required at order time." ], "type": { "option": "pubkey" } } ] } }, { "name": "Currency", "docs": [ "Payment currency identifier. Amounts are always in the currency's smallest unit:", "Sol → Lamports (u64), Spl → token units (smallest unit per `decimals`)." ], "type": { "kind": "enum", "variants": [ { "name": "Sol" }, { "name": "Spl", "fields": [ { "name": "mint", "type": "pubkey" }, { "name": "decimals", "type": "u8" } ] } ] } }, { "name": "ListingAccount", "type": { "kind": "struct", "fields": [ { "name": "seller", "type": "pubkey" }, { "name": "canonical_currency", "docs": [ "Sole source of truth for price. All alt_currencies are derived from this via oracle." ], "type": { "defined": { "name": "Currency" } } }, { "name": "price", "docs": [ "Price in canonical_currency's smallest unit." ], "type": "u64" }, { "name": "canonical_oracle", "docs": [ "Pyth V2 PriceFeedAccount for the canonical currency priced in USD.", "`None` = canonical is a $1.00 USD stablecoin.", "For Sol canonical: set to the SOL/USD Pyth feed." ], "type": { "option": "pubkey" } }, { "name": "alt_currencies", "docs": [ "Alt currencies the seller accepts. Amounts are oracle-computed at create_order time.", "Empty = no oracle ever needed." ], "type": { "vec": { "defined": { "name": "AltCurrencyConfig" } } } }, { "name": "accepted_resolvers", "docs": [ "Resolvers the seller accepts for dispute resolution. Empty = any resolver ok." ], "type": { "vec": "pubkey" } }, { "name": "quantity", "docs": [ "Total units the seller offers (includes quantity_reserved)." ], "type": "u32" }, { "name": "quantity_reserved", "docs": [ "Units held by pending orders. available = quantity - quantity_reserved." ], "type": "u32" }, { "name": "name", "type": "string" }, { "name": "description", "type": "string" }, { "name": "metadata_uri", "type": "string" }, { "name": "listing_id", "type": "u64" }, { "name": "is_active", "type": "bool" }, { "name": "bump", "type": "u8" } ] } }, { "name": "OrderAccount", "type": { "kind": "struct", "fields": [ { "name": "listing", "type": "pubkey" }, { "name": "buyer", "type": "pubkey" }, { "name": "seller", "type": "pubkey" }, { "name": "resolver", "type": { "option": "pubkey" } }, { "name": "payment_currency", "docs": [ "The currency the buyer chose to pay in." ], "type": { "defined": { "name": "Currency" } } }, { "name": "amount", "docs": [ "Actual amount paid (may differ from price when oracle-converted)." ], "type": "u64" }, { "name": "escrow_account", "docs": [ "The descro EscrowAccount PDA for this order." ], "type": "pubkey" }, { "name": "escrow_id", "docs": [ "Derived from order_account PDA bytes[0..8]; used as descro escrow_id seed." ], "type": "u64" }, { "name": "order_id", "type": "u64" }, { "name": "created_at", "type": "i64" }, { "name": "bump", "type": "u8" } ] } } ], "constants": [ { "name": "SEED", "type": "string", "value": "\"anchor\"" } ] }