/*
 Copyright 2020 TATA ELXSI

 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.

 Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
 */
/**
 * @file  Model for NSD related information.
 */
// tslint:disable: completed-docs
import { VNFDAdminDetails } from './VNFDModel';

/** Interface for NSData */
export interface NSData {
    id?: string;
    identifier?: string;
    description?: string;
    version: string;
    name?: string;
    designer?: string;
}

/** Interface for the nscompose descriptors content */
export interface NSDDetails {
    'connection-point': CONNECTIONPOINT[];
    description: string;
    id: string;
    logo: string;
    name: string;
    version: string;
    vld: VLD[];
    _admin: VNFDAdminDetails;
    _id: string;
    _links?: string;
    'constituent-vnfr-ref': string[];
    'virtual-link-desc': VLD[];
    df: DF[];
    'vnfd-id': string[];
    designer?: string;
}

/** Interface for the connection-point */
export interface CONNECTIONPOINT {
    name: string;
    'vld-id-ref': string;
}

/** Interface for the vld */
export interface VLD {
    id: string;
    'mgmt-network'?: boolean;
}

/** Interface Nodes Creation */
export interface COMPOSERNODES {
    id: string;
    reflexive: Boolean;
    'type': string;
    name?: string;
    nodeIndex?: string;
    selectorId?: string;
    x?: number;
    y?: number;
    fx?: number;
    fy?: number;
}

/** Interface for the Tick */
export interface Tick {
    target: TickPath;
    source: TickPath;
    left: boolean;
    right: boolean;
}

/** Interface for the Path */
export interface TickPath {
    x: number;
    y: number;
    id: string;
    'type'?: string;
    name?: string;
    nodeIndex?: string;
}
/** Interface for the GRAPHDETAILS */
export interface GRAPHDETAILS {
    width: number;
    height: number;
    nodeHeight: number;
    nodeWidth: number;
    textX: number;
    textY: number;
    radius: number;
    distance: number;
    strength: number;
    forcex: number;
    forcey: number;
    sourcePaddingYes: number;
    sourcePaddingNo: number;
    targetPaddingYes: number;
    targetPaddingNo: number;
    alphaTarget: number;
    imageX: number;
    imageY: number;
    shiftKeyCode: number;
}

/** Interface for the NS Create params */
export interface NSCREATEPARAMS {
    nsName: string;
    nsDescription: string;
    nsdId: string;
    vimAccountId: string;
    vld: string;
    ssh_keys: string[];
}

/** Interface for the NSI Create params */
export interface NSICREATEPARAMS {
    nsName: string;
    nsDescription: string;
    nstId: string;
    vimAccountId: string;
    'netslice-vld': string;
    ssh_keys: string[];
}

/** Interface for the VDU Primitive Levels */
export interface VDUPRIMITIVELEVEL {
    id: string;
    name: string;
    'vdu-configuration': {};
}

/** Interface for the KDU Primitive Levels */
export interface KDUPRIMITIVELEVEL {
    name: string;
    'juju-bundle': string;
    'kdu-configuration': {};
}

/** Interface for the DF */
export interface DF {
    id: string;
    'vnf-profile': VNFPROFILE[];
}

/** Interface for the DF */
export interface VNFPROFILE {
    id: string;
    'virtual-link-connectivity': VLC[];
    'vnfd-id': string;
}

/** Interface for the VLC */
export interface VLC {
    'constituent-cpd-id': CCI[];
    'virtual-link-profile-id': string;
}

/** Interface for the CCI */
export interface CCI {
    'constituent-base-element-id': string;
    'constituent-cpd-id': string;
}
/** Interface for NSDATACREATION */
export interface NSDATACREATION {
    nsd: NSDETAILDATA;
}
/** Interface for NSDETAILDATA */
export interface NSDETAILDATA {
    nsd: NSDDetails[];
}
