{"version":3,"file":"structs.mjs","sourceRoot":"","sources":["../src/structs.ts"],"names":[],"mappings":"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","sourcesContent":["import { NotificationType, enumValue } from '@metamask/snaps-sdk';\nimport { JSXElementStruct } from '@metamask/snaps-sdk/jsx';\nimport { TrackableErrorStruct } from '@metamask/snaps-utils';\nimport {\n  array,\n  assign,\n  bigint,\n  coerce,\n  defaulted,\n  instance,\n  literal,\n  number,\n  object,\n  optional,\n  string,\n  union,\n  record,\n  any,\n  func,\n  type,\n  boolean,\n} from '@metamask/superstruct';\nimport {\n  assertStruct,\n  bytesToHex,\n  JsonStruct,\n  StrictHexStruct,\n  valueToBytes,\n} from '@metamask/utils';\nimport { randomBytes } from 'crypto';\n\nimport type { SnapResponse, SnapResponseWithInterface } from './types';\n\n// TODO: Export this from `@metamask/utils` instead.\nconst BytesLikeStruct = union([\n  bigint(),\n  number(),\n  string(),\n  instance(Uint8Array),\n]);\n\nexport const TransactionOptionsStruct = object({\n  /**\n   * The CAIP-2 chain ID to send the transaction on. Defaults to `eip155:1`.\n   */\n  chainId: defaulted(string(), 'eip155:1'),\n\n  /**\n   * The origin to send the transaction from. Defaults to `metamask.io`.\n   */\n  origin: defaulted(string(), 'metamask.io'),\n\n  /**\n   * The address to send the transaction from. Defaults to a randomly generated\n   * address.\n   */\n  // TODO: Move this coercer to `@metamask/utils`.\n  from: coerce(StrictHexStruct, optional(BytesLikeStruct), (value) => {\n    if (value) {\n      return bytesToHex(valueToBytes(value));\n    }\n\n    return bytesToHex(randomBytes(20));\n  }),\n\n  /**\n   * The address to send the transaction to. Defaults to a randomly generated\n   * address.\n   */\n  // TODO: Move this coercer to `@metamask/utils`.\n  to: coerce(StrictHexStruct, optional(BytesLikeStruct), (value) => {\n    if (value) {\n      return bytesToHex(valueToBytes(value));\n    }\n\n    return bytesToHex(randomBytes(20));\n  }),\n\n  /**\n   * The value to send with the transaction. The value may be specified as a\n   * `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `0`.\n   */\n  value: defaulted(\n    coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n      bytesToHex(valueToBytes(value)),\n    ),\n    '0x0',\n  ),\n\n  /**\n   * The gas limit to use for the transaction. The gas limit may be specified\n   * as a `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `21_000`.\n   */\n  gasLimit: defaulted(\n    coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n      bytesToHex(valueToBytes(value)),\n    ),\n    valueToBytes(21_000),\n  ),\n\n  /**\n   * The max fee per gas (in Wei) to use for the transaction. The max fee per\n   * gas may be specified as a `number`, `bigint`, `string`, or `Uint8Array`.\n   * Defaults to `1`.\n   */\n  maxFeePerGas: defaulted(\n    coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n      bytesToHex(valueToBytes(value)),\n    ),\n    valueToBytes(1),\n  ),\n\n  /**\n   * The max priority fee per gas (in Wei) to use for the transaction. The max\n   * priority fee per gas may be specified as a `number`, `bigint`, `string`,\n   * or `Uint8Array`. Defaults to `1`.\n   */\n  maxPriorityFeePerGas: defaulted(\n    coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n      bytesToHex(valueToBytes(value)),\n    ),\n    valueToBytes(1),\n  ),\n\n  /**\n   * The nonce to use for the transaction. The nonce may be specified as a\n   * `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `0`.\n   */\n  nonce: defaulted(\n    coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n      bytesToHex(valueToBytes(value)),\n    ),\n    valueToBytes(0),\n  ),\n\n  /**\n   * The data to send with the transaction. The data may be specified as a\n   * `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `0x`.\n   */\n  data: defaulted(\n    coerce(union([StrictHexStruct, literal('0x')]), BytesLikeStruct, (value) =>\n      bytesToHex(valueToBytes(value)),\n    ),\n    '0x',\n  ),\n});\n\nexport const SignatureOptionsStruct = object({\n  /**\n   * The origin making the signature request.\n   */\n  origin: defaulted(string(), 'metamask.io'),\n\n  /**\n   * The address signing the signature request. Defaults to a randomly generated\n   * address.\n   */\n  from: coerce(StrictHexStruct, optional(BytesLikeStruct), (value) => {\n    if (value) {\n      return bytesToHex(valueToBytes(value));\n    }\n\n    return bytesToHex(randomBytes(20));\n  }),\n\n  /**\n   * The data to send with the transaction. The data may be specified as a\n   * `string`, an object, or an array of objects. This covers the data types\n   * for the supported signature methods. Defaults to `0x`.\n   */\n  data: defaulted(\n    union([\n      StrictHexStruct,\n      literal('0x'),\n      record(string(), any()),\n      array(record(string(), any())),\n    ]),\n    '0x',\n  ),\n\n  /**\n   * The signature method being used.\n   */\n  signatureMethod: defaulted(\n    union([\n      literal('personal_sign'),\n      literal('eth_signTypedData'),\n      literal('eth_signTypedData_v3'),\n      literal('eth_signTypedData_v4'),\n    ]),\n    'personal_sign',\n  ),\n});\n\nexport const BaseNameLookupOptionsStruct = object({\n  /**\n   * The CAIP-2 chain ID. Defaults to `eip155:1`.\n   */\n  chainId: defaulted(string(), 'eip155:1'),\n});\n\nexport const NameLookupOptionsStruct = union([\n  assign(\n    BaseNameLookupOptionsStruct,\n    object({\n      /**\n       * Address to lookup.\n       */\n      address: string(),\n    }),\n  ),\n  assign(\n    BaseNameLookupOptionsStruct,\n    object({\n      /**\n       * Domain name to lookup.\n       */\n      domain: string(),\n    }),\n  ),\n]);\n\nexport const SnapOptionsStruct = object({\n  /**\n   * The timeout in milliseconds to use for requests to the snap. Defaults to\n   * `1000`.\n   */\n  timeout: defaulted(optional(number()), 1000),\n});\n\nexport const JsonRpcMockOptionsStruct = object({\n  method: string(),\n  result: JsonStruct,\n});\n\nexport const InterfaceStruct = type({\n  content: optional(JSXElementStruct),\n});\n\nexport const SnapResponseWithoutInterfaceStruct = object({\n  id: string(),\n\n  response: union([\n    object({\n      result: JsonStruct,\n    }),\n    object({\n      error: JsonStruct,\n    }),\n  ]),\n\n  notifications: array(\n    object({\n      id: string(),\n      message: string(),\n      type: union([\n        enumValue(NotificationType.InApp),\n        enumValue(NotificationType.Native),\n      ]),\n      title: optional(string()),\n      content: optional(string()),\n      footerLink: optional(\n        object({\n          href: string(),\n          text: string(),\n        }),\n      ),\n    }),\n  ),\n\n  tracked: object({\n    errors: array(TrackableErrorStruct),\n\n    events: array(\n      object({\n        event: string(),\n        properties: optional(record(string(), JsonStruct)),\n        sensitiveProperties: optional(record(string(), JsonStruct)),\n      }),\n    ),\n\n    traces: array(\n      object({\n        id: optional(string()),\n        name: string(),\n        parentContext: optional(JsonStruct),\n        startTime: optional(number()),\n        data: optional(\n          record(string(), union([string(), number(), boolean()])),\n        ),\n        tags: optional(\n          record(string(), union([string(), number(), boolean()])),\n        ),\n      }),\n    ),\n  }),\n});\n\nexport const SnapResponseWithInterfaceStruct = assign(\n  SnapResponseWithoutInterfaceStruct,\n  object({\n    getInterface: func(),\n  }),\n);\n\nexport const SnapResponseStruct = union([\n  SnapResponseWithoutInterfaceStruct,\n  SnapResponseWithInterfaceStruct,\n]);\n\n/**\n * Ensure that the actual response contains `getInterface`.\n *\n * @param response - The response of the handler.\n */\nexport function assertIsResponseWithInterface(\n  response: SnapResponse,\n): asserts response is SnapResponseWithInterface {\n  assertStruct(response, SnapResponseWithInterfaceStruct);\n}\n"]}