@0xbab3de8275be2271;

using Rust = import "../programming_language/rust.capnp";
$Rust.parentModule("schema::traits");

using CSharp = import "../programming_language/csharp.capnp";
$CSharp.namespace("FabAccessAPI.Schema");

using import "../traits.capnp".TraitSuper;
using import "../utils.capnp".Fallible;
using import "../traits.capnp".TraitError;

# OID for this trait: 1.3.6.1.4.1.61783.612.1.1
#                                   │    │  │ │
#                       RLKM UG PEN ╯    │  │ │
#                                        │  │ │
#                      FabAccess subtree ╯  │ │
#                                           │ │
#                                    Traits ╯ │
#                                             │
#                                   Powerable ╯

interface TraitPowerable extends (TraitSuper) {
    getState @0 () -> StatePowerable;
    turnOn @1 () -> Fallible(TraitPowerable, TraitError(StatePowerable));
    turnOff @2 () -> Fallible(TraitPowerable, TraitError(StatePowerable));
}

struct StatePowerable {
    union {
        off @0 :Void;
        on @1 :Void;
    }
}