{"version":3,"file":"index.cjs","sources":["../../../../../src/mods/signer/index.ts"],"sourcesContent":["import { Box } from \"@hazae41/box\";\nimport { Address } from \"../address/index.js\";\nimport { BytesAsUtf8 } from \"../convert/index.js\";\nimport { BytesSigningKey, ExtSigningKey, SigningKey, ZeroHexSigningKey } from \"../secp256k1/index.js\";\n\nexport abstract class Signer {\n  abstract readonly address: Address\n  abstract readonly signingKey: SigningKey\n}\n\nexport namespace ZeroHexSigner {\n  export type From = Signer | ZeroHexSigningKey.From\n}\n\nexport class ZeroHexSigner extends Signer {\n\n  private constructor(\n    readonly address: Address,\n    readonly signingKey: ZeroHexSigningKey\n  ) {\n    super()\n  }\n\n  static fromOrThrow(from: ZeroHexSigner.From): ZeroHexSigner {\n    if (from instanceof ZeroHexSigner)\n      return from\n    if (from instanceof Signer)\n      return ZeroHexSigner.fromSignerOrThrow(from)\n    return ZeroHexSigner.fromSigningKeyOrThrow(from)\n  }\n\n  static fromSignerOrThrow(from: Signer): ZeroHexSigner {\n    const signingKey = ZeroHexSigningKey.fromOrThrow(from.signingKey)\n    const address = from.address\n\n    return new ZeroHexSigner(address, signingKey)\n  }\n\n  static fromSigningKeyOrThrow(from: ZeroHexSigningKey.From): ZeroHexSigner {\n    const signingKey = ZeroHexSigningKey.fromOrThrow(from)\n    const address = SigningKey.getAddressOrThrow(signingKey)\n\n    return new ZeroHexSigner(address, signingKey)\n  }\n\n  toJSON() {\n    const { address, signingKey } = this\n    return { address, signingKey }\n  }\n\n  getVerifyingKeyOrThrow() {\n    return ZeroHexSigningKey.getVerifyingKeyOrThrow(this.signingKey)\n  }\n\n  signUnprefixedMessageNoOffsetOrThrow(message: BytesAsUtf8.From) {\n    return ZeroHexSigningKey.signUnprefixedMessageNoOffsetOrThrow(this.signingKey, message)\n  }\n\n  signUnprefixedMessageOrThrow(message: BytesAsUtf8.From) {\n    return ZeroHexSigningKey.signUnprefixedMessageOrThrow(this.signingKey, message)\n  }\n\n  signMessageNoOffsetOrThrow(message: BytesAsUtf8.From) {\n    return ZeroHexSigningKey.signMessageNoOffsetOrThrow(this.signingKey, message)\n  }\n\n  signMessageOrThrow(message: BytesAsUtf8.From) {\n    return ZeroHexSigningKey.signMessageOrThrow(this.signingKey, message)\n  }\n\n}\n\nexport namespace BytesSigner {\n  export type From = Signer | BytesSigningKey.From\n}\n\nexport class BytesSigner {\n\n  private constructor(\n    readonly address: Address,\n    readonly signingKey: BytesSigningKey\n  ) { }\n\n  static fromOrThrow(from: BytesSigner.From): BytesSigner {\n    if (from instanceof BytesSigner)\n      return from\n    if (from instanceof Signer)\n      return BytesSigner.fromSignerOrThrow(from)\n    return BytesSigner.fromSigningKeyOrThrow(from)\n  }\n\n  static fromSignerOrThrow(from: Signer): BytesSigner {\n    const signingKey = BytesSigningKey.fromOrThrow(from.signingKey)\n    const address = from.address\n\n    return new BytesSigner(address, signingKey)\n  }\n\n  static fromSigningKeyOrThrow(from: BytesSigningKey.From): BytesSigner {\n    const signingKey = BytesSigningKey.fromOrThrow(from)\n    const address = SigningKey.getAddressOrThrow(signingKey)\n\n    return new BytesSigner(address, signingKey)\n  }\n\n  toJSON() {\n    return ZeroHexSigner.fromOrThrow(this).toJSON()\n  }\n\n  getVerifyingKeyOrThrow() {\n    return BytesSigningKey.getVerifyingKeyOrThrow(this.signingKey)\n  }\n\n  signUnprefixedMessageNoOffsetOrThrow(message: BytesAsUtf8.From) {\n    return BytesSigningKey.signUnprefixedMessageNoOffsetOrThrow(this.signingKey, message)\n  }\n\n  signUnprefixedMessageOrThrow(message: BytesAsUtf8.From) {\n    return BytesSigningKey.signUnprefixedMessageOrThrow(this.signingKey, message)\n  }\n\n  signMessageNoOffsetOrThrow(message: BytesAsUtf8.From) {\n    return BytesSigningKey.signMessageNoOffsetOrThrow(this.signingKey, message)\n  }\n\n  signMessageOrThrow(message: BytesAsUtf8.From) {\n    return BytesSigningKey.signMessageOrThrow(this.signingKey, message)\n  }\n\n}\n\nexport namespace ExtSigner {\n  export type From = Signer | ExtSigningKey.From\n}\n\nexport class ExtSigner {\n\n  constructor(\n    readonly address: Address,\n    readonly signingKey: ExtSigningKey\n  ) { }\n\n  [Symbol.dispose]() {\n    this.signingKey[Symbol.dispose]()\n  }\n\n  static randomOrThrow() {\n    const signingKey = ExtSigningKey.randomOrThrow()\n    const address = SigningKey.getAddressOrThrow(signingKey)\n\n    return new ExtSigner(address, signingKey)\n  }\n\n  static fromOrThrow(from: ExtSigner.From): Box<ExtSigner> {\n    if (from instanceof ExtSigner)\n      return Box.createAsDropped(from)\n    if (from instanceof Signer)\n      return ExtSigner.fromSignerOrThrow(from)\n    return ExtSigner.fromSigningKeyOrThrow(from)\n  }\n\n  static fromSignerOrThrow(from: Signer): Box<ExtSigner> {\n    const signingKey = ExtSigningKey.fromOrThrow(from.signingKey)\n    const address = from.address\n\n    if (signingKey.dropped)\n      return Box.createAsDropped(new ExtSigner(address, signingKey.get()))\n\n    return Box.create(new ExtSigner(address, signingKey.get()))\n  }\n\n  static fromSigningKeyOrThrow(from: ExtSigningKey.From): Box<ExtSigner> {\n    const signingKey = ExtSigningKey.fromOrThrow(from)\n    const address = SigningKey.getAddressOrThrow(signingKey.get())\n\n    if (signingKey.dropped)\n      return Box.createAsDropped(new ExtSigner(address, signingKey.get()))\n\n    return new Box(new ExtSigner(address, signingKey.get()))\n  }\n\n  toJSON() {\n    return ZeroHexSigner.fromOrThrow(this).toJSON()\n  }\n\n  getVerifyingKeyOrThrow() {\n    return ExtSigningKey.getVerifyingKeyOrThrow(this.signingKey)\n  }\n\n  signUnprefixedMessageNoOffsetOrThrow(message: BytesAsUtf8.From) {\n    return ExtSigningKey.signUnprefixedMessageNoOffsetOrThrow(this.signingKey, message)\n  }\n\n  signUnprefixedMessageOrThrow(message: BytesAsUtf8.From) {\n    return ExtSigningKey.signUnprefixedMessageOrThrow(this.signingKey, message)\n  }\n\n  signMessageNoOffsetOrThrow(message: BytesAsUtf8.From) {\n    return ExtSigningKey.signMessageNoOffsetOrThrow(this.signingKey, message)\n  }\n\n  signMessageOrThrow(message: BytesAsUtf8.From) {\n    return ExtSigningKey.signMessageOrThrow(this.signingKey, message)\n  }\n\n}"],"names":["ZeroHexSigningKey","SigningKey","BytesSigningKey","ExtSigningKey","Box"],"mappings":"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"}