@metamask/eip-5792-middleware
Version:
Implements the JSON-RPC methods for sending multiple calls from the user's wallet, and checking their status, as referenced in EIP-5792
36 lines • 1.43 kB
JavaScript
import { array, boolean, nonempty, object, optional, record, string, tuple, type } from "@metamask/superstruct";
import { HexChecksumAddressStruct, StrictHexStruct } from "@metamask/utils";
// /** Structs **/
// Even though these aren't actually typescript types, these structs essentially represent
// runtime types, so we keep them in this file.
export const GetCallsStatusStruct = tuple([StrictHexStruct]);
export const GetCapabilitiesStruct = tuple([
HexChecksumAddressStruct,
optional(array(StrictHexStruct)),
]);
const RequiredAssetStruct = type({
address: nonempty(HexChecksumAddressStruct),
amount: nonempty(StrictHexStruct),
standard: nonempty(string()),
});
export const CapabilitiesStruct = record(string(), type({
optional: optional(boolean()),
requiredAssets: optional(array(RequiredAssetStruct)),
}));
export const SendCallsStruct = tuple([
object({
version: nonempty(string()),
id: optional(StrictHexStruct),
from: optional(HexChecksumAddressStruct),
chainId: StrictHexStruct,
atomicRequired: boolean(),
calls: array(object({
to: optional(HexChecksumAddressStruct),
data: optional(StrictHexStruct),
value: optional(StrictHexStruct),
capabilities: optional(CapabilitiesStruct),
})),
capabilities: optional(CapabilitiesStruct),
}),
]);
//# sourceMappingURL=types.mjs.map