{"version":3,"sources":["../../src/core/crypto/multiAuthKey.ts"],"sourcesContent":["import { Deserializer } from \"../../bcs/deserializer\";\nimport { Serializer } from \"../../bcs/serializer\";\nimport { AuthenticationKey } from \"../authenticationKey\";\nimport { AccountPublicKey, PublicKey, VerifySignatureArgs } from \"./publicKey\";\nimport { Signature } from \"./signature\";\nimport { AnyPublicKey, AnySignature } from \"./singleKey\";\n\n/**\n * Represents the public key of a multi-auth-key account.\n *\n */\nexport class MultiAuthKeyPublicKey extends AccountPublicKey {\n  /**\n   * List of any public keys\n   */\n  public readonly publicKeys: AnyPublicKey[];\n\n  // region Constructors\n\n  constructor(args: { publicKeys: Array<PublicKey>; }) {\n    super();\n    const { publicKeys } = args;\n\n    // Make sure that all keys are normalized to the SingleKey authentication scheme\n    this.publicKeys = publicKeys.map((publicKey) =>\n      publicKey instanceof AnyPublicKey ? publicKey : new AnyPublicKey(publicKey),\n    );\n  }\n\n  // endregion\n\n  // region AccountPublicKey\n\n  // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars\n  verifySignature(args: VerifySignatureArgs): boolean {\n    throw new Error(\"not implemented\");\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  authKey(): AuthenticationKey {\n    throw new Error(\"not implemented\");\n  }\n\n  toUint8Array(): Uint8Array {\n    return this.bcsToBytes();\n  }\n\n  // endregion\n\n  // region Serializable\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeVector(this.publicKeys);\n  }\n\n  static deserialize(deserializer: Deserializer): MultiAuthKeyPublicKey {\n    const keys = deserializer.deserializeVector(AnyPublicKey);\n\n    return new MultiAuthKeyPublicKey({ publicKeys: keys });\n  }\n\n  // endregion\n}\n\nexport class MultiAuthKeySignature extends Signature {\n  /**\n   * The list of signatures\n   */\n  public readonly signatures: AnySignature[];\n\n  constructor(args: { signatures: Array<Signature | AnySignature>; }) {\n    super();\n    const { signatures } = args;\n\n    // Make sure that all signatures are normalized to the SingleKey authentication scheme\n    this.signatures = signatures.map((signature) =>\n      signature instanceof AnySignature ? signature : new AnySignature(signature),\n    );\n  }\n\n  // region Signature\n\n  toUint8Array(): Uint8Array {\n    return this.bcsToBytes();\n  }\n\n  // endregion\n\n  // region Serializable\n\n  serialize(serializer: Serializer): void {\n    // Note: we should not need to serialize the vector length, as it can be derived from the bitmap\n    serializer.serializeVector(this.signatures);\n  }\n\n  static deserialize(deserializer: Deserializer): MultiAuthKeySignature {\n    const signatures = deserializer.deserializeVector(AnySignature);\n    return new MultiAuthKeySignature({ signatures });\n  }\n\n  // endregion\n}\n"],"mappings":"kIAWO,IAAMA,EAAN,MAAMC,UAA8BC,CAAiB,CAQ1D,YAAYC,EAAyC,CACnD,MAAM,EACN,GAAM,CAAE,WAAAC,CAAW,EAAID,EAGvB,KAAK,WAAaC,EAAW,IAAKC,GAChCA,aAAqBC,EAAeD,EAAY,IAAIC,EAAaD,CAAS,CAC5E,CACF,CAOA,gBAAgBF,EAAoC,CAClD,MAAM,IAAI,MAAM,iBAAiB,CACnC,CAGA,SAA6B,CAC3B,MAAM,IAAI,MAAM,iBAAiB,CACnC,CAEA,cAA2B,CACzB,OAAO,KAAK,WAAW,CACzB,CAMA,UAAUI,EAA8B,CACtCA,EAAW,gBAAgB,KAAK,UAAU,CAC5C,CAEA,OAAO,YAAYC,EAAmD,CACpE,IAAMC,EAAOD,EAAa,kBAAkBF,CAAY,EAExD,OAAO,IAAIL,EAAsB,CAAE,WAAYQ,CAAK,CAAC,CACvD,CAGF,EAEaC,EAAN,MAAMC,UAA8BC,CAAU,CAMnD,YAAYT,EAAwD,CAClE,MAAM,EACN,GAAM,CAAE,WAAAU,CAAW,EAAIV,EAGvB,KAAK,WAAaU,EAAW,IAAKC,GAChCA,aAAqBC,EAAeD,EAAY,IAAIC,EAAaD,CAAS,CAC5E,CACF,CAIA,cAA2B,CACzB,OAAO,KAAK,WAAW,CACzB,CAMA,UAAUP,EAA8B,CAEtCA,EAAW,gBAAgB,KAAK,UAAU,CAC5C,CAEA,OAAO,YAAYC,EAAmD,CACpE,IAAMK,EAAaL,EAAa,kBAAkBO,CAAY,EAC9D,OAAO,IAAIJ,EAAsB,CAAE,WAAAE,CAAW,CAAC,CACjD,CAGF","names":["MultiAuthKeyPublicKey","_MultiAuthKeyPublicKey","AccountPublicKey","args","publicKeys","publicKey","AnyPublicKey","serializer","deserializer","keys","MultiAuthKeySignature","_MultiAuthKeySignature","Signature","signatures","signature","AnySignature"]}