# APIリファレンス

このセクションでは、`@arcblock/did-connect-react` ライブラリ全体で使用される主要なTypeScript型すべてに関する包括的なリファレンスを提供します。これらのデータ構造を理解することは、`SessionProvider`のようなコンポーネントや`useConnect`のようなフックを効果的に使用する上で非常に重要です。

## 接続タイプ

これらのタイプは、主にDID Connectモーダルの設定や操作時に使用されます。

### ConnectProps

これは、`useConnect`フックの`open`関数またはセッションコンテキストの`openDidConnect`関数に渡される主要な設定オブジェクトです。これにより、接続フローの動作と外観を広範囲にカスタマイズできます。

<x-field-group>
  <x-field data-name="action" data-type="string" data-required="true" data-desc="接続の主要なアクション。例: 'login'。"></x-field>
  <x-field data-name="containerEl" data-type="Element" data-required="false" data-desc="接続モーダルを追加するDOM要素。"></x-field>
  <x-field data-name="prefix" data-type="string" data-default="/api/did" data-required="false" data-desc="DID ConnectサービスのAPIエンドポイントプレフィックス。"></x-field>
  <x-field data-name="locale" data-type="'en' | 'zh'" data-default="en" data-required="false" data-desc="UIで使用される言語。"></x-field>
  <x-field data-name="popup" data-type="boolean" data-default="false" data-required="false" data-desc="trueの場合、接続UIはモーダルの代わりにポップアップウィンドウで表示されます。"></x-field>
  <x-field data-name="checkInterval" data-type="number" data-default="2000" data-required="false" data-desc="セッションステータスをチェックする間隔（ミリ秒）。"></x-field>
  <x-field data-name="checkTimeout" data-type="number" data-default="300000" data-required="false" data-desc="セッションチェックプロセス全体タイムアウト（ミリ秒）（5分）。"></x-field>
  <x-field data-name="closeTimeout" data-type="number" data-default="2000" data-required="false" data-desc="接続成功後にモーダルを閉じるまでの遅延時間（ミリ秒）。"></x-field>
  <x-field data-name="extraParams" data-type="object" data-default="{}" data-required="false" data-desc="接続リクエストと共に送信される追加のパラメータ。"></x-field>
  <x-field data-name="tokenKey" data-type="string" data-default="_t_" data-required="false" data-desc="セッショントークンを保存するために使用されるキー。"></x-field>
  <x-field data-name="encKey" data-type="string" data-default="_ek_" data-required="false" data-desc="暗号化に使用されるキー。"></x-field>
  <x-field data-name="baseUrl" data-type="string" data-default="''" data-required="false" data-desc="APIリクエストのベースURL。"></x-field>
  <x-field data-name="messages" data-type="ConnectMessages" data-required="false" data-desc="接続UIに表示されるテキストをカスタマイズするためのオブジェクト。"></x-field>
  <x-field data-name="autoConnect" data-type="boolean" data-default="true" data-required="false" data-desc="trueの場合、保存されたセッションを使用して自動的に接続を試みます。"></x-field>
  <x-field data-name="forceConnected" data-type="boolean | string" data-default="true" data-required="false" data-desc="接続が確立されたものとして強制的に扱います。"></x-field>
  <x-field data-name="saveConnect" data-type="boolean" data-default="true" data-required="false" data-desc="trueの場合、成功した接続セッションはautoConnectのために保存されます。"></x-field>
  <x-field data-name="useSocket" data-type="boolean" data-default="true" data-required="false" data-desc="trueの場合、リアルタイムのステータス更新にWebSocketを使用します。"></x-field>
  <x-field data-name="allowWallet" data-type="boolean" data-default="true" data-required="false" data-desc="trueの場合、DID Wallet経由での接続を許可します。"></x-field>
  <x-field data-name="passkeyBehavior" data-type="'none' | 'both' | 'only-existing' | 'only-new'" data-default="true" data-required="false" data-desc="認証プロセス中にパスキーをどのように処理するかを定義します。"></x-field>
  <x-field data-name="provider" data-type="'wallet' | 'auth0' | ''" data-default="wallet" data-required="false" data-desc="認証プロバイダーを指定します。"></x-field>
  <x-field data-name="qrcodeSize" data-type="number" data-default="160" data-required="false" data-desc="QRコードのサイズ（ピクセル単位）。"></x-field>
  <x-field data-name="showDownload" data-type="boolean" data-default="true" data-required="false" data-desc="trueの場合、DID Walletのダウンロードリンクを表示します。"></x-field>
  <x-field data-name="webWalletUrl" data-type="string" data-default="https://web.abtwallet.io" data-required="false" data-desc="ウェブベースのDID WalletのURL。"></x-field>
  <x-field data-name="enabledConnectTypes" data-type="Array<'web' | 'mobile' | 'auth0' | 'github' | 'apple' | 'google' | 'passkey'>" data-default='["web", "mobile", "github", "apple", "google", "auth0", "passkey"]' data-required="false" data-desc="UIで有効にする接続方法の配列。"></x-field>
  <x-field data-name="extraContent" data-type="any" data-required="false" data-desc="接続モーダル内にレンダリングされるカスタムコンテンツ。"></x-field>
  <x-field data-name="loadingEle" data-type="any" data-required="false" data-desc="表示するカスタムローディング要素。"></x-field>
  <x-field data-name="disableSwitchApp" data-type="boolean" data-default="false" data-required="false" data-desc="trueの場合、モバイルデバイスでの自動アプリ切り替えを無効にします。"></x-field>
  <x-field data-name="hideCloseButton" data-type="boolean" data-default="false" data-required="false" data-desc="trueの場合、モーダルの閉じるボタンを非表示にします。"></x-field>
  <x-field data-name="options" data-type="object" data-default="{}" data-required="false">
    <x-field-desc markdown>追加の設定オプション。</x-field-desc>
    <x-field data-name="showQuickConnect" data-type="boolean" data-default="true" data-required="false" data-desc="trueの場合、保存されたセッションのクイック接続オプションを表示します。"></x-field>
  </x-field>
  <x-field data-name="onRecreateSession" data-type="Function" data-required="false" data-desc="セッションが再作成されたときに実行されるコールバック関数。"></x-field>
  <x-field data-name="checkFn" data-type="() => boolean" data-required="false" data-desc="接続ステータスをチェックするためのカスタム関数。"></x-field>
  <x-field data-name="onSuccess" data-type="(result: object) => void" data-required="false" data-desc="接続が成功したときに実行されるコールバック関数。"></x-field>
  <x-field data-name="onError" data-type="(error: any) => void" data-required="false" data-desc="エラーが発生したときに実行されるコールバック関数。"></x-field>
  <x-field data-name="onClose" data-type="Function" data-required="false" data-desc="接続モーダルが閉じられたときに実行されるコールバック関数。"></x-field>
</x-field-group>

### ConnectMessages

DID Connect UI内に表示されるテキストをカスタマイズするためのオブジェクト。

<x-field-group>
  <x-field data-name="title" data-type="string" data-required="true" data-desc="接続モーダルのメインタイトル。"></x-field>
  <x-field data-name="scan" data-type="string" data-required="true" data-desc="QRコードをスキャンするための指示テキスト。"></x-field>
  <x-field data-name="success" data-type="ReactNode" data-required="true" data-desc="接続成功時に表示されるメッセージまたはコンポーネント。"></x-field>
  <x-field data-name="confirm" data-type="string" data-required="false" data-desc="ユーザーにウォレットでのアクションの確認を促すテキスト。"></x-field>
  <x-field data-name="error" data-type="string" data-required="false" data-desc="表示するカスタムエラーメッセージ。"></x-field>
</x-field-group>

### OpenDidConnect

この関数型は、高度な要件でDID Connectフローを開くためのシグネチャを定義します。これはしばしばプログレッシブ認証に使用されます。

<x-field-group>
  <x-field data-name="params" data-type="ConnectProps" data-required="true" data-desc="標準の接続プロパティ。"></x-field>
  <x-field data-name="options" data-type="object" data-required="false" data-desc="接続モードを制御し、要件を指定するための追加オプション。">
    <x-field data-name="openMode" data-type="'redirect' | 'window' | 'popup'" data-default="popup" data-required="false" data-desc="DID Connectウィンドウの開き方を決定します。"></x-field>
    <x-field data-name="requirements" data-type="object" data-required="false" data-desc="セッションの要件を指定します。">
      <x-field data-name="login" data-type="boolean" data-default="true" data-required="false" data-desc="trueの場合、ユーザーがログインしている必要があります。"></x-field>
      <x-field data-name="bindWallet" data-type="boolean" data-default="true" data-required="false" data-desc="trueの場合、ユーザーがDID Walletアカウントをバインドしている必要があります。"></x-field>
      <x-field data-name="bindDidSpaces" data-type="false | 'read' | 'full'" data-default="false" data-required="false" data-desc="DID Spacesのバインドが必要かどうか、およびどのレベルのアクセスが必要かを指定します。"></x-field>
    </x-field>
    <x-field data-name="baseUrl" data-type="string" data-required="false" data-desc="APIリクエストのベースURL。"></x-field>
    <x-field data-name="locale" data-type="BaseLocale" data-required="false" data-desc="UIの言語（'en' または 'zh'）。"></x-field>
  </x-field>
</x-field-group>

## セッションとユーザーのタイプ

これらのタイプは、`SessionProvider`によって管理されるユーザーとセッションデータの構造を定義します。

### SessionProps

`useSession`フックを介してアクセス可能なメインセッションオブジェクト。ユーザーの状態、セッション情報、およびセッションを管理するためのメソッドが含まれています。

<x-field-group>
  <x-field data-name="action" data-type="string" data-desc="現在実行中のアクション（例: 'login'）。"></x-field>
  <x-field data-name="error" data-type="string" data-desc="セッション管理中に発生したエラーメッセージ。"></x-field>
  <x-field data-name="initialized" data-type="boolean" data-desc="セッションが初期化されている場合はtrue。"></x-field>
  <x-field data-name="loading" data-type="boolean" data-desc="セッションが現在ローディング状態の場合はtrue。"></x-field>
  <x-field data-name="open" data-type="boolean" data-desc="DID Connectモーダルが現在開いている場合はtrue。"></x-field>
  <x-field data-name="walletOS" data-type="WalletOS" data-desc="接続されたウォレットのオペレーティングシステム（'web'、'android'、'ios'）。"></x-field>
  <x-field data-name="user" data-type="User" data-desc="認証されたユーザーオブジェクト。ユーザーがログインしていない場合は未定義。"></x-field>
  <x-field data-name="locale" data-type="UserLocale" data-desc="ユーザーの現在のロケール。"></x-field>
  <x-field data-name="provider" data-type="WalletProvider" data-desc="現在のセッションで使用されているプロバイダー。"></x-field>
  <x-field data-name="baseUrl" data-type="string" data-desc="API呼び出しに使用されるベースURL。"></x-field>
  <x-field data-name="federatedMaster" data-type="object" data-desc="フェデレーションログイングループのマスターサイトに関する情報。"></x-field>
  <x-field data-name="login" data-type="LoginSessionFn" data-desc="ログインプロセスを開始する関数。"></x-field>
  <x-field data-name="logout" data-type="LogoutSessionFn" data-desc="ユーザーをログアウトさせる関数。"></x-field>
  <x-field data-name="switch" data-type="Function" data-desc="異なるユーザーアカウントを切り替える関数。"></x-field>
  <x-field data-name="switchDid" data-type="CommonSessionFn" data-desc="ユーザーのアクティブなDIDを切り替える関数。"></x-field>
  <x-field data-name="autoSwitchDid" data-type="Function" data-desc="DIDを自動的に切り替える関数。"></x-field>
  <x-field data-name="switchProfile" data-type="CommonSessionFn" data-desc="ユーザープロファイルを切り替える関数。"></x-field>
  <x-field data-name="switchPassport" data-type="CommonSessionFn" data-desc="異なるパスポートを切り替える関数。"></x-field>
  <x-field data-name="bindWallet" data-type="CommonSessionFn" data-desc="ウォレットのバインドプロセスを開始する関数。"></x-field>
  <x-field data-name="refresh" data-type="Function" data-desc="セッションデータを手動で更新する関数。"></x-field>
  <x-field data-name="updateConnectedInfo" data-type="(data: object) => void" data-desc="接続情報を更新する関数。"></x-field>
  <x-field data-name="openDidConnect" data-type="OpenDidConnect" data-desc="高度な要件でDID Connectモーダルを開く関数。"></x-field>
  <x-field data-name="useOAuth" data-type="Function" data-desc="OAuth統合のためのフック。"></x-field>
  <x-field data-name="OAuthProvider" data-type="Function" data-desc="OAuthコンテキストのプロバイダーコンポーネント。"></x-field>
  <x-field data-name="OAuthConsumer" data-type="Function" data-desc="OAuthコンテキストのコンシューマーコンポーネント。"></x-field>
  <x-field data-name="OAuthContext" data-type="object" data-desc="OAuth用のReactコンテキストオブジェクト。"></x-field>
  <x-field data-name="usePasskey" data-type="Function" data-desc="パスキー統合のためのフック。"></x-field>
  <x-field data-name="PasskeyProvider" data-type="Function" data-desc="パスキーコンテキストのプロバイダーコンポーネント。"></x-field>
  <x-field data-name="PasskeyConsumer" data-type="Function" data-desc="パスキーコンテキストのコンシューマーコンポーネント。"></x-field>
  <x-field data-name="PasskeyContext" data-type="object" data-desc="パスキー用のReactコンテキストオブジェクト。"></x-field>
  <x-field data-name="useDid" data-type="(options: { session: Session }) => void" data-desc="DID情報を扱うためのユーティリティフック。"></x-field>
  <x-field data-name="WrapDid" data-type="Function" data-desc="DID機能に関連するラッパーコンポーネント。"></x-field>
  <x-field data-name="getUserSessions" data-type="() => Promise<UserSession[]>" data-desc="現在のユーザーのすべてのアクティブなセッションを取得する関数。"></x-field>
</x-field-group>

### User

認証されたユーザーの詳細なプロファイルを表します。

<x-field-group>
  <x-field data-name="did" data-type="string" data-required="true" data-desc="ユーザーの分散型識別子（DID）。"></x-field>
  <x-field data-name="pk" data-type="string" data-required="true" data-desc="ユーザーの公開鍵。"></x-field>
  <x-field data-name="avatar" data-type="string" data-required="true" data-desc="ユーザーのアバターのURL。"></x-field>
  <x-field data-name="fullName" data-type="string" data-required="true" data-desc="ユーザーのフルネーム。"></x-field>
  <x-field data-name="email" data-type="string" data-required="true" data-desc="ユーザーのメールアドレス。"></x-field>
  <x-field data-name="role" data-type="UserRole" data-required="true" data-desc="アプリケーション内でのユーザーの役割（例: 'guest'、'member'、'admin'）。"></x-field>
  <x-field data-name="locale" data-type="UserLocale" data-required="true" data-desc="ユーザーの優先言語。"></x-field>
  <x-field data-name="connectedAccounts" data-type="ConnectAccount[]" data-required="true" data-desc="ユーザーのDIDに接続されているアカウントのリスト。"></x-field>
  <x-field data-name="passports" data-type="Passport[]" data-required="true" data-desc="ユーザーに関連付けられたパスポートのリスト。"></x-field>
  <x-field data-name="permissions" data-type="any[]" data-required="true" data-desc="ユーザーに付与された権限のリスト。"></x-field>
  <x-field data-name="didSpace" data-type="object" data-required="false" data-desc="ユーザーのDID Spaceに関する情報。"></x-field>
  <x-field data-name="approved" data-type="boolean" data-required="true" data-desc="ユーザーが承認されているかどうかを示します。"></x-field>
  <x-field data-name="remark" data-type="string" data-required="false" data-desc="ユーザーに関するオプションの備考またはメモ。"></x-field>
  <x-field data-name="createdAt" data-type="string" data-required="true" data-desc="ユーザーアカウントが作成されたときのタイムスタンプ。"></x-field>
  <x-field data-name="updatedAt" data-type="string" data-required="true" data-desc="ユーザーアカウントが最後に更新されたときのタイムスタンプ。"></x-field>
  <x-field data-name="firstLoginAt" data-type="string" data-required="false" data-desc="ユーザーの初回ログイン時のタイムスタンプ。"></x-field>
  <x-field data-name="lastLoginAt" data-type="string" data-required="false" data-desc="ユーザーの最終ログイン時のタイムスタンプ。"></x-field>
  <x-field data-name="lastLoginIp" data-type="string" data-required="false" data-desc="ユーザーの最終ログイン時のIPアドレス。"></x-field>
</x-field-group>

### UserSession

ユーザーの単一のアクティブなセッションを表し、通常は`getUserSessions`から取得されます。

<x-field-group>
  <x-field data-name="id" data-type="string" data-required="true" data-desc="セッションの一意の識別子。"></x-field>
  <x-field data-name="appName" data-type="string" data-required="true" data-desc="このセッションのアプリケーション名。"></x-field>
  <x-field data-name="appPid" data-type="string" data-required="true" data-desc="アプリケーションのパスポートID。"></x-field>
  <x-field data-name="updatedAt" data-type="string" data-required="true" data-desc="セッションが最後に更新されたときのタイムスタンプ。"></x-field>
  <x-field data-name="userDid" data-type="string" data-required="true" data-desc="このセッションのユーザーのDID。"></x-field>
  <x-field data-name="visitorId" data-type="string" data-required="true" data-desc="セッションに関連付けられたビジターID。"></x-field>
  <x-field data-name="extra" data-type="object" data-required="true" data-desc="セッションに関連付けられた追加データ。"></x-field>
  <x-field data-name="user" data-type="SessionUser" data-required="true" data-desc="セッション用の簡略化されたユーザーオブジェクト。"></x-field>
  <x-field data-name="passportId" data-type="string" data-required="false" data-desc="このセッションで使用されたパスポートのID。"></x-field>
</x-field-group>

### コアデータ型

これらは、他のさまざまなインターフェースで使用される基本的な文字列共用体型です。

| タイプ | 説明 | 可能な値 |
| --- | --- | --- |
| `WalletProvider` | 認証方法またはプロバイダーを識別します。 | `wallet`, `auth0`, `apple`, `github`, `google`, `passkey` |
| `WalletOS` | DID Walletのオペレーティングシステムを表します。 | `web`, `android`, `ios`, `''` (空文字列) |
| `UserRole` | アプリケーション内でのユーザーの役割を定義します。 | `guest`, `member`, `admin`, `owner`, または任意の `string` |
| `BaseLocale` | サポートされている言語の基本セット。 | `en`, `zh` |
| `UserLocale` | ユーザーのロケール。基本ロケールまたはより具体的なロケールを指定できます。 | `en`, `zh`, または任意の `string` (例: 'en-US') |
