use schemars::JsonSchema;
use serde::Deserialize;
#[derive(Debug, Deserialize, JsonSchema)]
pub struct PollNextJobInput {
#[schemars(description = "Job kind offsets to listen for (default: [100])")]
pub kind_offsets: Option<Vec<u16>>,
#[schemars(description = "Timeout in seconds to wait for an incoming job (default: 60)")]
pub timeout_secs: Option<u64>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct SendJobFeedbackInput {
#[schemars(description = "Event ID (hex) of the job request")]
pub job_event_id: String,
#[schemars(description = "Feedback status: payment-required, payment-completed, processing, error, success, or partial")]
pub status: String,
#[schemars(description = "Optional extra info string (e.g. error details)")]
pub extra_info: Option<String>,
#[schemars(description = "Amount in lamports (required for payment-required status)")]
pub amount: Option<u64>,
#[schemars(description = "Payment request string (for payment-required status)")]
pub payment_request: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct SubmitJobResultInput {
#[schemars(description = "Event ID (hex) of the job request")]
pub job_event_id: String,
#[schemars(description = "Result content text to deliver to the customer")]
pub content: String,
#[schemars(description = "Amount earned in lamports (provider's net amount)")]
pub amount: Option<u64>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct CreatePaymentRequestInput {
#[schemars(description = "Amount in lamports (e.g. 10000000 = 0.01 SOL)")]
pub amount: u64,
#[schemars(description = "Human-readable description (e.g. 'Payment for summarization job')")]
pub description: String,
#[schemars(description = "Expiry time in seconds (default: 600)")]
pub expiry_secs: Option<u32>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct CheckPaymentStatusInput {
#[schemars(description = "Payment request string to check (as returned by create_payment_request)")]
pub payment_request: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct PublishCapabilitiesInput {
#[schemars(description = "Supported job kind offsets (default: [100] for kind:5100)")]
pub supported_kinds: Option<Vec<u16>>,
#[schemars(description = "Price per job in lamports (e.g. 10000000 = 0.01 SOL)")]
pub job_price_lamports: Option<u64>,
}