[{"data":1,"prerenderedAt":4648},["ShallowReactive",2],{"navigation":3,"page-en-\u002Fguides\u002Futilities-cookbook":160,"surround-en-\u002Fguides\u002Futilities-cookbook":4643},[4,28,65,99,130,151],{"title":5,"path":6,"stem":7,"children":8,"icon":27},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17,22],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-rocket",{"title":23,"path":24,"stem":25,"icon":26},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F4.configuration","i-lucide-settings-2",false,{"title":29,"path":30,"stem":31,"children":32,"icon":34},"Guides","\u002Fguides","2.guides\u002F1.index",[33,35,40,45,50,55,60],{"title":29,"path":30,"stem":31,"icon":34},"i-lucide-book-open",{"title":36,"path":37,"stem":38,"icon":39},"Build a Wallet App","\u002Fguides\u002Fbuild-wallet-app","2.guides\u002F2.build-wallet-app","i-lucide-wallet",{"title":41,"path":42,"stem":43,"icon":44},"Building Transactions","\u002Fguides\u002Ftransactions","2.guides\u002F3.transactions","i-lucide-file-signature",{"title":46,"path":47,"stem":48,"icon":49},"Mint and Burn Tokens Guide","\u002Fguides\u002Fmint-burn-tokens","2.guides\u002F4.mint-burn-tokens","i-lucide-coins",{"title":51,"path":52,"stem":53,"icon":54},"Hydra Integration Examples","\u002Fguides\u002Fhydra-integration","2.guides\u002F5.hydra-integration","i-lucide-network",{"title":56,"path":57,"stem":58,"icon":59},"Utilities Cookbook","\u002Fguides\u002Futilities-cookbook","2.guides\u002F6.utilities-cookbook","i-lucide-wrench",{"title":61,"path":62,"stem":63,"icon":64},"Integrate from Cardano-CLI","\u002Fguides\u002Fcardano-cli-keys","2.guides\u002F7.cardano-cli-keys","i-lucide-key-round",{"title":66,"path":67,"stem":68,"children":69,"icon":98},"Concepts","\u002Fconcepts","3.concepts\u002F1.index",[70,73,78,83,88,93],{"title":71,"path":67,"stem":68,"icon":72},"Why Hydra?","i-lucide-circle-help",{"title":74,"path":75,"stem":76,"icon":77},"Commit to Hydra","\u002Fconcepts\u002Fcommit-to-hydra","3.concepts\u002F2.commit-to-hydra","i-lucide-arrow-down-to-line",{"title":79,"path":80,"stem":81,"icon":82},"Decommit from Hydra","\u002Fconcepts\u002Fdecommit-from-hydra","3.concepts\u002F3.decommit-from-hydra","i-lucide-arrow-up-from-line",{"title":84,"path":85,"stem":86,"icon":87},"Transactions in Hydra","\u002Fconcepts\u002Ftransactions-in-hydra","3.concepts\u002F4.transactions-in-hydra","i-lucide-arrow-left-right",{"title":89,"path":90,"stem":91,"icon":92},"Smart Contracts in Hydra","\u002Fconcepts\u002Fsmart-contracts-in-hydra","3.concepts\u002F5.smart-contracts-in-hydra","i-lucide-file-code-2",{"title":94,"path":95,"stem":96,"icon":97},"Hydra Protocol Versions","\u002Fconcepts\u002Fhydra-v2-changes","3.concepts\u002F6.hydra-v2-changes","i-lucide-git-compare","i-lucide-lightbulb",{"title":100,"path":101,"stem":102,"children":103,"icon":129},"API Reference","\u002Fapi","4.api\u002F1.index",[104,106,111,116,120,125],{"title":100,"path":101,"stem":102,"icon":105},"i-lucide-book-marked",{"title":107,"path":108,"stem":109,"icon":110},"@hydra-sdk\u002Fcore","\u002Fapi\u002Fcore","4.api\u002F2.core","i-lucide-box",{"title":112,"path":113,"stem":114,"icon":115},"@hydra-sdk\u002Fbridge","\u002Fapi\u002Fbridge","4.api\u002F3.bridge","i-lucide-cable",{"title":117,"path":118,"stem":119,"icon":44},"@hydra-sdk\u002Ftransaction","\u002Fapi\u002Ftransaction","4.api\u002F4.transaction",{"title":121,"path":122,"stem":123,"icon":124},"@hydra-sdk\u002Fcardano-wasm","\u002Fapi\u002Fcardano-wasm","4.api\u002F5.cardano-wasm","i-lucide-cpu",{"title":126,"path":127,"stem":128,"icon":59},"@hydra-sdk\u002Fcore - Utilities","\u002Fapi\u002Futilities","4.api\u002F6.utilities","i-lucide-braces",{"title":131,"icon":132,"path":133,"stem":134,"children":135,"page":27},"Resources","i-lucide-archive","\u002Fresources","5.resources",[136,141,146],{"title":137,"path":138,"stem":139,"icon":140},"Change Logs","\u002Fresources\u002Fchangelog","5.resources\u002F1.changelog","i-lucide-history",{"title":142,"path":143,"stem":144,"icon":145},"Migration","\u002Fresources\u002Fmigration","5.resources\u002F2.migration","i-lucide-arrow-right-left",{"title":147,"path":148,"stem":149,"icon":150},"Performance & Comparison","\u002Fresources\u002Fperformance","5.resources\u002F3.performance","i-lucide-gauge",{"title":152,"path":153,"stem":154,"children":155,"icon":159},"AI","\u002Fai","6.ai\u002F1.index",[156],{"title":157,"path":153,"stem":154,"icon":158},"Use with AI","i-lucide-bot","i-lucide-sparkles",{"id":161,"title":56,"body":162,"description":4636,"extension":4637,"links":4638,"meta":4639,"navigation":4640,"path":57,"seo":4641,"stem":58,"__hash__":4642},"docs_en\u002F2.guides\u002F6.utilities-cookbook.md",{"type":163,"value":164,"toc":4614},"minimark",[165,181,186,193,468,473,476,490,1070,1074,1079,1436,1440,1443,1914,1918,1928,1933,2147,2151,2161,2450,2454,2463,2809,2813,2819,3030,3034,3037,3229,3233,3244,3550,3554,3563,3635,3639,3650,3658,3900,3904,3919,4036,4040,4049,4053,4244,4248,4255,4570,4584,4588,4610],[166,167,168,169,173,174,176,177,180],"p",{},"This cookbook collects task-oriented recipes for the Hydra SDK utility namespaces, distilled from the real ",[170,171,172],"code",{},"nodejs-playground\u002Fsrc"," implementations. Each recipe is a small, runnable snippet: a problem and the shortest code that solves it. Every namespace shown here is exported from ",[170,175,107],{},". For full function signatures and parameter tables, see ",[178,179,127],"a",{"href":127},".",[182,183,185],"h2",{"id":184},"building-datums","Building datums",[166,187,188,189,192],{},"Construct Plutus data with the ",[170,190,191],{},"DatumUtils"," encoders. Start with the primitives, then compose them into structured, nested datums.",[194,195,200],"pre",{"className":196,"code":197,"language":198,"meta":199,"style":199},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { DatumUtils } from '@hydra-sdk\u002Fcore'\n\n\u002F\u002F Simple datum types\nconst intDatum = DatumUtils.mkInt(42)\nconst bytesDatum = DatumUtils.mkBytes('deadbeef')\nconst listDatum = DatumUtils.mkList([intDatum, bytesDatum])\n\n\u002F\u002F Constructor datum\nconst constrDatum = DatumUtils.mkConstr(0, [intDatum, bytesDatum])\n\n\u002F\u002F Map datum\nconst mapDatum = DatumUtils.mkMap([\n  [DatumUtils.mkBytes('key1'), intDatum],\n  [DatumUtils.mkBytes('key2'), bytesDatum]\n])\n","typescript","",[170,201,202,234,241,248,279,308,334,339,345,376,381,387,407,437,462],{"__ignoreMap":199},[203,204,207,211,215,219,222,225,228,231],"span",{"class":205,"line":206},"line",1,[203,208,210],{"class":209},"s7zQu","import",[203,212,214],{"class":213},"sMK4o"," {",[203,216,218],{"class":217},"sTEyZ"," DatumUtils",[203,220,221],{"class":213}," }",[203,223,224],{"class":209}," from",[203,226,227],{"class":213}," '",[203,229,107],{"class":230},"sfazB",[203,232,233],{"class":213},"'\n",[203,235,237],{"class":205,"line":236},2,[203,238,240],{"emptyLinePlaceholder":239},true,"\n",[203,242,244],{"class":205,"line":243},3,[203,245,247],{"class":246},"sHwdD","\u002F\u002F Simple datum types\n",[203,249,251,255,258,261,263,265,269,272,276],{"class":205,"line":250},4,[203,252,254],{"class":253},"spNyl","const",[203,256,257],{"class":217}," intDatum ",[203,259,260],{"class":213},"=",[203,262,218],{"class":217},[203,264,180],{"class":213},[203,266,268],{"class":267},"s2Zo4","mkInt",[203,270,271],{"class":217},"(",[203,273,275],{"class":274},"sbssI","42",[203,277,278],{"class":217},")\n",[203,280,282,284,287,289,291,293,296,298,301,304,306],{"class":205,"line":281},5,[203,283,254],{"class":253},[203,285,286],{"class":217}," bytesDatum ",[203,288,260],{"class":213},[203,290,218],{"class":217},[203,292,180],{"class":213},[203,294,295],{"class":267},"mkBytes",[203,297,271],{"class":217},[203,299,300],{"class":213},"'",[203,302,303],{"class":230},"deadbeef",[203,305,300],{"class":213},[203,307,278],{"class":217},[203,309,311,313,316,318,320,322,325,328,331],{"class":205,"line":310},6,[203,312,254],{"class":253},[203,314,315],{"class":217}," listDatum ",[203,317,260],{"class":213},[203,319,218],{"class":217},[203,321,180],{"class":213},[203,323,324],{"class":267},"mkList",[203,326,327],{"class":217},"([intDatum",[203,329,330],{"class":213},",",[203,332,333],{"class":217}," bytesDatum])\n",[203,335,337],{"class":205,"line":336},7,[203,338,240],{"emptyLinePlaceholder":239},[203,340,342],{"class":205,"line":341},8,[203,343,344],{"class":246},"\u002F\u002F Constructor datum\n",[203,346,348,350,353,355,357,359,362,364,367,369,372,374],{"class":205,"line":347},9,[203,349,254],{"class":253},[203,351,352],{"class":217}," constrDatum ",[203,354,260],{"class":213},[203,356,218],{"class":217},[203,358,180],{"class":213},[203,360,361],{"class":267},"mkConstr",[203,363,271],{"class":217},[203,365,366],{"class":274},"0",[203,368,330],{"class":213},[203,370,371],{"class":217}," [intDatum",[203,373,330],{"class":213},[203,375,333],{"class":217},[203,377,379],{"class":205,"line":378},10,[203,380,240],{"emptyLinePlaceholder":239},[203,382,384],{"class":205,"line":383},11,[203,385,386],{"class":246},"\u002F\u002F Map datum\n",[203,388,390,392,395,397,399,401,404],{"class":205,"line":389},12,[203,391,254],{"class":253},[203,393,394],{"class":217}," mapDatum ",[203,396,260],{"class":213},[203,398,218],{"class":217},[203,400,180],{"class":213},[203,402,403],{"class":267},"mkMap",[203,405,406],{"class":217},"([\n",[203,408,410,413,415,417,419,421,424,426,429,431,434],{"class":205,"line":409},13,[203,411,412],{"class":217},"  [DatumUtils",[203,414,180],{"class":213},[203,416,295],{"class":267},[203,418,271],{"class":217},[203,420,300],{"class":213},[203,422,423],{"class":230},"key1",[203,425,300],{"class":213},[203,427,428],{"class":217},")",[203,430,330],{"class":213},[203,432,433],{"class":217}," intDatum]",[203,435,436],{"class":213},",\n",[203,438,440,442,444,446,448,450,453,455,457,459],{"class":205,"line":439},14,[203,441,412],{"class":217},[203,443,180],{"class":213},[203,445,295],{"class":267},[203,447,271],{"class":217},[203,449,300],{"class":213},[203,451,452],{"class":230},"key2",[203,454,300],{"class":213},[203,456,428],{"class":217},[203,458,330],{"class":213},[203,460,461],{"class":217}," bytesDatum]\n",[203,463,465],{"class":205,"line":464},15,[203,466,467],{"class":217},"])\n",[469,470,472],"h3",{"id":471},"complex-nested-datum","Complex, nested datum",[166,474,475],{},"The production pattern below builds a deeply nested constructor with an inner map-of-maps. This is the canonical copy of this recipe.",[477,478,479],"note",{},[166,480,481,482,485,486,489],{},"This ",[170,483,484],{},"buildDatum"," block is also used in the ",[178,487,488],{"href":47},"Mint and Burn Tokens"," guide, which links back here as the canonical source. Keep the two in sync.",[194,491,493],{"className":196,"code":492,"language":198,"meta":199,"style":199},"import { DatumUtils, ParserUtils } from '@hydra-sdk\u002Fcore'\nimport { CardanoWASM } from '@hydra-sdk\u002Fcardano-wasm'\n\n\u002F\u002F Production datum builder pattern\nconst buildDatum = (key: string, l1Vkh: string, l2Vkh: string, amount: string) => {\n  const bKey = DatumUtils.mkBytes(key)\n  const cL1Vkh = DatumUtils.mkConstr(0, [DatumUtils.mkBytes(l1Vkh)])\n  const cL2Vkh = DatumUtils.mkConstr(0, [DatumUtils.mkBytes(l2Vkh)])\n\n  const constrKey = DatumUtils.mkConstr(0, [bKey, cL1Vkh, cL2Vkh])\n  const wrap1 = DatumUtils.mkConstr(0, [constrKey])\n\n  \u002F\u002F Nested map: { \"\" => { \"\" => amount } }\n  const emptyBytes = DatumUtils.mkBytes('')\n  const mapVal = CardanoWASM.PlutusMapValues.new()\n  mapVal.add(DatumUtils.mkInt(amount))\n  const innerMap = DatumUtils.mkMap([[emptyBytes, mapVal]])\n\n  const outerMapVal = CardanoWASM.PlutusMapValues.new()\n  outerMapVal.add(innerMap)\n  const outerMap = DatumUtils.mkMap([[emptyBytes, outerMapVal]])\n\n  return DatumUtils.mkConstr(0, [wrap1, outerMap])\n}\n\n\u002F\u002F Usage\nconst datum = buildDatum(\n  'ee91e90e791e4cd983d1b1f331d1e8eb',\n  '326cd6bff6114c4d14ebf2385883aac43c4e64476e6a47314f9b2003',\n  'f602ad4b16ec2e1a96989dc140eacf546359695cfece8510c8d1c0ac',\n  '4000000'\n)\n",[170,494,495,518,537,541,546,604,628,666,702,706,742,770,774,779,801,825,852,881,886,908,925,951,956,985,991,996,1002,1018,1031,1043,1055,1065],{"__ignoreMap":199},[203,496,497,499,501,503,505,508,510,512,514,516],{"class":205,"line":206},[203,498,210],{"class":209},[203,500,214],{"class":213},[203,502,218],{"class":217},[203,504,330],{"class":213},[203,506,507],{"class":217}," ParserUtils",[203,509,221],{"class":213},[203,511,224],{"class":209},[203,513,227],{"class":213},[203,515,107],{"class":230},[203,517,233],{"class":213},[203,519,520,522,524,527,529,531,533,535],{"class":205,"line":236},[203,521,210],{"class":209},[203,523,214],{"class":213},[203,525,526],{"class":217}," CardanoWASM",[203,528,221],{"class":213},[203,530,224],{"class":209},[203,532,227],{"class":213},[203,534,121],{"class":230},[203,536,233],{"class":213},[203,538,539],{"class":205,"line":243},[203,540,240],{"emptyLinePlaceholder":239},[203,542,543],{"class":205,"line":250},[203,544,545],{"class":246},"\u002F\u002F Production datum builder pattern\n",[203,547,548,550,553,555,558,562,565,569,571,574,576,578,580,583,585,587,589,592,594,596,598,601],{"class":205,"line":281},[203,549,254],{"class":253},[203,551,552],{"class":217}," buildDatum ",[203,554,260],{"class":213},[203,556,557],{"class":213}," (",[203,559,561],{"class":560},"sHdIc","key",[203,563,564],{"class":213},":",[203,566,568],{"class":567},"sBMFI"," string",[203,570,330],{"class":213},[203,572,573],{"class":560}," l1Vkh",[203,575,564],{"class":213},[203,577,568],{"class":567},[203,579,330],{"class":213},[203,581,582],{"class":560}," l2Vkh",[203,584,564],{"class":213},[203,586,568],{"class":567},[203,588,330],{"class":213},[203,590,591],{"class":560}," amount",[203,593,564],{"class":213},[203,595,568],{"class":567},[203,597,428],{"class":213},[203,599,600],{"class":253}," =>",[203,602,603],{"class":213}," {\n",[203,605,606,609,612,615,617,619,621,624,626],{"class":205,"line":310},[203,607,608],{"class":253},"  const",[203,610,611],{"class":217}," bKey",[203,613,614],{"class":213}," =",[203,616,218],{"class":217},[203,618,180],{"class":213},[203,620,295],{"class":267},[203,622,271],{"class":623},"swJcz",[203,625,561],{"class":217},[203,627,278],{"class":623},[203,629,630,632,635,637,639,641,643,645,647,649,652,654,656,658,660,663],{"class":205,"line":336},[203,631,608],{"class":253},[203,633,634],{"class":217}," cL1Vkh",[203,636,614],{"class":213},[203,638,218],{"class":217},[203,640,180],{"class":213},[203,642,361],{"class":267},[203,644,271],{"class":623},[203,646,366],{"class":274},[203,648,330],{"class":213},[203,650,651],{"class":623}," [",[203,653,191],{"class":217},[203,655,180],{"class":213},[203,657,295],{"class":267},[203,659,271],{"class":623},[203,661,662],{"class":217},"l1Vkh",[203,664,665],{"class":623},")])\n",[203,667,668,670,673,675,677,679,681,683,685,687,689,691,693,695,697,700],{"class":205,"line":341},[203,669,608],{"class":253},[203,671,672],{"class":217}," cL2Vkh",[203,674,614],{"class":213},[203,676,218],{"class":217},[203,678,180],{"class":213},[203,680,361],{"class":267},[203,682,271],{"class":623},[203,684,366],{"class":274},[203,686,330],{"class":213},[203,688,651],{"class":623},[203,690,191],{"class":217},[203,692,180],{"class":213},[203,694,295],{"class":267},[203,696,271],{"class":623},[203,698,699],{"class":217},"l2Vkh",[203,701,665],{"class":623},[203,703,704],{"class":205,"line":347},[203,705,240],{"emptyLinePlaceholder":239},[203,707,708,710,713,715,717,719,721,723,725,727,729,732,734,736,738,740],{"class":205,"line":378},[203,709,608],{"class":253},[203,711,712],{"class":217}," constrKey",[203,714,614],{"class":213},[203,716,218],{"class":217},[203,718,180],{"class":213},[203,720,361],{"class":267},[203,722,271],{"class":623},[203,724,366],{"class":274},[203,726,330],{"class":213},[203,728,651],{"class":623},[203,730,731],{"class":217},"bKey",[203,733,330],{"class":213},[203,735,634],{"class":217},[203,737,330],{"class":213},[203,739,672],{"class":217},[203,741,467],{"class":623},[203,743,744,746,749,751,753,755,757,759,761,763,765,768],{"class":205,"line":383},[203,745,608],{"class":253},[203,747,748],{"class":217}," wrap1",[203,750,614],{"class":213},[203,752,218],{"class":217},[203,754,180],{"class":213},[203,756,361],{"class":267},[203,758,271],{"class":623},[203,760,366],{"class":274},[203,762,330],{"class":213},[203,764,651],{"class":623},[203,766,767],{"class":217},"constrKey",[203,769,467],{"class":623},[203,771,772],{"class":205,"line":389},[203,773,240],{"emptyLinePlaceholder":239},[203,775,776],{"class":205,"line":409},[203,777,778],{"class":246},"  \u002F\u002F Nested map: { \"\" => { \"\" => amount } }\n",[203,780,781,783,786,788,790,792,794,796,799],{"class":205,"line":439},[203,782,608],{"class":253},[203,784,785],{"class":217}," emptyBytes",[203,787,614],{"class":213},[203,789,218],{"class":217},[203,791,180],{"class":213},[203,793,295],{"class":267},[203,795,271],{"class":623},[203,797,798],{"class":213},"''",[203,800,278],{"class":623},[203,802,803,805,808,810,812,814,817,819,822],{"class":205,"line":464},[203,804,608],{"class":253},[203,806,807],{"class":217}," mapVal",[203,809,614],{"class":213},[203,811,526],{"class":217},[203,813,180],{"class":213},[203,815,816],{"class":217},"PlutusMapValues",[203,818,180],{"class":213},[203,820,821],{"class":267},"new",[203,823,824],{"class":623},"()\n",[203,826,828,831,833,836,838,840,842,844,846,849],{"class":205,"line":827},16,[203,829,830],{"class":217},"  mapVal",[203,832,180],{"class":213},[203,834,835],{"class":267},"add",[203,837,271],{"class":623},[203,839,191],{"class":217},[203,841,180],{"class":213},[203,843,268],{"class":267},[203,845,271],{"class":623},[203,847,848],{"class":217},"amount",[203,850,851],{"class":623},"))\n",[203,853,855,857,860,862,864,866,868,871,874,876,878],{"class":205,"line":854},17,[203,856,608],{"class":253},[203,858,859],{"class":217}," innerMap",[203,861,614],{"class":213},[203,863,218],{"class":217},[203,865,180],{"class":213},[203,867,403],{"class":267},[203,869,870],{"class":623},"([[",[203,872,873],{"class":217},"emptyBytes",[203,875,330],{"class":213},[203,877,807],{"class":217},[203,879,880],{"class":623},"]])\n",[203,882,884],{"class":205,"line":883},18,[203,885,240],{"emptyLinePlaceholder":239},[203,887,889,891,894,896,898,900,902,904,906],{"class":205,"line":888},19,[203,890,608],{"class":253},[203,892,893],{"class":217}," outerMapVal",[203,895,614],{"class":213},[203,897,526],{"class":217},[203,899,180],{"class":213},[203,901,816],{"class":217},[203,903,180],{"class":213},[203,905,821],{"class":267},[203,907,824],{"class":623},[203,909,911,914,916,918,920,923],{"class":205,"line":910},20,[203,912,913],{"class":217},"  outerMapVal",[203,915,180],{"class":213},[203,917,835],{"class":267},[203,919,271],{"class":623},[203,921,922],{"class":217},"innerMap",[203,924,278],{"class":623},[203,926,928,930,933,935,937,939,941,943,945,947,949],{"class":205,"line":927},21,[203,929,608],{"class":253},[203,931,932],{"class":217}," outerMap",[203,934,614],{"class":213},[203,936,218],{"class":217},[203,938,180],{"class":213},[203,940,403],{"class":267},[203,942,870],{"class":623},[203,944,873],{"class":217},[203,946,330],{"class":213},[203,948,893],{"class":217},[203,950,880],{"class":623},[203,952,954],{"class":205,"line":953},22,[203,955,240],{"emptyLinePlaceholder":239},[203,957,959,962,964,966,968,970,972,974,976,979,981,983],{"class":205,"line":958},23,[203,960,961],{"class":209},"  return",[203,963,218],{"class":217},[203,965,180],{"class":213},[203,967,361],{"class":267},[203,969,271],{"class":623},[203,971,366],{"class":274},[203,973,330],{"class":213},[203,975,651],{"class":623},[203,977,978],{"class":217},"wrap1",[203,980,330],{"class":213},[203,982,932],{"class":217},[203,984,467],{"class":623},[203,986,988],{"class":205,"line":987},24,[203,989,990],{"class":213},"}\n",[203,992,994],{"class":205,"line":993},25,[203,995,240],{"emptyLinePlaceholder":239},[203,997,999],{"class":205,"line":998},26,[203,1000,1001],{"class":246},"\u002F\u002F Usage\n",[203,1003,1005,1007,1010,1012,1015],{"class":205,"line":1004},27,[203,1006,254],{"class":253},[203,1008,1009],{"class":217}," datum ",[203,1011,260],{"class":213},[203,1013,1014],{"class":267}," buildDatum",[203,1016,1017],{"class":217},"(\n",[203,1019,1021,1024,1027,1029],{"class":205,"line":1020},28,[203,1022,1023],{"class":213},"  '",[203,1025,1026],{"class":230},"ee91e90e791e4cd983d1b1f331d1e8eb",[203,1028,300],{"class":213},[203,1030,436],{"class":213},[203,1032,1034,1036,1039,1041],{"class":205,"line":1033},29,[203,1035,1023],{"class":213},[203,1037,1038],{"class":230},"326cd6bff6114c4d14ebf2385883aac43c4e64476e6a47314f9b2003",[203,1040,300],{"class":213},[203,1042,436],{"class":213},[203,1044,1046,1048,1051,1053],{"class":205,"line":1045},30,[203,1047,1023],{"class":213},[203,1049,1050],{"class":230},"f602ad4b16ec2e1a96989dc140eacf546359695cfece8510c8d1c0ac",[203,1052,300],{"class":213},[203,1054,436],{"class":213},[203,1056,1058,1060,1063],{"class":205,"line":1057},31,[203,1059,1023],{"class":213},[203,1061,1062],{"class":230},"4000000",[203,1064,233],{"class":213},[203,1066,1068],{"class":205,"line":1067},32,[203,1069,278],{"class":217},[469,1071,1073],{"id":1072},"new-datum-encoders","New datum encoders",[477,1075,1076],{},[166,1077,1078],{},"New in v1.4.0. Convenience encoders for lists, booleans, options, output references, and addresses.",[194,1080,1082],{"className":196,"code":1081,"language":198,"meta":199,"style":199},"import { DatumUtils, NETWORK_ID } from '@hydra-sdk\u002Fcore'\n\n\u002F\u002F Lists\nconst list = DatumUtils.mkList([DatumUtils.mkInt(1), DatumUtils.mkInt(2)])\nconst bytesList = DatumUtils.mkBytesList(['deadbeef', 'cafe'])\nconst intList = DatumUtils.mkIntList([1, 2, 3])\n\n\u002F\u002F Booleans: False = Constr(0, []), True = Constr(1, [])\nconst flag = DatumUtils.mkBool(true)\n\n\u002F\u002F Option: Some = Constr(0, [v]), None = Constr(1, [])\nconst some = DatumUtils.mkOption(DatumUtils.mkInt(42))\nconst none = DatumUtils.mkOption()\n\n\u002F\u002F Output reference: Constr(0, [Bytes(txHash), Int(index)])\nconst outRef = DatumUtils.mkOutputRef({ txHash: 'abc123...', index: 0 })\n\n\u002F\u002F Address \u003C-> PlutusData\nconst addrDatum = DatumUtils.mkAddress('addr_test1...')\nconst bech32 = DatumUtils.parseAddress(addrDatum, NETWORK_ID.PREPROD)\n",[170,1083,1084,1107,1111,1116,1160,1196,1228,1232,1237,1261,1265,1270,1299,1316,1320,1325,1372,1376,1381,1408],{"__ignoreMap":199},[203,1085,1086,1088,1090,1092,1094,1097,1099,1101,1103,1105],{"class":205,"line":206},[203,1087,210],{"class":209},[203,1089,214],{"class":213},[203,1091,218],{"class":217},[203,1093,330],{"class":213},[203,1095,1096],{"class":217}," NETWORK_ID",[203,1098,221],{"class":213},[203,1100,224],{"class":209},[203,1102,227],{"class":213},[203,1104,107],{"class":230},[203,1106,233],{"class":213},[203,1108,1109],{"class":205,"line":236},[203,1110,240],{"emptyLinePlaceholder":239},[203,1112,1113],{"class":205,"line":243},[203,1114,1115],{"class":246},"\u002F\u002F Lists\n",[203,1117,1118,1120,1123,1125,1127,1129,1131,1134,1136,1138,1140,1143,1145,1147,1149,1151,1153,1155,1158],{"class":205,"line":250},[203,1119,254],{"class":253},[203,1121,1122],{"class":217}," list ",[203,1124,260],{"class":213},[203,1126,218],{"class":217},[203,1128,180],{"class":213},[203,1130,324],{"class":267},[203,1132,1133],{"class":217},"([DatumUtils",[203,1135,180],{"class":213},[203,1137,268],{"class":267},[203,1139,271],{"class":217},[203,1141,1142],{"class":274},"1",[203,1144,428],{"class":217},[203,1146,330],{"class":213},[203,1148,218],{"class":217},[203,1150,180],{"class":213},[203,1152,268],{"class":267},[203,1154,271],{"class":217},[203,1156,1157],{"class":274},"2",[203,1159,665],{"class":217},[203,1161,1162,1164,1167,1169,1171,1173,1176,1179,1181,1183,1185,1187,1189,1192,1194],{"class":205,"line":281},[203,1163,254],{"class":253},[203,1165,1166],{"class":217}," bytesList ",[203,1168,260],{"class":213},[203,1170,218],{"class":217},[203,1172,180],{"class":213},[203,1174,1175],{"class":267},"mkBytesList",[203,1177,1178],{"class":217},"([",[203,1180,300],{"class":213},[203,1182,303],{"class":230},[203,1184,300],{"class":213},[203,1186,330],{"class":213},[203,1188,227],{"class":213},[203,1190,1191],{"class":230},"cafe",[203,1193,300],{"class":213},[203,1195,467],{"class":217},[203,1197,1198,1200,1203,1205,1207,1209,1212,1214,1216,1218,1221,1223,1226],{"class":205,"line":310},[203,1199,254],{"class":253},[203,1201,1202],{"class":217}," intList ",[203,1204,260],{"class":213},[203,1206,218],{"class":217},[203,1208,180],{"class":213},[203,1210,1211],{"class":267},"mkIntList",[203,1213,1178],{"class":217},[203,1215,1142],{"class":274},[203,1217,330],{"class":213},[203,1219,1220],{"class":274}," 2",[203,1222,330],{"class":213},[203,1224,1225],{"class":274}," 3",[203,1227,467],{"class":217},[203,1229,1230],{"class":205,"line":336},[203,1231,240],{"emptyLinePlaceholder":239},[203,1233,1234],{"class":205,"line":341},[203,1235,1236],{"class":246},"\u002F\u002F Booleans: False = Constr(0, []), True = Constr(1, [])\n",[203,1238,1239,1241,1244,1246,1248,1250,1253,1255,1259],{"class":205,"line":347},[203,1240,254],{"class":253},[203,1242,1243],{"class":217}," flag ",[203,1245,260],{"class":213},[203,1247,218],{"class":217},[203,1249,180],{"class":213},[203,1251,1252],{"class":267},"mkBool",[203,1254,271],{"class":217},[203,1256,1258],{"class":1257},"sfNiH","true",[203,1260,278],{"class":217},[203,1262,1263],{"class":205,"line":378},[203,1264,240],{"emptyLinePlaceholder":239},[203,1266,1267],{"class":205,"line":383},[203,1268,1269],{"class":246},"\u002F\u002F Option: Some = Constr(0, [v]), None = Constr(1, [])\n",[203,1271,1272,1274,1277,1279,1281,1283,1286,1289,1291,1293,1295,1297],{"class":205,"line":389},[203,1273,254],{"class":253},[203,1275,1276],{"class":217}," some ",[203,1278,260],{"class":213},[203,1280,218],{"class":217},[203,1282,180],{"class":213},[203,1284,1285],{"class":267},"mkOption",[203,1287,1288],{"class":217},"(DatumUtils",[203,1290,180],{"class":213},[203,1292,268],{"class":267},[203,1294,271],{"class":217},[203,1296,275],{"class":274},[203,1298,851],{"class":217},[203,1300,1301,1303,1306,1308,1310,1312,1314],{"class":205,"line":409},[203,1302,254],{"class":253},[203,1304,1305],{"class":217}," none ",[203,1307,260],{"class":213},[203,1309,218],{"class":217},[203,1311,180],{"class":213},[203,1313,1285],{"class":267},[203,1315,824],{"class":217},[203,1317,1318],{"class":205,"line":439},[203,1319,240],{"emptyLinePlaceholder":239},[203,1321,1322],{"class":205,"line":464},[203,1323,1324],{"class":246},"\u002F\u002F Output reference: Constr(0, [Bytes(txHash), Int(index)])\n",[203,1326,1327,1329,1332,1334,1336,1338,1341,1343,1346,1349,1351,1353,1356,1358,1360,1363,1365,1368,1370],{"class":205,"line":827},[203,1328,254],{"class":253},[203,1330,1331],{"class":217}," outRef ",[203,1333,260],{"class":213},[203,1335,218],{"class":217},[203,1337,180],{"class":213},[203,1339,1340],{"class":267},"mkOutputRef",[203,1342,271],{"class":217},[203,1344,1345],{"class":213},"{",[203,1347,1348],{"class":623}," txHash",[203,1350,564],{"class":213},[203,1352,227],{"class":213},[203,1354,1355],{"class":230},"abc123...",[203,1357,300],{"class":213},[203,1359,330],{"class":213},[203,1361,1362],{"class":623}," index",[203,1364,564],{"class":213},[203,1366,1367],{"class":274}," 0",[203,1369,221],{"class":213},[203,1371,278],{"class":217},[203,1373,1374],{"class":205,"line":854},[203,1375,240],{"emptyLinePlaceholder":239},[203,1377,1378],{"class":205,"line":883},[203,1379,1380],{"class":246},"\u002F\u002F Address \u003C-> PlutusData\n",[203,1382,1383,1385,1388,1390,1392,1394,1397,1399,1401,1404,1406],{"class":205,"line":888},[203,1384,254],{"class":253},[203,1386,1387],{"class":217}," addrDatum ",[203,1389,260],{"class":213},[203,1391,218],{"class":217},[203,1393,180],{"class":213},[203,1395,1396],{"class":267},"mkAddress",[203,1398,271],{"class":217},[203,1400,300],{"class":213},[203,1402,1403],{"class":230},"addr_test1...",[203,1405,300],{"class":213},[203,1407,278],{"class":217},[203,1409,1410,1412,1415,1417,1419,1421,1424,1427,1429,1431,1433],{"class":205,"line":910},[203,1411,254],{"class":253},[203,1413,1414],{"class":217}," bech32 ",[203,1416,260],{"class":213},[203,1418,218],{"class":217},[203,1420,180],{"class":213},[203,1422,1423],{"class":267},"parseAddress",[203,1425,1426],{"class":217},"(addrDatum",[203,1428,330],{"class":213},[203,1430,1096],{"class":217},[203,1432,180],{"class":213},[203,1434,1435],{"class":217},"PREPROD)\n",[469,1437,1439],{"id":1438},"nft-metadata-datum","NFT metadata datum",[166,1441,1442],{},"Build a CIP-style metadata datum by hex-encoding every key and value.",[194,1444,1446],{"className":196,"code":1445,"language":198,"meta":199,"style":199},"import { DatumUtils, ParserUtils } from '@hydra-sdk\u002Fcore'\n\nconst createNFTDatum = (name: string, image: string, attributes: Record\u003Cstring, string>) => {\n  const attributeEntries = Object.entries(attributes).map(([key, value]) => [\n    DatumUtils.mkBytes(ParserUtils.stringToHex(key)),\n    DatumUtils.mkBytes(ParserUtils.stringToHex(value))\n  ])\n\n  return DatumUtils.mkMap([\n    [DatumUtils.mkBytes(ParserUtils.stringToHex(\"name\")), \n     DatumUtils.mkBytes(ParserUtils.stringToHex(name))],\n    [DatumUtils.mkBytes(ParserUtils.stringToHex(\"image\")), \n     DatumUtils.mkBytes(ParserUtils.stringToHex(image))],\n    [DatumUtils.mkBytes(ParserUtils.stringToHex(\"attributes\")), \n     DatumUtils.mkMap(attributeEntries)]\n  ])\n}\n\n\u002F\u002F Usage\nconst nftDatum = createNFTDatum(\n  \"CryptoPunk #1234\",\n  \"ipfs:\u002F\u002FQmYourHashHere\",\n  { \"type\": \"Alien\", \"accessory\": \"3D Glasses\" }\n)\n",[170,1447,1448,1470,1474,1528,1576,1604,1627,1632,1636,1648,1683,1709,1742,1766,1798,1814,1818,1822,1826,1830,1844,1856,1867,1910],{"__ignoreMap":199},[203,1449,1450,1452,1454,1456,1458,1460,1462,1464,1466,1468],{"class":205,"line":206},[203,1451,210],{"class":209},[203,1453,214],{"class":213},[203,1455,218],{"class":217},[203,1457,330],{"class":213},[203,1459,507],{"class":217},[203,1461,221],{"class":213},[203,1463,224],{"class":209},[203,1465,227],{"class":213},[203,1467,107],{"class":230},[203,1469,233],{"class":213},[203,1471,1472],{"class":205,"line":236},[203,1473,240],{"emptyLinePlaceholder":239},[203,1475,1476,1478,1481,1483,1485,1488,1490,1492,1494,1497,1499,1501,1503,1506,1508,1511,1514,1517,1519,1521,1524,1526],{"class":205,"line":243},[203,1477,254],{"class":253},[203,1479,1480],{"class":217}," createNFTDatum ",[203,1482,260],{"class":213},[203,1484,557],{"class":213},[203,1486,1487],{"class":560},"name",[203,1489,564],{"class":213},[203,1491,568],{"class":567},[203,1493,330],{"class":213},[203,1495,1496],{"class":560}," image",[203,1498,564],{"class":213},[203,1500,568],{"class":567},[203,1502,330],{"class":213},[203,1504,1505],{"class":560}," attributes",[203,1507,564],{"class":213},[203,1509,1510],{"class":567}," Record",[203,1512,1513],{"class":213},"\u003C",[203,1515,1516],{"class":567},"string",[203,1518,330],{"class":213},[203,1520,568],{"class":567},[203,1522,1523],{"class":213},">)",[203,1525,600],{"class":253},[203,1527,603],{"class":213},[203,1529,1530,1532,1535,1537,1540,1542,1545,1547,1550,1552,1554,1557,1559,1561,1563,1565,1568,1571,1573],{"class":205,"line":250},[203,1531,608],{"class":253},[203,1533,1534],{"class":217}," attributeEntries",[203,1536,614],{"class":213},[203,1538,1539],{"class":217}," Object",[203,1541,180],{"class":213},[203,1543,1544],{"class":267},"entries",[203,1546,271],{"class":623},[203,1548,1549],{"class":217},"attributes",[203,1551,428],{"class":623},[203,1553,180],{"class":213},[203,1555,1556],{"class":267},"map",[203,1558,271],{"class":623},[203,1560,1178],{"class":213},[203,1562,561],{"class":560},[203,1564,330],{"class":213},[203,1566,1567],{"class":560}," value",[203,1569,1570],{"class":213},"])",[203,1572,600],{"class":253},[203,1574,1575],{"class":623}," [\n",[203,1577,1578,1581,1583,1585,1587,1590,1592,1595,1597,1599,1602],{"class":205,"line":281},[203,1579,1580],{"class":217},"    DatumUtils",[203,1582,180],{"class":213},[203,1584,295],{"class":267},[203,1586,271],{"class":623},[203,1588,1589],{"class":217},"ParserUtils",[203,1591,180],{"class":213},[203,1593,1594],{"class":267},"stringToHex",[203,1596,271],{"class":623},[203,1598,561],{"class":217},[203,1600,1601],{"class":623},"))",[203,1603,436],{"class":213},[203,1605,1606,1608,1610,1612,1614,1616,1618,1620,1622,1625],{"class":205,"line":310},[203,1607,1580],{"class":217},[203,1609,180],{"class":213},[203,1611,295],{"class":267},[203,1613,271],{"class":623},[203,1615,1589],{"class":217},[203,1617,180],{"class":213},[203,1619,1594],{"class":267},[203,1621,271],{"class":623},[203,1623,1624],{"class":217},"value",[203,1626,851],{"class":623},[203,1628,1629],{"class":205,"line":336},[203,1630,1631],{"class":623},"  ])\n",[203,1633,1634],{"class":205,"line":341},[203,1635,240],{"emptyLinePlaceholder":239},[203,1637,1638,1640,1642,1644,1646],{"class":205,"line":347},[203,1639,961],{"class":209},[203,1641,218],{"class":217},[203,1643,180],{"class":213},[203,1645,403],{"class":267},[203,1647,406],{"class":623},[203,1649,1650,1653,1655,1657,1659,1661,1663,1665,1667,1669,1672,1674,1676,1678,1680],{"class":205,"line":378},[203,1651,1652],{"class":623},"    [",[203,1654,191],{"class":217},[203,1656,180],{"class":213},[203,1658,295],{"class":267},[203,1660,271],{"class":623},[203,1662,1589],{"class":217},[203,1664,180],{"class":213},[203,1666,1594],{"class":267},[203,1668,271],{"class":623},[203,1670,1671],{"class":213},"\"",[203,1673,1487],{"class":230},[203,1675,1671],{"class":213},[203,1677,1601],{"class":623},[203,1679,330],{"class":213},[203,1681,1682],{"class":623}," \n",[203,1684,1685,1688,1690,1692,1694,1696,1698,1700,1702,1704,1707],{"class":205,"line":383},[203,1686,1687],{"class":217},"     DatumUtils",[203,1689,180],{"class":213},[203,1691,295],{"class":267},[203,1693,271],{"class":623},[203,1695,1589],{"class":217},[203,1697,180],{"class":213},[203,1699,1594],{"class":267},[203,1701,271],{"class":623},[203,1703,1487],{"class":217},[203,1705,1706],{"class":623},"))]",[203,1708,436],{"class":213},[203,1710,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729,1731,1734,1736,1738,1740],{"class":205,"line":389},[203,1712,1652],{"class":623},[203,1714,191],{"class":217},[203,1716,180],{"class":213},[203,1718,295],{"class":267},[203,1720,271],{"class":623},[203,1722,1589],{"class":217},[203,1724,180],{"class":213},[203,1726,1594],{"class":267},[203,1728,271],{"class":623},[203,1730,1671],{"class":213},[203,1732,1733],{"class":230},"image",[203,1735,1671],{"class":213},[203,1737,1601],{"class":623},[203,1739,330],{"class":213},[203,1741,1682],{"class":623},[203,1743,1744,1746,1748,1750,1752,1754,1756,1758,1760,1762,1764],{"class":205,"line":409},[203,1745,1687],{"class":217},[203,1747,180],{"class":213},[203,1749,295],{"class":267},[203,1751,271],{"class":623},[203,1753,1589],{"class":217},[203,1755,180],{"class":213},[203,1757,1594],{"class":267},[203,1759,271],{"class":623},[203,1761,1733],{"class":217},[203,1763,1706],{"class":623},[203,1765,436],{"class":213},[203,1767,1768,1770,1772,1774,1776,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796],{"class":205,"line":439},[203,1769,1652],{"class":623},[203,1771,191],{"class":217},[203,1773,180],{"class":213},[203,1775,295],{"class":267},[203,1777,271],{"class":623},[203,1779,1589],{"class":217},[203,1781,180],{"class":213},[203,1783,1594],{"class":267},[203,1785,271],{"class":623},[203,1787,1671],{"class":213},[203,1789,1549],{"class":230},[203,1791,1671],{"class":213},[203,1793,1601],{"class":623},[203,1795,330],{"class":213},[203,1797,1682],{"class":623},[203,1799,1800,1802,1804,1806,1808,1811],{"class":205,"line":464},[203,1801,1687],{"class":217},[203,1803,180],{"class":213},[203,1805,403],{"class":267},[203,1807,271],{"class":623},[203,1809,1810],{"class":217},"attributeEntries",[203,1812,1813],{"class":623},")]\n",[203,1815,1816],{"class":205,"line":827},[203,1817,1631],{"class":623},[203,1819,1820],{"class":205,"line":854},[203,1821,990],{"class":213},[203,1823,1824],{"class":205,"line":883},[203,1825,240],{"emptyLinePlaceholder":239},[203,1827,1828],{"class":205,"line":888},[203,1829,1001],{"class":246},[203,1831,1832,1834,1837,1839,1842],{"class":205,"line":910},[203,1833,254],{"class":253},[203,1835,1836],{"class":217}," nftDatum ",[203,1838,260],{"class":213},[203,1840,1841],{"class":267}," createNFTDatum",[203,1843,1017],{"class":217},[203,1845,1846,1849,1852,1854],{"class":205,"line":927},[203,1847,1848],{"class":213},"  \"",[203,1850,1851],{"class":230},"CryptoPunk #1234",[203,1853,1671],{"class":213},[203,1855,436],{"class":213},[203,1857,1858,1860,1863,1865],{"class":205,"line":953},[203,1859,1848],{"class":213},[203,1861,1862],{"class":230},"ipfs:\u002F\u002FQmYourHashHere",[203,1864,1671],{"class":213},[203,1866,436],{"class":213},[203,1868,1869,1872,1875,1878,1880,1882,1884,1887,1889,1891,1893,1896,1898,1900,1902,1905,1907],{"class":205,"line":958},[203,1870,1871],{"class":213},"  {",[203,1873,1874],{"class":213}," \"",[203,1876,1877],{"class":623},"type",[203,1879,1671],{"class":213},[203,1881,564],{"class":213},[203,1883,1874],{"class":213},[203,1885,1886],{"class":230},"Alien",[203,1888,1671],{"class":213},[203,1890,330],{"class":213},[203,1892,1874],{"class":213},[203,1894,1895],{"class":623},"accessory",[203,1897,1671],{"class":213},[203,1899,564],{"class":213},[203,1901,1874],{"class":213},[203,1903,1904],{"class":230},"3D Glasses",[203,1906,1671],{"class":213},[203,1908,1909],{"class":213}," }\n",[203,1911,1912],{"class":205,"line":987},[203,1913,278],{"class":217},[182,1915,1917],{"id":1916},"redeemers","Redeemers",[166,1919,1920,1921,1924,1925,180],{},"Wrap ",[170,1922,1923],{},"PlutusData"," into a Redeemer with ",[170,1926,1927],{},"RedeemerUtils",[477,1929,1930],{},[166,1931,1932],{},"New in v1.4.0.",[194,1934,1936],{"className":196,"code":1935,"language":198,"meta":199,"style":199},"import { RedeemerUtils, DatumUtils } from '@hydra-sdk\u002Fcore'\n\n\u002F\u002F Wrap PlutusData into a Redeemer (tag defaults to 'spend', index to 0)\nconst data = DatumUtils.mkConstr(1, [])\nconst redeemer = RedeemerUtils.mkRedeemer(data, { tag: 'spend', index: 0 })\n\n\u002F\u002F Tag-preset helpers\nconst spendRedeemer = RedeemerUtils.mkSpendRedeemer(data)\nconst mintRedeemer = RedeemerUtils.mkMintRedeemer(data)\n\n\u002F\u002F The \"no argument\" Unit redeemer: Constr(0, [])\nconst unitRedeemer = RedeemerUtils.mkUnitRedeemer()\n\n\u002F\u002F Execution units (placeholder budget — evaluate scripts for production)\nconst exUnits = RedeemerUtils.mkExUnits(RedeemerUtils.DEFAULT_EX_UNITS)\n",[170,1937,1938,1961,1965,1970,1994,2041,2045,2050,2069,2087,2091,2096,2114,2118,2123],{"__ignoreMap":199},[203,1939,1940,1942,1944,1947,1949,1951,1953,1955,1957,1959],{"class":205,"line":206},[203,1941,210],{"class":209},[203,1943,214],{"class":213},[203,1945,1946],{"class":217}," RedeemerUtils",[203,1948,330],{"class":213},[203,1950,218],{"class":217},[203,1952,221],{"class":213},[203,1954,224],{"class":209},[203,1956,227],{"class":213},[203,1958,107],{"class":230},[203,1960,233],{"class":213},[203,1962,1963],{"class":205,"line":236},[203,1964,240],{"emptyLinePlaceholder":239},[203,1966,1967],{"class":205,"line":243},[203,1968,1969],{"class":246},"\u002F\u002F Wrap PlutusData into a Redeemer (tag defaults to 'spend', index to 0)\n",[203,1971,1972,1974,1977,1979,1981,1983,1985,1987,1989,1991],{"class":205,"line":250},[203,1973,254],{"class":253},[203,1975,1976],{"class":217}," data ",[203,1978,260],{"class":213},[203,1980,218],{"class":217},[203,1982,180],{"class":213},[203,1984,361],{"class":267},[203,1986,271],{"class":217},[203,1988,1142],{"class":274},[203,1990,330],{"class":213},[203,1992,1993],{"class":217}," [])\n",[203,1995,1996,1998,2001,2003,2005,2007,2010,2013,2015,2017,2020,2022,2024,2027,2029,2031,2033,2035,2037,2039],{"class":205,"line":281},[203,1997,254],{"class":253},[203,1999,2000],{"class":217}," redeemer ",[203,2002,260],{"class":213},[203,2004,1946],{"class":217},[203,2006,180],{"class":213},[203,2008,2009],{"class":267},"mkRedeemer",[203,2011,2012],{"class":217},"(data",[203,2014,330],{"class":213},[203,2016,214],{"class":213},[203,2018,2019],{"class":623}," tag",[203,2021,564],{"class":213},[203,2023,227],{"class":213},[203,2025,2026],{"class":230},"spend",[203,2028,300],{"class":213},[203,2030,330],{"class":213},[203,2032,1362],{"class":623},[203,2034,564],{"class":213},[203,2036,1367],{"class":274},[203,2038,221],{"class":213},[203,2040,278],{"class":217},[203,2042,2043],{"class":205,"line":310},[203,2044,240],{"emptyLinePlaceholder":239},[203,2046,2047],{"class":205,"line":336},[203,2048,2049],{"class":246},"\u002F\u002F Tag-preset helpers\n",[203,2051,2052,2054,2057,2059,2061,2063,2066],{"class":205,"line":341},[203,2053,254],{"class":253},[203,2055,2056],{"class":217}," spendRedeemer ",[203,2058,260],{"class":213},[203,2060,1946],{"class":217},[203,2062,180],{"class":213},[203,2064,2065],{"class":267},"mkSpendRedeemer",[203,2067,2068],{"class":217},"(data)\n",[203,2070,2071,2073,2076,2078,2080,2082,2085],{"class":205,"line":347},[203,2072,254],{"class":253},[203,2074,2075],{"class":217}," mintRedeemer ",[203,2077,260],{"class":213},[203,2079,1946],{"class":217},[203,2081,180],{"class":213},[203,2083,2084],{"class":267},"mkMintRedeemer",[203,2086,2068],{"class":217},[203,2088,2089],{"class":205,"line":378},[203,2090,240],{"emptyLinePlaceholder":239},[203,2092,2093],{"class":205,"line":383},[203,2094,2095],{"class":246},"\u002F\u002F The \"no argument\" Unit redeemer: Constr(0, [])\n",[203,2097,2098,2100,2103,2105,2107,2109,2112],{"class":205,"line":389},[203,2099,254],{"class":253},[203,2101,2102],{"class":217}," unitRedeemer ",[203,2104,260],{"class":213},[203,2106,1946],{"class":217},[203,2108,180],{"class":213},[203,2110,2111],{"class":267},"mkUnitRedeemer",[203,2113,824],{"class":217},[203,2115,2116],{"class":205,"line":409},[203,2117,240],{"emptyLinePlaceholder":239},[203,2119,2120],{"class":205,"line":439},[203,2121,2122],{"class":246},"\u002F\u002F Execution units (placeholder budget — evaluate scripts for production)\n",[203,2124,2125,2127,2130,2132,2134,2136,2139,2142,2144],{"class":205,"line":464},[203,2126,254],{"class":253},[203,2128,2129],{"class":217}," exUnits ",[203,2131,260],{"class":213},[203,2133,1946],{"class":217},[203,2135,180],{"class":213},[203,2137,2138],{"class":267},"mkExUnits",[203,2140,2141],{"class":217},"(RedeemerUtils",[203,2143,180],{"class":213},[203,2145,2146],{"class":217},"DEFAULT_EX_UNITS)\n",[182,2148,2150],{"id":2149},"time-and-slots","Time and slots",[166,2152,2153,2154,2157,2158,180],{},"Convert between Unix time and slots for transaction validity ranges and deadlines with ",[170,2155,2156],{},"TimeUtils"," and ",[170,2159,2160],{},"SLOT_CONFIG_NETWORK",[194,2162,2164],{"className":196,"code":2163,"language":198,"meta":199,"style":199},"import { TimeUtils, SLOT_CONFIG_NETWORK } from '@hydra-sdk\u002Fcore'\n\n\u002F\u002F Convert Unix timestamp to slot\nconst currentSlot = TimeUtils.unixTimeToEnclosingSlot(\n  Date.now(), \n  SLOT_CONFIG_NETWORK.PREPROD\n)\n\n\u002F\u002F Deadline calculation (24 hours from now)\nconst deadline = TimeUtils.unixTimeToEnclosingSlot(\n  Date.now() + (24 * 60 * 60 * 1000),\n  SLOT_CONFIG_NETWORK.PREPROD\n)\n\n\u002F\u002F Convert slot back to Unix timestamp\nconst readableTime = TimeUtils.slotToBeginUnixTime(\n  currentSlot, \n  SLOT_CONFIG_NETWORK.PREPROD\n)\n\nconsole.log('Current slot:', currentSlot)\nconsole.log('Deadline slot:', deadline)\nconsole.log('Readable time:', new Date(readableTime))\n",[170,2165,2166,2190,2194,2199,2217,2234,2244,2248,2252,2257,2274,2312,2320,2324,2328,2333,2351,2360,2368,2372,2376,2400,2422],{"__ignoreMap":199},[203,2167,2168,2170,2172,2175,2177,2180,2182,2184,2186,2188],{"class":205,"line":206},[203,2169,210],{"class":209},[203,2171,214],{"class":213},[203,2173,2174],{"class":217}," TimeUtils",[203,2176,330],{"class":213},[203,2178,2179],{"class":217}," SLOT_CONFIG_NETWORK",[203,2181,221],{"class":213},[203,2183,224],{"class":209},[203,2185,227],{"class":213},[203,2187,107],{"class":230},[203,2189,233],{"class":213},[203,2191,2192],{"class":205,"line":236},[203,2193,240],{"emptyLinePlaceholder":239},[203,2195,2196],{"class":205,"line":243},[203,2197,2198],{"class":246},"\u002F\u002F Convert Unix timestamp to slot\n",[203,2200,2201,2203,2206,2208,2210,2212,2215],{"class":205,"line":250},[203,2202,254],{"class":253},[203,2204,2205],{"class":217}," currentSlot ",[203,2207,260],{"class":213},[203,2209,2174],{"class":217},[203,2211,180],{"class":213},[203,2213,2214],{"class":267},"unixTimeToEnclosingSlot",[203,2216,1017],{"class":217},[203,2218,2219,2222,2224,2227,2230,2232],{"class":205,"line":281},[203,2220,2221],{"class":217},"  Date",[203,2223,180],{"class":213},[203,2225,2226],{"class":267},"now",[203,2228,2229],{"class":217},"()",[203,2231,330],{"class":213},[203,2233,1682],{"class":217},[203,2235,2236,2239,2241],{"class":205,"line":310},[203,2237,2238],{"class":217},"  SLOT_CONFIG_NETWORK",[203,2240,180],{"class":213},[203,2242,2243],{"class":217},"PREPROD\n",[203,2245,2246],{"class":205,"line":336},[203,2247,278],{"class":217},[203,2249,2250],{"class":205,"line":341},[203,2251,240],{"emptyLinePlaceholder":239},[203,2253,2254],{"class":205,"line":347},[203,2255,2256],{"class":246},"\u002F\u002F Deadline calculation (24 hours from now)\n",[203,2258,2259,2261,2264,2266,2268,2270,2272],{"class":205,"line":378},[203,2260,254],{"class":253},[203,2262,2263],{"class":217}," deadline ",[203,2265,260],{"class":213},[203,2267,2174],{"class":217},[203,2269,180],{"class":213},[203,2271,2214],{"class":267},[203,2273,1017],{"class":217},[203,2275,2276,2278,2280,2282,2285,2288,2290,2293,2296,2299,2301,2303,2305,2308,2310],{"class":205,"line":383},[203,2277,2221],{"class":217},[203,2279,180],{"class":213},[203,2281,2226],{"class":267},[203,2283,2284],{"class":217},"() ",[203,2286,2287],{"class":213},"+",[203,2289,557],{"class":217},[203,2291,2292],{"class":274},"24",[203,2294,2295],{"class":213}," *",[203,2297,2298],{"class":274}," 60",[203,2300,2295],{"class":213},[203,2302,2298],{"class":274},[203,2304,2295],{"class":213},[203,2306,2307],{"class":274}," 1000",[203,2309,428],{"class":217},[203,2311,436],{"class":213},[203,2313,2314,2316,2318],{"class":205,"line":389},[203,2315,2238],{"class":217},[203,2317,180],{"class":213},[203,2319,2243],{"class":217},[203,2321,2322],{"class":205,"line":409},[203,2323,278],{"class":217},[203,2325,2326],{"class":205,"line":439},[203,2327,240],{"emptyLinePlaceholder":239},[203,2329,2330],{"class":205,"line":464},[203,2331,2332],{"class":246},"\u002F\u002F Convert slot back to Unix timestamp\n",[203,2334,2335,2337,2340,2342,2344,2346,2349],{"class":205,"line":827},[203,2336,254],{"class":253},[203,2338,2339],{"class":217}," readableTime ",[203,2341,260],{"class":213},[203,2343,2174],{"class":217},[203,2345,180],{"class":213},[203,2347,2348],{"class":267},"slotToBeginUnixTime",[203,2350,1017],{"class":217},[203,2352,2353,2356,2358],{"class":205,"line":854},[203,2354,2355],{"class":217},"  currentSlot",[203,2357,330],{"class":213},[203,2359,1682],{"class":217},[203,2361,2362,2364,2366],{"class":205,"line":883},[203,2363,2238],{"class":217},[203,2365,180],{"class":213},[203,2367,2243],{"class":217},[203,2369,2370],{"class":205,"line":888},[203,2371,278],{"class":217},[203,2373,2374],{"class":205,"line":910},[203,2375,240],{"emptyLinePlaceholder":239},[203,2377,2378,2381,2383,2386,2388,2390,2393,2395,2397],{"class":205,"line":927},[203,2379,2380],{"class":217},"console",[203,2382,180],{"class":213},[203,2384,2385],{"class":267},"log",[203,2387,271],{"class":217},[203,2389,300],{"class":213},[203,2391,2392],{"class":230},"Current slot:",[203,2394,300],{"class":213},[203,2396,330],{"class":213},[203,2398,2399],{"class":217}," currentSlot)\n",[203,2401,2402,2404,2406,2408,2410,2412,2415,2417,2419],{"class":205,"line":953},[203,2403,2380],{"class":217},[203,2405,180],{"class":213},[203,2407,2385],{"class":267},[203,2409,271],{"class":217},[203,2411,300],{"class":213},[203,2413,2414],{"class":230},"Deadline slot:",[203,2416,300],{"class":213},[203,2418,330],{"class":213},[203,2420,2421],{"class":217}," deadline)\n",[203,2423,2424,2426,2428,2430,2432,2434,2437,2439,2441,2444,2447],{"class":205,"line":958},[203,2425,2380],{"class":217},[203,2427,180],{"class":213},[203,2429,2385],{"class":267},[203,2431,271],{"class":217},[203,2433,300],{"class":213},[203,2435,2436],{"class":230},"Readable time:",[203,2438,300],{"class":213},[203,2440,330],{"class":213},[203,2442,2443],{"class":213}," new",[203,2445,2446],{"class":267}," Date",[203,2448,2449],{"class":217},"(readableTime))\n",[469,2451,2453],{"id":2452},"vesting-schedule-datum","Vesting schedule datum",[166,2455,2456,2457,2459,2460,2462],{},"Combine ",[170,2458,2156],{}," with ",[170,2461,191],{}," to encode a start\u002Fend slot window.",[194,2464,2466],{"className":196,"code":2465,"language":198,"meta":199,"style":199},"import { TimeUtils, DatumUtils, SLOT_CONFIG_NETWORK } from '@hydra-sdk\u002Fcore'\n\nconst createVestingDatum = (\n  beneficiary: string,\n  totalAmount: bigint,\n  vestingMonths: number\n) => {\n  const slotConfig = SLOT_CONFIG_NETWORK.PREPROD\n  const startTime = Date.now() + (30 * 24 * 60 * 60 * 1000) \u002F\u002F Start in 30 days\n  const endTime = startTime + (vestingMonths * 30 * 24 * 60 * 60 * 1000)\n  \n  const startSlot = TimeUtils.unixTimeToEnclosingSlot(startTime, slotConfig)\n  const endSlot = TimeUtils.unixTimeToEnclosingSlot(endTime, slotConfig)\n  \n  return DatumUtils.mkConstr(0, [\n    DatumUtils.mkBytes(beneficiary),\n    DatumUtils.mkInt(totalAmount),\n    DatumUtils.mkInt(startSlot),\n    DatumUtils.mkInt(endSlot)\n  ])\n}\n",[170,2467,2468,2494,2498,2510,2521,2533,2543,2553,2568,2614,2656,2661,2687,2713,2717,2735,2752,2769,2786,2801,2805],{"__ignoreMap":199},[203,2469,2470,2472,2474,2476,2478,2480,2482,2484,2486,2488,2490,2492],{"class":205,"line":206},[203,2471,210],{"class":209},[203,2473,214],{"class":213},[203,2475,2174],{"class":217},[203,2477,330],{"class":213},[203,2479,218],{"class":217},[203,2481,330],{"class":213},[203,2483,2179],{"class":217},[203,2485,221],{"class":213},[203,2487,224],{"class":209},[203,2489,227],{"class":213},[203,2491,107],{"class":230},[203,2493,233],{"class":213},[203,2495,2496],{"class":205,"line":236},[203,2497,240],{"emptyLinePlaceholder":239},[203,2499,2500,2502,2505,2507],{"class":205,"line":243},[203,2501,254],{"class":253},[203,2503,2504],{"class":217}," createVestingDatum ",[203,2506,260],{"class":213},[203,2508,2509],{"class":217}," (\n",[203,2511,2512,2515,2517,2519],{"class":205,"line":250},[203,2513,2514],{"class":560},"  beneficiary",[203,2516,564],{"class":213},[203,2518,568],{"class":567},[203,2520,436],{"class":213},[203,2522,2523,2526,2528,2531],{"class":205,"line":281},[203,2524,2525],{"class":560},"  totalAmount",[203,2527,564],{"class":213},[203,2529,2530],{"class":567}," bigint",[203,2532,436],{"class":213},[203,2534,2535,2538,2540],{"class":205,"line":310},[203,2536,2537],{"class":560},"  vestingMonths",[203,2539,564],{"class":213},[203,2541,2542],{"class":567}," number\n",[203,2544,2545,2548,2551],{"class":205,"line":336},[203,2546,2547],{"class":217},") ",[203,2549,2550],{"class":253},"=>",[203,2552,603],{"class":213},[203,2554,2555,2557,2560,2562,2564,2566],{"class":205,"line":341},[203,2556,608],{"class":253},[203,2558,2559],{"class":217}," slotConfig",[203,2561,614],{"class":213},[203,2563,2179],{"class":217},[203,2565,180],{"class":213},[203,2567,2243],{"class":217},[203,2569,2570,2572,2575,2577,2579,2581,2583,2585,2587,2589,2592,2594,2597,2599,2601,2603,2605,2607,2609,2611],{"class":205,"line":347},[203,2571,608],{"class":253},[203,2573,2574],{"class":217}," startTime",[203,2576,614],{"class":213},[203,2578,2446],{"class":217},[203,2580,180],{"class":213},[203,2582,2226],{"class":267},[203,2584,2284],{"class":623},[203,2586,2287],{"class":213},[203,2588,557],{"class":623},[203,2590,2591],{"class":274},"30",[203,2593,2295],{"class":213},[203,2595,2596],{"class":274}," 24",[203,2598,2295],{"class":213},[203,2600,2298],{"class":274},[203,2602,2295],{"class":213},[203,2604,2298],{"class":274},[203,2606,2295],{"class":213},[203,2608,2307],{"class":274},[203,2610,2547],{"class":623},[203,2612,2613],{"class":246},"\u002F\u002F Start in 30 days\n",[203,2615,2616,2618,2621,2623,2625,2628,2630,2633,2635,2638,2640,2642,2644,2646,2648,2650,2652,2654],{"class":205,"line":378},[203,2617,608],{"class":253},[203,2619,2620],{"class":217}," endTime",[203,2622,614],{"class":213},[203,2624,2574],{"class":217},[203,2626,2627],{"class":213}," +",[203,2629,557],{"class":623},[203,2631,2632],{"class":217},"vestingMonths",[203,2634,2295],{"class":213},[203,2636,2637],{"class":274}," 30",[203,2639,2295],{"class":213},[203,2641,2596],{"class":274},[203,2643,2295],{"class":213},[203,2645,2298],{"class":274},[203,2647,2295],{"class":213},[203,2649,2298],{"class":274},[203,2651,2295],{"class":213},[203,2653,2307],{"class":274},[203,2655,278],{"class":623},[203,2657,2658],{"class":205,"line":383},[203,2659,2660],{"class":623},"  \n",[203,2662,2663,2665,2668,2670,2672,2674,2676,2678,2681,2683,2685],{"class":205,"line":389},[203,2664,608],{"class":253},[203,2666,2667],{"class":217}," startSlot",[203,2669,614],{"class":213},[203,2671,2174],{"class":217},[203,2673,180],{"class":213},[203,2675,2214],{"class":267},[203,2677,271],{"class":623},[203,2679,2680],{"class":217},"startTime",[203,2682,330],{"class":213},[203,2684,2559],{"class":217},[203,2686,278],{"class":623},[203,2688,2689,2691,2694,2696,2698,2700,2702,2704,2707,2709,2711],{"class":205,"line":409},[203,2690,608],{"class":253},[203,2692,2693],{"class":217}," endSlot",[203,2695,614],{"class":213},[203,2697,2174],{"class":217},[203,2699,180],{"class":213},[203,2701,2214],{"class":267},[203,2703,271],{"class":623},[203,2705,2706],{"class":217},"endTime",[203,2708,330],{"class":213},[203,2710,2559],{"class":217},[203,2712,278],{"class":623},[203,2714,2715],{"class":205,"line":439},[203,2716,2660],{"class":623},[203,2718,2719,2721,2723,2725,2727,2729,2731,2733],{"class":205,"line":464},[203,2720,961],{"class":209},[203,2722,218],{"class":217},[203,2724,180],{"class":213},[203,2726,361],{"class":267},[203,2728,271],{"class":623},[203,2730,366],{"class":274},[203,2732,330],{"class":213},[203,2734,1575],{"class":623},[203,2736,2737,2739,2741,2743,2745,2748,2750],{"class":205,"line":827},[203,2738,1580],{"class":217},[203,2740,180],{"class":213},[203,2742,295],{"class":267},[203,2744,271],{"class":623},[203,2746,2747],{"class":217},"beneficiary",[203,2749,428],{"class":623},[203,2751,436],{"class":213},[203,2753,2754,2756,2758,2760,2762,2765,2767],{"class":205,"line":854},[203,2755,1580],{"class":217},[203,2757,180],{"class":213},[203,2759,268],{"class":267},[203,2761,271],{"class":623},[203,2763,2764],{"class":217},"totalAmount",[203,2766,428],{"class":623},[203,2768,436],{"class":213},[203,2770,2771,2773,2775,2777,2779,2782,2784],{"class":205,"line":883},[203,2772,1580],{"class":217},[203,2774,180],{"class":213},[203,2776,268],{"class":267},[203,2778,271],{"class":623},[203,2780,2781],{"class":217},"startSlot",[203,2783,428],{"class":623},[203,2785,436],{"class":213},[203,2787,2788,2790,2792,2794,2796,2799],{"class":205,"line":888},[203,2789,1580],{"class":217},[203,2791,180],{"class":213},[203,2793,268],{"class":267},[203,2795,271],{"class":623},[203,2797,2798],{"class":217},"endSlot",[203,2800,278],{"class":623},[203,2802,2803],{"class":205,"line":910},[203,2804,1631],{"class":623},[203,2806,2807],{"class":205,"line":927},[203,2808,990],{"class":213},[182,2810,2812],{"id":2811},"minting-policies","Minting policies",[166,2814,2815,2816,180],{},"Derive a native minting policy (and its policy ID) from a wallet address with ",[170,2817,2818],{},"PolicyUtils",[194,2820,2822],{"className":196,"code":2821,"language":198,"meta":199,"style":199},"import { PolicyUtils, ParserUtils, Serializer } from '@hydra-sdk\u002Fcore'\n\n\u002F\u002F Create policy from wallet address\nconst walletAddress = wallet.getAccount().baseAddressBech32\nconst scriptCborHex = PolicyUtils.buildMintingPolicyScriptFromAddress(walletAddress)\nconst policyId = PolicyUtils.policyIdFromNativeScript(scriptCborHex)\n\n\u002F\u002F Token name conversion\nconst assetNameHex = ParserUtils.stringToHex('MyToken')\nconst assetUnit = Serializer.serializeAssetUnit(policyId, assetNameHex)\n\nconsole.log('Policy ID:', policyId)\nconsole.log('Asset Unit:', assetUnit)\n",[170,2823,2824,2852,2856,2861,2885,2904,2923,2927,2932,2958,2982,2986,3008],{"__ignoreMap":199},[203,2825,2826,2828,2830,2833,2835,2837,2839,2842,2844,2846,2848,2850],{"class":205,"line":206},[203,2827,210],{"class":209},[203,2829,214],{"class":213},[203,2831,2832],{"class":217}," PolicyUtils",[203,2834,330],{"class":213},[203,2836,507],{"class":217},[203,2838,330],{"class":213},[203,2840,2841],{"class":217}," Serializer",[203,2843,221],{"class":213},[203,2845,224],{"class":209},[203,2847,227],{"class":213},[203,2849,107],{"class":230},[203,2851,233],{"class":213},[203,2853,2854],{"class":205,"line":236},[203,2855,240],{"emptyLinePlaceholder":239},[203,2857,2858],{"class":205,"line":243},[203,2859,2860],{"class":246},"\u002F\u002F Create policy from wallet address\n",[203,2862,2863,2865,2868,2870,2873,2875,2878,2880,2882],{"class":205,"line":250},[203,2864,254],{"class":253},[203,2866,2867],{"class":217}," walletAddress ",[203,2869,260],{"class":213},[203,2871,2872],{"class":217}," wallet",[203,2874,180],{"class":213},[203,2876,2877],{"class":267},"getAccount",[203,2879,2229],{"class":217},[203,2881,180],{"class":213},[203,2883,2884],{"class":217},"baseAddressBech32\n",[203,2886,2887,2889,2892,2894,2896,2898,2901],{"class":205,"line":281},[203,2888,254],{"class":253},[203,2890,2891],{"class":217}," scriptCborHex ",[203,2893,260],{"class":213},[203,2895,2832],{"class":217},[203,2897,180],{"class":213},[203,2899,2900],{"class":267},"buildMintingPolicyScriptFromAddress",[203,2902,2903],{"class":217},"(walletAddress)\n",[203,2905,2906,2908,2911,2913,2915,2917,2920],{"class":205,"line":310},[203,2907,254],{"class":253},[203,2909,2910],{"class":217}," policyId ",[203,2912,260],{"class":213},[203,2914,2832],{"class":217},[203,2916,180],{"class":213},[203,2918,2919],{"class":267},"policyIdFromNativeScript",[203,2921,2922],{"class":217},"(scriptCborHex)\n",[203,2924,2925],{"class":205,"line":336},[203,2926,240],{"emptyLinePlaceholder":239},[203,2928,2929],{"class":205,"line":341},[203,2930,2931],{"class":246},"\u002F\u002F Token name conversion\n",[203,2933,2934,2936,2939,2941,2943,2945,2947,2949,2951,2954,2956],{"class":205,"line":347},[203,2935,254],{"class":253},[203,2937,2938],{"class":217}," assetNameHex ",[203,2940,260],{"class":213},[203,2942,507],{"class":217},[203,2944,180],{"class":213},[203,2946,1594],{"class":267},[203,2948,271],{"class":217},[203,2950,300],{"class":213},[203,2952,2953],{"class":230},"MyToken",[203,2955,300],{"class":213},[203,2957,278],{"class":217},[203,2959,2960,2962,2965,2967,2969,2971,2974,2977,2979],{"class":205,"line":378},[203,2961,254],{"class":253},[203,2963,2964],{"class":217}," assetUnit ",[203,2966,260],{"class":213},[203,2968,2841],{"class":217},[203,2970,180],{"class":213},[203,2972,2973],{"class":267},"serializeAssetUnit",[203,2975,2976],{"class":217},"(policyId",[203,2978,330],{"class":213},[203,2980,2981],{"class":217}," assetNameHex)\n",[203,2983,2984],{"class":205,"line":383},[203,2985,240],{"emptyLinePlaceholder":239},[203,2987,2988,2990,2992,2994,2996,2998,3001,3003,3005],{"class":205,"line":389},[203,2989,2380],{"class":217},[203,2991,180],{"class":213},[203,2993,2385],{"class":267},[203,2995,271],{"class":217},[203,2997,300],{"class":213},[203,2999,3000],{"class":230},"Policy ID:",[203,3002,300],{"class":213},[203,3004,330],{"class":213},[203,3006,3007],{"class":217}," policyId)\n",[203,3009,3010,3012,3014,3016,3018,3020,3023,3025,3027],{"class":205,"line":409},[203,3011,2380],{"class":217},[203,3013,180],{"class":213},[203,3015,2385],{"class":267},[203,3017,271],{"class":217},[203,3019,300],{"class":213},[203,3021,3022],{"class":230},"Asset Unit:",[203,3024,300],{"class":213},[203,3026,330],{"class":213},[203,3028,3029],{"class":217}," assetUnit)\n",[182,3031,3033],{"id":3032},"data-conversion","Data conversion",[166,3035,3036],{},"Convert strings, bytes, and asset units, and read amounts back out of a transaction.",[194,3038,3040],{"className":196,"code":3039,"language":198,"meta":199,"style":199},"import { ParserUtils } from '@hydra-sdk\u002Fcore'\n\n\u002F\u002F String to hex for token names\nconst assetNameHex = ParserUtils.stringToHex('AniaToken')\n\n\u002F\u002F Bytes to hex round trip\nconst bytes = new Uint8Array([0xde, 0xad, 0xbe, 0xef])\nconst hex = ParserUtils.bytesToHex(bytes)\nconst backToBytes = ParserUtils.hexToBytes(hex)\nconsole.log('Round trip successful:', bytes.every((b, i) => b === backToBytes[i]))\n",[170,3041,3042,3060,3064,3069,3094,3098,3103,3139,3158,3177],{"__ignoreMap":199},[203,3043,3044,3046,3048,3050,3052,3054,3056,3058],{"class":205,"line":206},[203,3045,210],{"class":209},[203,3047,214],{"class":213},[203,3049,507],{"class":217},[203,3051,221],{"class":213},[203,3053,224],{"class":209},[203,3055,227],{"class":213},[203,3057,107],{"class":230},[203,3059,233],{"class":213},[203,3061,3062],{"class":205,"line":236},[203,3063,240],{"emptyLinePlaceholder":239},[203,3065,3066],{"class":205,"line":243},[203,3067,3068],{"class":246},"\u002F\u002F String to hex for token names\n",[203,3070,3071,3073,3075,3077,3079,3081,3083,3085,3087,3090,3092],{"class":205,"line":250},[203,3072,254],{"class":253},[203,3074,2938],{"class":217},[203,3076,260],{"class":213},[203,3078,507],{"class":217},[203,3080,180],{"class":213},[203,3082,1594],{"class":267},[203,3084,271],{"class":217},[203,3086,300],{"class":213},[203,3088,3089],{"class":230},"AniaToken",[203,3091,300],{"class":213},[203,3093,278],{"class":217},[203,3095,3096],{"class":205,"line":281},[203,3097,240],{"emptyLinePlaceholder":239},[203,3099,3100],{"class":205,"line":310},[203,3101,3102],{"class":246},"\u002F\u002F Bytes to hex round trip\n",[203,3104,3105,3107,3110,3112,3114,3117,3119,3122,3124,3127,3129,3132,3134,3137],{"class":205,"line":336},[203,3106,254],{"class":253},[203,3108,3109],{"class":217}," bytes ",[203,3111,260],{"class":213},[203,3113,2443],{"class":213},[203,3115,3116],{"class":267}," Uint8Array",[203,3118,1178],{"class":217},[203,3120,3121],{"class":274},"0xde",[203,3123,330],{"class":213},[203,3125,3126],{"class":274}," 0xad",[203,3128,330],{"class":213},[203,3130,3131],{"class":274}," 0xbe",[203,3133,330],{"class":213},[203,3135,3136],{"class":274}," 0xef",[203,3138,467],{"class":217},[203,3140,3141,3143,3146,3148,3150,3152,3155],{"class":205,"line":341},[203,3142,254],{"class":253},[203,3144,3145],{"class":217}," hex ",[203,3147,260],{"class":213},[203,3149,507],{"class":217},[203,3151,180],{"class":213},[203,3153,3154],{"class":267},"bytesToHex",[203,3156,3157],{"class":217},"(bytes)\n",[203,3159,3160,3162,3165,3167,3169,3171,3174],{"class":205,"line":347},[203,3161,254],{"class":253},[203,3163,3164],{"class":217}," backToBytes ",[203,3166,260],{"class":213},[203,3168,507],{"class":217},[203,3170,180],{"class":213},[203,3172,3173],{"class":267},"hexToBytes",[203,3175,3176],{"class":217},"(hex)\n",[203,3178,3179,3181,3183,3185,3187,3189,3192,3194,3196,3199,3201,3204,3206,3208,3211,3213,3216,3218,3220,3223,3226],{"class":205,"line":378},[203,3180,2380],{"class":217},[203,3182,180],{"class":213},[203,3184,2385],{"class":267},[203,3186,271],{"class":217},[203,3188,300],{"class":213},[203,3190,3191],{"class":230},"Round trip successful:",[203,3193,300],{"class":213},[203,3195,330],{"class":213},[203,3197,3198],{"class":217}," bytes",[203,3200,180],{"class":213},[203,3202,3203],{"class":267},"every",[203,3205,271],{"class":217},[203,3207,271],{"class":213},[203,3209,3210],{"class":560},"b",[203,3212,330],{"class":213},[203,3214,3215],{"class":560}," i",[203,3217,428],{"class":213},[203,3219,600],{"class":253},[203,3221,3222],{"class":217}," b ",[203,3224,3225],{"class":213},"===",[203,3227,3228],{"class":217}," backToBytes[i]))\n",[469,3230,3232],{"id":3231},"asset-unit-serialization","Asset unit serialization",[166,3234,3235,3236,3239,3240,3243],{},"Serialize a ",[170,3237,3238],{},"policyId"," + ",[170,3241,3242],{},"assetName"," into an asset unit, and deserialize it back.",[194,3245,3247],{"className":196,"code":3246,"language":198,"meta":199,"style":199},"import { ParserUtils, Serializer, Deserializer } from '@hydra-sdk\u002Fcore'\n\nconst processAssetUnit = (policyId: string, assetName: string) => {\n  \u002F\u002F Serialize asset unit\n  const assetNameHex = ParserUtils.stringToHex(assetName)\n  const assetUnit = Serializer.serializeAssetUnit(policyId, assetNameHex)\n  \n  \u002F\u002F Deserialize back\n  const { policyId: deserializedPolicy, assetName: deserializedName } = \n    Deserializer.deserializeAssetUnit(assetUnit)\n  \n  return {\n    original: { policyId, assetName },\n    serialized: assetUnit,\n    deserialized: { \n      policyId: deserializedPolicy, \n      assetName: ParserUtils.hexToString(deserializedName)\n    }\n  }\n}\n\nconst assetData = processAssetUnit('abc123...', 'MyToken')\n",[170,3248,3249,3276,3280,3312,3317,3338,3363,3367,3372,3401,3418,3422,3428,3446,3457,3468,3481,3502,3507,3512,3516,3520],{"__ignoreMap":199},[203,3250,3251,3253,3255,3257,3259,3261,3263,3266,3268,3270,3272,3274],{"class":205,"line":206},[203,3252,210],{"class":209},[203,3254,214],{"class":213},[203,3256,507],{"class":217},[203,3258,330],{"class":213},[203,3260,2841],{"class":217},[203,3262,330],{"class":213},[203,3264,3265],{"class":217}," Deserializer",[203,3267,221],{"class":213},[203,3269,224],{"class":209},[203,3271,227],{"class":213},[203,3273,107],{"class":230},[203,3275,233],{"class":213},[203,3277,3278],{"class":205,"line":236},[203,3279,240],{"emptyLinePlaceholder":239},[203,3281,3282,3284,3287,3289,3291,3293,3295,3297,3299,3302,3304,3306,3308,3310],{"class":205,"line":243},[203,3283,254],{"class":253},[203,3285,3286],{"class":217}," processAssetUnit ",[203,3288,260],{"class":213},[203,3290,557],{"class":213},[203,3292,3238],{"class":560},[203,3294,564],{"class":213},[203,3296,568],{"class":567},[203,3298,330],{"class":213},[203,3300,3301],{"class":560}," assetName",[203,3303,564],{"class":213},[203,3305,568],{"class":567},[203,3307,428],{"class":213},[203,3309,600],{"class":253},[203,3311,603],{"class":213},[203,3313,3314],{"class":205,"line":250},[203,3315,3316],{"class":246},"  \u002F\u002F Serialize asset unit\n",[203,3318,3319,3321,3324,3326,3328,3330,3332,3334,3336],{"class":205,"line":281},[203,3320,608],{"class":253},[203,3322,3323],{"class":217}," assetNameHex",[203,3325,614],{"class":213},[203,3327,507],{"class":217},[203,3329,180],{"class":213},[203,3331,1594],{"class":267},[203,3333,271],{"class":623},[203,3335,3242],{"class":217},[203,3337,278],{"class":623},[203,3339,3340,3342,3345,3347,3349,3351,3353,3355,3357,3359,3361],{"class":205,"line":310},[203,3341,608],{"class":253},[203,3343,3344],{"class":217}," assetUnit",[203,3346,614],{"class":213},[203,3348,2841],{"class":217},[203,3350,180],{"class":213},[203,3352,2973],{"class":267},[203,3354,271],{"class":623},[203,3356,3238],{"class":217},[203,3358,330],{"class":213},[203,3360,3323],{"class":217},[203,3362,278],{"class":623},[203,3364,3365],{"class":205,"line":336},[203,3366,2660],{"class":623},[203,3368,3369],{"class":205,"line":341},[203,3370,3371],{"class":246},"  \u002F\u002F Deserialize back\n",[203,3373,3374,3376,3378,3381,3383,3386,3388,3390,3392,3395,3397,3399],{"class":205,"line":347},[203,3375,608],{"class":253},[203,3377,214],{"class":213},[203,3379,3380],{"class":623}," policyId",[203,3382,564],{"class":213},[203,3384,3385],{"class":217}," deserializedPolicy",[203,3387,330],{"class":213},[203,3389,3301],{"class":623},[203,3391,564],{"class":213},[203,3393,3394],{"class":217}," deserializedName",[203,3396,221],{"class":213},[203,3398,614],{"class":213},[203,3400,1682],{"class":623},[203,3402,3403,3406,3408,3411,3413,3416],{"class":205,"line":378},[203,3404,3405],{"class":217},"    Deserializer",[203,3407,180],{"class":213},[203,3409,3410],{"class":267},"deserializeAssetUnit",[203,3412,271],{"class":623},[203,3414,3415],{"class":217},"assetUnit",[203,3417,278],{"class":623},[203,3419,3420],{"class":205,"line":383},[203,3421,2660],{"class":623},[203,3423,3424,3426],{"class":205,"line":389},[203,3425,961],{"class":209},[203,3427,603],{"class":213},[203,3429,3430,3433,3435,3437,3439,3441,3443],{"class":205,"line":409},[203,3431,3432],{"class":623},"    original",[203,3434,564],{"class":213},[203,3436,214],{"class":213},[203,3438,3380],{"class":217},[203,3440,330],{"class":213},[203,3442,3301],{"class":217},[203,3444,3445],{"class":213}," },\n",[203,3447,3448,3451,3453,3455],{"class":205,"line":439},[203,3449,3450],{"class":623},"    serialized",[203,3452,564],{"class":213},[203,3454,3344],{"class":217},[203,3456,436],{"class":213},[203,3458,3459,3462,3464,3466],{"class":205,"line":464},[203,3460,3461],{"class":623},"    deserialized",[203,3463,564],{"class":213},[203,3465,214],{"class":213},[203,3467,1682],{"class":623},[203,3469,3470,3473,3475,3477,3479],{"class":205,"line":827},[203,3471,3472],{"class":623},"      policyId",[203,3474,564],{"class":213},[203,3476,3385],{"class":217},[203,3478,330],{"class":213},[203,3480,1682],{"class":623},[203,3482,3483,3486,3488,3490,3492,3495,3497,3500],{"class":205,"line":854},[203,3484,3485],{"class":623},"      assetName",[203,3487,564],{"class":213},[203,3489,507],{"class":217},[203,3491,180],{"class":213},[203,3493,3494],{"class":267},"hexToString",[203,3496,271],{"class":623},[203,3498,3499],{"class":217},"deserializedName",[203,3501,278],{"class":623},[203,3503,3504],{"class":205,"line":883},[203,3505,3506],{"class":213},"    }\n",[203,3508,3509],{"class":205,"line":888},[203,3510,3511],{"class":213},"  }\n",[203,3513,3514],{"class":205,"line":910},[203,3515,990],{"class":213},[203,3517,3518],{"class":205,"line":927},[203,3519,240],{"emptyLinePlaceholder":239},[203,3521,3522,3524,3527,3529,3532,3534,3536,3538,3540,3542,3544,3546,3548],{"class":205,"line":953},[203,3523,254],{"class":253},[203,3525,3526],{"class":217}," assetData ",[203,3528,260],{"class":213},[203,3530,3531],{"class":267}," processAssetUnit",[203,3533,271],{"class":217},[203,3535,300],{"class":213},[203,3537,1355],{"class":230},[203,3539,300],{"class":213},[203,3541,330],{"class":213},[203,3543,227],{"class":213},[203,3545,2953],{"class":230},[203,3547,300],{"class":213},[203,3549,278],{"class":217},[469,3551,3553],{"id":3552},"read-all-amounts-from-a-transaction","Read all amounts from a transaction",[477,3555,3556],{},[166,3557,3558,3559,3562],{},"New in v1.4.0. ",[170,3560,3561],{},"deserializeAmountsFromTx"," sums every output's amounts, merged by unit.",[194,3564,3566],{"className":196,"code":3565,"language":198,"meta":199,"style":199},"import { Deserializer } from '@hydra-sdk\u002Fcore'\n\n\u002F\u002F Sum every output's amounts, merged by unit\nconst amounts = Deserializer.deserializeAmountsFromTx(signedTxCbor)\nconsole.log('Total amounts:', amounts)\n",[170,3567,3568,3586,3590,3595,3613],{"__ignoreMap":199},[203,3569,3570,3572,3574,3576,3578,3580,3582,3584],{"class":205,"line":206},[203,3571,210],{"class":209},[203,3573,214],{"class":213},[203,3575,3265],{"class":217},[203,3577,221],{"class":213},[203,3579,224],{"class":209},[203,3581,227],{"class":213},[203,3583,107],{"class":230},[203,3585,233],{"class":213},[203,3587,3588],{"class":205,"line":236},[203,3589,240],{"emptyLinePlaceholder":239},[203,3591,3592],{"class":205,"line":243},[203,3593,3594],{"class":246},"\u002F\u002F Sum every output's amounts, merged by unit\n",[203,3596,3597,3599,3602,3604,3606,3608,3610],{"class":205,"line":250},[203,3598,254],{"class":253},[203,3600,3601],{"class":217}," amounts ",[203,3603,260],{"class":213},[203,3605,3265],{"class":217},[203,3607,180],{"class":213},[203,3609,3561],{"class":267},[203,3611,3612],{"class":217},"(signedTxCbor)\n",[203,3614,3615,3617,3619,3621,3623,3625,3628,3630,3632],{"class":205,"line":281},[203,3616,2380],{"class":217},[203,3618,180],{"class":213},[203,3620,2385],{"class":267},[203,3622,271],{"class":217},[203,3624,300],{"class":213},[203,3626,3627],{"class":230},"Total amounts:",[203,3629,300],{"class":213},[203,3631,330],{"class":213},[203,3633,3634],{"class":217}," amounts)\n",[182,3636,3638],{"id":3637},"providers","Providers",[166,3640,3641,3642,3645,3646,3649],{},"Create a chain data provider for fetching UTxOs and submitting transactions. All providers expose the same ",[170,3643,3644],{},".fetcher"," \u002F ",[170,3647,3648],{},".submitter"," surface.",[477,3651,3652],{},[166,3653,3654,3655,180],{},"Providers do not expose protocol parameters. Inside a Hydra Head, read them from the bridge instead: ",[170,3656,3657],{},"await bridge.getProtocolParameters()",[194,3659,3661],{"className":196,"code":3660,"language":198,"meta":199,"style":199},"import { ProviderUtils } from '@hydra-sdk\u002Fcore'\n\n\u002F\u002F Create Blockfrost provider\nconst blockfrostProvider = new ProviderUtils.BlockfrostProvider({\n  apiKey: process.env.BLOCKFROST_PROJECT_ID || '',\n  network: 'preprod'\n})\n\n\u002F\u002F Create Ogmios provider\nconst ogmiosProvider = new ProviderUtils.OgmiosProvider({\n  network: 'preprod',\n  apiEndpoint: 'http:\u002F\u002Flocalhost:1337'\n})\n\n\u002F\u002F Fetch UTxOs for an address through the provider's fetcher\nconst utxos = await blockfrostProvider.fetcher.fetchAddressUTxOs(address)\n\n\u002F\u002F Submit a signed transaction through the provider's submitter\nconst txHash = await ogmiosProvider.submitter.submitTx(signedTxCbor)\n",[170,3662,3663,3682,3686,3691,3714,3742,3756,3763,3767,3772,3794,3808,3822,3828,3832,3837,3865,3869,3874],{"__ignoreMap":199},[203,3664,3665,3667,3669,3672,3674,3676,3678,3680],{"class":205,"line":206},[203,3666,210],{"class":209},[203,3668,214],{"class":213},[203,3670,3671],{"class":217}," ProviderUtils",[203,3673,221],{"class":213},[203,3675,224],{"class":209},[203,3677,227],{"class":213},[203,3679,107],{"class":230},[203,3681,233],{"class":213},[203,3683,3684],{"class":205,"line":236},[203,3685,240],{"emptyLinePlaceholder":239},[203,3687,3688],{"class":205,"line":243},[203,3689,3690],{"class":246},"\u002F\u002F Create Blockfrost provider\n",[203,3692,3693,3695,3698,3700,3702,3704,3706,3709,3711],{"class":205,"line":250},[203,3694,254],{"class":253},[203,3696,3697],{"class":217}," blockfrostProvider ",[203,3699,260],{"class":213},[203,3701,2443],{"class":213},[203,3703,3671],{"class":217},[203,3705,180],{"class":213},[203,3707,3708],{"class":267},"BlockfrostProvider",[203,3710,271],{"class":217},[203,3712,3713],{"class":213},"{\n",[203,3715,3716,3719,3721,3724,3726,3729,3731,3734,3737,3740],{"class":205,"line":281},[203,3717,3718],{"class":623},"  apiKey",[203,3720,564],{"class":213},[203,3722,3723],{"class":217}," process",[203,3725,180],{"class":213},[203,3727,3728],{"class":217},"env",[203,3730,180],{"class":213},[203,3732,3733],{"class":217},"BLOCKFROST_PROJECT_ID ",[203,3735,3736],{"class":213},"||",[203,3738,3739],{"class":213}," ''",[203,3741,436],{"class":213},[203,3743,3744,3747,3749,3751,3754],{"class":205,"line":310},[203,3745,3746],{"class":623},"  network",[203,3748,564],{"class":213},[203,3750,227],{"class":213},[203,3752,3753],{"class":230},"preprod",[203,3755,233],{"class":213},[203,3757,3758,3761],{"class":205,"line":336},[203,3759,3760],{"class":213},"}",[203,3762,278],{"class":217},[203,3764,3765],{"class":205,"line":341},[203,3766,240],{"emptyLinePlaceholder":239},[203,3768,3769],{"class":205,"line":347},[203,3770,3771],{"class":246},"\u002F\u002F Create Ogmios provider\n",[203,3773,3774,3776,3779,3781,3783,3785,3787,3790,3792],{"class":205,"line":378},[203,3775,254],{"class":253},[203,3777,3778],{"class":217}," ogmiosProvider ",[203,3780,260],{"class":213},[203,3782,2443],{"class":213},[203,3784,3671],{"class":217},[203,3786,180],{"class":213},[203,3788,3789],{"class":267},"OgmiosProvider",[203,3791,271],{"class":217},[203,3793,3713],{"class":213},[203,3795,3796,3798,3800,3802,3804,3806],{"class":205,"line":383},[203,3797,3746],{"class":623},[203,3799,564],{"class":213},[203,3801,227],{"class":213},[203,3803,3753],{"class":230},[203,3805,300],{"class":213},[203,3807,436],{"class":213},[203,3809,3810,3813,3815,3817,3820],{"class":205,"line":389},[203,3811,3812],{"class":623},"  apiEndpoint",[203,3814,564],{"class":213},[203,3816,227],{"class":213},[203,3818,3819],{"class":230},"http:\u002F\u002Flocalhost:1337",[203,3821,233],{"class":213},[203,3823,3824,3826],{"class":205,"line":409},[203,3825,3760],{"class":213},[203,3827,278],{"class":217},[203,3829,3830],{"class":205,"line":439},[203,3831,240],{"emptyLinePlaceholder":239},[203,3833,3834],{"class":205,"line":464},[203,3835,3836],{"class":246},"\u002F\u002F Fetch UTxOs for an address through the provider's fetcher\n",[203,3838,3839,3841,3844,3846,3849,3852,3854,3857,3859,3862],{"class":205,"line":827},[203,3840,254],{"class":253},[203,3842,3843],{"class":217}," utxos ",[203,3845,260],{"class":213},[203,3847,3848],{"class":209}," await",[203,3850,3851],{"class":217}," blockfrostProvider",[203,3853,180],{"class":213},[203,3855,3856],{"class":217},"fetcher",[203,3858,180],{"class":213},[203,3860,3861],{"class":267},"fetchAddressUTxOs",[203,3863,3864],{"class":217},"(address)\n",[203,3866,3867],{"class":205,"line":854},[203,3868,240],{"emptyLinePlaceholder":239},[203,3870,3871],{"class":205,"line":883},[203,3872,3873],{"class":246},"\u002F\u002F Submit a signed transaction through the provider's submitter\n",[203,3875,3876,3878,3881,3883,3885,3888,3890,3893,3895,3898],{"class":205,"line":888},[203,3877,254],{"class":253},[203,3879,3880],{"class":217}," txHash ",[203,3882,260],{"class":213},[203,3884,3848],{"class":209},[203,3886,3887],{"class":217}," ogmiosProvider",[203,3889,180],{"class":213},[203,3891,3892],{"class":217},"submitter",[203,3894,180],{"class":213},[203,3896,3897],{"class":267},"submitTx",[203,3899,3612],{"class":217},[469,3901,3903],{"id":3902},"demeter-provider","Demeter provider",[477,3905,3906],{},[166,3907,3558,3908,3911,3912,3914,3915,3645,3917,3649],{},[170,3909,3910],{},"DemeterProvider"," extends ",[170,3913,3708],{},"; same ",[170,3916,3644],{},[170,3918,3648],{},[194,3920,3922],{"className":196,"code":3921,"language":198,"meta":199,"style":199},"import { ProviderUtils } from '@hydra-sdk\u002Fcore'\n\nconst demeterProvider = new ProviderUtils.DemeterProvider({\n  authToken: process.env.DEMETER_AUTH_TOKEN || '',\n  network: 'preprod'\n})\n\nconst utxos = await demeterProvider.fetcher.fetchAddressUTxOs(address)\n",[170,3923,3924,3942,3946,3967,3991,4003,4009,4013],{"__ignoreMap":199},[203,3925,3926,3928,3930,3932,3934,3936,3938,3940],{"class":205,"line":206},[203,3927,210],{"class":209},[203,3929,214],{"class":213},[203,3931,3671],{"class":217},[203,3933,221],{"class":213},[203,3935,224],{"class":209},[203,3937,227],{"class":213},[203,3939,107],{"class":230},[203,3941,233],{"class":213},[203,3943,3944],{"class":205,"line":236},[203,3945,240],{"emptyLinePlaceholder":239},[203,3947,3948,3950,3953,3955,3957,3959,3961,3963,3965],{"class":205,"line":243},[203,3949,254],{"class":253},[203,3951,3952],{"class":217}," demeterProvider ",[203,3954,260],{"class":213},[203,3956,2443],{"class":213},[203,3958,3671],{"class":217},[203,3960,180],{"class":213},[203,3962,3910],{"class":267},[203,3964,271],{"class":217},[203,3966,3713],{"class":213},[203,3968,3969,3972,3974,3976,3978,3980,3982,3985,3987,3989],{"class":205,"line":250},[203,3970,3971],{"class":623},"  authToken",[203,3973,564],{"class":213},[203,3975,3723],{"class":217},[203,3977,180],{"class":213},[203,3979,3728],{"class":217},[203,3981,180],{"class":213},[203,3983,3984],{"class":217},"DEMETER_AUTH_TOKEN ",[203,3986,3736],{"class":213},[203,3988,3739],{"class":213},[203,3990,436],{"class":213},[203,3992,3993,3995,3997,3999,4001],{"class":205,"line":281},[203,3994,3746],{"class":623},[203,3996,564],{"class":213},[203,3998,227],{"class":213},[203,4000,3753],{"class":230},[203,4002,233],{"class":213},[203,4004,4005,4007],{"class":205,"line":310},[203,4006,3760],{"class":213},[203,4008,278],{"class":217},[203,4010,4011],{"class":205,"line":336},[203,4012,240],{"emptyLinePlaceholder":239},[203,4014,4015,4017,4019,4021,4023,4026,4028,4030,4032,4034],{"class":205,"line":341},[203,4016,254],{"class":253},[203,4018,3843],{"class":217},[203,4020,260],{"class":213},[203,4022,3848],{"class":209},[203,4024,4025],{"class":217}," demeterProvider",[203,4027,180],{"class":213},[203,4029,3856],{"class":217},[203,4031,180],{"class":213},[203,4033,3861],{"class":267},[203,4035,3864],{"class":217},[182,4037,4039],{"id":4038},"validation","Validation",[166,4041,4042,4043,2157,4046,180],{},"Validate transaction outputs and addresses before building a transaction with ",[170,4044,4045],{},"ValidationUtils",[170,4047,4048],{},"AddressUtils",[477,4050,4051],{},[166,4052,1932],{},[194,4054,4056],{"className":196,"code":4055,"language":198,"meta":199,"style":199},"import { ValidationUtils, AddressUtils } from '@hydra-sdk\u002Fcore'\n\n\u002F\u002F Validate a transaction output shape\nconst okOutput = ValidationUtils.isValidTxOutput({\n  address: 'addr_test1...',\n  amount: [{ unit: 'lovelace', quantity: '2000000' }]\n})\n\n\u002F\u002F Validate an address (type: 'bech32' | 'hex' | 'bytes', default 'bech32')\nconst okAddress = AddressUtils.isValidAddress('addr_test1...')\n\n\u002F\u002F Extract the payment key hash (returns null if not derivable)\nconst pubKeyHash = AddressUtils.getPubkeyHashFromAddress('addr_test1...')\n",[170,4057,4058,4082,4086,4091,4111,4126,4168,4174,4178,4183,4209,4213,4218],{"__ignoreMap":199},[203,4059,4060,4062,4064,4067,4069,4072,4074,4076,4078,4080],{"class":205,"line":206},[203,4061,210],{"class":209},[203,4063,214],{"class":213},[203,4065,4066],{"class":217}," ValidationUtils",[203,4068,330],{"class":213},[203,4070,4071],{"class":217}," AddressUtils",[203,4073,221],{"class":213},[203,4075,224],{"class":209},[203,4077,227],{"class":213},[203,4079,107],{"class":230},[203,4081,233],{"class":213},[203,4083,4084],{"class":205,"line":236},[203,4085,240],{"emptyLinePlaceholder":239},[203,4087,4088],{"class":205,"line":243},[203,4089,4090],{"class":246},"\u002F\u002F Validate a transaction output shape\n",[203,4092,4093,4095,4098,4100,4102,4104,4107,4109],{"class":205,"line":250},[203,4094,254],{"class":253},[203,4096,4097],{"class":217}," okOutput ",[203,4099,260],{"class":213},[203,4101,4066],{"class":217},[203,4103,180],{"class":213},[203,4105,4106],{"class":267},"isValidTxOutput",[203,4108,271],{"class":217},[203,4110,3713],{"class":213},[203,4112,4113,4116,4118,4120,4122,4124],{"class":205,"line":281},[203,4114,4115],{"class":623},"  address",[203,4117,564],{"class":213},[203,4119,227],{"class":213},[203,4121,1403],{"class":230},[203,4123,300],{"class":213},[203,4125,436],{"class":213},[203,4127,4128,4131,4133,4135,4137,4140,4142,4144,4147,4149,4151,4154,4156,4158,4161,4163,4165],{"class":205,"line":310},[203,4129,4130],{"class":623},"  amount",[203,4132,564],{"class":213},[203,4134,651],{"class":217},[203,4136,1345],{"class":213},[203,4138,4139],{"class":623}," unit",[203,4141,564],{"class":213},[203,4143,227],{"class":213},[203,4145,4146],{"class":230},"lovelace",[203,4148,300],{"class":213},[203,4150,330],{"class":213},[203,4152,4153],{"class":623}," quantity",[203,4155,564],{"class":213},[203,4157,227],{"class":213},[203,4159,4160],{"class":230},"2000000",[203,4162,300],{"class":213},[203,4164,221],{"class":213},[203,4166,4167],{"class":217},"]\n",[203,4169,4170,4172],{"class":205,"line":336},[203,4171,3760],{"class":213},[203,4173,278],{"class":217},[203,4175,4176],{"class":205,"line":341},[203,4177,240],{"emptyLinePlaceholder":239},[203,4179,4180],{"class":205,"line":347},[203,4181,4182],{"class":246},"\u002F\u002F Validate an address (type: 'bech32' | 'hex' | 'bytes', default 'bech32')\n",[203,4184,4185,4187,4190,4192,4194,4196,4199,4201,4203,4205,4207],{"class":205,"line":378},[203,4186,254],{"class":253},[203,4188,4189],{"class":217}," okAddress ",[203,4191,260],{"class":213},[203,4193,4071],{"class":217},[203,4195,180],{"class":213},[203,4197,4198],{"class":267},"isValidAddress",[203,4200,271],{"class":217},[203,4202,300],{"class":213},[203,4204,1403],{"class":230},[203,4206,300],{"class":213},[203,4208,278],{"class":217},[203,4210,4211],{"class":205,"line":383},[203,4212,240],{"emptyLinePlaceholder":239},[203,4214,4215],{"class":205,"line":389},[203,4216,4217],{"class":246},"\u002F\u002F Extract the payment key hash (returns null if not derivable)\n",[203,4219,4220,4222,4225,4227,4229,4231,4234,4236,4238,4240,4242],{"class":205,"line":409},[203,4221,254],{"class":253},[203,4223,4224],{"class":217}," pubKeyHash ",[203,4226,260],{"class":213},[203,4228,4071],{"class":217},[203,4230,180],{"class":213},[203,4232,4233],{"class":267},"getPubkeyHashFromAddress",[203,4235,271],{"class":217},[203,4237,300],{"class":213},[203,4239,1403],{"class":230},[203,4241,300],{"class":213},[203,4243,278],{"class":217},[182,4245,4247],{"id":4246},"error-handling","Error handling",[166,4249,4250,4251,4254],{},"Utility calls can throw on malformed input. Wrap them so a failure returns ",[170,4252,4253],{},"null"," (or a fallback) instead of crashing the flow.",[194,4256,4258],{"className":196,"code":4257,"language":198,"meta":199,"style":199},"import { ParserUtils, DatumUtils } from '@hydra-sdk\u002Fcore'\n\nconst safeConversion = (input: string, type: 'hex' | 'datum') => {\n  try {\n    switch (type) {\n      case 'hex':\n        return ParserUtils.stringToHex(input)\n      case 'datum':\n        return DatumUtils.mkBytes(ParserUtils.stringToHex(input))\n      default:\n        throw new Error('Unsupported conversion type')\n    }\n  } catch (error) {\n    console.error(`Conversion failed for ${type}:`, error)\n    return null\n  }\n}\n\n\u002F\u002F Usage with fallback\nconst result = safeConversion('test data', 'hex') || 'default_hex_value'\n",[170,4259,4260,4282,4286,4334,4341,4354,4368,4385,4397,4421,4428,4449,4453,4470,4505,4513,4517,4521,4525,4530],{"__ignoreMap":199},[203,4261,4262,4264,4266,4268,4270,4272,4274,4276,4278,4280],{"class":205,"line":206},[203,4263,210],{"class":209},[203,4265,214],{"class":213},[203,4267,507],{"class":217},[203,4269,330],{"class":213},[203,4271,218],{"class":217},[203,4273,221],{"class":213},[203,4275,224],{"class":209},[203,4277,227],{"class":213},[203,4279,107],{"class":230},[203,4281,233],{"class":213},[203,4283,4284],{"class":205,"line":236},[203,4285,240],{"emptyLinePlaceholder":239},[203,4287,4288,4290,4293,4295,4297,4300,4302,4304,4306,4309,4311,4313,4316,4318,4321,4323,4326,4328,4330,4332],{"class":205,"line":243},[203,4289,254],{"class":253},[203,4291,4292],{"class":217}," safeConversion ",[203,4294,260],{"class":213},[203,4296,557],{"class":213},[203,4298,4299],{"class":560},"input",[203,4301,564],{"class":213},[203,4303,568],{"class":567},[203,4305,330],{"class":213},[203,4307,4308],{"class":560}," type",[203,4310,564],{"class":213},[203,4312,227],{"class":213},[203,4314,4315],{"class":230},"hex",[203,4317,300],{"class":213},[203,4319,4320],{"class":213}," |",[203,4322,227],{"class":213},[203,4324,4325],{"class":230},"datum",[203,4327,300],{"class":213},[203,4329,428],{"class":213},[203,4331,600],{"class":253},[203,4333,603],{"class":213},[203,4335,4336,4339],{"class":205,"line":250},[203,4337,4338],{"class":209},"  try",[203,4340,603],{"class":213},[203,4342,4343,4346,4348,4350,4352],{"class":205,"line":281},[203,4344,4345],{"class":209},"    switch",[203,4347,557],{"class":623},[203,4349,1877],{"class":217},[203,4351,2547],{"class":623},[203,4353,3713],{"class":213},[203,4355,4356,4359,4361,4363,4365],{"class":205,"line":310},[203,4357,4358],{"class":209},"      case",[203,4360,227],{"class":213},[203,4362,4315],{"class":230},[203,4364,300],{"class":213},[203,4366,4367],{"class":213},":\n",[203,4369,4370,4373,4375,4377,4379,4381,4383],{"class":205,"line":336},[203,4371,4372],{"class":209},"        return",[203,4374,507],{"class":217},[203,4376,180],{"class":213},[203,4378,1594],{"class":267},[203,4380,271],{"class":623},[203,4382,4299],{"class":217},[203,4384,278],{"class":623},[203,4386,4387,4389,4391,4393,4395],{"class":205,"line":341},[203,4388,4358],{"class":209},[203,4390,227],{"class":213},[203,4392,4325],{"class":230},[203,4394,300],{"class":213},[203,4396,4367],{"class":213},[203,4398,4399,4401,4403,4405,4407,4409,4411,4413,4415,4417,4419],{"class":205,"line":347},[203,4400,4372],{"class":209},[203,4402,218],{"class":217},[203,4404,180],{"class":213},[203,4406,295],{"class":267},[203,4408,271],{"class":623},[203,4410,1589],{"class":217},[203,4412,180],{"class":213},[203,4414,1594],{"class":267},[203,4416,271],{"class":623},[203,4418,4299],{"class":217},[203,4420,851],{"class":623},[203,4422,4423,4426],{"class":205,"line":378},[203,4424,4425],{"class":209},"      default",[203,4427,4367],{"class":213},[203,4429,4430,4433,4435,4438,4440,4442,4445,4447],{"class":205,"line":383},[203,4431,4432],{"class":209},"        throw",[203,4434,2443],{"class":213},[203,4436,4437],{"class":267}," Error",[203,4439,271],{"class":623},[203,4441,300],{"class":213},[203,4443,4444],{"class":230},"Unsupported conversion type",[203,4446,300],{"class":213},[203,4448,278],{"class":623},[203,4450,4451],{"class":205,"line":389},[203,4452,3506],{"class":213},[203,4454,4455,4458,4461,4463,4466,4468],{"class":205,"line":409},[203,4456,4457],{"class":213},"  }",[203,4459,4460],{"class":209}," catch",[203,4462,557],{"class":623},[203,4464,4465],{"class":217},"error",[203,4467,2547],{"class":623},[203,4469,3713],{"class":213},[203,4471,4472,4475,4477,4479,4481,4484,4487,4490,4492,4494,4496,4498,4500,4503],{"class":205,"line":439},[203,4473,4474],{"class":217},"    console",[203,4476,180],{"class":213},[203,4478,4465],{"class":267},[203,4480,271],{"class":623},[203,4482,4483],{"class":213},"`",[203,4485,4486],{"class":230},"Conversion failed for ",[203,4488,4489],{"class":213},"${",[203,4491,1877],{"class":217},[203,4493,3760],{"class":213},[203,4495,564],{"class":230},[203,4497,4483],{"class":213},[203,4499,330],{"class":213},[203,4501,4502],{"class":217}," error",[203,4504,278],{"class":623},[203,4506,4507,4510],{"class":205,"line":464},[203,4508,4509],{"class":209},"    return",[203,4511,4512],{"class":213}," null\n",[203,4514,4515],{"class":205,"line":827},[203,4516,3511],{"class":213},[203,4518,4519],{"class":205,"line":854},[203,4520,990],{"class":213},[203,4522,4523],{"class":205,"line":883},[203,4524,240],{"emptyLinePlaceholder":239},[203,4526,4527],{"class":205,"line":888},[203,4528,4529],{"class":246},"\u002F\u002F Usage with fallback\n",[203,4531,4532,4534,4537,4539,4542,4544,4546,4549,4551,4553,4555,4557,4559,4561,4563,4565,4568],{"class":205,"line":910},[203,4533,254],{"class":253},[203,4535,4536],{"class":217}," result ",[203,4538,260],{"class":213},[203,4540,4541],{"class":267}," safeConversion",[203,4543,271],{"class":217},[203,4545,300],{"class":213},[203,4547,4548],{"class":230},"test data",[203,4550,300],{"class":213},[203,4552,330],{"class":213},[203,4554,227],{"class":213},[203,4556,4315],{"class":230},[203,4558,300],{"class":213},[203,4560,2547],{"class":217},[203,4562,3736],{"class":213},[203,4564,227],{"class":213},[203,4566,4567],{"class":230},"default_hex_value",[203,4569,233],{"class":213},[4571,4572,4573],"tip",{},[166,4574,4575,4576,4579,4580,4583],{},"The same ",[170,4577,4578],{},"try\u002Fcatch"," wrapper works for any utility call — for example wrap ",[170,4581,4582],{},"TimeUtils.unixTimeToEnclosingSlot(...)"," to guard against invalid timestamps.",[182,4585,4587],{"id":4586},"see-also","See also",[4589,4590,4591,4597,4602],"ul",{},[4592,4593,4594,4596],"li",{},[178,4595,127],{"href":127}," — full function signatures for every utility namespace.",[4592,4598,4599,4601],{},[178,4600,42],{"href":42}," — build and submit transactions using these utilities.",[4592,4603,4604,4606,4607,4609],{},[178,4605,47],{"href":47}," — end-to-end minting flow that reuses the ",[170,4608,484],{}," recipe above.",[4611,4612,4613],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":199,"searchDepth":206,"depth":236,"links":4615},[4616,4621,4622,4625,4626,4630,4633,4634,4635],{"id":184,"depth":236,"text":185,"children":4617},[4618,4619,4620],{"id":471,"depth":243,"text":472},{"id":1072,"depth":243,"text":1073},{"id":1438,"depth":243,"text":1439},{"id":1916,"depth":236,"text":1917},{"id":2149,"depth":236,"text":2150,"children":4623},[4624],{"id":2452,"depth":243,"text":2453},{"id":2811,"depth":236,"text":2812},{"id":3032,"depth":236,"text":3033,"children":4627},[4628,4629],{"id":3231,"depth":243,"text":3232},{"id":3552,"depth":243,"text":3553},{"id":3637,"depth":236,"text":3638,"children":4631},[4632],{"id":3902,"depth":243,"text":3903},{"id":4038,"depth":236,"text":4039},{"id":4246,"depth":236,"text":4247},{"id":4586,"depth":236,"text":4587},"Task-oriented recipes for the Hydra SDK utility namespaces — datums, redeemers, time, policies, providers, and more.","md",null,{},{"icon":59},{"title":56,"description":4636},"pu357Q80F-4Wp_lzKJf675K2tzxXkzuwnKX24-0bgtA",[4644,4646],{"title":51,"path":52,"stem":53,"description":4645,"icon":54,"children":-1},"Examples of integrating with Hydra Network using real patterns",{"title":61,"path":62,"stem":63,"description":4647,"icon":64,"children":-1},"Learn how to use Cardano-CLI generated keys with Hydra SDK using CardanoCliWallet.",1784812304268]