{"version":3,"file":"YNqoASwU.js","sources":["../../../../utilities/chia.ts"],"sourcesContent":["/* eslint-disable import/default */\nimport chiaBls from 'chia-bls';\nimport clvmLib, { Program as ProgramType } from 'clvm-lib';\n/* eslint-enable import/default */\nimport type { SpendableCoin } from '~/stores/goby';\nimport { P2_CONDITIONS_MOD } from '~/utilities/puzzles';\n\n/* eslint-disable import/no-named-as-default-member */\nexport const { hash256, concatBytes } = chiaBls;\nexport const { Program } = clvmLib;\n/* eslint-enable import/no-named-as-default-member */\n\nexport const solutionForConditions = (conditions: ProgramType[]) => {\n const delegatedPuzzle = P2_CONDITIONS_MOD.run(Program.fromList([Program.fromList(conditions)])).value;\n return Program.fromList([Program.fromList([]), delegatedPuzzle, Program.fromInt(0)]);\n};\n\nexport const CreateCoin = (puzzleHash: Uint8Array, amount: number, memos: Uint8Array[] = []) => {\n return Program.fromList([\n Program.fromInt(51),\n Program.fromBytes(puzzleHash),\n Program.fromInt(amount),\n Program.fromList(memos.map((memo) => Program.fromBytes(memo))),\n ]);\n};\n\nexport const CreateCoinAnnouncement = (msg: Uint8Array) => {\n return Program.fromList([Program.fromInt(60), Program.fromBytes(msg)]);\n};\n\nexport const AssertCoinAnnouncement = (coinId: Uint8Array, msg: Uint8Array) => {\n return Program.fromList([Program.fromInt(61), Program.fromBytes(hash256(concatBytes(coinId, msg)))]);\n};\n\nexport const CreatePuzzleAnnouncement = (msg: Uint8Array) => {\n return Program.fromList([Program.fromInt(62), Program.fromBytes(msg)]);\n};\n\nexport const AssertPuzzleAnnouncement = (puzzleHash: Uint8Array, msg: Uint8Array) => {\n return Program.fromList([Program.fromInt(63), Program.fromBytes(hash256(concatBytes(puzzleHash, msg)))]);\n};\n\nexport const ReserveFeeCondition = (amount: number) => {\n return Program.fromList([Program.fromInt(52), Program.fromInt(amount)]);\n};\n\nexport const trim0x = (hex: string) => (hex.startsWith('0x') ? hex.substring(2) : hex);\n\nexport function selectXchCoins(xchCoins: SpendableCoin[], totalValue: number) {\n const selectedCoins = [];\n let totalSelected = 0;\n\n const sortedCoins = xchCoins.sort((a, b) => b.coin.amount - a.coin.amount);\n for (const coin of sortedCoins) {\n selectedCoins.push(coin);\n totalSelected += coin.coin.amount;\n if (totalSelected >= totalValue) {\n break;\n }\n }\n\n if (totalSelected < totalValue) {\n throw new Error(`Balance not high enough to send transaction, available balance: ${totalSelected}`);\n }\n\n return {\n selectedCoins,\n changeAmount: totalSelected - totalValue,\n };\n}\n\nexport function* asIter(program: ProgramType): IterableIterator {\n let currentProgram = program;\n while (!currentProgram.isNull) {\n yield currentProgram.first;\n currentProgram = currentProgram.rest;\n }\n}\n"],"names":["hash256","concatBytes","chiaBls","Program","clvmLib","solutionForConditions","conditions","delegatedPuzzle","P2_CONDITIONS_MOD","CreateCoin","puzzleHash","amount","memos","memo","CreateCoinAnnouncement","msg","AssertCoinAnnouncement","coinId","CreatePuzzleAnnouncement","ReserveFeeCondition","trim0x","hex","selectXchCoins","xchCoins","totalValue","selectedCoins","totalSelected","sortedCoins","a","b","coin","asIter","program","currentProgram"],"mappings":"gDAQa,KAAA,CAAE,QAAAA,EAAS,YAAAC,CAAgB,EAAAC,EAC3B,CAAE,QAAAC,CAAY,EAAAC,EAGdC,EAAyBC,GAA8B,CAClE,MAAMC,EAAkBC,EAAkB,IAAIL,EAAQ,SAAS,CAACA,EAAQ,SAASG,CAAU,CAAC,CAAC,CAAC,EAAE,MAChG,OAAOH,EAAQ,SAAS,CAACA,EAAQ,SAAS,CAAA,CAAE,EAAGI,EAAiBJ,EAAQ,QAAQ,CAAC,CAAC,CAAC,CACrF,EAEaM,EAAa,CAACC,EAAwBC,EAAgBC,EAAsB,CAAA,IAChFT,EAAQ,SAAS,CACtBA,EAAQ,QAAQ,EAAE,EAClBA,EAAQ,UAAUO,CAAU,EAC5BP,EAAQ,QAAQQ,CAAM,EACtBR,EAAQ,SAASS,EAAM,IAAKC,GAASV,EAAQ,UAAUU,CAAI,CAAC,CAAC,CAAA,CAC9D,EAGUC,EAA0BC,GAC9BZ,EAAQ,SAAS,CAACA,EAAQ,QAAQ,EAAE,EAAGA,EAAQ,UAAUY,CAAG,CAAC,CAAC,EAG1DC,EAAyB,CAACC,EAAoBF,IAClDZ,EAAQ,SAAS,CAACA,EAAQ,QAAQ,EAAE,EAAGA,EAAQ,UAAUH,EAAQC,EAAYgB,EAAQF,CAAG,CAAC,CAAC,CAAC,CAAC,EAGxFG,EAA4BH,GAChCZ,EAAQ,SAAS,CAACA,EAAQ,QAAQ,EAAE,EAAGA,EAAQ,UAAUY,CAAG,CAAC,CAAC,EAO1DI,EAAuBR,GAC3BR,EAAQ,SAAS,CAACA,EAAQ,QAAQ,EAAE,EAAGA,EAAQ,QAAQQ,CAAM,CAAC,CAAC,EAG3DS,EAAUC,GAAiBA,EAAI,WAAW,IAAI,EAAIA,EAAI,UAAU,CAAC,EAAIA,EAElE,SAAAC,EAAeC,EAA2BC,EAAoB,CAC5E,MAAMC,EAAgB,CAAA,EACtB,IAAIC,EAAgB,EAEd,MAAAC,EAAcJ,EAAS,KAAK,CAACK,EAAGC,IAAMA,EAAE,KAAK,OAASD,EAAE,KAAK,MAAM,EACzE,UAAWE,KAAQH,EAGjB,GAFAF,EAAc,KAAKK,CAAI,EACvBJ,GAAiBI,EAAK,KAAK,OACvBJ,GAAiBF,EACnB,MAIJ,GAAIE,EAAgBF,EAClB,MAAM,IAAI,MAAM,mEAAmEE,CAAa,EAAE,EAG7F,MAAA,CACL,cAAAD,EACA,aAAcC,EAAgBF,CAAA,CAElC,CAEO,SAAUO,EAAOC,EAAqD,CAC3E,IAAIC,EAAiBD,EACd,KAAA,CAACC,EAAe,QACrB,MAAMA,EAAe,MACrBA,EAAiBA,EAAe,IAEpC"}