@thru/protocol 0.0.4 → 0.0.5

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.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AppMetadata, AddressType, ConnectResult } from '@thru/chain-interfaces';
1
+ import { AppMetadata, WalletAccount, ConnectResult } from '@thru/chain-interfaces';
2
2
  export { AppMetadata, ConnectResult } from '@thru/chain-interfaces';
3
3
 
4
4
  declare const POST_MESSAGE_REQUEST_TYPES: {
@@ -7,6 +7,7 @@ declare const POST_MESSAGE_REQUEST_TYPES: {
7
7
  readonly SIGN_MESSAGE: "signMessage";
8
8
  readonly SIGN_TRANSACTION: "signTransaction";
9
9
  readonly GET_ACCOUNTS: "getAccounts";
10
+ readonly SELECT_ACCOUNT: "selectAccount";
10
11
  };
11
12
  type RequestType = typeof POST_MESSAGE_REQUEST_TYPES[keyof typeof POST_MESSAGE_REQUEST_TYPES];
12
13
  declare const EMBEDDED_PROVIDER_EVENTS: {
@@ -16,6 +17,7 @@ declare const EMBEDDED_PROVIDER_EVENTS: {
16
17
  readonly CONNECT_ERROR: "connect_error";
17
18
  readonly ERROR: "error";
18
19
  readonly LOCK: "lock";
20
+ readonly ACCOUNT_CHANGED: "account_changed";
19
21
  };
20
22
  type EmbeddedProviderEvent = typeof EMBEDDED_PROVIDER_EVENTS[keyof typeof EMBEDDED_PROVIDER_EVENTS];
21
23
  declare const POST_MESSAGE_EVENT_TYPE: "event";
@@ -46,14 +48,21 @@ interface GetAccountsRequestMessage extends BaseRequest {
46
48
  type: typeof POST_MESSAGE_REQUEST_TYPES.GET_ACCOUNTS;
47
49
  payload?: undefined;
48
50
  }
49
- type PostMessageRequest = ConnectRequestMessage | DisconnectRequestMessage | SignMessageRequestMessage | SignTransactionRequestMessage | GetAccountsRequestMessage;
51
+ interface SelectAccountRequestMessage extends BaseRequest {
52
+ type: typeof POST_MESSAGE_REQUEST_TYPES.SELECT_ACCOUNT;
53
+ payload: SelectAccountPayload;
54
+ }
55
+ type PostMessageRequest = ConnectRequestMessage | DisconnectRequestMessage | SignMessageRequestMessage | SignTransactionRequestMessage | GetAccountsRequestMessage | SelectAccountRequestMessage;
50
56
  interface DisconnectResult {
51
57
  }
52
58
  interface GetAccountsResult {
53
- addresses: Array<{
54
- addressType: AddressType;
55
- address: string;
56
- }>;
59
+ accounts: WalletAccount[];
60
+ }
61
+ interface SelectAccountPayload {
62
+ publicKey: string;
63
+ }
64
+ interface SelectAccountResult {
65
+ account: WalletAccount;
57
66
  }
58
67
  type RequestResultMap = {
59
68
  [POST_MESSAGE_REQUEST_TYPES.CONNECT]: ConnectResult;
@@ -61,6 +70,7 @@ type RequestResultMap = {
61
70
  [POST_MESSAGE_REQUEST_TYPES.SIGN_MESSAGE]: SignMessageResult;
62
71
  [POST_MESSAGE_REQUEST_TYPES.SIGN_TRANSACTION]: SignTransactionResult;
63
72
  [POST_MESSAGE_REQUEST_TYPES.GET_ACCOUNTS]: GetAccountsResult;
73
+ [POST_MESSAGE_REQUEST_TYPES.SELECT_ACCOUNT]: SelectAccountResult;
64
74
  };
65
75
  interface ResponseErrorPayload {
66
76
  code: ErrorCode;
@@ -122,4 +132,4 @@ interface SignTransactionResult {
122
132
  signedTransaction: string;
123
133
  }
124
134
 
125
- export { type ConnectMetadataInput, type ConnectRequestMessage, type ConnectRequestPayload, DEFAULT_IFRAME_URL, type DisconnectRequestMessage, type DisconnectResult, EMBEDDED_PROVIDER_EVENTS, type EmbeddedProviderEvent, ErrorCode, type GetAccountsRequestMessage, type GetAccountsResult, IFRAME_READY_EVENT, type InferPostMessageResponse, type InferSuccessfulPostMessageResponse, POST_MESSAGE_EVENT_TYPE, POST_MESSAGE_REQUEST_TYPES, type PostMessageEvent, type PostMessageRequest, type PostMessageResponse, type RequestType, type SignMessagePayload, type SignMessageRequestMessage, type SignMessageResult, type SignTransactionPayload, type SignTransactionRequestMessage, type SignTransactionResult, type SuccessfulPostMessageResponse, createRequestId };
135
+ export { type ConnectMetadataInput, type ConnectRequestMessage, type ConnectRequestPayload, DEFAULT_IFRAME_URL, type DisconnectRequestMessage, type DisconnectResult, EMBEDDED_PROVIDER_EVENTS, type EmbeddedProviderEvent, ErrorCode, type GetAccountsRequestMessage, type GetAccountsResult, IFRAME_READY_EVENT, type InferPostMessageResponse, type InferSuccessfulPostMessageResponse, POST_MESSAGE_EVENT_TYPE, POST_MESSAGE_REQUEST_TYPES, type PostMessageEvent, type PostMessageRequest, type PostMessageResponse, type RequestType, type SelectAccountPayload, type SelectAccountRequestMessage, type SelectAccountResult, type SignMessagePayload, type SignMessageRequestMessage, type SignMessageResult, type SignTransactionPayload, type SignTransactionRequestMessage, type SignTransactionResult, type SuccessfulPostMessageResponse, createRequestId };
package/dist/index.js CHANGED
@@ -4,7 +4,8 @@ var POST_MESSAGE_REQUEST_TYPES = {
4
4
  DISCONNECT: "disconnect",
5
5
  SIGN_MESSAGE: "signMessage",
6
6
  SIGN_TRANSACTION: "signTransaction",
7
- GET_ACCOUNTS: "getAccounts"
7
+ GET_ACCOUNTS: "getAccounts",
8
+ SELECT_ACCOUNT: "selectAccount"
8
9
  };
9
10
  var EMBEDDED_PROVIDER_EVENTS = {
10
11
  CONNECT_START: "connect_start",
@@ -12,7 +13,8 @@ var EMBEDDED_PROVIDER_EVENTS = {
12
13
  DISCONNECT: "disconnect",
13
14
  CONNECT_ERROR: "connect_error",
14
15
  ERROR: "error",
15
- LOCK: "lock"
16
+ LOCK: "lock",
17
+ ACCOUNT_CHANGED: "account_changed"
16
18
  };
17
19
  var POST_MESSAGE_EVENT_TYPE = "event";
18
20
  var IFRAME_READY_EVENT = "iframe:ready";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/postMessage.ts"],"names":[],"mappings":";AAEO,IAAM,0BAAA,GAA6B;AAAA,EACxC,OAAA,EAAS,SAAA;AAAA,EACT,UAAA,EAAY,YAAA;AAAA,EACZ,YAAA,EAAc,aAAA;AAAA,EACd,gBAAA,EAAkB,iBAAA;AAAA,EAClB,YAAA,EAAc;AAChB;AAIO,IAAM,wBAAA,GAA2B;AAAA,EACtC,aAAA,EAAe,eAAA;AAAA,EACf,OAAA,EAAS,SAAA;AAAA,EACT,UAAA,EAAY,YAAA;AAAA,EACZ,aAAA,EAAe,eAAA;AAAA,EACf,KAAA,EAAO,OAAA;AAAA,EACP,IAAA,EAAM;AACR;AAKO,IAAM,uBAAA,GAA0B;AAEhC,IAAM,kBAAA,GAAqB;AAE3B,IAAM,kBAAA,GAAqB;AAElC,IAAM,iBAAA,GAAoB,KAAA;AAEnB,IAAM,eAAA,GAAkB,CAAC,MAAA,GAAiB,iBAAA,KAA8B;AAC7E,EAAA,MAAM,MAAA,GAAS,KAAK,MAAA,EAAO,CAAE,SAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AACrD,EAAA,OAAO,GAAG,MAAM,CAAA,CAAA,EAAI,KAAK,GAAA,EAAK,IAAI,MAAM,CAAA,CAAA;AAC1C;AA8FO,IAAM,SAAA,GAAY;AAAA,EACvB,aAAA,EAAe,eAAA;AAAA,EACf,aAAA,EAAe,eAAA;AAAA,EACf,gBAAA,EAAkB,kBAAA;AAAA,EAClB,iBAAA,EAAmB,mBAAA;AAAA,EACnB,iBAAA,EAAmB,mBAAA;AAAA,EACnB,mBAAA,EAAqB,qBAAA;AAAA,EACrB,kBAAA,EAAoB,oBAAA;AAAA,EACpB,kBAAA,EAAoB,oBAAA;AAAA,EACpB,aAAA,EAAe,eAAA;AAAA,EACf,OAAA,EAAS,SAAA;AAAA,EACT,aAAA,EAAe;AACjB","file":"index.js","sourcesContent":["import type { AddressType, AppMetadata, ConnectResult } from '@thru/chain-interfaces';\n\nexport const POST_MESSAGE_REQUEST_TYPES = {\n CONNECT: 'connect',\n DISCONNECT: 'disconnect',\n SIGN_MESSAGE: 'signMessage',\n SIGN_TRANSACTION: 'signTransaction',\n GET_ACCOUNTS: 'getAccounts',\n} as const;\n\nexport type RequestType = typeof POST_MESSAGE_REQUEST_TYPES[keyof typeof POST_MESSAGE_REQUEST_TYPES];\n\nexport const EMBEDDED_PROVIDER_EVENTS = {\n CONNECT_START: 'connect_start',\n CONNECT: 'connect',\n DISCONNECT: 'disconnect',\n CONNECT_ERROR: 'connect_error',\n ERROR: 'error',\n LOCK: 'lock',\n} as const;\n\nexport type EmbeddedProviderEvent =\n typeof EMBEDDED_PROVIDER_EVENTS[keyof typeof EMBEDDED_PROVIDER_EVENTS];\n\nexport const POST_MESSAGE_EVENT_TYPE = 'event' as const;\n\nexport const IFRAME_READY_EVENT = 'iframe:ready' as const;\n\nexport const DEFAULT_IFRAME_URL = 'https://wallet.thru.io/embedded';\n\nconst REQUEST_ID_PREFIX = 'req';\n\nexport const createRequestId = (prefix: string = REQUEST_ID_PREFIX): string => {\n const random = Math.random().toString(36).slice(2, 11);\n return `${prefix}_${Date.now()}_${random}`;\n};\n\ninterface BaseRequest {\n id: string;\n origin: string;\n}\n\nexport interface ConnectRequestMessage extends BaseRequest {\n type: typeof POST_MESSAGE_REQUEST_TYPES.CONNECT;\n payload: ConnectRequestPayload;\n}\n\nexport interface DisconnectRequestMessage extends BaseRequest {\n type: typeof POST_MESSAGE_REQUEST_TYPES.DISCONNECT;\n payload?: undefined;\n}\n\nexport interface SignMessageRequestMessage extends BaseRequest {\n type: typeof POST_MESSAGE_REQUEST_TYPES.SIGN_MESSAGE;\n payload: SignMessagePayload;\n}\n\nexport interface SignTransactionRequestMessage extends BaseRequest {\n type: typeof POST_MESSAGE_REQUEST_TYPES.SIGN_TRANSACTION;\n payload: SignTransactionPayload;\n}\n\nexport interface GetAccountsRequestMessage extends BaseRequest {\n type: typeof POST_MESSAGE_REQUEST_TYPES.GET_ACCOUNTS;\n payload?: undefined;\n}\n\nexport type PostMessageRequest =\n | ConnectRequestMessage\n | DisconnectRequestMessage\n | SignMessageRequestMessage\n | SignTransactionRequestMessage\n | GetAccountsRequestMessage;\n\nexport interface DisconnectResult {\n // Empty object keeps compatibility with existing consumers expecting a success payload\n}\n\nexport interface GetAccountsResult {\n addresses: Array<{\n addressType: AddressType;\n address: string;\n }>;\n}\n\ntype RequestResultMap = {\n [POST_MESSAGE_REQUEST_TYPES.CONNECT]: ConnectResult;\n [POST_MESSAGE_REQUEST_TYPES.DISCONNECT]: DisconnectResult;\n [POST_MESSAGE_REQUEST_TYPES.SIGN_MESSAGE]: SignMessageResult;\n [POST_MESSAGE_REQUEST_TYPES.SIGN_TRANSACTION]: SignTransactionResult;\n [POST_MESSAGE_REQUEST_TYPES.GET_ACCOUNTS]: GetAccountsResult;\n};\n\ninterface ResponseErrorPayload {\n code: ErrorCode;\n message: string;\n}\n\ntype SuccessResponse<TType extends RequestType> = {\n id: string;\n success: true;\n result: RequestResultMap[TType];\n};\n\ntype ErrorResponse = {\n id: string;\n success: false;\n error: ResponseErrorPayload;\n};\n\nexport type PostMessageResponse<TType extends RequestType = RequestType> =\n | SuccessResponse<TType>\n | ErrorResponse;\n\nexport type SuccessfulPostMessageResponse<TType extends RequestType = RequestType> =\n Extract<PostMessageResponse<TType>, { success: true }>;\n\nexport type InferPostMessageResponse<TRequest extends PostMessageRequest> =\n PostMessageResponse<TRequest['type']>;\n\nexport type InferSuccessfulPostMessageResponse<TRequest extends PostMessageRequest> =\n SuccessfulPostMessageResponse<TRequest['type']>;\n\nexport interface PostMessageEvent<TEvent extends EmbeddedProviderEvent = EmbeddedProviderEvent, TData = any> {\n type: typeof POST_MESSAGE_EVENT_TYPE;\n event: TEvent;\n data?: TData;\n}\n\nexport const ErrorCode = {\n USER_REJECTED: 'USER_REJECTED',\n WALLET_LOCKED: 'WALLET_LOCKED',\n INVALID_PASSWORD: 'INVALID_PASSWORD',\n ALREADY_CONNECTED: 'ALREADY_CONNECTED',\n ACCOUNT_NOT_FOUND: 'ACCOUNT_NOT_FOUND',\n INVALID_TRANSACTION: 'INVALID_TRANSACTION',\n TRANSACTION_FAILED: 'TRANSACTION_FAILED',\n INSUFFICIENT_FUNDS: 'INSUFFICIENT_FUNDS',\n NETWORK_ERROR: 'NETWORK_ERROR',\n TIMEOUT: 'TIMEOUT',\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n} as const;\n\nexport type ErrorCode = typeof ErrorCode[keyof typeof ErrorCode];\n\nexport type ConnectMetadataInput = Partial<AppMetadata>;\n\nexport interface ConnectRequestPayload {\n metadata?: ConnectMetadataInput;\n}\n\nexport type { AppMetadata, ConnectResult };\n\nexport interface SignMessagePayload {\n message: string | number[];\n accountIndex?: number;\n}\n\nexport interface SignMessageResult {\n signature: number[];\n publicKey: string;\n}\n\nexport interface SignTransactionPayload {\n transaction: string;\n accountIndex?: number;\n}\n\nexport interface SignTransactionResult {\n signedTransaction: string;\n}\n"]}
1
+ {"version":3,"sources":["../src/postMessage.ts"],"names":[],"mappings":";AAEO,IAAM,0BAAA,GAA6B;AAAA,EACxC,OAAA,EAAS,SAAA;AAAA,EACT,UAAA,EAAY,YAAA;AAAA,EACZ,YAAA,EAAc,aAAA;AAAA,EACd,gBAAA,EAAkB,iBAAA;AAAA,EAClB,YAAA,EAAc,aAAA;AAAA,EACd,cAAA,EAAgB;AAClB;AAIO,IAAM,wBAAA,GAA2B;AAAA,EACtC,aAAA,EAAe,eAAA;AAAA,EACf,OAAA,EAAS,SAAA;AAAA,EACT,UAAA,EAAY,YAAA;AAAA,EACZ,aAAA,EAAe,eAAA;AAAA,EACf,KAAA,EAAO,OAAA;AAAA,EACP,IAAA,EAAM,MAAA;AAAA,EACN,eAAA,EAAiB;AACnB;AAKO,IAAM,uBAAA,GAA0B;AAEhC,IAAM,kBAAA,GAAqB;AAE3B,IAAM,kBAAA,GAAqB;AAElC,IAAM,iBAAA,GAAoB,KAAA;AAEnB,IAAM,eAAA,GAAkB,CAAC,MAAA,GAAiB,iBAAA,KAA8B;AAC7E,EAAA,MAAM,MAAA,GAAS,KAAK,MAAA,EAAO,CAAE,SAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AACrD,EAAA,OAAO,GAAG,MAAM,CAAA,CAAA,EAAI,KAAK,GAAA,EAAK,IAAI,MAAM,CAAA,CAAA;AAC1C;AA0GO,IAAM,SAAA,GAAY;AAAA,EACvB,aAAA,EAAe,eAAA;AAAA,EACf,aAAA,EAAe,eAAA;AAAA,EACf,gBAAA,EAAkB,kBAAA;AAAA,EAClB,iBAAA,EAAmB,mBAAA;AAAA,EACnB,iBAAA,EAAmB,mBAAA;AAAA,EACnB,mBAAA,EAAqB,qBAAA;AAAA,EACrB,kBAAA,EAAoB,oBAAA;AAAA,EACpB,kBAAA,EAAoB,oBAAA;AAAA,EACpB,aAAA,EAAe,eAAA;AAAA,EACf,OAAA,EAAS,SAAA;AAAA,EACT,aAAA,EAAe;AACjB","file":"index.js","sourcesContent":["import type { AppMetadata, ConnectResult, WalletAccount } from '@thru/chain-interfaces';\n\nexport const POST_MESSAGE_REQUEST_TYPES = {\n CONNECT: 'connect',\n DISCONNECT: 'disconnect',\n SIGN_MESSAGE: 'signMessage',\n SIGN_TRANSACTION: 'signTransaction',\n GET_ACCOUNTS: 'getAccounts',\n SELECT_ACCOUNT: 'selectAccount',\n} as const;\n\nexport type RequestType = typeof POST_MESSAGE_REQUEST_TYPES[keyof typeof POST_MESSAGE_REQUEST_TYPES];\n\nexport const EMBEDDED_PROVIDER_EVENTS = {\n CONNECT_START: 'connect_start',\n CONNECT: 'connect',\n DISCONNECT: 'disconnect',\n CONNECT_ERROR: 'connect_error',\n ERROR: 'error',\n LOCK: 'lock',\n ACCOUNT_CHANGED: 'account_changed',\n} as const;\n\nexport type EmbeddedProviderEvent =\n typeof EMBEDDED_PROVIDER_EVENTS[keyof typeof EMBEDDED_PROVIDER_EVENTS];\n\nexport const POST_MESSAGE_EVENT_TYPE = 'event' as const;\n\nexport const IFRAME_READY_EVENT = 'iframe:ready' as const;\n\nexport const DEFAULT_IFRAME_URL = 'https://wallet.thru.io/embedded';\n\nconst REQUEST_ID_PREFIX = 'req';\n\nexport const createRequestId = (prefix: string = REQUEST_ID_PREFIX): string => {\n const random = Math.random().toString(36).slice(2, 11);\n return `${prefix}_${Date.now()}_${random}`;\n};\n\ninterface BaseRequest {\n id: string;\n origin: string;\n}\n\nexport interface ConnectRequestMessage extends BaseRequest {\n type: typeof POST_MESSAGE_REQUEST_TYPES.CONNECT;\n payload: ConnectRequestPayload;\n}\n\nexport interface DisconnectRequestMessage extends BaseRequest {\n type: typeof POST_MESSAGE_REQUEST_TYPES.DISCONNECT;\n payload?: undefined;\n}\n\nexport interface SignMessageRequestMessage extends BaseRequest {\n type: typeof POST_MESSAGE_REQUEST_TYPES.SIGN_MESSAGE;\n payload: SignMessagePayload;\n}\n\nexport interface SignTransactionRequestMessage extends BaseRequest {\n type: typeof POST_MESSAGE_REQUEST_TYPES.SIGN_TRANSACTION;\n payload: SignTransactionPayload;\n}\n\nexport interface GetAccountsRequestMessage extends BaseRequest {\n type: typeof POST_MESSAGE_REQUEST_TYPES.GET_ACCOUNTS;\n payload?: undefined;\n}\n\nexport interface SelectAccountRequestMessage extends BaseRequest {\n type: typeof POST_MESSAGE_REQUEST_TYPES.SELECT_ACCOUNT;\n payload: SelectAccountPayload;\n}\n\nexport type PostMessageRequest =\n | ConnectRequestMessage\n | DisconnectRequestMessage\n | SignMessageRequestMessage\n | SignTransactionRequestMessage\n | GetAccountsRequestMessage\n | SelectAccountRequestMessage;\n\nexport interface DisconnectResult {\n // Empty object keeps compatibility with existing consumers expecting a success payload\n}\n\nexport interface GetAccountsResult {\n accounts: WalletAccount[];\n}\n\nexport interface SelectAccountPayload {\n publicKey: string;\n}\n\nexport interface SelectAccountResult {\n account: WalletAccount;\n}\n\ntype RequestResultMap = {\n [POST_MESSAGE_REQUEST_TYPES.CONNECT]: ConnectResult;\n [POST_MESSAGE_REQUEST_TYPES.DISCONNECT]: DisconnectResult;\n [POST_MESSAGE_REQUEST_TYPES.SIGN_MESSAGE]: SignMessageResult;\n [POST_MESSAGE_REQUEST_TYPES.SIGN_TRANSACTION]: SignTransactionResult;\n [POST_MESSAGE_REQUEST_TYPES.GET_ACCOUNTS]: GetAccountsResult;\n [POST_MESSAGE_REQUEST_TYPES.SELECT_ACCOUNT]: SelectAccountResult;\n};\n\ninterface ResponseErrorPayload {\n code: ErrorCode;\n message: string;\n}\n\ntype SuccessResponse<TType extends RequestType> = {\n id: string;\n success: true;\n result: RequestResultMap[TType];\n};\n\ntype ErrorResponse = {\n id: string;\n success: false;\n error: ResponseErrorPayload;\n};\n\nexport type PostMessageResponse<TType extends RequestType = RequestType> =\n | SuccessResponse<TType>\n | ErrorResponse;\n\nexport type SuccessfulPostMessageResponse<TType extends RequestType = RequestType> =\n Extract<PostMessageResponse<TType>, { success: true }>;\n\nexport type InferPostMessageResponse<TRequest extends PostMessageRequest> =\n PostMessageResponse<TRequest['type']>;\n\nexport type InferSuccessfulPostMessageResponse<TRequest extends PostMessageRequest> =\n SuccessfulPostMessageResponse<TRequest['type']>;\n\nexport interface PostMessageEvent<TEvent extends EmbeddedProviderEvent = EmbeddedProviderEvent, TData = any> {\n type: typeof POST_MESSAGE_EVENT_TYPE;\n event: TEvent;\n data?: TData;\n}\n\nexport const ErrorCode = {\n USER_REJECTED: 'USER_REJECTED',\n WALLET_LOCKED: 'WALLET_LOCKED',\n INVALID_PASSWORD: 'INVALID_PASSWORD',\n ALREADY_CONNECTED: 'ALREADY_CONNECTED',\n ACCOUNT_NOT_FOUND: 'ACCOUNT_NOT_FOUND',\n INVALID_TRANSACTION: 'INVALID_TRANSACTION',\n TRANSACTION_FAILED: 'TRANSACTION_FAILED',\n INSUFFICIENT_FUNDS: 'INSUFFICIENT_FUNDS',\n NETWORK_ERROR: 'NETWORK_ERROR',\n TIMEOUT: 'TIMEOUT',\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n} as const;\n\nexport type ErrorCode = typeof ErrorCode[keyof typeof ErrorCode];\n\nexport type ConnectMetadataInput = Partial<AppMetadata>;\n\nexport interface ConnectRequestPayload {\n metadata?: ConnectMetadataInput;\n}\n\nexport type { AppMetadata, ConnectResult };\n\nexport interface SignMessagePayload {\n message: string | number[];\n accountIndex?: number;\n}\n\nexport interface SignMessageResult {\n signature: number[];\n publicKey: string;\n}\n\nexport interface SignTransactionPayload {\n transaction: string;\n accountIndex?: number;\n}\n\nexport interface SignTransactionResult {\n signedTransaction: string;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thru/protocol",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -11,7 +11,7 @@
11
11
  }
12
12
  },
13
13
  "dependencies": {
14
- "@thru/chain-interfaces": "0.0.4"
14
+ "@thru/chain-interfaces": "0.0.5"
15
15
  },
16
16
  "scripts": {
17
17
  "build": "tsup",
@@ -1,4 +1,4 @@
1
- import type { AddressType, AppMetadata, ConnectResult } from '@thru/chain-interfaces';
1
+ import type { AppMetadata, ConnectResult, WalletAccount } from '@thru/chain-interfaces';
2
2
 
3
3
  export const POST_MESSAGE_REQUEST_TYPES = {
4
4
  CONNECT: 'connect',
@@ -6,6 +6,7 @@ export const POST_MESSAGE_REQUEST_TYPES = {
6
6
  SIGN_MESSAGE: 'signMessage',
7
7
  SIGN_TRANSACTION: 'signTransaction',
8
8
  GET_ACCOUNTS: 'getAccounts',
9
+ SELECT_ACCOUNT: 'selectAccount',
9
10
  } as const;
10
11
 
11
12
  export type RequestType = typeof POST_MESSAGE_REQUEST_TYPES[keyof typeof POST_MESSAGE_REQUEST_TYPES];
@@ -17,6 +18,7 @@ export const EMBEDDED_PROVIDER_EVENTS = {
17
18
  CONNECT_ERROR: 'connect_error',
18
19
  ERROR: 'error',
19
20
  LOCK: 'lock',
21
+ ACCOUNT_CHANGED: 'account_changed',
20
22
  } as const;
21
23
 
22
24
  export type EmbeddedProviderEvent =
@@ -65,22 +67,33 @@ export interface GetAccountsRequestMessage extends BaseRequest {
65
67
  payload?: undefined;
66
68
  }
67
69
 
70
+ export interface SelectAccountRequestMessage extends BaseRequest {
71
+ type: typeof POST_MESSAGE_REQUEST_TYPES.SELECT_ACCOUNT;
72
+ payload: SelectAccountPayload;
73
+ }
74
+
68
75
  export type PostMessageRequest =
69
76
  | ConnectRequestMessage
70
77
  | DisconnectRequestMessage
71
78
  | SignMessageRequestMessage
72
79
  | SignTransactionRequestMessage
73
- | GetAccountsRequestMessage;
80
+ | GetAccountsRequestMessage
81
+ | SelectAccountRequestMessage;
74
82
 
75
83
  export interface DisconnectResult {
76
84
  // Empty object keeps compatibility with existing consumers expecting a success payload
77
85
  }
78
86
 
79
87
  export interface GetAccountsResult {
80
- addresses: Array<{
81
- addressType: AddressType;
82
- address: string;
83
- }>;
88
+ accounts: WalletAccount[];
89
+ }
90
+
91
+ export interface SelectAccountPayload {
92
+ publicKey: string;
93
+ }
94
+
95
+ export interface SelectAccountResult {
96
+ account: WalletAccount;
84
97
  }
85
98
 
86
99
  type RequestResultMap = {
@@ -89,6 +102,7 @@ type RequestResultMap = {
89
102
  [POST_MESSAGE_REQUEST_TYPES.SIGN_MESSAGE]: SignMessageResult;
90
103
  [POST_MESSAGE_REQUEST_TYPES.SIGN_TRANSACTION]: SignTransactionResult;
91
104
  [POST_MESSAGE_REQUEST_TYPES.GET_ACCOUNTS]: GetAccountsResult;
105
+ [POST_MESSAGE_REQUEST_TYPES.SELECT_ACCOUNT]: SelectAccountResult;
92
106
  };
93
107
 
94
108
  interface ResponseErrorPayload {