UNPKG

@metamask/keyring-api

Version:
224 lines 8.9 kB
import { object, UuidStruct, JsonRpcRequestStruct } from "@metamask/keyring-utils"; import { array, literal, nullable, number, record, string, union } from "@metamask/superstruct"; import { JsonStruct } from "@metamask/utils"; import { CaipAssetTypeStruct, CaipAssetTypeOrIdStruct, CaipChainIdStruct, BalanceStruct, KeyringAccountDataStruct, KeyringAccountStruct, KeyringRequestStruct, KeyringResponseStruct, TransactionsPageStruct, PaginationStruct, CaipAccountIdStruct, DiscoveredAccountStruct } from "./api/index.mjs"; /** * Keyring RPC methods used by the API. */ export var KeyringRpcMethod; (function (KeyringRpcMethod) { KeyringRpcMethod["ListAccounts"] = "keyring_listAccounts"; KeyringRpcMethod["GetAccount"] = "keyring_getAccount"; KeyringRpcMethod["CreateAccount"] = "keyring_createAccount"; KeyringRpcMethod["DiscoverAccounts"] = "keyring_discoverAccounts"; KeyringRpcMethod["ListAccountAssets"] = "keyring_listAccountAssets"; KeyringRpcMethod["ListAccountTransactions"] = "keyring_listAccountTransactions"; KeyringRpcMethod["GetAccountBalances"] = "keyring_getAccountBalances"; KeyringRpcMethod["ResolveAccountAddress"] = "keyring_resolveAccountAddress"; KeyringRpcMethod["FilterAccountChains"] = "keyring_filterAccountChains"; KeyringRpcMethod["UpdateAccount"] = "keyring_updateAccount"; KeyringRpcMethod["DeleteAccount"] = "keyring_deleteAccount"; KeyringRpcMethod["ExportAccount"] = "keyring_exportAccount"; KeyringRpcMethod["ListRequests"] = "keyring_listRequests"; KeyringRpcMethod["GetRequest"] = "keyring_getRequest"; KeyringRpcMethod["SubmitRequest"] = "keyring_submitRequest"; KeyringRpcMethod["ApproveRequest"] = "keyring_approveRequest"; KeyringRpcMethod["RejectRequest"] = "keyring_rejectRequest"; KeyringRpcMethod["SetSelectedAccounts"] = "keyring_setSelectedAccounts"; })(KeyringRpcMethod || (KeyringRpcMethod = {})); /** * Check if a method is a keyring RPC method. * * @param method - Method to check. * @returns Whether the method is a keyring RPC method. */ export function isKeyringRpcMethod(method) { return Object.values(KeyringRpcMethod).includes(method); } // ---------------------------------------------------------------------------- const CommonHeader = { jsonrpc: literal('2.0'), id: union([string(), number(), literal(null)]), }; // ---------------------------------------------------------------------------- // List accounts export const ListAccountsRequestStruct = object({ ...CommonHeader, method: literal('keyring_listAccounts'), }); export const ListAccountsResponseStruct = array(KeyringAccountStruct); // ---------------------------------------------------------------------------- // Get account export const GetAccountRequestStruct = object({ ...CommonHeader, method: literal('keyring_getAccount'), params: object({ id: UuidStruct, }), }); export const GetAccountResponseStruct = KeyringAccountStruct; // ---------------------------------------------------------------------------- // Create account export const CreateAccountRequestStruct = object({ ...CommonHeader, method: literal('keyring_createAccount'), params: object({ options: record(string(), JsonStruct), }), }); export const CreateAccountResponseStruct = KeyringAccountStruct; // ---------------------------------------------------------------------------- // Set selected accounts export const SetSelectedAccountsRequestStruct = object({ ...CommonHeader, method: literal('keyring_setSelectedAccounts'), params: object({ accounts: array(string()), }), }); export const SetSelectedAccountsResponseStruct = literal(null); // ---------------------------------------------------------------------------- // Discover accounts export const DiscoverAccountsRequestStruct = object({ ...CommonHeader, method: literal('keyring_discoverAccounts'), params: object({ scopes: array(CaipChainIdStruct), entropySource: string(), groupIndex: number(), }), }); export const DiscoverAccountsResponseStruct = array(DiscoveredAccountStruct); // ---------------------------------------------------------------------------- // List account transactions export const ListAccountTransactionsRequestStruct = object({ ...CommonHeader, method: literal('keyring_listAccountTransactions'), params: object({ id: UuidStruct, pagination: PaginationStruct, }), }); export const ListAccountTransactionsResponseStruct = TransactionsPageStruct; // ---------------------------------------------------------------------------- // List account assets export const ListAccountAssetsRequestStruct = object({ ...CommonHeader, method: literal('keyring_listAccountAssets'), params: object({ id: UuidStruct, }), }); export const ListAccountAssetsResponseStruct = array(CaipAssetTypeOrIdStruct); // ---------------------------------------------------------------------------- // Get account balances export const GetAccountBalancesRequestStruct = object({ ...CommonHeader, method: literal(`${KeyringRpcMethod.GetAccountBalances}`), params: object({ id: UuidStruct, assets: array(CaipAssetTypeStruct), }), }); export const GetAccountBalancesResponseStruct = record(CaipAssetTypeStruct, BalanceStruct); // ---------------------------------------------------------------------------- // Resolve account address export const ResolveAccountAddressRequestStruct = object({ ...CommonHeader, method: literal('keyring_resolveAccountAddress'), params: object({ scope: CaipChainIdStruct, request: JsonRpcRequestStruct, }), }); export const ResolveAccountAddressResponseStruct = nullable(object({ address: CaipAccountIdStruct, })); // ---------------------------------------------------------------------------- // Filter account chains export const FilterAccountChainsStruct = object({ ...CommonHeader, method: literal('keyring_filterAccountChains'), params: object({ id: UuidStruct, chains: array(string()), }), }); export const FilterAccountChainsResponseStruct = array(string()); // ---------------------------------------------------------------------------- // Update account export const UpdateAccountRequestStruct = object({ ...CommonHeader, method: literal('keyring_updateAccount'), params: object({ account: KeyringAccountStruct, }), }); export const UpdateAccountResponseStruct = literal(null); // ---------------------------------------------------------------------------- // Delete account export const DeleteAccountRequestStruct = object({ ...CommonHeader, method: literal('keyring_deleteAccount'), params: object({ id: UuidStruct, }), }); export const DeleteAccountResponseStruct = literal(null); // ---------------------------------------------------------------------------- // Export account export const ExportAccountRequestStruct = object({ ...CommonHeader, method: literal('keyring_exportAccount'), params: object({ id: UuidStruct, }), }); export const ExportAccountResponseStruct = KeyringAccountDataStruct; // ---------------------------------------------------------------------------- // List requests export const ListRequestsRequestStruct = object({ ...CommonHeader, method: literal('keyring_listRequests'), }); export const ListRequestsResponseStruct = array(KeyringRequestStruct); // ---------------------------------------------------------------------------- // Get request export const GetRequestRequestStruct = object({ ...CommonHeader, method: literal('keyring_getRequest'), params: object({ id: UuidStruct, }), }); export const GetRequestResponseStruct = KeyringRequestStruct; // ---------------------------------------------------------------------------- // Submit request export const SubmitRequestRequestStruct = object({ ...CommonHeader, method: literal('keyring_submitRequest'), params: KeyringRequestStruct, }); export const SubmitRequestResponseStruct = KeyringResponseStruct; // ---------------------------------------------------------------------------- // Approve request export const ApproveRequestRequestStruct = object({ ...CommonHeader, method: literal('keyring_approveRequest'), params: object({ id: UuidStruct, data: record(string(), JsonStruct), }), }); export const ApproveRequestResponseStruct = literal(null); // ---------------------------------------------------------------------------- // Reject request export const RejectRequestRequestStruct = object({ ...CommonHeader, method: literal('keyring_rejectRequest'), params: object({ id: UuidStruct, }), }); export const RejectRequestResponseStruct = literal(null); //# sourceMappingURL=rpc.mjs.map