ergo-runtime 0.1.0-alpha.1

Canonical primitive contracts and reference implementations for the Ergo graph execution engine
Documentation
use crate::common::{PrimitiveKind, Value, ValueType};
use crate::compute::{
    Cadence, Cardinality, ComputePrimitiveManifest, ErrorSpec, ErrorType, ExecutionSpec, InputSpec,
    OutputSpec, ParameterSpec, StateSpec,
};

pub fn window_manifest() -> ComputePrimitiveManifest {
    ComputePrimitiveManifest {
        id: "window".to_string(),
        version: "0.1.0".to_string(),
        kind: PrimitiveKind::Compute,
        inputs: vec![InputSpec {
            name: "series".to_string(),
            value_type: ValueType::Series,
            required: true,
            cardinality: Cardinality::Single,
        }],
        outputs: vec![OutputSpec {
            name: "result".to_string(),
            value_type: ValueType::Series,
        }],
        parameters: vec![ParameterSpec {
            name: "size".to_string(),
            value_type: ValueType::Number,
            default: Some(Value::Number(5.0)),
            required: false,
            bounds: Some("integer > 0".to_string()),
        }],
        execution: ExecutionSpec {
            deterministic: true,
            cadence: Cadence::Continuous,
            may_error: true,
        },
        errors: ErrorSpec {
            allowed: true,
            types: vec![ErrorType::InvalidParameter],
            deterministic: true,
        },
        state: StateSpec {
            allowed: false,
            resettable: false,
            description: None,
        },
        side_effects: false,
    }
}