@mocanetwork/airkit 1.2.0-beta.2 → 1.2.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,11 @@
1
1
  import { EIP1193EventMap, EIP1193Provider } from "./common/provider/types";
2
2
  import { AirWalletInitializedResult } from "./interfaces";
3
- import { IframeController } from "./iframeController";
4
3
  declare class AirWalletProvider implements EIP1193Provider {
5
4
  #private;
6
5
  chainId: string;
7
- constructor({ isLoggedIn, ensureWallet, getWalletIframeController, }: {
6
+ constructor({ isLoggedIn, ensureWallet, }: {
8
7
  isLoggedIn: () => boolean;
9
8
  ensureWallet: () => Promise<AirWalletInitializedResult>;
10
- getWalletIframeController: () => IframeController;
11
9
  });
12
10
  request(request: {
13
11
  method: string;
@@ -16,6 +14,6 @@ declare class AirWalletProvider implements EIP1193Provider {
16
14
  on<T extends keyof EIP1193EventMap>(eventName: T, listener: EIP1193EventMap[T]): void;
17
15
  removeListener<T extends keyof EIP1193EventMap>(eventName: T, listener: EIP1193EventMap[T]): void;
18
16
  removeAllListeners(): void;
19
- startEventMessageListening: () => void;
17
+ startEventMessageListening: (walletIframe: HTMLIFrameElement) => Promise<void>;
20
18
  }
21
19
  export default AirWalletProvider;
@@ -0,0 +1,17 @@
1
+ import { AirAuthInitializationRequestMessage, AirAuthLoginRequestMessage, AirAuthMessage } from "./common/air/messaging/auth";
2
+ import { MessageServiceBase } from "@mocanetwork/common/src/air/messaging/messageServiceBase";
3
+ export declare class AuthMessageService extends MessageServiceBase<AirAuthMessage> {
4
+ #private;
5
+ static create(): AuthMessageService;
6
+ open(authIframe: HTMLIFrameElement): Promise<void>;
7
+ initWalletCommunication(port: MessagePort): Promise<void>;
8
+ sendPartnerUserInfoRequest(): Promise<import("./common/air/messaging/auth").AirAuthPartnerUserInfoResponseMessage>;
9
+ sendLoginRequest(payload?: AirAuthLoginRequestMessage["payload"]): Promise<import("./common/air/messaging/auth").AirAuthLoginResponseToEmbedMessage>;
10
+ logout(): Promise<import("./common/air/messaging/auth").AirAuthLogoutResponseMessage>;
11
+ resetWalletCommunication(): Promise<void>;
12
+ sendInitializationRequest(payload: AirAuthInitializationRequestMessage["payload"]): Promise<import("./common/air/messaging/auth").AirAuthInitializationResponseMessage>;
13
+ sendSetupWalletSuccessResponse(): Promise<void>;
14
+ sendSetupWalletErrorResponse(error: Error): Promise<void>;
15
+ sendCrossPartnerTokenRequest(targetPartnerUrl: string): Promise<import("./common/air/messaging/auth").AirAuthCrossPartnerTokenResponseMessage>;
16
+ sendPartnerAccessTokenRequest(): Promise<import("./common/air/messaging/auth").AirAuthPartnerAccessTokenResponseMessage>;
17
+ }
@@ -84,7 +84,14 @@ export declare enum AirIDErrorName {
84
84
  AIR_ID_INVALID_MINT_NAME = "AIR_ID_INVALID_MINT_NAME",
85
85
  AIR_ID_MINT_TRANSACTION_HASH_MISMATCH = "AIR_ID_MINT_TRANSACTION_HASH_MISMATCH"
86
86
  }
87
+ /*** Window Errors ***/
88
+ export declare enum WindowErrorName {
89
+ WINDOW_BLOCKED = "WINDOW_BLOCKED",
90
+ WINDOW_CLOSED = "WINDOW_CLOSED"
91
+ }
87
92
  export declare const Codes: {
93
+ WINDOW_BLOCKED: WindowErrorName.WINDOW_BLOCKED;
94
+ WINDOW_CLOSED: WindowErrorName.WINDOW_CLOSED;
88
95
  AIR_ID_MINT_TRANSACTION_NOT_FOUND: AirIDErrorName.AIR_ID_MINT_TRANSACTION_NOT_FOUND;
89
96
  AIR_ID_ON_CHAIN_TRANSACTION_NOT_FOUND: AirIDErrorName.AIR_ID_ON_CHAIN_TRANSACTION_NOT_FOUND;
90
97
  AIR_ID_NOT_FOUND: AirIDErrorName.AIR_ID_NOT_FOUND;
@@ -1,5 +1,5 @@
1
- import { AirErrorName } from "../../air/error/types";
2
- import { AirIdDetails, GlobalId, MFASetup } from "../user/types";
1
+ import { AirIdDetails, GlobalId, MFASetup } from "../../realm/user/types";
2
+ import { AirMessageBase, AirMessageBaseWithoutPayload, AirMessageErrorPayload, AirMessageSuccessPayload } from "./types";
3
3
  export declare const AirAuthMessageTypes: {
4
4
  readonly AUTH_SETUP_COMPLETED: "air_auth_setup_completed";
5
5
  readonly INITIALIZATION_REQUEST: "air_auth_initialization_request";
@@ -30,34 +30,21 @@ export declare const AirAuthMessageTypes: {
30
30
  readonly RESET_WALLET_COMMUNICATION: "air_auth_reset_wallet_communication";
31
31
  };
32
32
  export type AirAuthMessageType = (typeof AirAuthMessageTypes)[keyof typeof AirAuthMessageTypes];
33
- type AirAuthMessageBase<TType extends AirAuthMessageType, TPayload> = {
34
- type: TType;
35
- payload: TPayload;
36
- };
37
- type AirAuthMessageBaseWithoutPayload<TType extends AirAuthMessageType> = {
38
- type: TType;
39
- };
40
- export type AirAuthSuccess = {
41
- success: true;
42
- };
43
- export type AirAuthError = {
44
- success: false;
45
- errorName: AirErrorName;
46
- errorMessage?: string;
47
- };
48
- export type AirAuthLoginSuccess = AirAuthSuccess & {
33
+ export type AirAuthMessageBase<TType extends AirAuthMessageType, TPayload extends object> = AirMessageBase<TType, TPayload>;
34
+ export type AirAuthMessageBaseWithoutPayload<TType extends AirAuthMessageType> = AirMessageBaseWithoutPayload<TType>;
35
+ export type AirAuthLoginSuccess = AirMessageSuccessPayload & {
49
36
  email?: string;
50
37
  partnerAccessToken: string;
51
38
  } & GlobalId & MFASetup;
52
- export type AirAuthSuccessTokens = AirAuthSuccess & {
39
+ export type AirMessageSuccessPayloadTokens = AirMessageSuccessPayload & {
53
40
  accessToken: string;
54
41
  partnerAccessToken: string;
55
42
  };
56
- export type AirAuthUserInfoResponsePayload = (AirAuthSuccess & GlobalId & {
43
+ export type AirAuthUserInfoResponsePayload = (AirMessageSuccessPayload & GlobalId & {
57
44
  email?: string;
58
45
  airIds: AirIdDetails[];
59
- }) | AirAuthError;
60
- export type AirAuthPartnerUserDetailsSuccess = AirAuthSuccess & {
46
+ }) | AirMessageErrorPayload;
47
+ export type AirAuthPartnerUserDetailsSuccess = AirMessageSuccessPayload & {
61
48
  partnerId: string;
62
49
  partnerUserId: string;
63
50
  airId?: AirIdDetails;
@@ -65,11 +52,11 @@ export type AirAuthPartnerUserDetailsSuccess = AirAuthSuccess & {
65
52
  email?: string;
66
53
  } & MFASetup;
67
54
  };
68
- export type AirAuthSuccessWithAirIdAndTokens = AirAuthPartnerUserDetailsSuccess & AirAuthSuccessTokens;
69
- type AirAuthLoginResponseToEmbedPayload = AirAuthLoginSuccess | AirAuthError;
70
- type AirAuthLoginResponseToWalletPayload = AirAuthSuccessWithAirIdAndTokens | AirAuthError;
71
- type AirAuthRefreshTokenResponsePayload = AirAuthSuccessTokens | AirAuthError;
72
- type AirAuthPartnerUserInfoResponsePayload = AirAuthPartnerUserDetailsSuccess | AirAuthError;
55
+ export type AirAuthSuccessWithAirIdAndTokens = AirAuthPartnerUserDetailsSuccess & AirMessageSuccessPayloadTokens;
56
+ type AirAuthLoginResponseToEmbedPayload = AirAuthLoginSuccess | AirMessageErrorPayload;
57
+ type AirAuthLoginResponseToWalletPayload = AirAuthSuccessWithAirIdAndTokens | AirMessageErrorPayload;
58
+ type AirAuthRefreshTokenResponsePayload = AirMessageSuccessPayloadTokens | AirMessageErrorPayload;
59
+ type AirAuthPartnerUserInfoResponsePayload = AirAuthPartnerUserDetailsSuccess | AirMessageErrorPayload;
73
60
  type AirAuthWalletTokenRequestPayload = {
74
61
  nonce: string;
75
62
  partnerId: string;
@@ -77,36 +64,38 @@ type AirAuthWalletTokenRequestPayload = {
77
64
  type AirAuthWalletTokenResponsePayload = (AirAuthPartnerUserDetailsSuccess & {
78
65
  accessToken: string;
79
66
  walletToken: string;
80
- }) | AirAuthError;
67
+ }) | AirMessageErrorPayload;
81
68
  export type AirAuthInitializationSuccess = (AirAuthLoginSuccess & {
82
69
  rehydrated: true;
83
- }) | (AirAuthSuccess & {
70
+ }) | (AirMessageSuccessPayload & {
84
71
  rehydrated: false;
85
72
  });
86
- type AirAuthInitializationResponsePayload = AirAuthInitializationSuccess | AirAuthError;
73
+ type AirAuthInitializationResponsePayload = AirAuthInitializationSuccess | AirMessageErrorPayload;
87
74
  type AirAuthLoginRequestPayload = {
88
75
  partnerLoginToken?: string;
89
76
  };
90
- type AirAuthSetupWalletResponsePayload = AirAuthSuccess | AirAuthError;
77
+ type AirAuthSetupWalletResponsePayload = AirMessageSuccessPayload | AirMessageErrorPayload;
91
78
  type AirAuthSignSiweMessageRequestPayload = {
92
79
  wallet: string;
93
80
  };
94
- export type AirAuthSignSiweMessageSuccessPayload = AirAuthSuccess & {
81
+ export type AirAuthSignSiweMessageSuccessPayload = AirMessageSuccessPayload & {
95
82
  address: string;
96
83
  message: string;
97
84
  signature: string;
98
85
  };
99
- type AirAuthSignSiweMessageResponsePayload = AirAuthSignSiweMessageSuccessPayload | AirAuthError;
86
+ type AirAuthSignSiweMessageResponsePayload = AirAuthSignSiweMessageSuccessPayload | AirMessageErrorPayload;
100
87
  type AirAuthCrossPartnerTokenRequestPayload = {
101
88
  targetPartnerUrl: string;
102
89
  };
103
- export type AirAuthCrossPartnerTokenSuccessPayload = AirAuthSuccess & {
90
+ export type AirAuthCrossPartnerTokenSuccessPayload = AirMessageSuccessPayload & {
104
91
  urlWithToken: string;
105
92
  };
106
93
  export type AirAuthInitializationRequestPayload = {
107
94
  partnerId: string;
108
95
  partnerDAppUrl?: string;
109
96
  skipRehydration?: boolean;
97
+ sdkVersion: string;
98
+ enableLogging: boolean;
110
99
  };
111
100
  export type AirAuthInitializationRequestMessage = AirAuthMessageBase<"air_auth_initialization_request", AirAuthInitializationRequestPayload>;
112
101
  export type AirAuthInitializationResponseMessage = AirAuthMessageBase<"air_auth_initialization_response", AirAuthInitializationResponsePayload>;
@@ -115,7 +104,9 @@ export type AirAuthLoginResponseToEmbedMessage = AirAuthMessageBase<"air_auth_lo
115
104
  export type AirAuthLoginResponseToWalletServiceMessage = AirAuthMessageBase<"air_auth_login_wallet_response", AirAuthLoginResponseToWalletPayload>;
116
105
  export type AirAuthUserInfoRequestMessage = AirAuthMessageBaseWithoutPayload<"air_auth_user_info_request">;
117
106
  export type AirAuthUserInfoResponseMessage = AirAuthMessageBase<"air_auth_user_info_response", AirAuthUserInfoResponsePayload>;
118
- export type AirAuthPartnerUserInfoRequestMessage = AirAuthMessageBaseWithoutPayload<"air_auth_partner_user_info_request">;
107
+ export type AirAuthPartnerUserInfoRequestMessage = AirAuthMessageBase<"air_auth_partner_user_info_request", {
108
+ allowCache?: boolean;
109
+ }>;
119
110
  export type AirAuthPartnerUserInfoResponseMessage = AirAuthMessageBase<"air_auth_partner_user_info_response", AirAuthPartnerUserInfoResponsePayload>;
120
111
  export type AirAuthRefreshTokenRequestMessage = AirAuthMessageBaseWithoutPayload<"air_auth_refresh_token_request">;
121
112
  export type AirAuthRefreshTokenResponseMessage = AirAuthMessageBase<"air_auth_refresh_token_response", AirAuthRefreshTokenResponsePayload>;
@@ -128,7 +119,7 @@ export type AirAuthSetupWalletResponseMessage = AirAuthMessageBase<"air_auth_set
128
119
  export type AirAuthSignSiweMessageRequestMessage = AirAuthMessageBase<"air_auth_sign_siwe_message_request", AirAuthSignSiweMessageRequestPayload>;
129
120
  export type AirAuthSignSiweMessageResponseMessage = AirAuthMessageBase<"air_auth_sign_siwe_message_response", AirAuthSignSiweMessageResponsePayload>;
130
121
  export type AirAuthCrossPartnerTokenRequestMessage = AirAuthMessageBase<"air_auth_cross_partner_token_request", AirAuthCrossPartnerTokenRequestPayload>;
131
- export type AirAuthCrossPartnerTokenResponseMessage = AirAuthMessageBase<"air_auth_cross_partner_token_response", AirAuthCrossPartnerTokenSuccessPayload | AirAuthError>;
122
+ export type AirAuthCrossPartnerTokenResponseMessage = AirAuthMessageBase<"air_auth_cross_partner_token_response", AirAuthCrossPartnerTokenSuccessPayload | AirMessageErrorPayload>;
132
123
  export type AirAuthLogoutRequestMessage = AirAuthMessageBaseWithoutPayload<"air_auth_logout_request">;
133
124
  export type AirAuthLogoutResponseMessage = AirAuthMessageBaseWithoutPayload<"air_auth_logout_response">;
134
125
  export type AirAuthResetWalletCommunicationRequestMessage = AirAuthMessageBaseWithoutPayload<"air_auth_reset_wallet_communication">;
@@ -136,9 +127,9 @@ export type AirAuthIframeVisibilityRequestMessage = AirAuthMessageBase<"air_auth
136
127
  visible: boolean;
137
128
  }>;
138
129
  export type AirAuthPartnerAccessTokenRequestMessage = AirAuthMessageBaseWithoutPayload<"air_auth_partner_access_token_request">;
139
- export type AirAuthPartnerAccessTokenResponsePayload = (AirAuthSuccess & {
130
+ export type AirAuthPartnerAccessTokenResponsePayload = (AirMessageSuccessPayload & {
140
131
  partnerAccessToken: string;
141
- }) | AirAuthError;
132
+ }) | AirMessageErrorPayload;
142
133
  export type AirAuthPartnerAccessTokenResponseMessage = AirAuthMessageBase<"air_auth_partner_access_token_response", AirAuthPartnerAccessTokenResponsePayload>;
143
134
  export type AirAuthMessage = AirAuthSetupCompletedMessage | AirAuthInitializationRequestMessage | AirAuthInitializationResponseMessage | AirAuthLoginRequestMessage | AirAuthLoginResponseToEmbedMessage | AirAuthLoginResponseToWalletServiceMessage | AirAuthUserInfoRequestMessage | AirAuthUserInfoResponseMessage | AirAuthPartnerUserInfoRequestMessage | AirAuthPartnerUserInfoResponseMessage | AirAuthRefreshTokenRequestMessage | AirAuthRefreshTokenResponseMessage | AirAuthWalletTokenRequestMessage | AirAuthWalletTokenResponseMessage | AirAuthInitWalletCommunicationMessage | AirAuthSetupWalletRequestMessage | AirAuthSetupWalletResponseMessage | AirAuthSignSiweMessageRequestMessage | AirAuthSignSiweMessageResponseMessage | AirAuthCrossPartnerTokenRequestMessage | AirAuthCrossPartnerTokenResponseMessage | AirAuthLogoutRequestMessage | AirAuthLogoutResponseMessage | AirAuthIframeVisibilityRequestMessage | AirAuthResetWalletCommunicationRequestMessage | AirAuthPartnerAccessTokenRequestMessage | AirAuthPartnerAccessTokenResponseMessage;
144
135
  export {};
@@ -0,0 +1,34 @@
1
+ import { Observable } from "rxjs";
2
+ import { AirMessageBase, AirMessageBaseWithoutPayload } from "./types";
3
+ export declare abstract class MessageServiceBase<TMessage extends AirMessageBase | AirMessageBaseWithoutPayload> {
4
+ protected readonly name: string;
5
+ protected allowedMessageTypes: string[];
6
+ private eventSubject;
7
+ private _events$;
8
+ private _messages$;
9
+ private messagePort?;
10
+ private targetWindow?;
11
+ private targetOrigin?;
12
+ private closeListener;
13
+ get events$(): Observable<MessageEvent<TMessage>>;
14
+ get messages$(): Observable<TMessage>;
15
+ get isOpen(): boolean;
16
+ protected constructor(name: string, allowedMessageTypes: string[]);
17
+ protected _open(target: {
18
+ window: Window;
19
+ origin: string;
20
+ } | MessagePort): Promise<void>;
21
+ protected isMessageAllowed(message: TMessage): boolean;
22
+ protected onBeforeEvent(_event: MessageEvent<TMessage>): Promise<void>;
23
+ close(): Promise<void>;
24
+ protected createErrorResponseMessage<T extends TMessage["type"]>(type: T, error: Error): {
25
+ type: T;
26
+ payload: {
27
+ success: false;
28
+ errorName: "USER_CANCELLED" | "CONFIG_ERROR" | "CLIENT_ERROR" | "UNKNOWN_ERROR" | "PERMISSION_NOT_ENABLED" | "SMART_ACCOUNT_NOT_DEPLOYED" | import("../error/codes").AuthErrorName | import("../error/codes").PartnerAccessTokenErrorName | import("../error/codes").RealmIDErrorName | import("../error/codes").ParameterErrorName | import("../error/codes").ServerErrorName | import("../error/codes").PasskeyErrorName | import("../error/codes").PasswordlessErrorName | import("../error/codes").AuthWalletErrorName | import("../error/codes").WalletLinkErrorName | import("../error/codes").IntentErrorName | import("../error/codes").PrivyErrorName | import("../error/codes").AirIDErrorName | import("../error/codes").WindowErrorName;
29
+ errorMessage: string;
30
+ };
31
+ };
32
+ protected sendMessage(message: TMessage, transfer?: Transferable[]): Promise<void>;
33
+ protected deepClone(message: TMessage): TMessage;
34
+ }
@@ -1,4 +1,4 @@
1
- import { EIP1193Request, EIP1193EventMap } from "../../provider/types";
1
+ import { EIP1193EventMap, EIP1193Request } from "../../provider/types";
2
2
  export declare const enum AirWalletProviderMessageTypes {
3
3
  REQUEST = "JRPC_REQUEST",
4
4
  RESPONSE = "JRPC_RESPONSE",
@@ -0,0 +1,16 @@
1
+ import { AirErrorName } from "../error/types";
2
+ export type AirMessageBase<TType extends string = string, TPayload extends object = object> = {
3
+ type: TType;
4
+ payload: TPayload;
5
+ };
6
+ export type AirMessageBaseWithoutPayload<TType extends string = string> = {
7
+ type: TType;
8
+ };
9
+ export type AirMessageSuccessPayload = {
10
+ success: true;
11
+ };
12
+ export type AirMessageErrorPayload = {
13
+ success: false;
14
+ errorName: AirErrorName;
15
+ errorMessage?: string;
16
+ };
@@ -0,0 +1,140 @@
1
+ import type { Hex } from "viem";
2
+ import { ActionPolicyInfo, Call } from "../../realm/smart-session/types";
3
+ import { AirIdDetails, MFASetup } from "../../realm/user/types";
4
+ import { AirMessageBase, AirMessageBaseWithoutPayload, AirMessageErrorPayload, AirMessageSuccessPayload } from "./types";
5
+ export declare const AirWalletMessageTypes: {
6
+ readonly SERVICE_STARTED: "air_service_started";
7
+ readonly INITIALIZATION_REQUEST: "air_initialization_request";
8
+ readonly INITIALIZATION_RESPONSE: "air_initialization_response";
9
+ readonly INIT_AUTH_COMMUNICATION: "air_init_auth_communication";
10
+ readonly WALLET_INITIALIZED: "air_wallet_initialized";
11
+ readonly WALLET_LOGIN_REQUEST: "air_wallet_login_request";
12
+ readonly WALLET_LOGIN_RESPONSE: "air_wallet_login_response";
13
+ readonly SETUP_OR_UPDATE_MFA_REQUEST: "air_setup_mfa_request";
14
+ readonly SETUP_OR_UPDATE_MFA_RESPONSE: "air_setup_mfa_response";
15
+ readonly CLAIM_ID_REQUEST: "air_claim_id_request";
16
+ readonly CLAIM_ID_RESPONSE: "air_claim_id_response";
17
+ readonly DEPLOY_SMART_ACCOUNT_REQUEST: "air_deploy_smart_account_request";
18
+ readonly DEPLOY_SMART_ACCOUNT_RESPONSE: "air_deploy_smart_account_response";
19
+ readonly GRANT_PERMISSIONS_REQUEST: "air_grant_permissions_request";
20
+ readonly GRANT_PERMISSIONS_RESPONSE: "air_grant_permissions_response";
21
+ readonly EXECUTE_ACTION_REQUEST: "air_execute_action_request";
22
+ readonly EXECUTE_ACTION_RESPONSE: "air_execute_action_response";
23
+ readonly REVOKE_PERMISSIONS_REQUEST: "air_revoke_permissions_request";
24
+ readonly REVOKE_PERMISSIONS_RESPONSE: "air_revoke_permissions_response";
25
+ readonly LIST_ALL_SESSION_KEY_SCOPES_REQUEST: "air_list_all_session_key_scopes_request";
26
+ readonly LIST_ALL_SESSION_KEY_SCOPES_RESPONSE: "air_list_all_session_key_scopes_response";
27
+ readonly WALLET_IFRAME_VISIBILITY_REQUEST: "air_wallet_iframe_visibility_request";
28
+ readonly OPEN_WINDOW_REQUEST: "air_open_window_request";
29
+ readonly OPEN_WINDOW_RESPONSE: "air_open_window_response";
30
+ readonly OPEN_WINDOW_RETRY_REQUEST: "air_open_window_retry_request";
31
+ readonly OPEN_WINDOW_RETRY_RESPONSE: "air_open_window_retry_response";
32
+ readonly WINDOW_CLOSED: "air_window_closed";
33
+ readonly IS_SMART_ACCOUNT_DEPLOYED_REQUEST: "air_is_smart_account_deployed_request";
34
+ readonly IS_SMART_ACCOUNT_DEPLOYED_RESPONSE: "air_is_smart_account_deployed_response";
35
+ readonly LOGOUT_REQUEST: "air_logout_request";
36
+ readonly LOGOUT_RESPONSE: "air_logout_response";
37
+ };
38
+ export type AirWalletMessageType = (typeof AirWalletMessageTypes)[keyof typeof AirWalletMessageTypes];
39
+ export type AirWalletMessageBase<TType extends AirWalletMessageType, TPayload extends object> = AirMessageBase<TType, TPayload>;
40
+ export type AirWalletMessageBaseWithoutPayload<TType extends AirWalletMessageType> = AirMessageBaseWithoutPayload<TType>;
41
+ export type AirInitializationResponsePayload = AirMessageSuccessPayload | AirMessageErrorPayload;
42
+ export type AirInitializationRequestMessage = AirWalletMessageBase<"air_initialization_request", {
43
+ partnerId: string;
44
+ enableLogging: boolean;
45
+ sdkVersion: string;
46
+ }>;
47
+ export type AirInitializationResponseMessage = AirWalletMessageBase<"air_initialization_response", AirInitializationResponsePayload>;
48
+ export type AirWalletInitializationSuccess = AirMessageSuccessPayload & ({
49
+ isWalletLoggedIn: false;
50
+ } | ({
51
+ isWalletLoggedIn: true;
52
+ addresses: {
53
+ aa: string;
54
+ };
55
+ } & MFASetup));
56
+ type AirWalletInitializedPayload = AirWalletInitializationSuccess | AirMessageErrorPayload;
57
+ export type AirWalletInitializedMessage = AirWalletMessageBase<"air_wallet_initialized", AirWalletInitializedPayload>;
58
+ export type AirWalletLoginRequestMessage = AirWalletMessageBaseWithoutPayload<"air_wallet_login_request">;
59
+ export type AirWalletLoginSuccess = AirMessageSuccessPayload & MFASetup & {
60
+ addresses: {
61
+ aa: string;
62
+ };
63
+ };
64
+ type AirWalletLoginResponsePayload = AirWalletLoginSuccess | AirMessageErrorPayload;
65
+ export type AirWalletLoginResponseMessage = AirWalletMessageBase<"air_wallet_login_response", AirWalletLoginResponsePayload>;
66
+ export type AirSetupOrUpdateMfaRequestMessage = AirWalletMessageBaseWithoutPayload<"air_setup_mfa_request">;
67
+ export type AirSetupOrUpdateMfaResponseMessage = AirWalletMessageBase<"air_setup_mfa_response", AirMessageSuccessPayload | AirMessageErrorPayload>;
68
+ export type AirClaimIdRequestMessage = AirWalletMessageBase<"air_claim_id_request", {
69
+ token?: string;
70
+ claimInBackground?: boolean;
71
+ }>;
72
+ export type AirClaimIdSuccess = AirMessageSuccessPayload & {
73
+ airId: AirIdDetails;
74
+ };
75
+ export type AirClaimIdResponsePayload = AirClaimIdSuccess | AirMessageErrorPayload;
76
+ export type AirClaimIdResponseMessage = AirWalletMessageBase<"air_claim_id_response", AirClaimIdResponsePayload>;
77
+ export type AirInitAuthCommunicationMessage = AirWalletMessageBase<"air_init_auth_communication", {
78
+ skipWalletLogin: boolean;
79
+ }>;
80
+ export type AirIsSmartAccountDeployedResponseMessage = AirWalletMessageBase<"air_is_smart_account_deployed_response", (AirMessageSuccessPayload & {
81
+ isDeployed: boolean;
82
+ }) | AirMessageErrorPayload>;
83
+ export type AirDeploySmartAccountRequestMessage = AirWalletMessageBaseWithoutPayload<"air_deploy_smart_account_request">;
84
+ export type AirDeploySmartAccountResponseMessage = AirWalletMessageBase<"air_deploy_smart_account_response", (AirMessageSuccessPayload & {
85
+ txHash: string;
86
+ }) | AirMessageErrorPayload>;
87
+ export type AirIsSmartAccountDeployedRequestMessage = AirWalletMessageBaseWithoutPayload<"air_is_smart_account_deployed_request">;
88
+ export type AirGrantPermissionsRequestMessage = AirWalletMessageBase<"air_grant_permissions_request", {
89
+ policies: ActionPolicyInfo[];
90
+ }>;
91
+ export type AirGrantPermissionsResponseMessage = AirWalletMessageBase<"air_grant_permissions_response", (AirMessageSuccessPayload & {
92
+ sessionData: {
93
+ compressedSessionData: string;
94
+ sessionOwnerPrivateKey: string;
95
+ permissionIds: string[];
96
+ };
97
+ }) | AirMessageErrorPayload>;
98
+ export type AirExecuteActionRequestMessage = AirWalletMessageBase<"air_execute_action_request", {
99
+ sessionData: string;
100
+ call: Call;
101
+ sessionOwnerPrivateKey: `0x${string}`;
102
+ }>;
103
+ export type AirRevokePermissionsRequestMessage = AirWalletMessageBase<"air_revoke_permissions_request", {
104
+ permissionId: Hex;
105
+ }>;
106
+ export type AirRevokePermissionsResponseMessage = AirWalletMessageBase<"air_revoke_permissions_response", (AirMessageSuccessPayload & {
107
+ txHash: string;
108
+ }) | AirMessageErrorPayload>;
109
+ export type AirExecuteActionResponseMessage = AirWalletMessageBase<"air_execute_action_response", (AirMessageSuccessPayload & {
110
+ txHash: string;
111
+ }) | AirMessageErrorPayload>;
112
+ export type AirListAllSessionKeyScopesSuccess = {
113
+ success: true;
114
+ sessionKeyScopes: ActionPolicyInfo[];
115
+ };
116
+ export type AirListAllSessionKeyScopesRequestMessage = AirWalletMessageBaseWithoutPayload<"air_list_all_session_key_scopes_request">;
117
+ export type AirListAllSessionKeyScopesResponseMessage = AirWalletMessageBase<"air_list_all_session_key_scopes_response", AirListAllSessionKeyScopesSuccess | AirMessageErrorPayload>;
118
+ export type AirWalletIframeVisibilityRequestMessage = AirWalletMessageBase<"air_wallet_iframe_visibility_request", {
119
+ visible: boolean;
120
+ }>;
121
+ export type AirLogoutRequestMessage = AirWalletMessageBaseWithoutPayload<"air_logout_request">;
122
+ export type AirLogoutResponseMessage = AirWalletMessageBase<"air_logout_response", AirMessageSuccessPayload | AirMessageErrorPayload>;
123
+ export type AirOpenWindowRequestMessage = AirWalletMessageBase<"air_open_window_request", {
124
+ url: string;
125
+ windowId: string;
126
+ }>;
127
+ export type AirOpenWindowResponseMessage = AirWalletMessageBase<"air_open_window_response", (AirMessageSuccessPayload | AirMessageErrorPayload) & {
128
+ windowId: string;
129
+ }>;
130
+ export type AirOpenWindowRetryRequestMessage = AirWalletMessageBase<"air_open_window_retry_request", {
131
+ windowId: string;
132
+ }>;
133
+ export type AirOpenWindowRetryResponseMessage = AirWalletMessageBase<"air_open_window_retry_response", (AirMessageSuccessPayload | AirMessageErrorPayload) & {
134
+ windowId: string;
135
+ }>;
136
+ export type AirWindowClosedMessage = AirWalletMessageBase<"air_window_closed", {
137
+ windowId: string;
138
+ }>;
139
+ export type AirWalletMessage = AirInitializationRequestMessage | AirInitializationResponseMessage | AirWalletInitializedMessage | AirWalletLoginRequestMessage | AirWalletLoginResponseMessage | AirSetupOrUpdateMfaRequestMessage | AirSetupOrUpdateMfaResponseMessage | AirClaimIdRequestMessage | AirClaimIdResponseMessage | AirInitAuthCommunicationMessage | AirIsSmartAccountDeployedRequestMessage | AirIsSmartAccountDeployedResponseMessage | AirDeploySmartAccountRequestMessage | AirDeploySmartAccountResponseMessage | AirGrantPermissionsRequestMessage | AirGrantPermissionsResponseMessage | AirRevokePermissionsRequestMessage | AirRevokePermissionsResponseMessage | AirExecuteActionRequestMessage | AirExecuteActionResponseMessage | AirListAllSessionKeyScopesRequestMessage | AirListAllSessionKeyScopesResponseMessage | AirWalletIframeVisibilityRequestMessage | AirLogoutRequestMessage | AirLogoutResponseMessage | AirOpenWindowRequestMessage | AirOpenWindowResponseMessage | AirOpenWindowRetryRequestMessage | AirOpenWindowRetryResponseMessage | AirWindowClosedMessage;
140
+ export {};
@@ -0,0 +1,2 @@
1
+ import { Environment } from "./types";
2
+ export declare const configureLogLevel: (environment: Environment, enableLogging: boolean) => void;
@@ -1,3 +1,4 @@
1
+ export type Environment = "development" | "staging" | "uat" | "production";
1
2
  export type Jsonable = string | number | boolean | null | undefined | readonly Jsonable[] | {
2
3
  readonly [key: string]: Jsonable;
3
4
  } | {
@@ -19,3 +19,9 @@ export declare const setPartnerTheme: (theme: string, partnerId: string, configA
19
19
  */
20
20
  export declare const randomId: () => string;
21
21
  export declare const bigIntReplacer: (_key: string, value: unknown) => unknown;
22
+ /**
23
+ * Creates a window features string for `window.open`, based on the current screen size.
24
+ * It tries to center the window and limits the size to the given max width and height.
25
+ * Slightly reduces the size to avoid browser auto-resizing.
26
+ */
27
+ export declare const getWindowFeatures: (maxWidth: number, maxHeight: number) => string;
@@ -6,14 +6,19 @@ export declare class WindowController {
6
6
  private windowOrigin;
7
7
  private windowId;
8
8
  private _messages$;
9
- get messages$(): import("rxjs").Observable<MessageEvent<any>>;
10
- constructor(windowUrl: string, windowId: string);
9
+ get messages$(): import("rxjs").Observable<MessageEvent<unknown>>;
10
+ constructor(windowId: string, windowUrl: string);
11
11
  get windowInstance(): Window | null;
12
- openWindow(): Window;
12
+ openWindow(onRetry: () => Promise<void>): Promise<{
13
+ pendingWindowOpenCheck: Promise<"opened" | "retry">;
14
+ }>;
13
15
  postMessage(message: unknown, transfer?: Transferable[]): void;
14
16
  onMessage(callback: (event: MessageEvent) => void): {
15
17
  close: () => void;
16
18
  };
17
19
  cleanup(): void;
18
20
  onClose(callback: () => void): Subscription;
21
+ private isWindowOpen;
22
+ private tryOpenWindow;
23
+ private scheduleWindowClosedChecks;
19
24
  }
@@ -4,9 +4,10 @@ type AirServiceErrorName = AirErrorName | "NOT_INITIALISED" | "ALREADY_INITIALIS
4
4
  export declare class AirServiceError extends BaseError<AirServiceErrorName> {
5
5
  static from(error: unknown): AirServiceError;
6
6
  }
7
- declare class ProviderRpcError extends Error {
7
+ export declare class ProviderRpcError extends Error {
8
8
  code: number;
9
9
  name: string;
10
+ metaMessages: string[];
10
11
  constructor(message: string);
11
12
  }
12
13
  export declare class UserRejectedRequestError extends ProviderRpcError {
@@ -36,6 +37,7 @@ export declare class SwitchChainError extends ProviderRpcError {
36
37
  export declare class TransactionRejectedRpcError extends ProviderRpcError {
37
38
  code: number;
38
39
  name: string;
40
+ constructor(message: string);
39
41
  }
40
42
  export declare class InvalidRequestRpcError extends ProviderRpcError {
41
43
  code: number;
@@ -1,4 +1,3 @@
1
- import { LogLevelDesc } from "loglevel";
2
1
  import { AirIdDetails } from "./common/realm/user/types";
3
2
  import { EIP1193Provider as EIP1193ProviderInterface } from "./common/provider/types";
4
3
  export declare const BUILD_ENV: {
@@ -11,7 +10,6 @@ export type BUILD_ENV_TYPE = (typeof BUILD_ENV)[keyof typeof BUILD_ENV];
11
10
  export interface AirUrlConfig {
12
11
  authUrl: string;
13
12
  walletUrl: string;
14
- logLevel: LogLevelDesc;
15
13
  }
16
14
  export type AirInitializationResult = {
17
15
  rehydrated: boolean;
@@ -0,0 +1,8 @@
1
+ import { MessageServiceBase } from "./common/air/messaging/messageServiceBase";
2
+ import { AirWalletProviderMessage, AirWalletProviderMessageRequest } from "./common/air/messaging/provider";
3
+ export declare class ProviderMessageService extends MessageServiceBase<AirWalletProviderMessage> {
4
+ #private;
5
+ static create(): ProviderMessageService;
6
+ open(walletIframe: HTMLIFrameElement): Promise<void>;
7
+ sendWalletProviderRequest(payload: AirWalletProviderMessageRequest["payload"]): Promise<import("./common/air/messaging/provider").AirWalletProviderMessageSuccessResponse | import("./common/air/messaging/provider").AirWalletProviderMessageErrorResponse>;
8
+ }
@@ -2,6 +2,6 @@ import { AirUrlConfig, BUILD_ENV_TYPE } from "./interfaces";
2
2
  export declare const AIR_URLS: Record<BUILD_ENV_TYPE, AirUrlConfig>;
3
3
  export declare const handleEvent: (handle: EventTarget, eventName: string, handler: (...args: unknown[]) => void, ...handlerArgs: unknown[]) => void;
4
4
  export declare const htmlToElement: <T extends Element>(html: string) => T;
5
- export declare const isElement: (element: unknown) => element is Document | Element;
5
+ export declare const isElement: (element: unknown) => element is Element | Document;
6
6
  export declare const randomId: () => string;
7
- export declare const getWindowFeatures: (width: number, height: number) => string;
7
+ export declare const extractErrorHash: (message: string) => string;
@@ -0,0 +1,35 @@
1
+ import type { Hex } from "viem";
2
+ import { AirClaimIdRequestMessage, AirGrantPermissionsRequestMessage, AirInitializationRequestMessage, AirWalletMessage } from "./common/air/messaging/wallet";
3
+ import type { ActionPolicyInfo, Call } from "./common/realm/smart-session/types";
4
+ import { MessageServiceBase } from "./common/air/messaging/messageServiceBase";
5
+ export declare class WalletMessageService extends MessageServiceBase<AirWalletMessage> {
6
+ #private;
7
+ static create(): WalletMessageService;
8
+ open(walletIframe: HTMLIFrameElement): Promise<void>;
9
+ initAuthCommunication(skipWalletLogin: boolean, port: MessagePort): Promise<void>;
10
+ sendGrantPermissionRequest(policies: ActionPolicyInfo[]): Promise<{
11
+ compressedSessionData: string;
12
+ sessionOwnerPrivateKey: string;
13
+ permissionIds: string[];
14
+ }>;
15
+ sendExecuteActionRequest(params: {
16
+ sessionData: string;
17
+ sessionOwnerPrivateKey: `0x${string}`;
18
+ call: Call;
19
+ }): Promise<string>;
20
+ sendRevokePermissionsRequest(permissionId: Hex): Promise<string>;
21
+ sendDeploySmartAccountRequest(): Promise<import("./common/air/messaging/wallet").AirDeploySmartAccountResponseMessage>;
22
+ sendIsSmartAccountDeployedRequest(): Promise<import("./common/air/messaging/wallet").AirIsSmartAccountDeployedResponseMessage>;
23
+ logout(): Promise<import("./common/air/messaging/wallet").AirLogoutResponseMessage>;
24
+ sendInitializationRequest(payload: AirInitializationRequestMessage["payload"]): Promise<import("./common/air/messaging/wallet").AirInitializationResponseMessage>;
25
+ sendGrantPermissionsRequest(payload: AirGrantPermissionsRequestMessage["payload"]): Promise<import("./common/air/messaging/wallet").AirGrantPermissionsResponseMessage>;
26
+ sendListAllSessionKeyScopesRequest(): Promise<import("./common/air/messaging/wallet").AirListAllSessionKeyScopesResponseMessage>;
27
+ onInitialized(): Promise<import("./common/air/messaging/wallet").AirWalletInitializedMessage>;
28
+ sendLoginRequest(): Promise<import("./common/air/messaging/wallet").AirWalletLoginResponseMessage>;
29
+ sendSetupMfaRequest(): Promise<import("./common/air/messaging/wallet").AirSetupOrUpdateMfaResponseMessage>;
30
+ sendOpenWindowSuccessResponse(windowId: string, port: MessagePort): Promise<void>;
31
+ sendOpenWindowErrorResponse(windowId: string, error: Error): Promise<void>;
32
+ sendOpenWindowRetryRequest(windowId: string): Promise<import("./common/air/messaging/wallet").AirOpenWindowRetryResponseMessage>;
33
+ sendWindowClosed(windowId: string): Promise<void>;
34
+ sendClaimIdRequest(payload: AirClaimIdRequestMessage["payload"]): Promise<import("./common/air/messaging/wallet").AirClaimIdResponseMessage>;
35
+ }
@@ -1,16 +1,19 @@
1
- import { WindowController } from "./windowController";
1
+ import { WindowController } from "./common/window/windowController";
2
2
  declare class WindowService {
3
3
  private static _instance;
4
4
  static get instance(): WindowService;
5
5
  private windowControllers;
6
6
  private sendWindowInitializationRequest;
7
- openAndInitializeWalletServiceWindow({ url, windowId, partnerId, enableLogging, port, }: {
7
+ openAndInitializeWalletServiceWindow({ url, windowId, partnerId, enableLogging, onRetry, }: {
8
8
  url: string;
9
9
  windowId: string;
10
10
  partnerId: string;
11
11
  enableLogging: boolean;
12
+ onRetry: () => Promise<void>;
13
+ }): Promise<{
14
+ windowController: WindowController;
12
15
  port: MessagePort;
13
- }): Promise<WindowController>;
16
+ }>;
14
17
  getWindowController(windowId: string): WindowController;
15
18
  removeWindowController(windowId: string): void;
16
19
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mocanetwork/airkit",
3
- "version": "1.2.0-beta.2",
3
+ "version": "1.2.0-beta.3",
4
4
  "description": "Air kit to interact with the Moca Network",
5
5
  "main": "dist/airkit.cjs.js",
6
6
  "module": "dist/airkit.esm.js",