export const LUA_EXAMPLES = {
  basic: `-- Basic Hello World
log("Hello from Lua!")
return { message = "Success", timestamp = os.time() }`,

  dataProcessing: `-- Data Processing Example
-- Access parameters via context.data
log("Processing data...")

local input = context.data or {}
local result = {
  count = 0,
  items = {}
}

if input.items then
  for i, item in ipairs(input.items) do
    if item.value > 10 then
      result.count = result.count + 1
      table.insert(result.items, item)
    end
  end
end

log("Found " .. result.count .. " items")
return result`,

  validation: `-- Validation Example
-- Returns true/false based on validation rules
local data = context.data or {}

if not data.email then
  log("Error: Email is required")
  return { valid = false, error = "Email is required" }
end

if not string.match(data.email, "@") then
  log("Error: Invalid email format")
  return { valid = false, error = "Invalid email format" }
end

if data.age and data.age < 18 then
  log("Error: Must be 18 or older")
  return { valid = false, error = "Must be 18 or older" }
end

log("Validation passed")
return { valid = true }`,

  transformation: `-- Data Transformation Example
-- Transform input data structure
local input = context.data or {}

local output = {
  fullName = (input.firstName or "") .. " " .. (input.lastName or ""),
  displayAge = tostring(input.age or 0) .. " years old",
  status = input.isActive and "Active" or "Inactive",
  metadata = {
    processedAt = os.time(),
    processedBy = "lua_transform"
  }
}

log("Transformed data for: " .. output.fullName)
return output`,

  calculation: `-- Complex Calculation Example
-- Perform business logic calculations
local data = context.data or {}

local subtotal = data.price or 0
local quantity = data.quantity or 1
local discount = data.discount or 0

local total = subtotal * quantity
local discountAmount = total * (discount / 100)
local finalTotal = total - discountAmount

local taxRate = 0.08
local taxAmount = finalTotal * taxRate
local grandTotal = finalTotal + taxAmount

log("Calculation complete:")
log("  Subtotal: $" .. string.format("%.2f", subtotal))
log("  Quantity: " .. quantity)
log("  Discount: " .. discount .. "%")
log("  Tax: $" .. string.format("%.2f", taxAmount))
log("  Grand Total: $" .. string.format("%.2f", grandTotal))

return {
  subtotal = subtotal,
  quantity = quantity,
  discount = discount,
  discountAmount = discountAmount,
  taxAmount = taxAmount,
  grandTotal = grandTotal
}`,

  conditional: `-- Conditional Logic Example
-- Workflow decision making
local data = context.data or {}
local user = context.user or {}

log("Evaluating conditions...")

if user.role == "admin" then
  log("Admin user - granting full access")
  return { 
    approved = true, 
    accessLevel = "full",
    reason = "Admin override"
  }
end

if data.score and data.score >= 80 then
  log("Score passed threshold")
  return { 
    approved = true, 
    accessLevel = "standard",
    reason = "Score requirement met"
  }
end

if data.verified == true then
  log("User is verified")
  return { 
    approved = true, 
    accessLevel = "limited",
    reason = "Verified user"
  }
end

log("Conditions not met")
return { 
  approved = false, 
  accessLevel = "none",
  reason = "Requirements not satisfied"
}`,

  arrayOperations: `-- Array Operations Example
-- Working with lists and tables
local data = context.data or {}
local numbers = data.numbers or {1, 2, 3, 4, 5}

local sum = 0
local max = numbers[1] or 0
local min = numbers[1] or 0

for i, num in ipairs(numbers) do
  sum = sum + num
  if num > max then max = num end
  if num < min then min = num end
end

local average = sum / #numbers

log("Array statistics:")
log("  Count: " .. #numbers)
log("  Sum: " .. sum)
log("  Average: " .. string.format("%.2f", average))
log("  Min: " .. min)
log("  Max: " .. max)

return {
  count = #numbers,
  sum = sum,
  average = average,
  min = min,
  max = max,
  values = numbers
}`,

  stringManipulation: `-- String Manipulation Example
-- Text processing and formatting
local data = context.data or {}
local text = data.text or "hello world"

local upperText = string.upper(text)
local lowerText = string.lower(text)
local length = string.len(text)

local words = {}
for word in string.gmatch(text, "%S+") do
  table.insert(words, word)
end

local reversed = string.reverse(text)

local hasDigit = string.match(text, "%d") ~= nil
local hasSpecial = string.match(text, "[^%w%s]") ~= nil

log("Text analysis complete:")
log("  Length: " .. length)
log("  Words: " .. #words)
log("  Has digits: " .. tostring(hasDigit))

return {
  original = text,
  upper = upperText,
  lower = lowerText,
  length = length,
  wordCount = #words,
  words = words,
  reversed = reversed,
  hasDigit = hasDigit,
  hasSpecial = hasSpecial
}`
} as const

export type LuaExampleKey = keyof typeof LUA_EXAMPLES
