{
  "version": 3,
  "sources": ["../../src/ellipsize.ts", "../../src/EthAddress.ts", "../../src/padHex.ts"],
  "sourcesContent": ["export {\n  /** @deprecated import from @xylabs/sdk-js (or @xylabs/ellipsize) instead */\n  ellipsize,\n} from '@xylabs/ellipsize'\n", "import { assertEx } from '@xylabs/assert'\nimport { ellipsize } from '@xylabs/ellipsize'\nimport { getAddress } from 'ethers'\n\nimport { padHex } from './padHex.ts'\n\n/** Type guard that checks if the given object is an instance of EthAddressWrapper. */\nexport const isEthAddressWrapper = (obj: { type: string }) => obj instanceof EthAddressWrapper\n\n/** Wrapper around an Ethereum address providing parsing, formatting, validation, and checksum support. */\nexport class EthAddressWrapper {\n  private address: bigint\n\n  protected constructor(address: bigint) {\n    this.address = address\n  }\n\n  static fromString(value?: string, base = 16) {\n    if (value === undefined) {\n      return\n    }\n    const bi = base === 16 ? BigInt(value.startsWith('0x') ? value : `0x${value}`) : BigInt(value)\n    return new EthAddressWrapper(bi)\n  }\n\n  static parse(value: unknown, base?: number) {\n    if (typeof value === 'string') {\n      return this.fromString(value, base)\n    }\n  }\n\n  static validate(address: string) {\n    return /^(0x)?[\\da-f]{40}$/i.test(address)\n  }\n\n  equals(address?: EthAddressWrapper | string | null): boolean {\n    if (address !== null && address !== undefined) {\n      const inAddress = typeof address === 'string' ? assertEx(EthAddressWrapper.fromString(address), () => 'Bad Address') : address\n      return this.address === inAddress.address\n    }\n    return false\n  }\n\n  toBigNumber() {\n    return this.address\n  }\n\n  toHex() {\n    return padHex(this.address.toString(16), 20)\n  }\n\n  toJSON(): string {\n    return `0x${this.toHex()}`\n  }\n\n  toLowerCaseString() {\n    return this.toString().toLowerCase()\n  }\n\n  toShortString(length = 2) {\n    return `0x${ellipsize(this.toHex(), length)}`\n  }\n\n  toString(checksum?: boolean, chainId?: string) {\n    if (checksum === true) {\n      const strippedAddress = this.toHex()\n      return getAddress(chainId === undefined ? `0x${strippedAddress}` : `${chainId}0x${strippedAddress}`)\n    }\n    return `0x${this.toHex()}`\n  }\n\n  validate() {\n    return EthAddressWrapper.validate(this.toString())\n  }\n}\n", "const padHex = (hex: string, byteCount = 0) => {\n  let result = hex.length % 2 === 0 ? hex : `0${hex}`\n\n  while (result.length / 2 < byteCount) {\n    result = `00${result}`\n  }\n\n  return result\n}\n\nexport { padHex }\n"],
  "mappings": ";AAAA;AAAA,EAEE;AAAA,OACK;;;ACHP,SAAS,gBAAgB;AACzB,SAAS,aAAAA,kBAAiB;AAC1B,SAAS,kBAAkB;;;ACF3B,IAAM,SAAS,CAAC,KAAa,YAAY,MAAM;AAC7C,MAAI,SAAS,IAAI,SAAS,MAAM,IAAI,MAAM,IAAI,GAAG;AAEjD,SAAO,OAAO,SAAS,IAAI,WAAW;AACpC,aAAS,KAAK,MAAM;AAAA,EACtB;AAEA,SAAO;AACT;;;ADDO,IAAM,sBAAsB,CAAC,QAA0B,eAAe;AAGtE,IAAM,oBAAN,MAAM,mBAAkB;AAAA,EACrB;AAAA,EAEE,YAAY,SAAiB;AACrC,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,OAAO,WAAW,OAAgB,OAAO,IAAI;AAC3C,QAAI,UAAU,QAAW;AACvB;AAAA,IACF;AACA,UAAM,KAAK,SAAS,KAAK,OAAO,MAAM,WAAW,IAAI,IAAI,QAAQ,KAAK,KAAK,EAAE,IAAI,OAAO,KAAK;AAC7F,WAAO,IAAI,mBAAkB,EAAE;AAAA,EACjC;AAAA,EAEA,OAAO,MAAM,OAAgB,MAAe;AAC1C,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,KAAK,WAAW,OAAO,IAAI;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,OAAO,SAAS,SAAiB;AAC/B,WAAO,sBAAsB,KAAK,OAAO;AAAA,EAC3C;AAAA,EAEA,OAAO,SAAsD;AAC3D,QAAI,YAAY,QAAQ,YAAY,QAAW;AAC7C,YAAM,YAAY,OAAO,YAAY,WAAW,SAAS,mBAAkB,WAAW,OAAO,GAAG,MAAM,aAAa,IAAI;AACvH,aAAO,KAAK,YAAY,UAAU;AAAA,IACpC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,cAAc;AACZ,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,QAAQ;AACN,WAAO,OAAO,KAAK,QAAQ,SAAS,EAAE,GAAG,EAAE;AAAA,EAC7C;AAAA,EAEA,SAAiB;AACf,WAAO,KAAK,KAAK,MAAM,CAAC;AAAA,EAC1B;AAAA,EAEA,oBAAoB;AAClB,WAAO,KAAK,SAAS,EAAE,YAAY;AAAA,EACrC;AAAA,EAEA,cAAc,SAAS,GAAG;AACxB,WAAO,KAAKC,WAAU,KAAK,MAAM,GAAG,MAAM,CAAC;AAAA,EAC7C;AAAA,EAEA,SAAS,UAAoB,SAAkB;AAC7C,QAAI,aAAa,MAAM;AACrB,YAAM,kBAAkB,KAAK,MAAM;AACnC,aAAO,WAAW,YAAY,SAAY,KAAK,eAAe,KAAK,GAAG,OAAO,KAAK,eAAe,EAAE;AAAA,IACrG;AACA,WAAO,KAAK,KAAK,MAAM,CAAC;AAAA,EAC1B;AAAA,EAEA,WAAW;AACT,WAAO,mBAAkB,SAAS,KAAK,SAAS,CAAC;AAAA,EACnD;AACF;",
  "names": ["ellipsize", "ellipsize"]
}
