{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../src/eth/types.ts"],"names":[],"mappings":";;;AAAA,2DAAiD;AAEjD,uDAAwE;AACxE,2CAAgD;AAGhD,kCAA6B;AAC7B,0CAIgB;AAEH,QAAA,cAAc,GAAG,IAAA,qBAAa,EAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;AAE3E,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAClC,QAAA,gBAAgB,GAAG,IAAA,qBAAa,EAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;AAC/E,iDAAiD;AACpC,QAAA,sBAAsB,GAAG,IAAA,qBAAa,EACjD,kBAAkB,EAClB,iBAAiB,CAClB,CAAC;AAEW,QAAA,gBAAgB,GAAG,IAAA,qBAAa,EAC3C,YAAY,EACZ,6BAA6B,CAC9B,CAAC;AAEF;;GAEG;AACH,IAAY,SAYX;AAZD,WAAY,SAAS;IACnB,0BAA0B;IAC1B,2CAA8B,CAAA;IAC9B,8BAAiB,CAAA;IACjB,oDAAuC,CAAA;IACvC,qDAAwC,CAAA;IACxC,qDAAwC,CAAA;IACxC,qDAAwC,CAAA;IACxC,mBAAmB;IACnB,8DAAiD,CAAA;IACjD,0DAA6C,CAAA;IAC7C,wDAA2C,CAAA;AAC7C,CAAC,EAZW,SAAS,yBAAT,SAAS,QAYpB;AAEY,QAAA,mBAAmB,GAAG,IAAA,sBAAM,EAAC;IACxC,GAAG,0BAAoB,CAAC,MAAM;IAE9B;;OAEG;IACH,OAAO,EAAE,wBAAgB;IAEzB;;OAEG;IACH,IAAI,EAAE,IAAA,qBAAO,EAAC,GAAG,oBAAc,CAAC,GAAG,EAAE,CAAC;IAEtC;;OAEG;IACH,MAAM,EAAE,IAAA,sBAAQ,EAAC,IAAA,mBAAK,EAAC,IAAA,qBAAO,EAAC,WAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9C;;OAEG;IACH,OAAO,EAAE,IAAA,mBAAK,EACZ,IAAA,mBAAK,EAAC;QACJ,GAAG,SAAS,CAAC,YAAY,EAAE;QAC3B,GAAG,SAAS,CAAC,IAAI,EAAE;QACnB,GAAG,SAAS,CAAC,eAAe,EAAE;QAC9B,GAAG,SAAS,CAAC,eAAe,EAAE;QAC9B,GAAG,SAAS,CAAC,eAAe,EAAE;QAC9B,GAAG,SAAS,CAAC,eAAe,EAAE;KAC/B,CAAC,CACH;CACF,CAAC,CAAC;AAIU,QAAA,uBAAuB,GAAG,IAAA,sBAAM,EAAC;IAC5C,GAAG,0BAAoB,CAAC,MAAM;IAE9B;;OAEG;IACH,OAAO,EAAE,wBAAgB;IAEzB;;OAEG;IACH,IAAI,EAAE,IAAA,qBAAO,EAAC,GAAG,oBAAc,CAAC,OAAO,EAAE,CAAC;IAE1C;;OAEG;IACH,MAAM,EAAE,IAAA,sBAAQ,EAAC,IAAA,mBAAK,EAAC,uBAAiB,CAAC,CAAC;IAE1C;;OAEG;IACH,OAAO,EAAE,IAAA,mBAAK,EACZ,IAAA,mBAAK,EAAC;QACJ,GAAG,SAAS,CAAC,YAAY,EAAE;QAC3B,GAAG,SAAS,CAAC,IAAI,EAAE;QACnB,GAAG,SAAS,CAAC,eAAe,EAAE;QAC9B,GAAG,SAAS,CAAC,eAAe,EAAE;QAC9B,GAAG,SAAS,CAAC,eAAe,EAAE;QAC9B,GAAG,SAAS,CAAC,oBAAoB,EAAE;QACnC,GAAG,SAAS,CAAC,kBAAkB,EAAE;QACjC,GAAG,SAAS,CAAC,iBAAiB,EAAE;KACjC,CAAC,CACH;CACF,CAAC,CAAC","sourcesContent":["import { object } from '@metamask/keyring-utils';\nimport type { Infer } from '@metamask/superstruct';\nimport { nonempty, array, enums, literal } from '@metamask/superstruct';\nimport { definePattern } from '@metamask/utils';\nimport type { Hex } from '@metamask/utils';\n\nimport { EthScope } from '.';\nimport {\n  CaipChainIdStruct,\n  EthAccountType,\n  KeyringAccountStruct,\n} from '../api';\n\nexport const EthBytesStruct = definePattern('EthBytes', /^0x[0-9a-f]*$/iu);\n\nconst ETH_ADDRESS_REGEX = /^0x[0-9a-f]{40}$/iu;\nexport const EthAddressStruct = definePattern('EthAddress', ETH_ADDRESS_REGEX);\n// Stricter struct that uses `Hex` as final type.\nexport const EthAddressStrictStruct = definePattern<Hex>(\n  'EthAddressStrict',\n  ETH_ADDRESS_REGEX,\n);\n\nexport const EthUint256Struct = definePattern(\n  'EthUint256',\n  /^0x([1-9a-f][0-9a-f]*|0)$/iu,\n);\n\n/**\n * Supported Ethereum methods.\n */\nexport enum EthMethod {\n  // General signing methods\n  PersonalSign = 'personal_sign',\n  Sign = 'eth_sign',\n  SignTransaction = 'eth_signTransaction',\n  SignTypedDataV1 = 'eth_signTypedData_v1',\n  SignTypedDataV3 = 'eth_signTypedData_v3',\n  SignTypedDataV4 = 'eth_signTypedData_v4',\n  // ERC-4337 methods\n  PrepareUserOperation = 'eth_prepareUserOperation',\n  PatchUserOperation = 'eth_patchUserOperation',\n  SignUserOperation = 'eth_signUserOperation',\n}\n\nexport const EthEoaAccountStruct = object({\n  ...KeyringAccountStruct.schema,\n\n  /**\n   * Account address.\n   */\n  address: EthAddressStruct,\n\n  /**\n   * Account type.\n   */\n  type: literal(`${EthAccountType.Eoa}`),\n\n  /**\n   * Account scopes (must be ['eip155:0']).\n   */\n  scopes: nonempty(array(literal(EthScope.Eoa))),\n\n  /**\n   * Account supported methods.\n   */\n  methods: array(\n    enums([\n      `${EthMethod.PersonalSign}`,\n      `${EthMethod.Sign}`,\n      `${EthMethod.SignTransaction}`,\n      `${EthMethod.SignTypedDataV1}`,\n      `${EthMethod.SignTypedDataV3}`,\n      `${EthMethod.SignTypedDataV4}`,\n    ]),\n  ),\n});\n\nexport type EthEoaAccount = Infer<typeof EthEoaAccountStruct>;\n\nexport const EthErc4337AccountStruct = object({\n  ...KeyringAccountStruct.schema,\n\n  /**\n   * Account address.\n   */\n  address: EthAddressStruct,\n\n  /**\n   * Account type.\n   */\n  type: literal(`${EthAccountType.Erc4337}`),\n\n  /**\n   * Account supported scopes (CAIP-2 chain IDs).\n   */\n  scopes: nonempty(array(CaipChainIdStruct)),\n\n  /**\n   * Account supported methods.\n   */\n  methods: array(\n    enums([\n      `${EthMethod.PersonalSign}`,\n      `${EthMethod.Sign}`,\n      `${EthMethod.SignTypedDataV1}`,\n      `${EthMethod.SignTypedDataV3}`,\n      `${EthMethod.SignTypedDataV4}`,\n      `${EthMethod.PrepareUserOperation}`,\n      `${EthMethod.PatchUserOperation}`,\n      `${EthMethod.SignUserOperation}`,\n    ]),\n  ),\n});\n\nexport type EthErc4337Account = Infer<typeof EthErc4337AccountStruct>;\n"]}