<?xml version="1.0" encoding="UTF-8" ?>
<!--
  Copyright 2020 The Chromium Authors. All rights reserved.
  Use of this source code is governed by a BSD-style license that can be
  found in the LICENSE file.
-->
<node>
  <interface name="org.chromium.Hermes.Euicc">
    <method name="RequestInstalledProfiles">
      <tp:docstring>
        Reload the profiles installed on a eUICC.
      </tp:docstring>
      <annotation name="org.chromium.DBus.Method.Kind" value="async" />
    </method>
    <method name="InstallProfileFromActivationCode">
      <tp:docstring>
        Install a profile onto the eUICC using an activation code.
      </tp:docstring>
      <annotation name="org.chromium.DBus.Method.Kind" value="async" />
      <arg name="activation_code" type="s" direction="in">
        <tp:docstring>
          Activation code of the profile to install.
        </tp:docstring>
      </arg>
      <arg name="confirmation_code" type="s" direction="in">
        <tp:docstring>
          Confirmation code of the profile to install, or "" if none.
        </tp:docstring>
      </arg>
      <arg name="profile" type="o" direction="out">
        <tp:docstring>
          Profile object representing the newly-installed profile.
        </tp:docstring>
      </arg>
    </method>
    <method name="InstallPendingProfile">
      <tp:docstring>
        Install a profile onto the eUICC using a pending Profile from SM-DS.
      </tp:docstring>
      <annotation name="org.chromium.DBus.Method.Kind" value="async" />
      <arg name="pending_profile" type="o" direction="in" />
      <arg name="confirmation_code" type="s" direction="in">
        <tp:docstring>
          Confirmation code of the profile to install, or "" if none.
        </tp:docstring>
      </arg>
      <arg name="profile" type="o" direction="out">
        <tp:docstring>
          Profile object representing the newly-installed profile.
          Same as the input "pending_profile"
        </tp:docstring>
      </arg>
    </method>
    <method name="UninstallProfile">
      <tp:docstring>
        Uninstall a profile from the eUICC.
      </tp:docstring>
      <annotation name="org.chromium.DBus.Method.Kind" value="async" />
      <arg name="profile" type="o" direction="in">
        <tp:docstring>
          D-Bus path of the Profile object to uninstall.
        </tp:docstring>
      </arg>
    </method>
    <method name="RequestPendingProfiles">
      <tp:docstring>
        Request Events/Profiles from SM-DS. Will update the PendingProfiles
        property as needed prior to returning.
      </tp:docstring>
      <annotation name="org.chromium.DBus.Method.Kind" value="async" />
      <arg name="root_smds" type="s" direction="in">
        <tp:docstring>
          Root smds or "" for lpa.ds.gsma.com
        </tp:docstring>
      </arg>
    </method>

    <property name="Eid" type="s" access="read" />
    <property name="InstalledProfiles" type="ao" access="read" />
    <property name="IsActive" type="b" access="read" />
    <property name="PendingProfiles" type="ao" access="read" />
  </interface>
</node>
