{"mappings":";;;;;;;;;;;;;;;;;;;;;AAcO,SAAS,0CACd,OAAkD,EAClD,iBAAyB,EACzB,KAAmB,EACnB,WAAgB;IAEhB,MAAM,gBAAgB;QACpB,MAAM,CAAA,GAAA,8BAAK,EAAE,IAAI,CAAC,IAAI;QACtB,aAAa,CAAA,GAAA,8BAAK,EAAE,IAAI,CAAC,IAAI;QAC7B,KAAK,CAAA,GAAA,8BAAK,EAAE,GAAG,CAAC,IAAI;QACpB,YAAY,CAAA,GAAA,8BAAK,EAAE,GAAG,CAAC,IAAI;IAC7B;IAEA,MAAM,OAAO,aAAa,CAAC,QAAQ;IAEnC,IAAI,CAAC,MACH,MAAM,IAAI,MACR;IAIJ,YAAY;IACZ,MAAM,WAAW,CAAA,GAAA,mCAAU,EAAE;IAE7B,MAAM,KAAK,gCAAoB,OAAO,CAAC;IACvC,MAAM,MAAM,uCAA2B,eAAe,CAAC,IAAI;IAE3D,SAAS,oBAAoB,OAAO;QAClC,MAAM,MAAM,WAAW,CAAC,QAAQ;QAChC,MAAM,UAAU,2BAAe,OAAO,CAAC,KAAK;QAC5C,OAAO;IACT;IAEA,SAAS,QAAQ,aAAa,EAAE,KAAK;QACnC,OAAO,MAAM,IAAI,CAAC,CAAC;YACjB,OAAO,KAAK,IAAI,KAAK,iBAAiB,KAAK,WAAW,KAAK;QAC7D;IACF;IAEA,IAAK,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,IAAK;QACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE;QAEvB,MAAM,OAAO,iCAAO,IAAI,CAAC,MAAM,IAAI,EAAE,OAAO,OAAO,GAAG,QAAQ,CAAC;QAC/D,MAAM,OAAO,QAAQ,MAAM,MAAM,KAAK;QACtC,IAAI,CAAC,MACH,MAAM,MAAM,mCAAmC;QAEjD,MAAM,UAAU,KAAK,OAAO;QAC5B,MAAM,UAAU,oBAAoB;QAEpC,MAAM,aAAa;YACjB,mBAAmB;YACnB,KAAK;qBACL;YACA,MAAM;QACR;QACA,IAAI,IAAI,CAAC;IACX;IACA,MAAM,cAAc,IAAI,KAAK,GAAG,KAAK;IACrC,OAAO;AACT;IACA,2CAAe;UACb;AACF","sources":["index.ts"],"sourcesContent":["const bitcoin = require(\"bitcoinjs-lib\");\nimport { chains, toBitcoinJS } from \"@hyperbitjs/chains\";\n\ninterface IUTXO {\n  address: string;\n  assetName: string;\n  txid: string;\n  outputIndex: number;\n  script: string;\n  satoshis: number;\n  height?: number;\n  value: number;\n}\n\nexport function sign(\n  network: \"aidp\" | \"aidp-test\" | \"evr\" | \"evr-test\",\n  rawTransactionHex: string,\n  UTXOs: Array<IUTXO>,\n  privateKeys: any\n): string {\n  const networkMapper = {\n    aidp: chains.aidp.main,\n    \"aidp-test\": chains.aidp.test,\n    evr: chains.evr.main,\n    \"evr-test\": chains.evr.test,\n  };\n\n  const coin = networkMapper[network];\n\n  if (!coin) {\n    throw new Error(\n      \"Validation error, first argument network must be aidp, aidp-test, evr or evr-test\"\n    );\n  }\n\n  //@ts-ignore\n  const AIDPCOIN = toBitcoinJS(coin);\n\n  const tx = bitcoin.Transaction.fromHex(rawTransactionHex);\n  const txb = bitcoin.TransactionBuilder.fromTransaction(tx, AIDPCOIN);\n\n  function getKeyPairByAddress(address) {\n    const wif = privateKeys[address];\n    const keyPair = bitcoin.ECPair.fromWIF(wif, AIDPCOIN);\n    return keyPair;\n  }\n\n  function getUTXO(transactionId, index) {\n    return UTXOs.find((utxo) => {\n      return utxo.txid === transactionId && utxo.outputIndex === index;\n    });\n  }\n\n  for (let i = 0; i < tx.ins.length; i++) {\n    const input = tx.ins[i];\n\n    const txId = Buffer.from(input.hash, \"hex\").reverse().toString(\"hex\");\n    const utxo = getUTXO(txId, input.index);\n    if (!utxo) {\n      throw Error(\"Could not find UTXO for input \" + input);\n    }\n    const address = utxo.address;\n    const keyPair = getKeyPairByAddress(address);\n\n    const signParams = {\n      prevOutScriptType: \"p2pkh\",\n      vin: i,\n      keyPair,\n      UTXO: utxo,\n    };\n    txb.sign(signParams);\n  }\n  const signedTxHex = txb.build().toHex();\n  return signedTxHex;\n}\nexport default {\n  sign,\n};\n"],"names":[],"version":3,"file":"index.cjs.map"}