@metamask/keyring-api
Version:
MetaMask Keyring API
213 lines • 8.46 kB
JavaScript
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 || (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;
// ----------------------------------------------------------------------------
// 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