Documentation
// Copyright (c) 2026, Salesforce, Inc.,
// All rights reserved.
// For full license text, see the LICENSE.txt file

use pel::{ContextId, Reference};

// Keys
pub(crate) const ATTRIBUTES: &str = "attributes";
pub(crate) const HEADERS: &str = "headers";
pub(crate) const METHOD: &str = "method";
pub(crate) const PAYLOAD: &str = "payload";
pub(crate) const QUERY_PARAMS: &str = "queryParams";
pub(crate) const REQUEST_PATH: &str = "requestPath";
pub(crate) const REQUEST_URI: &str = "requestUri";
pub(crate) const REMOTE_ADDRESS: &str = "remoteAddress";
pub(crate) const STATUS_CODE: &str = "statusCode";
pub(crate) const LOCAL_ADDRESS: &str = "localAddress";
pub(crate) const QUERY_STRING: &str = "queryString";
pub(crate) const SCHEME: &str = "scheme";
pub(crate) const VARS: &str = "vars";
pub(crate) const VERSION: &str = "version";
// Authentication Keys

pub(crate) const AUTHENTICATION: &str = "authentication";
pub(crate) const CLIENT_ID: &str = "clientId";
pub(crate) const CLIENT_NAME: &str = "clientName";
pub(crate) const PRINCIPAL: &str = "principal";
pub(crate) const PROPERTIES: &str = "properties";

// Headers
pub(crate) const METHOD_HEADER: &str = ":method";
pub(crate) const PATH_HEADER: &str = ":path";
pub(crate) const STATUS_CODE_HEADER: &str = ":status";
pub(crate) const SCHEME_HEADER: &str = ":scheme";

pub(crate) const CONTEXT_ID: ContextId = ContextId::new(module_path!());
pub(crate) const ATTRIBUTES_REFERENCE: Reference = CONTEXT_ID.first_reference();
pub(crate) const HEADERS_REFERENCE: Reference = ATTRIBUTES_REFERENCE.next();
pub(crate) const QUERY_PARAMS_REFERENCE: Reference = HEADERS_REFERENCE.next();
pub(crate) const VARS_REFERENCE: Reference = QUERY_PARAMS_REFERENCE.next();
pub(crate) const AUTHENTICATION_REFERENCE: Reference = VARS_REFERENCE.next();

pub(crate) const SOURCE_ADDRESS: &[&str] = &["source", "address"];
pub(crate) const DESTINATION_ADDRESS: &[&str] = &["destination", "address"];
pub(crate) const REQUEST_SCHEME: &[&str] = &["request", "scheme"];
pub(crate) const REQUEST_PROTOCOL: &[&str] = &["request", "protocol"];