// Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";
package forecaster;

import "context.proto";

service ForecasterService {
  rpc ForecastLinkCapacity    (ForecastLinkCapacityRequest    ) returns (ForecastLinkCapacityReply    ) {}
  rpc ForecastTopologyCapacity(ForecastTopologyCapacityRequest) returns (ForecastTopologyCapacityReply) {}
}

message ForecastLinkCapacityRequest {
  context.LinkId link_id                 = 1;
  float          forecast_window_seconds = 2;
}

message ForecastLinkCapacityReply {
  context.LinkId link_id                     = 1;
  float          total_capacity_gbps         = 2;
  float          current_used_capacity_gbps  = 3;
  float          forecast_used_capacity_gbps = 4;
}

message ForecastTopologyCapacityRequest {
  context.TopologyId topology_id             = 1;
  float              forecast_window_seconds = 2;
}

message ForecastTopologyCapacityReply {
  repeated ForecastLinkCapacityReply link_capacities = 1;
}
