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 This module provides the capabilities to security guard.
1861847f8eSopenharmony_ci * @kit SecurityGuardKit
1961847f8eSopenharmony_ci */
2061847f8eSopenharmony_ci
2161847f8eSopenharmony_ciimport type { Callback } from '@ohos.base';
2261847f8eSopenharmony_ci
2361847f8eSopenharmony_ci/**
2461847f8eSopenharmony_ci * Provides security event management and security model management.
2561847f8eSopenharmony_ci * Based on event information, you will be able to analyze the running status of devices.
2661847f8eSopenharmony_ci *
2761847f8eSopenharmony_ci * @namespace securityGuard
2861847f8eSopenharmony_ci * @syscap SystemCapability.Security.SecurityGuard
2961847f8eSopenharmony_ci * @systemapi Hide this for inner system use.
3061847f8eSopenharmony_ci * @since 12
3161847f8eSopenharmony_ci */
3261847f8eSopenharmony_cideclare namespace securityGuard {
3361847f8eSopenharmony_ci
3461847f8eSopenharmony_ci  /**
3561847f8eSopenharmony_ci   * Provides the SecurityEvent type, including the event id, version info, report content.
3661847f8eSopenharmony_ci   *
3761847f8eSopenharmony_ci   * @typedef SecurityEvent
3861847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
3961847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
4061847f8eSopenharmony_ci   * @since 12
4161847f8eSopenharmony_ci   */
4261847f8eSopenharmony_ci  interface SecurityEvent {
4361847f8eSopenharmony_ci    /**
4461847f8eSopenharmony_ci     * The event id
4561847f8eSopenharmony_ci     *
4661847f8eSopenharmony_ci     * @type { number }
4761847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
4861847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
4961847f8eSopenharmony_ci     * @since 12
5061847f8eSopenharmony_ci     */
5161847f8eSopenharmony_ci    eventId: number;
5261847f8eSopenharmony_ci
5361847f8eSopenharmony_ci    /**
5461847f8eSopenharmony_ci     * The version of a security event. Different versions indicate different data formats.
5561847f8eSopenharmony_ci     *
5661847f8eSopenharmony_ci     * @type { string }
5761847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
5861847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
5961847f8eSopenharmony_ci     * @since 12
6061847f8eSopenharmony_ci     */
6161847f8eSopenharmony_ci    version: string;
6261847f8eSopenharmony_ci
6361847f8eSopenharmony_ci    /**
6461847f8eSopenharmony_ci     * The report content
6561847f8eSopenharmony_ci     *
6661847f8eSopenharmony_ci     * @type { string }
6761847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
6861847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
6961847f8eSopenharmony_ci     * @since 12
7061847f8eSopenharmony_ci     */
7161847f8eSopenharmony_ci    content: string;
7261847f8eSopenharmony_ci
7361847f8eSopenharmony_ci    /**
7461847f8eSopenharmony_ci     * The event timestamp, format is YYYYMMDDHHMMSS.
7561847f8eSopenharmony_ci     *
7661847f8eSopenharmony_ci     * @type { ?string }
7761847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
7861847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
7961847f8eSopenharmony_ci     * @since 12
8061847f8eSopenharmony_ci     */
8161847f8eSopenharmony_ci    timestamp?: string;
8261847f8eSopenharmony_ci  }
8361847f8eSopenharmony_ci
8461847f8eSopenharmony_ci  /**
8561847f8eSopenharmony_ci   * Report security information to the security guard.
8661847f8eSopenharmony_ci   *
8761847f8eSopenharmony_ci   * @permission ohos.permission.REPORT_SECURITY_EVENT
8861847f8eSopenharmony_ci   * @param { SecurityEvent } securityEvent - indicates the information to be reported.
8961847f8eSopenharmony_ci   * @throws { BusinessError } 201 - check permission fail.
9061847f8eSopenharmony_ci   * @throws { BusinessError } 202 - non-system application uses the system API.
9161847f8eSopenharmony_ci   * @throws { BusinessError } 401 - invalid parameters. 
9261847f8eSopenharmony_ci   * Possible causes: 
9361847f8eSopenharmony_ci   *   1. Mandatory parameters are left unspecified. 
9461847f8eSopenharmony_ci   *   2. Incorrect parameter types. 
9561847f8eSopenharmony_ci   *   3. Parameter verification failed.
9661847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
9761847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
9861847f8eSopenharmony_ci   * @since 12
9961847f8eSopenharmony_ci   */
10061847f8eSopenharmony_ci  function reportSecurityEvent(securityEvent: SecurityEvent): void;
10161847f8eSopenharmony_ci
10261847f8eSopenharmony_ci  /**
10361847f8eSopenharmony_ci   * Provides the conditions of querySecurityEvent.
10461847f8eSopenharmony_ci   *
10561847f8eSopenharmony_ci   * @interface SecurityEventRule
10661847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
10761847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
10861847f8eSopenharmony_ci   * @since 12
10961847f8eSopenharmony_ci   */
11061847f8eSopenharmony_ci  interface SecurityEventRule {
11161847f8eSopenharmony_ci    /**
11261847f8eSopenharmony_ci     * The security event ids.
11361847f8eSopenharmony_ci     *
11461847f8eSopenharmony_ci     * @type { number }
11561847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
11661847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
11761847f8eSopenharmony_ci     * @since 12
11861847f8eSopenharmony_ci     */
11961847f8eSopenharmony_ci    eventId: number;
12061847f8eSopenharmony_ci    
12161847f8eSopenharmony_ci    /**
12261847f8eSopenharmony_ci     * The begin time, format is YYYYMMDDHHMMSS.
12361847f8eSopenharmony_ci     *
12461847f8eSopenharmony_ci     * @type { ?string }
12561847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
12661847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
12761847f8eSopenharmony_ci     * @since 12
12861847f8eSopenharmony_ci     */
12961847f8eSopenharmony_ci    beginTime?: string;
13061847f8eSopenharmony_ci
13161847f8eSopenharmony_ci    /**
13261847f8eSopenharmony_ci     * The end time, format is YYYYMMDDHHMMSS.
13361847f8eSopenharmony_ci     *
13461847f8eSopenharmony_ci     * @type { ?string }
13561847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
13661847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
13761847f8eSopenharmony_ci     * @since 12
13861847f8eSopenharmony_ci     */
13961847f8eSopenharmony_ci    endTime?: string;
14061847f8eSopenharmony_ci
14161847f8eSopenharmony_ci    /**
14261847f8eSopenharmony_ci     * The query condition.
14361847f8eSopenharmony_ci     *
14461847f8eSopenharmony_ci     * @type { ?string }
14561847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
14661847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
14761847f8eSopenharmony_ci     * @since 12
14861847f8eSopenharmony_ci     */
14961847f8eSopenharmony_ci    param?: string;
15061847f8eSopenharmony_ci  }
15161847f8eSopenharmony_ci
15261847f8eSopenharmony_ci  /**
15361847f8eSopenharmony_ci   * Definition callback of receiving the query data.
15461847f8eSopenharmony_ci   *
15561847f8eSopenharmony_ci   * @interface Querier
15661847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
15761847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
15861847f8eSopenharmony_ci   * @since 12
15961847f8eSopenharmony_ci   */
16061847f8eSopenharmony_ci  interface Querier {
16161847f8eSopenharmony_ci    /**
16261847f8eSopenharmony_ci     * Triggered when data is returned.
16361847f8eSopenharmony_ci     *
16461847f8eSopenharmony_ci     * @type { function }
16561847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
16661847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
16761847f8eSopenharmony_ci     * @since 12
16861847f8eSopenharmony_ci     */
16961847f8eSopenharmony_ci    onQuery: (events: Array<SecurityEvent>) => void;
17061847f8eSopenharmony_ci
17161847f8eSopenharmony_ci    /**
17261847f8eSopenharmony_ci     * Triggered when data is complete.
17361847f8eSopenharmony_ci     *
17461847f8eSopenharmony_ci     * @type { function }
17561847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
17661847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
17761847f8eSopenharmony_ci     * @since 12
17861847f8eSopenharmony_ci     */
17961847f8eSopenharmony_ci    onComplete: () => void;
18061847f8eSopenharmony_ci
18161847f8eSopenharmony_ci    /**
18261847f8eSopenharmony_ci     * Triggered when error.
18361847f8eSopenharmony_ci     *
18461847f8eSopenharmony_ci     * @type { function }
18561847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
18661847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
18761847f8eSopenharmony_ci     * @since 12
18861847f8eSopenharmony_ci     */
18961847f8eSopenharmony_ci    onError: (message: string) => void;
19061847f8eSopenharmony_ci  }
19161847f8eSopenharmony_ci
19261847f8eSopenharmony_ci  /**
19361847f8eSopenharmony_ci   * Query security event information from security guard.
19461847f8eSopenharmony_ci   *
19561847f8eSopenharmony_ci   * @permission ohos.permission.QUERY_SECURITY_EVENT
19661847f8eSopenharmony_ci   * @param { Array<SecurityEventRule> } rules - rule of get security event information.
19761847f8eSopenharmony_ci   * @param { Querier } querier - callback of receiving the query data.
19861847f8eSopenharmony_ci   * @throws { BusinessError } 201 - check permission fail.
19961847f8eSopenharmony_ci   * @throws { BusinessError } 202 - non-system application uses the system API.
20061847f8eSopenharmony_ci   * @throws { BusinessError } 401 - invalid parameters. 
20161847f8eSopenharmony_ci   * Possible causes: 
20261847f8eSopenharmony_ci   *   1. Mandatory parameters are left unspecified. 
20361847f8eSopenharmony_ci   *   2. Incorrect parameter types. 
20461847f8eSopenharmony_ci   *   3. Parameter verification failed.
20561847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
20661847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
20761847f8eSopenharmony_ci   * @since 12
20861847f8eSopenharmony_ci   */
20961847f8eSopenharmony_ci  function querySecurityEvent(rules: Array<SecurityEventRule>, querier: Querier): void;
21061847f8eSopenharmony_ci
21161847f8eSopenharmony_ci  /**
21261847f8eSopenharmony_ci   * Provides the conditions of Collector.
21361847f8eSopenharmony_ci   *
21461847f8eSopenharmony_ci   * @typedef CollectorRule
21561847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
21661847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
21761847f8eSopenharmony_ci   * @since 12
21861847f8eSopenharmony_ci   */
21961847f8eSopenharmony_ci  interface CollectorRule {
22061847f8eSopenharmony_ci    /**
22161847f8eSopenharmony_ci     * The event id
22261847f8eSopenharmony_ci     *
22361847f8eSopenharmony_ci     * @type { number }
22461847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
22561847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
22661847f8eSopenharmony_ci     * @since 12
22761847f8eSopenharmony_ci     */
22861847f8eSopenharmony_ci    eventId: number;
22961847f8eSopenharmony_ci
23061847f8eSopenharmony_ci    /**
23161847f8eSopenharmony_ci     * The query condition.
23261847f8eSopenharmony_ci     *
23361847f8eSopenharmony_ci     * @type { ?string }
23461847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
23561847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
23661847f8eSopenharmony_ci     * @since 12
23761847f8eSopenharmony_ci     */
23861847f8eSopenharmony_ci    param?: string;
23961847f8eSopenharmony_ci  }
24061847f8eSopenharmony_ci
24161847f8eSopenharmony_ci  /**
24261847f8eSopenharmony_ci   * start the collector to collect data
24361847f8eSopenharmony_ci   *
24461847f8eSopenharmony_ci   * @permission ohos.permission.QUERY_SECURITY_EVENT
24561847f8eSopenharmony_ci   * @param { CollectorRule } rule - rule of collect security event information.
24661847f8eSopenharmony_ci   * @throws { BusinessError } 201 - check permission fail.
24761847f8eSopenharmony_ci   * @throws { BusinessError } 202 - non-system application uses the system API.
24861847f8eSopenharmony_ci   * @throws { BusinessError } 401 - invalid parameters. 
24961847f8eSopenharmony_ci   * Possible causes: 
25061847f8eSopenharmony_ci   *   1. Mandatory parameters are left unspecified. 
25161847f8eSopenharmony_ci   *   2. Incorrect parameter types. 
25261847f8eSopenharmony_ci   *   3. Parameter verification failed.
25361847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
25461847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
25561847f8eSopenharmony_ci   * @since 12
25661847f8eSopenharmony_ci   */
25761847f8eSopenharmony_ci  function startSecurityEventCollector(rule: CollectorRule): void;
25861847f8eSopenharmony_ci
25961847f8eSopenharmony_ci  /**
26061847f8eSopenharmony_ci   * stop the collector.
26161847f8eSopenharmony_ci   *
26261847f8eSopenharmony_ci   * @permission ohos.permission.QUERY_SECURITY_EVENT
26361847f8eSopenharmony_ci   * @param { CollectorRule } rule - rule of collect security event information.
26461847f8eSopenharmony_ci   * @throws { BusinessError } 201 - check permission fail.
26561847f8eSopenharmony_ci   * @throws { BusinessError } 202 - non-system application uses the system API.
26661847f8eSopenharmony_ci   * @throws { BusinessError } 401 - invalid parameters. 
26761847f8eSopenharmony_ci   * Possible causes: 
26861847f8eSopenharmony_ci   *   1. Mandatory parameters are left unspecified. 
26961847f8eSopenharmony_ci   *   2. Incorrect parameter types. 
27061847f8eSopenharmony_ci   *   3. Parameter verification failed.
27161847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
27261847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
27361847f8eSopenharmony_ci   * @since 12
27461847f8eSopenharmony_ci   */
27561847f8eSopenharmony_ci  function stopSecurityEventCollector(rule: CollectorRule): void;
27661847f8eSopenharmony_ci
27761847f8eSopenharmony_ci  /**
27861847f8eSopenharmony_ci   * Provides the ModelRule type.
27961847f8eSopenharmony_ci   *
28061847f8eSopenharmony_ci   * @typedef ModelRule
28161847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
28261847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
28361847f8eSopenharmony_ci   * @since 12
28461847f8eSopenharmony_ci   */
28561847f8eSopenharmony_ci  interface ModelRule {
28661847f8eSopenharmony_ci    /**
28761847f8eSopenharmony_ci     * The security model rule
28861847f8eSopenharmony_ci     *
28961847f8eSopenharmony_ci     * @type { string }
29061847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
29161847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
29261847f8eSopenharmony_ci     * @since 12
29361847f8eSopenharmony_ci     */
29461847f8eSopenharmony_ci    modelName: string;
29561847f8eSopenharmony_ci
29661847f8eSopenharmony_ci    /**
29761847f8eSopenharmony_ci     * The model param.
29861847f8eSopenharmony_ci     *
29961847f8eSopenharmony_ci     * @type { ?string }
30061847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
30161847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
30261847f8eSopenharmony_ci     * @since 12
30361847f8eSopenharmony_ci     */
30461847f8eSopenharmony_ci    param?: string
30561847f8eSopenharmony_ci  }
30661847f8eSopenharmony_ci
30761847f8eSopenharmony_ci  /**
30861847f8eSopenharmony_ci   * Provides the ModelResult type.
30961847f8eSopenharmony_ci   *
31061847f8eSopenharmony_ci   * @typedef ModelResult
31161847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
31261847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
31361847f8eSopenharmony_ci   * @since 12
31461847f8eSopenharmony_ci   */
31561847f8eSopenharmony_ci  interface ModelResult {
31661847f8eSopenharmony_ci    /**
31761847f8eSopenharmony_ci     * The result of security model.
31861847f8eSopenharmony_ci     *
31961847f8eSopenharmony_ci     * @type { string }
32061847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
32161847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
32261847f8eSopenharmony_ci     * @since 12
32361847f8eSopenharmony_ci     */
32461847f8eSopenharmony_ci    result: string;
32561847f8eSopenharmony_ci  }
32661847f8eSopenharmony_ci
32761847f8eSopenharmony_ci  /**
32861847f8eSopenharmony_ci   * Request security model result from security guard.
32961847f8eSopenharmony_ci   *
33061847f8eSopenharmony_ci   * @permission ohos.permission.QUERY_SECURITY_MODEL_RESULT
33161847f8eSopenharmony_ci   * @param { ModelRule } rule -  indicates the security model rule.
33261847f8eSopenharmony_ci   * @returns { Promise<ModelResult> } model Results with Promises.
33361847f8eSopenharmony_ci   * @throws { BusinessError } 201 - check permission fail.
33461847f8eSopenharmony_ci   * @throws { BusinessError } 202 - non-system application uses the system API.
33561847f8eSopenharmony_ci   * @throws { BusinessError } 401 - invalid parameters. 
33661847f8eSopenharmony_ci   * Possible causes: 
33761847f8eSopenharmony_ci   *   1. Mandatory parameters are left unspecified. 
33861847f8eSopenharmony_ci   *   2. Incorrect parameter types. 
33961847f8eSopenharmony_ci   *   3. Parameter verification failed.
34061847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
34161847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
34261847f8eSopenharmony_ci   * @since 12
34361847f8eSopenharmony_ci   */
34461847f8eSopenharmony_ci  function getModelResult(rule: ModelRule): Promise<ModelResult>;
34561847f8eSopenharmony_ci
34661847f8eSopenharmony_ci  /**
34761847f8eSopenharmony_ci   * Provides the conditions of on/off.
34861847f8eSopenharmony_ci   *
34961847f8eSopenharmony_ci   * @interface SecurityEventInfo
35061847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
35161847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
35261847f8eSopenharmony_ci   * @since 12
35361847f8eSopenharmony_ci   */
35461847f8eSopenharmony_ci  interface SecurityEventInfo {
35561847f8eSopenharmony_ci    /**
35661847f8eSopenharmony_ci     * The security event id.
35761847f8eSopenharmony_ci     *
35861847f8eSopenharmony_ci     * @type { number }
35961847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
36061847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
36161847f8eSopenharmony_ci     * @since 12
36261847f8eSopenharmony_ci     */
36361847f8eSopenharmony_ci    eventId: number;
36461847f8eSopenharmony_ci  }
36561847f8eSopenharmony_ci
36661847f8eSopenharmony_ci  /**
36761847f8eSopenharmony_ci   * Subscribe the security event.
36861847f8eSopenharmony_ci   *
36961847f8eSopenharmony_ci   * @permission ohos.permission.QUERY_SECURITY_EVENT
37061847f8eSopenharmony_ci   * @param {'securityEventOccur'} type
37161847f8eSopenharmony_ci   * @param { SecurityEventInfo } securityEventInfo - Indicates the subscribed event information.
37261847f8eSopenharmony_ci   * @param { Callback<SecurityEvent> } callback - Indicates the listener when the security event occurs.
37361847f8eSopenharmony_ci   * @throws { BusinessError } 201 - check permission fail.
37461847f8eSopenharmony_ci   * @throws { BusinessError } 202 - non-system application uses the system API.
37561847f8eSopenharmony_ci   * @throws { BusinessError } 401 - invalid parameters. 
37661847f8eSopenharmony_ci   * Possible causes: 
37761847f8eSopenharmony_ci   *   1. Mandatory parameters are left unspecified. 
37861847f8eSopenharmony_ci   *   2. Incorrect parameter types. 
37961847f8eSopenharmony_ci   *   3. Parameter verification failed.
38061847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
38161847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
38261847f8eSopenharmony_ci   * @since 12
38361847f8eSopenharmony_ci   */
38461847f8eSopenharmony_ci  function on(type: 'securityEventOccur', securityEventInfo: SecurityEventInfo, callback: Callback<SecurityEvent>): void;
38561847f8eSopenharmony_ci
38661847f8eSopenharmony_ci  /**
38761847f8eSopenharmony_ci   * Unsubscribe the security event.
38861847f8eSopenharmony_ci   *
38961847f8eSopenharmony_ci   * @permission ohos.permission.QUERY_SECURITY_EVENT
39061847f8eSopenharmony_ci   * @param {'securityEventOccur'} type
39161847f8eSopenharmony_ci   * @param { SecurityEventInfo } securityEventInfo - Indicates the subscribed event information.
39261847f8eSopenharmony_ci   * @param { Callback<SecurityEvent> } callback - Indicates the listener when the security event occurs.
39361847f8eSopenharmony_ci   * @throws { BusinessError } 201 - check permission fail.
39461847f8eSopenharmony_ci   * @throws { BusinessError } 202 - non-system application uses the system API.
39561847f8eSopenharmony_ci   * @throws { BusinessError } 401 - invalid parameters. 
39661847f8eSopenharmony_ci   * Possible causes: 
39761847f8eSopenharmony_ci   *   1. Mandatory parameters are left unspecified. 
39861847f8eSopenharmony_ci   *   2. Incorrect parameter types. 
39961847f8eSopenharmony_ci   *   3. Parameter verification failed.
40061847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
40161847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
40261847f8eSopenharmony_ci   * @since 12
40361847f8eSopenharmony_ci   */
40461847f8eSopenharmony_ci  function off(type: 'securityEventOccur', securityEventInfo: SecurityEventInfo, callback?: Callback<SecurityEvent>): void;
40561847f8eSopenharmony_ci
40661847f8eSopenharmony_ci  /**
40761847f8eSopenharmony_ci   * Provides policy file information.
40861847f8eSopenharmony_ci   *
40961847f8eSopenharmony_ci   * @interface PolicyFile
41061847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
41161847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
41261847f8eSopenharmony_ci   * @since 12
41361847f8eSopenharmony_ci   */
41461847f8eSopenharmony_ci  interface PolicyFile {
41561847f8eSopenharmony_ci    /**
41661847f8eSopenharmony_ci     * The policy file name.
41761847f8eSopenharmony_ci     *
41861847f8eSopenharmony_ci     * @type { string }
41961847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
42061847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
42161847f8eSopenharmony_ci     * @since 12
42261847f8eSopenharmony_ci     */
42361847f8eSopenharmony_ci    name: string;
42461847f8eSopenharmony_ci
42561847f8eSopenharmony_ci    /**
42661847f8eSopenharmony_ci     * The policy file descriptor.
42761847f8eSopenharmony_ci     *
42861847f8eSopenharmony_ci     * @type { number }
42961847f8eSopenharmony_ci     * @syscap SystemCapability.Security.SecurityGuard
43061847f8eSopenharmony_ci     * @systemapi Hide this for inner system use.
43161847f8eSopenharmony_ci     * @since 12
43261847f8eSopenharmony_ci     */
43361847f8eSopenharmony_ci    fd: number;
43461847f8eSopenharmony_ci  }
43561847f8eSopenharmony_ci
43661847f8eSopenharmony_ci  /**
43761847f8eSopenharmony_ci   * Update the policy file.
43861847f8eSopenharmony_ci   *
43961847f8eSopenharmony_ci   * @permission ohos.permission.MANAGE_SECURITY_GUARD_CONFIG
44061847f8eSopenharmony_ci   * @param { PolicyFile } policyFile - Indicates the policy file information.
44161847f8eSopenharmony_ci   * @returns { Promise<void> } the promise returned by the function.
44261847f8eSopenharmony_ci   * @throws { BusinessError } 201 - check permission fail.
44361847f8eSopenharmony_ci   * @throws { BusinessError } 202 - non-system application uses the system API.
44461847f8eSopenharmony_ci   * @throws { BusinessError } 401 - invalid parameters. 
44561847f8eSopenharmony_ci   * Possible causes: 
44661847f8eSopenharmony_ci   *   1. Mandatory parameters are left unspecified. 
44761847f8eSopenharmony_ci   *   2. Incorrect parameter types. 
44861847f8eSopenharmony_ci   *   3. Parameter verification failed.
44961847f8eSopenharmony_ci   * @syscap SystemCapability.Security.SecurityGuard
45061847f8eSopenharmony_ci   * @systemapi Hide this for inner system use.
45161847f8eSopenharmony_ci   * @since 12
45261847f8eSopenharmony_ci   */
45361847f8eSopenharmony_ci  function updatePolicyFile(policyFile: PolicyFile): Promise<void>;
45461847f8eSopenharmony_ci}
45561847f8eSopenharmony_ci
45661847f8eSopenharmony_ciexport default securityGuard;
457