/*
 * Copyright 2018-present Open Networking Foundation
 *
 * 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.
 */
/*
Defines a DeviceManager Interface - Used for unit testing of the flow decomposer only at this
time.
*/

package coreif

import (
	"context"
	"github.com/opencord/voltha-protos/v3/go/voltha"
)

// DeviceManager represents a generic device manager
type DeviceManager interface {
	GetDevice(context.Context, string) (*voltha.Device, error)
	IsRootDevice(string) (bool, error)
	NotifyInvalidTransition(context.Context, *voltha.Device) error
	SetAdminStateToEnable(context.Context, *voltha.Device) error
	CreateLogicalDevice(context.Context, *voltha.Device) error
	SetupUNILogicalPorts(context.Context, *voltha.Device) error
	DisableAllChildDevices(context.Context, *voltha.Device) error
	DeleteLogicalDevice(context.Context, *voltha.Device) error
	DeleteLogicalPorts(context.Context, *voltha.Device) error
	DeleteAllChildDevices(context.Context, *voltha.Device) error
	RunPostDeviceDelete(context.Context, *voltha.Device) error
}
