///|
pub fn github_cookbook() -> String {
  let builder = StringBuilder::new()
  builder.write_string("# GitHub Webhook Receiver\n\n")
  builder.write_string("1. Configure secret in VerificationPolicy.\n")
  builder.write_string(
    "2. Forward x-hub-signature-256, x-github-event, x-github-delivery.\n",
  )
  builder.write_string("3. Call verify_request or run_guard_pipeline.\n")
  builder.write_string("4. Dispatch only when verification succeeds.\n")
  builder.to_string()
}

///|
pub fn feishu_cookbook() -> String {
  let builder = StringBuilder::new()
  builder.write_string("# Feishu Event Receiver\n\n")
  builder.write_string("1. Configure Feishu provider profile.\n")
  builder.write_string(
    "2. Forward x-lark-signature, timestamp, nonce, event type.\n",
  )
  builder.write_string("3. Keep replay store active for nonce protection.\n")
  builder.write_string("4. Route im.message.receive_v1 to a message handler.\n")
  builder.to_string()
}

///|
pub fn stripe_cookbook() -> String {
  let builder = StringBuilder::new()
  builder.write_string("# Stripe Style Receiver\n\n")
  builder.write_string(
    "1. Configure stripe provider profile and v1= signature prefix.\n",
  )
  builder.write_string("2. Validate timestamp before dispatch.\n")
  builder.write_string("3. Treat event id as idempotency key.\n")
  builder.write_string(
    "4. Return a non-retryable response after accepted duplicate events.\n",
  )
  builder.to_string()
}

///|
pub fn cookbook_for(provider : String) -> String {
  match provider {
    "github" => github_cookbook()
    "feishu" => feishu_cookbook()
    "stripe" => stripe_cookbook()
    _ =>
      "# Generic Webhook Receiver\n\nUse ProviderProfile::generic() and configure headers explicitly.\n"
  }
}

///|
pub fn combined_cookbook() -> String {
  github_cookbook() + "\n" + feishu_cookbook() + "\n" + stripe_cookbook()
}