161847f8eSopenharmony_ci/*
261847f8eSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
361847f8eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
461847f8eSopenharmony_ci * you may not use this file except in compliance with the License.
561847f8eSopenharmony_ci * You may obtain a copy of the License at
661847f8eSopenharmony_ci *
761847f8eSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
861847f8eSopenharmony_ci *
961847f8eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1061847f8eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1161847f8eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1261847f8eSopenharmony_ci * See the License for the specific language governing permissions and
1361847f8eSopenharmony_ci * limitations under the License.
1461847f8eSopenharmony_ci */
1561847f8eSopenharmony_ci
1661847f8eSopenharmony_ci/**
1761847f8eSopenharmony_ci * @file
1861847f8eSopenharmony_ci * @kit MindSporeLiteKit
1961847f8eSopenharmony_ci */
2061847f8eSopenharmony_ci
2161847f8eSopenharmony_ciimport { Callback } from './@ohos.base';
2261847f8eSopenharmony_ci
2361847f8eSopenharmony_ci/**
2461847f8eSopenharmony_ci * @namespace mindSporeLite
2561847f8eSopenharmony_ci * @syscap SystemCapability.AI.MindSporeLite
2661847f8eSopenharmony_ci * @stagemodelonly
2761847f8eSopenharmony_ci * @since 10
2861847f8eSopenharmony_ci */
2961847f8eSopenharmony_cideclare namespace mindSporeLite {
3061847f8eSopenharmony_ci  /**
3161847f8eSopenharmony_ci   * Create a Model instance from file path
3261847f8eSopenharmony_ci   * @param { string } model - model indicates model path to be loaded
3361847f8eSopenharmony_ci   * @param { Context } context - context indicates model context information
3461847f8eSopenharmony_ci   * @returns { Promise<Model> } the promise returned by the function.
3561847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
3661847f8eSopenharmony_ci   * @stagemodelonly
3761847f8eSopenharmony_ci   * @since 10
3861847f8eSopenharmony_ci   */
3961847f8eSopenharmony_ci  function loadModelFromFile(
4061847f8eSopenharmony_ci    model: string,
4161847f8eSopenharmony_ci    context?: Context): Promise<Model>;
4261847f8eSopenharmony_ci
4361847f8eSopenharmony_ci  /**
4461847f8eSopenharmony_ci   * Create a Model instance from file path.
4561847f8eSopenharmony_ci   * @param { string } model - model indicates model path to be loaded
4661847f8eSopenharmony_ci   * @param { Callback<Model> } callback - the callback of model
4761847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
4861847f8eSopenharmony_ci   * @stagemodelonly
4961847f8eSopenharmony_ci   * @since 10
5061847f8eSopenharmony_ci   */
5161847f8eSopenharmony_ci  function loadModelFromFile(
5261847f8eSopenharmony_ci    model: string, callback: Callback<Model>): void;
5361847f8eSopenharmony_ci  
5461847f8eSopenharmony_ci  /**
5561847f8eSopenharmony_ci   * Create a Model instance from file path.
5661847f8eSopenharmony_ci   * @param { string } model - model indicates model path to be loaded
5761847f8eSopenharmony_ci   * @param { Context } context - context indicates model context information
5861847f8eSopenharmony_ci   * @param { Callback<Model> } callback - the callback of model
5961847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
6061847f8eSopenharmony_ci   * @stagemodelonly
6161847f8eSopenharmony_ci   * @since 10
6261847f8eSopenharmony_ci   */
6361847f8eSopenharmony_ci  function loadModelFromFile(
6461847f8eSopenharmony_ci    model: string,
6561847f8eSopenharmony_ci    context: Context, callback: Callback<Model>): void;
6661847f8eSopenharmony_ci  
6761847f8eSopenharmony_ci  /**
6861847f8eSopenharmony_ci   * Create a Model instance from buffer
6961847f8eSopenharmony_ci   * @param { ArrayBuffer } model - model indicates model buffer to be loaded
7061847f8eSopenharmony_ci   * @param { Context } [context] - context indicates model context information
7161847f8eSopenharmony_ci   * @returns { Promise<Model> } the promise returned by the function.
7261847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
7361847f8eSopenharmony_ci   * @stagemodelonly
7461847f8eSopenharmony_ci   * @since 10
7561847f8eSopenharmony_ci   */
7661847f8eSopenharmony_ci  function loadModelFromBuffer(
7761847f8eSopenharmony_ci    model: ArrayBuffer,
7861847f8eSopenharmony_ci    context?: Context): Promise<Model>;
7961847f8eSopenharmony_ci
8061847f8eSopenharmony_ci  /**
8161847f8eSopenharmony_ci   * Create a Model instance from buffer
8261847f8eSopenharmony_ci   * @param { ArrayBuffer } model - model indicates model buffer to be loaded
8361847f8eSopenharmony_ci   * @param { Callback<Model> } callback - the callback of model
8461847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
8561847f8eSopenharmony_ci   * @stagemodelonly
8661847f8eSopenharmony_ci   * @since 10
8761847f8eSopenharmony_ci   */
8861847f8eSopenharmony_ci  function loadModelFromBuffer(
8961847f8eSopenharmony_ci    model: ArrayBuffer, callback: Callback<Model>): void;
9061847f8eSopenharmony_ci
9161847f8eSopenharmony_ci  /**
9261847f8eSopenharmony_ci   * Create a Model instance from buffer
9361847f8eSopenharmony_ci   * @param { ArrayBuffer } model - model indicates model buffer to be loaded
9461847f8eSopenharmony_ci   * @param { Context } context - context indicates model context information
9561847f8eSopenharmony_ci   * @param { Callback<Model> } callback - the callback of model
9661847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
9761847f8eSopenharmony_ci   * @stagemodelonly
9861847f8eSopenharmony_ci   * @since 10
9961847f8eSopenharmony_ci   */
10061847f8eSopenharmony_ci  function loadModelFromBuffer(
10161847f8eSopenharmony_ci    model: ArrayBuffer,
10261847f8eSopenharmony_ci    context: Context, callback: Callback<Model>): void;
10361847f8eSopenharmony_ci
10461847f8eSopenharmony_ci  /**
10561847f8eSopenharmony_ci   * Creates a Model instance file description
10661847f8eSopenharmony_ci   * @param { number } model - model indicates model file description to be loaded
10761847f8eSopenharmony_ci   * @param { Context } [context] - context indicates model context information
10861847f8eSopenharmony_ci   * @returns { Promise<Model> } the promise returned by the function.
10961847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
11061847f8eSopenharmony_ci   * @stagemodelonly
11161847f8eSopenharmony_ci   * @since 10
11261847f8eSopenharmony_ci   */
11361847f8eSopenharmony_ci  function loadModelFromFd(
11461847f8eSopenharmony_ci    model: number,
11561847f8eSopenharmony_ci    context?: Context): Promise<Model>;
11661847f8eSopenharmony_ci
11761847f8eSopenharmony_ci  /**
11861847f8eSopenharmony_ci   * Create a Model instance from file description
11961847f8eSopenharmony_ci   * @param { number } model - model indicates model file description to be loaded
12061847f8eSopenharmony_ci   * @param { Callback<Model> } callback - the callback of model
12161847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
12261847f8eSopenharmony_ci   * @stagemodelonly
12361847f8eSopenharmony_ci   * @since 10
12461847f8eSopenharmony_ci   */
12561847f8eSopenharmony_ci  function loadModelFromFd(
12661847f8eSopenharmony_ci    model: number, callback: Callback<Model>): void;
12761847f8eSopenharmony_ci  
12861847f8eSopenharmony_ci  /**
12961847f8eSopenharmony_ci   * Create a Model instance from file description
13061847f8eSopenharmony_ci   * @param { number } model - model indicates model file description to be loaded
13161847f8eSopenharmony_ci   * @param { Context } context - context indicates model context information
13261847f8eSopenharmony_ci   * @param { Callback<Model> } callback - the callback of model
13361847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
13461847f8eSopenharmony_ci   * @stagemodelonly
13561847f8eSopenharmony_ci   * @since 10
13661847f8eSopenharmony_ci   */
13761847f8eSopenharmony_ci  function loadModelFromFd(
13861847f8eSopenharmony_ci    model: number,
13961847f8eSopenharmony_ci    context: Context, callback: Callback<Model>): void;
14061847f8eSopenharmony_ci
14161847f8eSopenharmony_ci  /**
14261847f8eSopenharmony_ci   * Load train model from file
14361847f8eSopenharmony_ci   * @param { string } model - model file path
14461847f8eSopenharmony_ci   * @param { TrainCfg } [trainCfg] - model train configuration
14561847f8eSopenharmony_ci   * @param { Context } [context] - model build context
14661847f8eSopenharmony_ci   * @returns { Promise<Model> } the promise of the built model
14761847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
14861847f8eSopenharmony_ci   * @stagemodelonly
14961847f8eSopenharmony_ci   * @since 12
15061847f8eSopenharmony_ci   */
15161847f8eSopenharmony_ci  function loadTrainModelFromFile(
15261847f8eSopenharmony_ci    model: string,
15361847f8eSopenharmony_ci    trainCfg?: TrainCfg,
15461847f8eSopenharmony_ci    context?: Context): Promise<Model>;
15561847f8eSopenharmony_ci
15661847f8eSopenharmony_ci  /**
15761847f8eSopenharmony_ci   * Load train model from buffer
15861847f8eSopenharmony_ci   * @param { ArrayBuffer } model - model buffer
15961847f8eSopenharmony_ci   * @param { TrainCfg } [trainCfg] - model train configuration
16061847f8eSopenharmony_ci   * @param { Context } [context] - model build context
16161847f8eSopenharmony_ci   * @returns { Promise<Model> } the promise of the built model
16261847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
16361847f8eSopenharmony_ci   * @stagemodelonly
16461847f8eSopenharmony_ci   * @since 12
16561847f8eSopenharmony_ci   */
16661847f8eSopenharmony_ci  function loadTrainModelFromBuffer(
16761847f8eSopenharmony_ci    model: ArrayBuffer,
16861847f8eSopenharmony_ci    trainCfg?: TrainCfg,
16961847f8eSopenharmony_ci    context?: Context): Promise<Model>;
17061847f8eSopenharmony_ci
17161847f8eSopenharmony_ci  /**
17261847f8eSopenharmony_ci   * Load train model from file description
17361847f8eSopenharmony_ci   * @param { number } model - model file description
17461847f8eSopenharmony_ci   * @param { TrainCfg } [trainCfg] - model train configuration
17561847f8eSopenharmony_ci   * @param { Context } [context] - model build context
17661847f8eSopenharmony_ci   * @returns { Promise<Model> } the promise of the built model
17761847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
17861847f8eSopenharmony_ci   * @stagemodelonly
17961847f8eSopenharmony_ci   * @since 12
18061847f8eSopenharmony_ci   */
18161847f8eSopenharmony_ci  function loadTrainModelFromFd(
18261847f8eSopenharmony_ci    model: number,
18361847f8eSopenharmony_ci    trainCfg?: TrainCfg,
18461847f8eSopenharmony_ci    context?: Context): Promise<Model>;
18561847f8eSopenharmony_ci
18661847f8eSopenharmony_ci  /**
18761847f8eSopenharmony_ci   * Provides manages model function. Including get inputs, predict ,resize.
18861847f8eSopenharmony_ci   * @typedef Model
18961847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
19061847f8eSopenharmony_ci   * @stagemodelonly
19161847f8eSopenharmony_ci   * @since 10
19261847f8eSopenharmony_ci   */
19361847f8eSopenharmony_ci  interface Model {
19461847f8eSopenharmony_ci    /**
19561847f8eSopenharmony_ci     * The learning rate of the training model
19661847f8eSopenharmony_ci     * @type {?number}
19761847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
19861847f8eSopenharmony_ci     * @stagemodelonly
19961847f8eSopenharmony_ci     * @since 12
20061847f8eSopenharmony_ci     */
20161847f8eSopenharmony_ci    learningRate?: number;
20261847f8eSopenharmony_ci
20361847f8eSopenharmony_ci    /**
20461847f8eSopenharmony_ci     * The running mode of the model
20561847f8eSopenharmony_ci     * @type {?boolean}
20661847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
20761847f8eSopenharmony_ci     * @stagemodelonly
20861847f8eSopenharmony_ci     * @since 12
20961847f8eSopenharmony_ci     */
21061847f8eSopenharmony_ci    trainMode?: boolean;
21161847f8eSopenharmony_ci
21261847f8eSopenharmony_ci    /**
21361847f8eSopenharmony_ci     * Get model input tensors.
21461847f8eSopenharmony_ci     * @returns { MSTensor[] } the MSTensor array of the inputs.
21561847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
21661847f8eSopenharmony_ci     * @stagemodelonly
21761847f8eSopenharmony_ci     * @since 10
21861847f8eSopenharmony_ci     */
21961847f8eSopenharmony_ci    getInputs(): MSTensor[];
22061847f8eSopenharmony_ci
22161847f8eSopenharmony_ci    /**
22261847f8eSopenharmony_ci     * Infer model
22361847f8eSopenharmony_ci     * @param { MSTensor[] } inputs - indicates the MSTensor array of the inputs.
22461847f8eSopenharmony_ci     * @param { Callback<MSTensor[]> }  callback - the callback of MSTensor array.
22561847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
22661847f8eSopenharmony_ci     * @stagemodelonly
22761847f8eSopenharmony_ci     * @since 10
22861847f8eSopenharmony_ci     */
22961847f8eSopenharmony_ci    predict(inputs: MSTensor[], callback: Callback<MSTensor[]>): void;
23061847f8eSopenharmony_ci
23161847f8eSopenharmony_ci    /**
23261847f8eSopenharmony_ci     * Infer model
23361847f8eSopenharmony_ci     * @param { MSTensor[] } inputs - indicates the MSTensor array of the inputs.
23461847f8eSopenharmony_ci     * @returns { Promise<MSTensor[]> } the promise returned by the function.
23561847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
23661847f8eSopenharmony_ci     * @stagemodelonly
23761847f8eSopenharmony_ci     * @since 10
23861847f8eSopenharmony_ci     */
23961847f8eSopenharmony_ci    predict(inputs: MSTensor[]): Promise<MSTensor[]>;
24061847f8eSopenharmony_ci
24161847f8eSopenharmony_ci    /**
24261847f8eSopenharmony_ci     * resize model input
24361847f8eSopenharmony_ci     * @param { MSTensor[] } inputs - indicates the MSTensor array of the inputs.
24461847f8eSopenharmony_ci     * @param { Array<Array<number>> } dims - indicates the target new shape array
24561847f8eSopenharmony_ci     * @returns { boolean } the boolean result if the resize operation is successful
24661847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
24761847f8eSopenharmony_ci     * @stagemodelonly
24861847f8eSopenharmony_ci     * @since 10
24961847f8eSopenharmony_ci     */
25061847f8eSopenharmony_ci    resize(inputs: MSTensor[], dims: Array<Array<number>>): boolean;
25161847f8eSopenharmony_ci
25261847f8eSopenharmony_ci    /**
25361847f8eSopenharmony_ci     * Train model by step
25461847f8eSopenharmony_ci     * @param { MSTensor[] } inputs - indicates the MSTensor array of the inputs.
25561847f8eSopenharmony_ci     * @returns { boolean } the boolean result if the runStep operation is successful
25661847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
25761847f8eSopenharmony_ci     * @stagemodelonly
25861847f8eSopenharmony_ci     * @since 12
25961847f8eSopenharmony_ci     */
26061847f8eSopenharmony_ci    runStep(inputs: MSTensor[]): boolean;
26161847f8eSopenharmony_ci
26261847f8eSopenharmony_ci    /**
26361847f8eSopenharmony_ci     * Obtain all weights of the model
26461847f8eSopenharmony_ci     * @returns { MSTensor[] } the weight tensors of the model
26561847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
26661847f8eSopenharmony_ci     * @stagemodelonly
26761847f8eSopenharmony_ci     * @since 12
26861847f8eSopenharmony_ci     */
26961847f8eSopenharmony_ci    getWeights(): MSTensor[];
27061847f8eSopenharmony_ci
27161847f8eSopenharmony_ci    /**
27261847f8eSopenharmony_ci     * Update weights of the model
27361847f8eSopenharmony_ci     * @param { MSTensor[] } weights - indicates the MSTensor array of the inputs
27461847f8eSopenharmony_ci     * @returns { boolean } the boolean result if updating weights operation is successful
27561847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
27661847f8eSopenharmony_ci     * @stagemodelonly
27761847f8eSopenharmony_ci     * @since 12
27861847f8eSopenharmony_ci     */
27961847f8eSopenharmony_ci    updateWeights(weights: MSTensor[]): boolean;
28061847f8eSopenharmony_ci
28161847f8eSopenharmony_ci    /**
28261847f8eSopenharmony_ci     * Setup training with virtual batches
28361847f8eSopenharmony_ci     * @param { number } virtualBatchMultiplier - virtual batch multiplier, use any number < 1 to disable
28461847f8eSopenharmony_ci     * @param { number } lr - learning rate to use for virtual batch, -1 for internal configuration
28561847f8eSopenharmony_ci     * @param { number } momentum - batch norm momentum to use for virtual batch, -1 for internal configuration
28661847f8eSopenharmony_ci     * @returns { boolean } the boolean result if the operation is successful
28761847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
28861847f8eSopenharmony_ci     * @stagemodelonly
28961847f8eSopenharmony_ci     * @since 12
29061847f8eSopenharmony_ci     */
29161847f8eSopenharmony_ci    setupVirtualBatch(virtualBatchMultiplier: number, lr: number, momentum: number): boolean;
29261847f8eSopenharmony_ci
29361847f8eSopenharmony_ci    /**
29461847f8eSopenharmony_ci     * Export train model to file
29561847f8eSopenharmony_ci     * @param { string } modelFile - model file path.
29661847f8eSopenharmony_ci     * @param { QuantizationType } [quantizationType] - the quantization type, default NO_QUANT.
29761847f8eSopenharmony_ci     * @param { boolean } [exportInferenceOnly] - whether to export a inference only model, default true.
29861847f8eSopenharmony_ci     * @param { string[] } [outputTensorName] - the set of name of output tensor the exported inference model,
29961847f8eSopenharmony_ci     * @returns { boolean } - the boolean result if the operation is successful
30061847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
30161847f8eSopenharmony_ci     * @stagemodelonly
30261847f8eSopenharmony_ci     * @since 12
30361847f8eSopenharmony_ci     */
30461847f8eSopenharmony_ci    exportModel(
30561847f8eSopenharmony_ci      modelFile: string,
30661847f8eSopenharmony_ci      quantizationType?: QuantizationType,
30761847f8eSopenharmony_ci      exportInferenceOnly?: boolean,
30861847f8eSopenharmony_ci      outputTensorName?: string[]): boolean;
30961847f8eSopenharmony_ci
31061847f8eSopenharmony_ci    /**
31161847f8eSopenharmony_ci     * Export model's weights, which can be used in micro only. Only valid for Lite Train
31261847f8eSopenharmony_ci     * @param { string } weightFile - weight file path
31361847f8eSopenharmony_ci     * @param { boolean } [isInference] - whether to export weights from inference model, only support this is `true` for now, default true
31461847f8eSopenharmony_ci     * @param { boolean } [enableFp16] - float-weight is whether to be saved in float16 format, default false
31561847f8eSopenharmony_ci     * @param { string[] } [changeableWeightsName] - changeable weights name
31661847f8eSopenharmony_ci     * @returns { boolean } the boolean result if the operation is successful
31761847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
31861847f8eSopenharmony_ci     * @stagemodelonly
31961847f8eSopenharmony_ci     * @since 12
32061847f8eSopenharmony_ci     */
32161847f8eSopenharmony_ci    exportWeightsCollaborateWithMicro(
32261847f8eSopenharmony_ci      weightFile: string,
32361847f8eSopenharmony_ci      isInference?: boolean,
32461847f8eSopenharmony_ci      enableFp16?: boolean,
32561847f8eSopenharmony_ci      changeableWeightsName?: string[]): boolean;
32661847f8eSopenharmony_ci  }
32761847f8eSopenharmony_ci
32861847f8eSopenharmony_ci  /**
32961847f8eSopenharmony_ci   * Enum for quantization type
33061847f8eSopenharmony_ci   * @enum {number}
33161847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
33261847f8eSopenharmony_ci   * @stagemodelonly
33361847f8eSopenharmony_ci   * @since 12
33461847f8eSopenharmony_ci   */
33561847f8eSopenharmony_ci  export enum QuantizationType {
33661847f8eSopenharmony_ci    /**
33761847f8eSopenharmony_ci     * No quantization.
33861847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
33961847f8eSopenharmony_ci     * @stagemodelonly
34061847f8eSopenharmony_ci     * @since 12
34161847f8eSopenharmony_ci     */
34261847f8eSopenharmony_ci    NO_QUANT = 0,
34361847f8eSopenharmony_ci    /**
34461847f8eSopenharmony_ci     * Weight quantization.
34561847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
34661847f8eSopenharmony_ci     * @stagemodelonly
34761847f8eSopenharmony_ci     * @since 12
34861847f8eSopenharmony_ci     */
34961847f8eSopenharmony_ci    WEIGHT_QUANT = 1,
35061847f8eSopenharmony_ci    /**
35161847f8eSopenharmony_ci     * Full quantization.
35261847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
35361847f8eSopenharmony_ci     * @stagemodelonly
35461847f8eSopenharmony_ci     * @since 12
35561847f8eSopenharmony_ci     */
35661847f8eSopenharmony_ci    FULL_QUANT = 2,
35761847f8eSopenharmony_ci  }
35861847f8eSopenharmony_ci  /**
35961847f8eSopenharmony_ci   * Enum for optimization level
36061847f8eSopenharmony_ci   * @enum {number}
36161847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
36261847f8eSopenharmony_ci   * @stagemodelonly
36361847f8eSopenharmony_ci   * @since 12
36461847f8eSopenharmony_ci   */
36561847f8eSopenharmony_ci  export enum OptimizationLevel {
36661847f8eSopenharmony_ci    /**
36761847f8eSopenharmony_ci     * Do not change
36861847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
36961847f8eSopenharmony_ci     * @stagemodelonly
37061847f8eSopenharmony_ci     * @since 12
37161847f8eSopenharmony_ci     */
37261847f8eSopenharmony_ci    O0 = 0,
37361847f8eSopenharmony_ci    /**
37461847f8eSopenharmony_ci     * Cast network to float16, keep batch norm and loss in float32
37561847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
37661847f8eSopenharmony_ci     * @stagemodelonly
37761847f8eSopenharmony_ci     * @since 12
37861847f8eSopenharmony_ci     */
37961847f8eSopenharmony_ci    O2 = 2,
38061847f8eSopenharmony_ci    /**
38161847f8eSopenharmony_ci     * Cast network to float16, including batch norm
38261847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
38361847f8eSopenharmony_ci     * @stagemodelonly
38461847f8eSopenharmony_ci     * @since 12
38561847f8eSopenharmony_ci     */
38661847f8eSopenharmony_ci    O3 = 3,
38761847f8eSopenharmony_ci    /**
38861847f8eSopenharmony_ci     * Choose optimization based on device
38961847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
39061847f8eSopenharmony_ci     * @stagemodelonly
39161847f8eSopenharmony_ci     * @since 12
39261847f8eSopenharmony_ci     */
39361847f8eSopenharmony_ci    AUTO = 4,
39461847f8eSopenharmony_ci  }
39561847f8eSopenharmony_ci
39661847f8eSopenharmony_ci  /**
39761847f8eSopenharmony_ci   * Provides the train configuration
39861847f8eSopenharmony_ci   * @typedef TrainCfg
39961847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
40061847f8eSopenharmony_ci   * @stagemodelonly
40161847f8eSopenharmony_ci   * @since 12
40261847f8eSopenharmony_ci   */
40361847f8eSopenharmony_ci  interface TrainCfg {
40461847f8eSopenharmony_ci    /**
40561847f8eSopenharmony_ci     * Array of loss name
40661847f8eSopenharmony_ci     * @type {?string[]}
40761847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
40861847f8eSopenharmony_ci     * @stagemodelonly
40961847f8eSopenharmony_ci     * @since 12
41061847f8eSopenharmony_ci     */
41161847f8eSopenharmony_ci    lossName?: string[],
41261847f8eSopenharmony_ci    /**
41361847f8eSopenharmony_ci     * Train optimization level
41461847f8eSopenharmony_ci     * @type {?OptimizationLevel}
41561847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
41661847f8eSopenharmony_ci     * @stagemodelonly
41761847f8eSopenharmony_ci     * @since 12
41861847f8eSopenharmony_ci     */
41961847f8eSopenharmony_ci    optimizationLevel?: OptimizationLevel,
42061847f8eSopenharmony_ci  }
42161847f8eSopenharmony_ci
42261847f8eSopenharmony_ci  /**
42361847f8eSopenharmony_ci   * Provides the device configurations
42461847f8eSopenharmony_ci   * @typedef Context
42561847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
42661847f8eSopenharmony_ci   * @stagemodelonly
42761847f8eSopenharmony_ci   * @since 10
42861847f8eSopenharmony_ci   */
42961847f8eSopenharmony_ci  interface Context {
43061847f8eSopenharmony_ci    /**
43161847f8eSopenharmony_ci     * The target device
43261847f8eSopenharmony_ci     * @type {?string[]}
43361847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
43461847f8eSopenharmony_ci     * @stagemodelonly
43561847f8eSopenharmony_ci     * @since 10
43661847f8eSopenharmony_ci     */
43761847f8eSopenharmony_ci    target?: string[];
43861847f8eSopenharmony_ci    /**
43961847f8eSopenharmony_ci     * The cpu device information
44061847f8eSopenharmony_ci     * @type {?CpuDevice}
44161847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
44261847f8eSopenharmony_ci     * @stagemodelonly
44361847f8eSopenharmony_ci     * @since 10
44461847f8eSopenharmony_ci     */
44561847f8eSopenharmony_ci    cpu?: CpuDevice;
44661847f8eSopenharmony_ci    /**
44761847f8eSopenharmony_ci     * The NNRT device information
44861847f8eSopenharmony_ci     * @type {?NNRTDevice}
44961847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
45061847f8eSopenharmony_ci     * @stagemodelonly
45161847f8eSopenharmony_ci     * @since 10
45261847f8eSopenharmony_ci     */
45361847f8eSopenharmony_ci    nnrt?: NNRTDevice;
45461847f8eSopenharmony_ci  }
45561847f8eSopenharmony_ci
45661847f8eSopenharmony_ci  /**
45761847f8eSopenharmony_ci   * Provides the CPU device info
45861847f8eSopenharmony_ci   * @typedef CpuDevice
45961847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
46061847f8eSopenharmony_ci   * @stagemodelonly
46161847f8eSopenharmony_ci   * @since 10
46261847f8eSopenharmony_ci   */
46361847f8eSopenharmony_ci  interface CpuDevice {
46461847f8eSopenharmony_ci    /**
46561847f8eSopenharmony_ci     * The thread num
46661847f8eSopenharmony_ci     * @type {?number}
46761847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
46861847f8eSopenharmony_ci     * @stagemodelonly
46961847f8eSopenharmony_ci     * @since 10
47061847f8eSopenharmony_ci     */
47161847f8eSopenharmony_ci    threadNum?: number;
47261847f8eSopenharmony_ci    /**
47361847f8eSopenharmony_ci     * The thread affinity mode
47461847f8eSopenharmony_ci     * @type {?ThreadAffinityMode}
47561847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
47661847f8eSopenharmony_ci     * @stagemodelonly
47761847f8eSopenharmony_ci     * @since 10
47861847f8eSopenharmony_ci     */
47961847f8eSopenharmony_ci    threadAffinityMode?: ThreadAffinityMode;
48061847f8eSopenharmony_ci    /**
48161847f8eSopenharmony_ci     * The thread affinity core list
48261847f8eSopenharmony_ci     * @type {?number[]}
48361847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
48461847f8eSopenharmony_ci     * @stagemodelonly
48561847f8eSopenharmony_ci     * @since 10
48661847f8eSopenharmony_ci     */
48761847f8eSopenharmony_ci    threadAffinityCoreList?: number[];
48861847f8eSopenharmony_ci    /**
48961847f8eSopenharmony_ci     * The precision mode
49061847f8eSopenharmony_ci     * @type {?string}
49161847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
49261847f8eSopenharmony_ci     * @stagemodelonly
49361847f8eSopenharmony_ci     * @since 10
49461847f8eSopenharmony_ci     */
49561847f8eSopenharmony_ci    precisionMode?: string;
49661847f8eSopenharmony_ci  }
49761847f8eSopenharmony_ci
49861847f8eSopenharmony_ci  /**
49961847f8eSopenharmony_ci   * Enum for performance mode
50061847f8eSopenharmony_ci   * @enum {number}
50161847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
50261847f8eSopenharmony_ci   * @stagemodelonly
50361847f8eSopenharmony_ci   * @since 12
50461847f8eSopenharmony_ci   */
50561847f8eSopenharmony_ci  export enum PerformanceMode {
50661847f8eSopenharmony_ci    /**
50761847f8eSopenharmony_ci     * No performance mode preference
50861847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
50961847f8eSopenharmony_ci     * @stagemodelonly
51061847f8eSopenharmony_ci     * @since 12
51161847f8eSopenharmony_ci     */
51261847f8eSopenharmony_ci    PERFORMANCE_NONE = 0,
51361847f8eSopenharmony_ci    /**
51461847f8eSopenharmony_ci     * Low power consumption mode
51561847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
51661847f8eSopenharmony_ci     * @stagemodelonly
51761847f8eSopenharmony_ci     * @since 12
51861847f8eSopenharmony_ci     */
51961847f8eSopenharmony_ci    PERFORMANCE_LOW = 1,
52061847f8eSopenharmony_ci    /**
52161847f8eSopenharmony_ci     * Medium performance mode
52261847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
52361847f8eSopenharmony_ci     * @stagemodelonly
52461847f8eSopenharmony_ci     * @since 12
52561847f8eSopenharmony_ci     */
52661847f8eSopenharmony_ci    PERFORMANCE_MEDIUM = 2,
52761847f8eSopenharmony_ci    /**
52861847f8eSopenharmony_ci     * High performance mode
52961847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
53061847f8eSopenharmony_ci     * @stagemodelonly
53161847f8eSopenharmony_ci     * @since 12
53261847f8eSopenharmony_ci     */
53361847f8eSopenharmony_ci    PERFORMANCE_HIGH = 3,
53461847f8eSopenharmony_ci    /**
53561847f8eSopenharmony_ci     * Ultimate performance mode
53661847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
53761847f8eSopenharmony_ci     * @stagemodelonly
53861847f8eSopenharmony_ci     * @since 12
53961847f8eSopenharmony_ci     */
54061847f8eSopenharmony_ci    PERFORMANCE_EXTREME = 4,
54161847f8eSopenharmony_ci  }
54261847f8eSopenharmony_ci
54361847f8eSopenharmony_ci  /**
54461847f8eSopenharmony_ci   * Enum for scheduling priority
54561847f8eSopenharmony_ci   * @enum {number}
54661847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
54761847f8eSopenharmony_ci   * @stagemodelonly
54861847f8eSopenharmony_ci   * @since 12
54961847f8eSopenharmony_ci   */
55061847f8eSopenharmony_ci  export enum Priority {
55161847f8eSopenharmony_ci    /**
55261847f8eSopenharmony_ci     * No priority preference
55361847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
55461847f8eSopenharmony_ci     * @stagemodelonly
55561847f8eSopenharmony_ci     * @since 12
55661847f8eSopenharmony_ci     */
55761847f8eSopenharmony_ci    PRIORITY_NONE = 0,
55861847f8eSopenharmony_ci    /**
55961847f8eSopenharmony_ci     * Low priority
56061847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
56161847f8eSopenharmony_ci     * @stagemodelonly
56261847f8eSopenharmony_ci     * @since 12
56361847f8eSopenharmony_ci     */
56461847f8eSopenharmony_ci    PRIORITY_LOW = 1,
56561847f8eSopenharmony_ci    /**
56661847f8eSopenharmony_ci     * Medium priority
56761847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
56861847f8eSopenharmony_ci     * @stagemodelonly
56961847f8eSopenharmony_ci     * @since 12
57061847f8eSopenharmony_ci     */
57161847f8eSopenharmony_ci    PRIORITY_MEDIUM = 2,
57261847f8eSopenharmony_ci    /**
57361847f8eSopenharmony_ci     * High priority
57461847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
57561847f8eSopenharmony_ci     * @stagemodelonly
57661847f8eSopenharmony_ci     * @since 12
57761847f8eSopenharmony_ci     */
57861847f8eSopenharmony_ci    PRIORITY_HIGH = 3,
57961847f8eSopenharmony_ci  }
58061847f8eSopenharmony_ci
58161847f8eSopenharmony_ci  /**
58261847f8eSopenharmony_ci   * Provides the extension information of nnrt device
58361847f8eSopenharmony_ci   * @typedef Extension
58461847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
58561847f8eSopenharmony_ci   * @stagemodelonly
58661847f8eSopenharmony_ci   * @since 12
58761847f8eSopenharmony_ci   */
58861847f8eSopenharmony_ci  interface Extension {
58961847f8eSopenharmony_ci    /**
59061847f8eSopenharmony_ci     * Extension name
59161847f8eSopenharmony_ci     * @type {string}
59261847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
59361847f8eSopenharmony_ci     * @stagemodelonly
59461847f8eSopenharmony_ci     * @since 12
59561847f8eSopenharmony_ci     */
59661847f8eSopenharmony_ci    name: string,
59761847f8eSopenharmony_ci    /**
59861847f8eSopenharmony_ci     * Extension array buffer
59961847f8eSopenharmony_ci     * @type {ArrayBuffer}
60061847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
60161847f8eSopenharmony_ci     * @stagemodelonly
60261847f8eSopenharmony_ci     * @since 12
60361847f8eSopenharmony_ci     */
60461847f8eSopenharmony_ci    value: ArrayBuffer
60561847f8eSopenharmony_ci  }
60661847f8eSopenharmony_ci
60761847f8eSopenharmony_ci  /**
60861847f8eSopenharmony_ci   * Enum for nnrt device type
60961847f8eSopenharmony_ci   * @enum {number}
61061847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
61161847f8eSopenharmony_ci   * @stagemodelonly
61261847f8eSopenharmony_ci   * @since 12
61361847f8eSopenharmony_ci   */
61461847f8eSopenharmony_ci  export enum NNRTDeviceType {
61561847f8eSopenharmony_ci    /**
61661847f8eSopenharmony_ci     * Devices that are not CPU, GPU, or dedicated accelerator
61761847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
61861847f8eSopenharmony_ci     * @stagemodelonly
61961847f8eSopenharmony_ci     * @since 12
62061847f8eSopenharmony_ci     */
62161847f8eSopenharmony_ci    NNRTDEVICE_OTHERS = 0,
62261847f8eSopenharmony_ci
62361847f8eSopenharmony_ci    /**
62461847f8eSopenharmony_ci     * CPU device
62561847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
62661847f8eSopenharmony_ci     * @stagemodelonly
62761847f8eSopenharmony_ci     * @since 12
62861847f8eSopenharmony_ci     */
62961847f8eSopenharmony_ci    NNRTDEVICE_CPU = 1,
63061847f8eSopenharmony_ci
63161847f8eSopenharmony_ci    /**
63261847f8eSopenharmony_ci     * GPU device
63361847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
63461847f8eSopenharmony_ci     * @stagemodelonly
63561847f8eSopenharmony_ci     * @since 12
63661847f8eSopenharmony_ci     */
63761847f8eSopenharmony_ci    NNRTDEVICE_GPU = 2,
63861847f8eSopenharmony_ci
63961847f8eSopenharmony_ci    /**
64061847f8eSopenharmony_ci     * Dedicated hardware accelerator
64161847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
64261847f8eSopenharmony_ci     * @stagemodelonly
64361847f8eSopenharmony_ci     * @since 12
64461847f8eSopenharmony_ci     */
64561847f8eSopenharmony_ci    NNRTDEVICE_ACCELERATOR = 3,
64661847f8eSopenharmony_ci  }
64761847f8eSopenharmony_ci
64861847f8eSopenharmony_ci  /**
64961847f8eSopenharmony_ci   * Provides the nnrt device description
65061847f8eSopenharmony_ci   * @typedef NNRTDeviceDescription
65161847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
65261847f8eSopenharmony_ci   * @stagemodelonly
65361847f8eSopenharmony_ci   * @since 12
65461847f8eSopenharmony_ci   */
65561847f8eSopenharmony_ci  interface NNRTDeviceDescription {
65661847f8eSopenharmony_ci    /**
65761847f8eSopenharmony_ci     * Get device id
65861847f8eSopenharmony_ci     * @returns { bigint } the number of device id
65961847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
66061847f8eSopenharmony_ci     * @stagemodelonly
66161847f8eSopenharmony_ci     * @since 12
66261847f8eSopenharmony_ci     */
66361847f8eSopenharmony_ci    deviceID() : bigint;
66461847f8eSopenharmony_ci    /**
66561847f8eSopenharmony_ci     * Get device type.
66661847f8eSopenharmony_ci     * @returns { NNRTDeviceType } the device type
66761847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
66861847f8eSopenharmony_ci     * @stagemodelonly
66961847f8eSopenharmony_ci     * @since 12
67061847f8eSopenharmony_ci     */
67161847f8eSopenharmony_ci    deviceType() : NNRTDeviceType;
67261847f8eSopenharmony_ci    /**
67361847f8eSopenharmony_ci     * Get device name.
67461847f8eSopenharmony_ci     * @returns { string } device name
67561847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
67661847f8eSopenharmony_ci     * @stagemodelonly
67761847f8eSopenharmony_ci     * @since 12
67861847f8eSopenharmony_ci     */
67961847f8eSopenharmony_ci    deviceName() : string;
68061847f8eSopenharmony_ci  }
68161847f8eSopenharmony_ci
68261847f8eSopenharmony_ci  /**
68361847f8eSopenharmony_ci   * Obtain the all device descriptions in NNRT.
68461847f8eSopenharmony_ci   * @returns { NNRTDeviceDescription[] } the array of NNRTDeviceDescription
68561847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
68661847f8eSopenharmony_ci   * @stagemodelonly
68761847f8eSopenharmony_ci   * @since 12
68861847f8eSopenharmony_ci   */
68961847f8eSopenharmony_ci  function getAllNNRTDeviceDescriptions() : NNRTDeviceDescription[];
69061847f8eSopenharmony_ci
69161847f8eSopenharmony_ci  /**
69261847f8eSopenharmony_ci   * Provides the NNRT device info
69361847f8eSopenharmony_ci   * @typedef NNRTDevice
69461847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
69561847f8eSopenharmony_ci   * @stagemodelonly
69661847f8eSopenharmony_ci   * @since 10
69761847f8eSopenharmony_ci   */
69861847f8eSopenharmony_ci  interface NNRTDevice {
69961847f8eSopenharmony_ci    /**
70061847f8eSopenharmony_ci     * NNRT device id.
70161847f8eSopenharmony_ci     * @type {?bigint}
70261847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
70361847f8eSopenharmony_ci     * @stagemodelonly
70461847f8eSopenharmony_ci     * @since 12
70561847f8eSopenharmony_ci     */
70661847f8eSopenharmony_ci    deviceID?: bigint,
70761847f8eSopenharmony_ci    /**
70861847f8eSopenharmony_ci     * NNRT device performance mode.
70961847f8eSopenharmony_ci     * @type {?PerformanceMode}
71061847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
71161847f8eSopenharmony_ci     * @stagemodelonly
71261847f8eSopenharmony_ci     * @since 12
71361847f8eSopenharmony_ci     */
71461847f8eSopenharmony_ci    performanceMode?: PerformanceMode,
71561847f8eSopenharmony_ci    /**
71661847f8eSopenharmony_ci     * NNRT device priority.
71761847f8eSopenharmony_ci     * @type {?Priority}
71861847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
71961847f8eSopenharmony_ci     * @stagemodelonly
72061847f8eSopenharmony_ci     * @since 12
72161847f8eSopenharmony_ci     */
72261847f8eSopenharmony_ci    priority?: Priority,
72361847f8eSopenharmony_ci    /**
72461847f8eSopenharmony_ci     * NNRT device extension array.
72561847f8eSopenharmony_ci     * @type {?Extension[]}
72661847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
72761847f8eSopenharmony_ci     * @stagemodelonly
72861847f8eSopenharmony_ci     * @since 12
72961847f8eSopenharmony_ci     */
73061847f8eSopenharmony_ci    extensions?: Extension[],
73161847f8eSopenharmony_ci  }
73261847f8eSopenharmony_ci
73361847f8eSopenharmony_ci  /**
73461847f8eSopenharmony_ci   * Enum for provides CPU thread affinity mode
73561847f8eSopenharmony_ci   * @enum {number}
73661847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
73761847f8eSopenharmony_ci   * @stagemodelonly
73861847f8eSopenharmony_ci   * @since 10
73961847f8eSopenharmony_ci   */
74061847f8eSopenharmony_ci  export enum ThreadAffinityMode {
74161847f8eSopenharmony_ci    /**
74261847f8eSopenharmony_ci     * Thread affinity mode is no bind.
74361847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
74461847f8eSopenharmony_ci     * @stagemodelonly
74561847f8eSopenharmony_ci     * @since 10
74661847f8eSopenharmony_ci     */
74761847f8eSopenharmony_ci    NO_AFFINITIES = 0,
74861847f8eSopenharmony_ci
74961847f8eSopenharmony_ci    /**
75061847f8eSopenharmony_ci     * Thread affinity mode is big cores first
75161847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
75261847f8eSopenharmony_ci     * @stagemodelonly
75361847f8eSopenharmony_ci     * @since 10
75461847f8eSopenharmony_ci     */
75561847f8eSopenharmony_ci    BIG_CORES_FIRST = 1,
75661847f8eSopenharmony_ci
75761847f8eSopenharmony_ci    /**
75861847f8eSopenharmony_ci     * Thread affinity mode is little cores first
75961847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
76061847f8eSopenharmony_ci     * @stagemodelonly
76161847f8eSopenharmony_ci     * @since 10
76261847f8eSopenharmony_ci     */
76361847f8eSopenharmony_ci    LITTLE_CORES_FIRST = 2,
76461847f8eSopenharmony_ci  }
76561847f8eSopenharmony_ci
76661847f8eSopenharmony_ci  /**
76761847f8eSopenharmony_ci   * Provides MSTensor definition
76861847f8eSopenharmony_ci   * @typedef MSTensor
76961847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
77061847f8eSopenharmony_ci   * @stagemodelonly
77161847f8eSopenharmony_ci   * @since 10
77261847f8eSopenharmony_ci   */
77361847f8eSopenharmony_ci  interface MSTensor {
77461847f8eSopenharmony_ci    /**
77561847f8eSopenharmony_ci      * The name of the tensor.
77661847f8eSopenharmony_ci      * @type {string}
77761847f8eSopenharmony_ci      * @syscap SystemCapability.AI.MindSporeLite
77861847f8eSopenharmony_ci      * @stagemodelonly
77961847f8eSopenharmony_ci      * @since 10
78061847f8eSopenharmony_ci      */
78161847f8eSopenharmony_ci    name: string;
78261847f8eSopenharmony_ci    /**
78361847f8eSopenharmony_ci      * The shape of the tensor.
78461847f8eSopenharmony_ci      * @type {number[]}
78561847f8eSopenharmony_ci      * @syscap SystemCapability.AI.MindSporeLite
78661847f8eSopenharmony_ci      * @stagemodelonly
78761847f8eSopenharmony_ci      * @since 10
78861847f8eSopenharmony_ci      */
78961847f8eSopenharmony_ci    shape: number[];
79061847f8eSopenharmony_ci    /**
79161847f8eSopenharmony_ci      * The number of elements in the tensor.
79261847f8eSopenharmony_ci      * @type {number}
79361847f8eSopenharmony_ci      * @syscap SystemCapability.AI.MindSporeLite
79461847f8eSopenharmony_ci      * @stagemodelonly
79561847f8eSopenharmony_ci      * @since 10
79661847f8eSopenharmony_ci      */
79761847f8eSopenharmony_ci    elementNum: number;
79861847f8eSopenharmony_ci    /**
79961847f8eSopenharmony_ci      * The data size of the tensor.
80061847f8eSopenharmony_ci      * @type {number}
80161847f8eSopenharmony_ci      * @syscap SystemCapability.AI.MindSporeLite
80261847f8eSopenharmony_ci      * @stagemodelonly
80361847f8eSopenharmony_ci      * @since 10
80461847f8eSopenharmony_ci      */
80561847f8eSopenharmony_ci    dataSize: number;
80661847f8eSopenharmony_ci    /**
80761847f8eSopenharmony_ci      * The data type of the tensor.
80861847f8eSopenharmony_ci      * @type {DataType}
80961847f8eSopenharmony_ci      * @syscap SystemCapability.AI.MindSporeLite
81061847f8eSopenharmony_ci      * @stagemodelonly
81161847f8eSopenharmony_ci      * @since 10
81261847f8eSopenharmony_ci      */
81361847f8eSopenharmony_ci    dtype: DataType;
81461847f8eSopenharmony_ci    /**
81561847f8eSopenharmony_ci      * The format of the tensor.
81661847f8eSopenharmony_ci      * @type {Format}
81761847f8eSopenharmony_ci      * @syscap SystemCapability.AI.MindSporeLite
81861847f8eSopenharmony_ci      * @stagemodelonly
81961847f8eSopenharmony_ci      * @since 10
82061847f8eSopenharmony_ci      */
82161847f8eSopenharmony_ci    format: Format;
82261847f8eSopenharmony_ci
82361847f8eSopenharmony_ci    /**
82461847f8eSopenharmony_ci     * Get MSTensor data
82561847f8eSopenharmony_ci     * @returns { ArrayBuffer } the data of tensor
82661847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
82761847f8eSopenharmony_ci     * @stagemodelonly
82861847f8eSopenharmony_ci     * @since 10
82961847f8eSopenharmony_ci     */
83061847f8eSopenharmony_ci    getData(): ArrayBuffer;
83161847f8eSopenharmony_ci
83261847f8eSopenharmony_ci    /**
83361847f8eSopenharmony_ci     * Set MSTensor data
83461847f8eSopenharmony_ci     * @param { ArrayBuffer } inputArray - indicates the buffer of tensor
83561847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
83661847f8eSopenharmony_ci     * @stagemodelonly
83761847f8eSopenharmony_ci     * @since 10
83861847f8eSopenharmony_ci     */
83961847f8eSopenharmony_ci    setData(inputArray: ArrayBuffer): void;
84061847f8eSopenharmony_ci  }
84161847f8eSopenharmony_ci
84261847f8eSopenharmony_ci  /**
84361847f8eSopenharmony_ci   * Enum for provides MSTensor data type
84461847f8eSopenharmony_ci   * @enum {number}
84561847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
84661847f8eSopenharmony_ci   * @stagemodelonly
84761847f8eSopenharmony_ci   * @since 10
84861847f8eSopenharmony_ci   */
84961847f8eSopenharmony_ci  export enum DataType {
85061847f8eSopenharmony_ci    /**
85161847f8eSopenharmony_ci     * data type is unknown
85261847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
85361847f8eSopenharmony_ci     * @stagemodelonly
85461847f8eSopenharmony_ci     * @since 10
85561847f8eSopenharmony_ci     */
85661847f8eSopenharmony_ci    TYPE_UNKNOWN = 0,
85761847f8eSopenharmony_ci   /**
85861847f8eSopenharmony_ci     * data type is int8
85961847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
86061847f8eSopenharmony_ci     * @stagemodelonly
86161847f8eSopenharmony_ci     * @since 10
86261847f8eSopenharmony_ci     */
86361847f8eSopenharmony_ci    NUMBER_TYPE_INT8 = 32,
86461847f8eSopenharmony_ci   /**
86561847f8eSopenharmony_ci     * data type is int16
86661847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
86761847f8eSopenharmony_ci     * @stagemodelonly
86861847f8eSopenharmony_ci     * @since 10
86961847f8eSopenharmony_ci     */
87061847f8eSopenharmony_ci    NUMBER_TYPE_INT16 = 33,
87161847f8eSopenharmony_ci   /**
87261847f8eSopenharmony_ci     * data type is int32
87361847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
87461847f8eSopenharmony_ci     * @stagemodelonly
87561847f8eSopenharmony_ci     * @since 10
87661847f8eSopenharmony_ci     */
87761847f8eSopenharmony_ci    NUMBER_TYPE_INT32 = 34,
87861847f8eSopenharmony_ci   /**
87961847f8eSopenharmony_ci     * data type is int64
88061847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
88161847f8eSopenharmony_ci     * @stagemodelonly
88261847f8eSopenharmony_ci     * @since 10
88361847f8eSopenharmony_ci     */
88461847f8eSopenharmony_ci    NUMBER_TYPE_INT64 = 35,
88561847f8eSopenharmony_ci   /**
88661847f8eSopenharmony_ci     * data type is uint8
88761847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
88861847f8eSopenharmony_ci     * @stagemodelonly
88961847f8eSopenharmony_ci     * @since 10
89061847f8eSopenharmony_ci     */
89161847f8eSopenharmony_ci    NUMBER_TYPE_UINT8 = 37,
89261847f8eSopenharmony_ci   /**
89361847f8eSopenharmony_ci     * data type is uint16
89461847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
89561847f8eSopenharmony_ci     * @stagemodelonly
89661847f8eSopenharmony_ci     * @since 10
89761847f8eSopenharmony_ci     */
89861847f8eSopenharmony_ci    NUMBER_TYPE_UINT16 = 38,
89961847f8eSopenharmony_ci   /**
90061847f8eSopenharmony_ci     * data type is uint32
90161847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
90261847f8eSopenharmony_ci     * @stagemodelonly
90361847f8eSopenharmony_ci     * @since 10
90461847f8eSopenharmony_ci     */
90561847f8eSopenharmony_ci    NUMBER_TYPE_UINT32 = 39,
90661847f8eSopenharmony_ci   /**
90761847f8eSopenharmony_ci     * data type is uint64
90861847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
90961847f8eSopenharmony_ci     * @stagemodelonly
91061847f8eSopenharmony_ci     * @since 10
91161847f8eSopenharmony_ci     */
91261847f8eSopenharmony_ci    NUMBER_TYPE_UINT64 = 40,
91361847f8eSopenharmony_ci   /**
91461847f8eSopenharmony_ci     * data type is float16
91561847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
91661847f8eSopenharmony_ci     * @stagemodelonly
91761847f8eSopenharmony_ci     * @since 10
91861847f8eSopenharmony_ci     */
91961847f8eSopenharmony_ci    NUMBER_TYPE_FLOAT16 = 42,
92061847f8eSopenharmony_ci   /**
92161847f8eSopenharmony_ci     * data type is float32
92261847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
92361847f8eSopenharmony_ci     * @stagemodelonly
92461847f8eSopenharmony_ci     * @since 10
92561847f8eSopenharmony_ci     */
92661847f8eSopenharmony_ci    NUMBER_TYPE_FLOAT32 = 43,
92761847f8eSopenharmony_ci   /**
92861847f8eSopenharmony_ci     * data type is float64
92961847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
93061847f8eSopenharmony_ci     * @stagemodelonly
93161847f8eSopenharmony_ci     * @since 10
93261847f8eSopenharmony_ci     */
93361847f8eSopenharmony_ci    NUMBER_TYPE_FLOAT64 = 44,
93461847f8eSopenharmony_ci  }
93561847f8eSopenharmony_ci
93661847f8eSopenharmony_ci  /**
93761847f8eSopenharmony_ci   * Enum for provides MSTensor format
93861847f8eSopenharmony_ci   * @enum {number}
93961847f8eSopenharmony_ci   * @syscap SystemCapability.AI.MindSporeLite
94061847f8eSopenharmony_ci   * @stagemodelonly
94161847f8eSopenharmony_ci   * @since 10
94261847f8eSopenharmony_ci   */ 
94361847f8eSopenharmony_ci  export enum Format {
94461847f8eSopenharmony_ci   /**
94561847f8eSopenharmony_ci     * data format is default
94661847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
94761847f8eSopenharmony_ci     * @stagemodelonly
94861847f8eSopenharmony_ci     * @since 10
94961847f8eSopenharmony_ci     */  
95061847f8eSopenharmony_ci    DEFAULT_FORMAT = -1,
95161847f8eSopenharmony_ci   /**
95261847f8eSopenharmony_ci     * data format is NCHW
95361847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
95461847f8eSopenharmony_ci     * @stagemodelonly
95561847f8eSopenharmony_ci     * @since 10
95661847f8eSopenharmony_ci     */  
95761847f8eSopenharmony_ci    NCHW = 0,
95861847f8eSopenharmony_ci   /**
95961847f8eSopenharmony_ci     * data format is NHWC
96061847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
96161847f8eSopenharmony_ci     * @stagemodelonly
96261847f8eSopenharmony_ci     * @since 10
96361847f8eSopenharmony_ci     */
96461847f8eSopenharmony_ci    NHWC = 1,
96561847f8eSopenharmony_ci   /**
96661847f8eSopenharmony_ci     * data format is NHWC4
96761847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
96861847f8eSopenharmony_ci     * @stagemodelonly
96961847f8eSopenharmony_ci     * @since 10
97061847f8eSopenharmony_ci     */
97161847f8eSopenharmony_ci    NHWC4 = 2,
97261847f8eSopenharmony_ci   /**
97361847f8eSopenharmony_ci     * data format is HWKC
97461847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
97561847f8eSopenharmony_ci     * @stagemodelonly
97661847f8eSopenharmony_ci     * @since 10
97761847f8eSopenharmony_ci     */
97861847f8eSopenharmony_ci    HWKC = 3,
97961847f8eSopenharmony_ci   /**
98061847f8eSopenharmony_ci     * data format is HWCK
98161847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
98261847f8eSopenharmony_ci     * @stagemodelonly
98361847f8eSopenharmony_ci     * @since 10
98461847f8eSopenharmony_ci     */
98561847f8eSopenharmony_ci    HWCK = 4,
98661847f8eSopenharmony_ci   /**
98761847f8eSopenharmony_ci     * data format is KCHW
98861847f8eSopenharmony_ci     * @syscap SystemCapability.AI.MindSporeLite
98961847f8eSopenharmony_ci     * @stagemodelonly
99061847f8eSopenharmony_ci     * @since 10
99161847f8eSopenharmony_ci     */
99261847f8eSopenharmony_ci    KCHW = 5,
99361847f8eSopenharmony_ci  }
99461847f8eSopenharmony_ci}
99561847f8eSopenharmony_ciexport default mindSporeLite;
996