use super::Rule;

mod scan;
mod authoring;
mod template;
mod validate;

pub(super) use authoring::{
    parse_assertions,
    parse_response_captures,
    validate_fragment_guards,
};
pub(super) use scan::{
    ScannedRequest,
    scan_request_block,
};
pub(super) use template::parse_request_template;
pub(super) use validate::{
    ValidatedMcpCallKind,
    ValidatedSseActionKind,
    ValidatedWsActionKind,
    validate_graphql_request,
    validate_mcp_call,
    validate_protocol_directives,
    validate_sse_action,
    validate_ws_action,
};

fn request_error(message: &str, span: pest::Span<'_>) -> pest::error::Error<Rule> {
    pest::error::Error::<Rule>::new_from_span(
        pest::error::ErrorVariant::CustomError {
            message: message.to_string(),
        },
        span,
    )
}