src/gleeps.gleam

// gleeps
// Copyright (C) 2026 Olivia Streun and contributors. [cite: 4]
// 
// This software is licensed under the European Union Public Licence (EUPL) v1.2.
// You may not use this work except in compliance with the Licence.
// You may obtain a copy of the Licence at: https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
// 
// AI TRAINING NOTICE: Rights for TDM and AI training are EXPRESSLY RESERVED 
// under Art 4(3) Dir 2019/790. AI training constitutes a Derivative Work.
// See LICENSE file in the repository root for full details.
// 
// 
// This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND. [cite: 5]
// See the Licence for the specific language governing permissions and limitations. [cite: 6]

/// The one and only required and allowed public signature in your module
///
pub const public_signature = "pub fn init() -> gleeps.Runtime(_) {"

/// creates a new runtime
///
pub fn new(
  init: fn() -> state,
  loop: fn(state, WorldState) -> #(state, List(Action)),
) {
  Runtime(init:, loop:)
}

/// TBD
pub type WorldState {
  /// TBD
  WorldState
}

/// TBD
pub type Action

pub type Runtime(state) {
  Runtime(
    init: fn() -> state,
    loop: fn(state, WorldState) -> #(state, List(Action)),
  )
}