{"version":3,"file":"validateEthereumSignatureInstruction.mjs","sources":["../../../src/instructions/validateEthereumSignatureInstruction.ts"],"sourcesContent":["import {\r\n  AccountMeta,\r\n  AccountRole,\r\n  Address,\r\n  Instruction,\r\n  ReadonlyUint8Array,\r\n} from \"@solana/kit\";\r\nimport { serialize } from \"borsh\";\r\n\r\n/**\r\n * Input for validating an Ethereum signature for an SNS record.\r\n *\r\n * @example\r\n * ```ts\r\n * const params: ValidateEthereumSignatureInstructionParams = { validation, signature, expectedPubkey };\r\n * ```\r\n */\r\nexport interface ValidateEthereumSignatureInstructionParams {\r\n  /** Validation mode discriminator. */\r\n  validation: number;\r\n  /** Ethereum signature. */\r\n  signature: ReadonlyUint8Array;\r\n  /** Expected Ethereum public key. */\r\n  expectedPubkey: ReadonlyUint8Array;\r\n}\r\n\r\n/** Builder for validating an Ethereum signature for an SNS record. */\r\nexport class ValidateEthereumSignatureInstruction {\r\n  /** Instruction discriminator. */\r\n  tag: number;\r\n  /** Validation mode discriminator. */\r\n  validation: number;\r\n  /** Ethereum signature. */\r\n  signature: ReadonlyUint8Array;\r\n  /** Expected Ethereum public key. */\r\n  expectedPubkey: ReadonlyUint8Array;\r\n\r\n  static schema = {\r\n    struct: {\r\n      tag: \"u8\",\r\n      validation: \"u8\",\r\n      signature: { array: { type: \"u8\" } },\r\n      expectedPubkey: { array: { type: \"u8\" } },\r\n    },\r\n  };\r\n\r\n  constructor(obj: ValidateEthereumSignatureInstructionParams) {\r\n    this.tag = 4;\r\n    this.validation = obj.validation;\r\n    this.signature = obj.signature;\r\n    this.expectedPubkey = obj.expectedPubkey;\r\n  }\r\n\r\n  serialize(): Uint8Array {\r\n    return serialize(ValidateEthereumSignatureInstruction.schema, this);\r\n  }\r\n\r\n  getInstruction(\r\n    programAddress: Address,\r\n    systemProgram: Address,\r\n    splNameServiceProgram: Address,\r\n    feePayer: Address,\r\n    record: Address,\r\n    domain: Address,\r\n    domainOwner: Address,\r\n    centralState: Address\r\n  ): Instruction {\r\n    const data = this.serialize();\r\n\r\n    const accounts: AccountMeta[] = [\r\n      {\r\n        address: systemProgram,\r\n        role: AccountRole.READONLY,\r\n      },\r\n      {\r\n        address: splNameServiceProgram,\r\n        role: AccountRole.READONLY,\r\n      },\r\n      {\r\n        address: feePayer,\r\n        role: AccountRole.WRITABLE_SIGNER,\r\n      },\r\n      {\r\n        address: record,\r\n        role: AccountRole.WRITABLE,\r\n      },\r\n      {\r\n        address: domain,\r\n        role: AccountRole.WRITABLE,\r\n      },\r\n      {\r\n        address: domainOwner,\r\n        role: AccountRole.WRITABLE_SIGNER,\r\n      },\r\n      {\r\n        address: centralState,\r\n        role: AccountRole.READONLY,\r\n      },\r\n    ];\r\n\r\n    return {\r\n      programAddress,\r\n      accounts,\r\n      data,\r\n    };\r\n  }\r\n}\r\n"],"names":[],"mappings":";;;AA0BA;MACa,oCAAoC,CAAA;;AAE/C,IAAA,GAAG;;AAEH,IAAA,UAAU;;AAEV,IAAA,SAAS;;AAET,IAAA,cAAc;IAEd,OAAO,MAAM,GAAG;AACd,QAAA,MAAM,EAAE;AACN,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YACpC,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;AAC1C,SAAA;KACF;AAED,IAAA,WAAA,CAAY,GAA+C,EAAA;AACzD,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC;AACZ,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc;;IAG1C,SAAS,GAAA;QACP,OAAO,SAAS,CAAC,oCAAoC,CAAC,MAAM,EAAE,IAAI,CAAC;;AAGrE,IAAA,cAAc,CACZ,cAAuB,EACvB,aAAsB,EACtB,qBAA8B,EAC9B,QAAiB,EACjB,MAAe,EACf,MAAe,EACf,WAAoB,EACpB,YAAqB,EAAA;AAErB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAE7B,QAAA,MAAM,QAAQ,GAAkB;AAC9B,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;gBACtB,IAAI,EAAE,WAAW,CAAC,QAAQ;AAC3B,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;gBAC9B,IAAI,EAAE,WAAW,CAAC,QAAQ;AAC3B,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,QAAQ;gBACjB,IAAI,EAAE,WAAW,CAAC,eAAe;AAClC,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,WAAW,CAAC,QAAQ;AAC3B,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,WAAW,CAAC,QAAQ;AAC3B,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,WAAW;gBACpB,IAAI,EAAE,WAAW,CAAC,eAAe;AAClC,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,YAAY;gBACrB,IAAI,EAAE,WAAW,CAAC,QAAQ;AAC3B,aAAA;SACF;QAED,OAAO;YACL,cAAc;YACd,QAAQ;YACR,IAAI;SACL;;;;;;"}