syntax = "proto3";

import "google/protobuf/duration.proto";

package nest.trait.ui;

message SoyMessage {
    message SoyTemplateMessage {
        string messageNamespace = 1;
        map<uint32, SoyParameter> parameters = 4;
    }

    message Any {
        string typeUrl = 1;
        bytes value = 2;
    }

    message SoyParameter {
        string key = 1;
        SoyParameterValue value = 2;
    }

    message SoyParameterValue {
        string singleValue = 1;
        bool boolValue = 2;
        int64 intValue = 3;
        Any protoValue = 4;
        StringList stringListValue = 5;
    }

    message StringList {
        repeated string values = 1;
    }

    message SoyTemplateImage {
        string url = 1;
        SoyTemplateMessage accessibilityText = 2;
        int32 width = 3;
        int32 height = 4;
    }

    message SoyTemplateInfo {
        string msgIdString = 1;
    }
}

message EnhancedPathlightSettingsTrait {
    map<uint32, PathlightTrigger> triggers = 1;
    PathlightBrightnessDiscrete brightnessDiscrete = 3;

    enum PathlightBrightnessDiscrete {
        PATHLIGHT_BRIGHTNESS_DISCRETE_UNSPECIFIED = 0;
        PATHLIGHT_BRIGHTNESS_DISCRETE_LOW = 1;
        PATHLIGHT_BRIGHTNESS_DISCRETE_MEDIUM = 2;
        PATHLIGHT_BRIGHTNESS_DISCRETE_HIGH = 3;
    }

    enum PathlightCondition {
        PATHLIGHT_CONDITION_UNSPECIFIED = 0;
        PATHLIGHT_CONDITION_LINE_POWER = 1;
        PATHLIGHT_CONDITION_DARKNESS = 2;
        PATHLIGHT_CONDITION_MOTION = 4;
    }

    message PathlightTrigger {
        google.protobuf.Duration timeout = 1;
        PathlightBrightnessDiscrete brightnessDiscrete = 2;
        repeated PathlightCondition activationConditions = 3;
    }
}

message UserInteractionTrait {
    message UserInteractionDetectedEvent {
        uint32 unused = 31;
    }
}

message EnhancedPathlightStateTrait {
    enum ActivationState {
        ACTIVATION_STATE_UNSPECIFIED = 0;
        ACTIVATION_STATE_OFF = 1;
        ACTIVATION_STATE_TIMED_OUT = 2;
        ACTIVATION_STATE_ACTIVE = 3;
    }

    message PathlightStateChangeEvent {
        ActivationState state = 1;
        repeated EnhancedPathlightSettingsTrait.PathlightCondition conditions = 2;
        repeated EnhancedPathlightSettingsTrait.PathlightCondition activatedConditions = 3;
        ActivationState previousState = 4;
        google.protobuf.Duration activeDuration = 5;
    }
}

message PathlightSettingsTrait {
    PathlightBrightness pathlightBrightness = 1;

    enum PathlightBrightness {
        PATHLIGHT_BRIGHTNESS_UNSPECIFIED = 0;
        PATHLIGHT_BRIGHTNESS_OFF = 1;
        PATHLIGHT_BRIGHTNESS_LOW = 2;
        PATHLIGHT_BRIGHTNESS_MEDIUM = 3;
        PATHLIGHT_BRIGHTNESS_HIGH = 4;
    }
}