From 372b8735a890eed92f449e2058d0ddf70d8409b4 Mon Sep 17 00:00:00 2001 From: Micah Kendall Date: Wed, 31 Jul 2024 23:38:34 +1000 Subject: [PATCH] init --- .github/workflows/tests.yml | 20 + .gitignore | 9 + LICENSE.md | 24 + LICENSE2.md | 7 + LICENSE3.md | 13 + README.md | 12 + aiken.lock | 15 + aiken.toml | 16 + package.json | 8 + plutus.ts | 50 ++ pnpm-lock.yaml | 1323 +++++++++++++++++++++++++++++++++++ validators/proposals.ak | 80 +++ validators/staking.ak | 29 + 13 files changed, 1606 insertions(+) create mode 100644 .github/workflows/tests.yml create mode 100644 .gitignore create mode 100644 LICENSE.md create mode 100644 LICENSE2.md create mode 100644 LICENSE3.md create mode 100644 README.md create mode 100644 aiken.lock create mode 100644 aiken.toml create mode 100644 package.json create mode 100644 plutus.ts create mode 100644 pnpm-lock.yaml create mode 100644 validators/proposals.ak create mode 100644 validators/staking.ak diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..cb08162 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,20 @@ +name: Tests + +on: + push: + branches: ["main"] + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - uses: aiken-lang/setup-aiken@v0.1.0 + with: + version: v1.0.29-alpha + + - run: aiken fmt --check + - run: aiken check -D + - run: aiken build diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d978eba --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +# Aiken compilation artifacts +artifacts/ +# Aiken's project working directory +build/ +# Aiken's default documentation export +docs/ +node_modules/ +.DS_Store +plutus.json \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..00d2e13 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to \ No newline at end of file diff --git a/LICENSE2.md b/LICENSE2.md new file mode 100644 index 0000000..cd93ffd --- /dev/null +++ b/LICENSE2.md @@ -0,0 +1,7 @@ +Copyright 2024 MICAH KENDALL + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/LICENSE3.md b/LICENSE3.md new file mode 100644 index 0000000..b6819bb --- /dev/null +++ b/LICENSE3.md @@ -0,0 +1,13 @@ +Copyright 2024 MICAH KENDALL + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7e7eb1a --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# Ourovoting + +Ouravoting is a family of protocols that allows for voting on proposals and the allocation of treasury funds. We aim to replicate Cardano's principles of governance & security within the EUTXO framework. This allows token-governance for decentralised autonomous organisations (DAOs) and the associated tokenomics. + +Thanks to Zygomeb (Optim) & Riley (Summon) for various design ideas and discussions. + +# Licensing + +This repository is released under any of: +- [Public Domain](LICENSE.md) +- [MIT](LICENSE2.md) +- [Apache](LICENSE3.md) \ No newline at end of file diff --git a/aiken.lock b/aiken.lock new file mode 100644 index 0000000..62f2265 --- /dev/null +++ b/aiken.lock @@ -0,0 +1,15 @@ +# This file was generated by Aiken +# You typically do not need to edit this file + +[[requirements]] +name = "aiken-lang/stdlib" +version = "1.9.0" +source = "github" + +[[packages]] +name = "aiken-lang/stdlib" +version = "1.9.0" +requirements = [] +source = "github" + +[etags] diff --git a/aiken.toml b/aiken.toml new file mode 100644 index 0000000..40a7c83 --- /dev/null +++ b/aiken.toml @@ -0,0 +1,16 @@ +name = "butaneprotocol/ourovoting" +version = "0.0.0" +compiler = "v1.0.29-alpha" +plutus = "v2" +license = "Apache-2.0" +description = "Aiken contracts for project 'butaneprotocol/ourovoting'" + +[repository] +user = "butaneprotocol" +project = "ourovoting" +platform = "github" + +[[dependencies]] +name = "aiken-lang/stdlib" +version = "1.9.0" +source = "github" diff --git a/package.json b/package.json new file mode 100644 index 0000000..9e58ed4 --- /dev/null +++ b/package.json @@ -0,0 +1,8 @@ +{ + "scripts": { + "build": "aiken build && blueprint plutus.json -o plutus.ts" + }, + "dependencies": { + "@blaze-cardano/blueprint": "latest" + } +} \ No newline at end of file diff --git a/plutus.ts b/plutus.ts new file mode 100644 index 0000000..0c16829 --- /dev/null +++ b/plutus.ts @@ -0,0 +1,50 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck +import { type Script } from "@blaze-cardano/core"; +import { applyParamsToScript, cborToScript, ScriptType } from "@blaze-cardano/uplc";import { type PlutusData } from "@blaze-cardano/core"; + +export interface ProposalsNewProposal { + new (requiredCollateral:{policyId:string;assetName:string;quantity:bigint}): Script; + proposal: {owner:string;data:PlutusData}; + }; + + export const ProposalsNewProposal = Object.assign( + function (requiredCollateral:{policyId:string;assetName:string;quantity:bigint}) {return cborToScript(applyParamsToScript("5905f70100003232323232323222253232333006300130073754006264a66600e64646464646464a66601c6012601e6ea80184c8c8c8c8c8c8c8c94ccc058cdc3a4008602e6ea80084c94ccc05cc04cc060dd50010a99980b9809180c1baa001132323232533301e30210021533301b3370e6e3400d203813253323301d3375e6e98cc00802d220100374c6464646464646464a66604a60400042002264646600200200644a66605600226605866ec0dd48041ba60034bd6f7b630099191919299981619b9000c002133030337606ea4030dd30038028a99981619b8f00c002132533302d3028302e375400226606266ec0dd4806981918179baa001004100432533302d533303000114a22940530103d87a80001301133031374c00297ae03233001001002225333031001133032337606ea4030dd4005a5eb7bdb1804c8c8c8c94ccc0c8cdc800800109981b19bb037520206ea003c01454ccc0c8cdc780800109929998199817181a1baa001133037337606ea4044c0e0c0d4dd5000802080219299981998170008a6103d87a80001301733037375000297ae03370000201e26606c66ec0dd48011ba800133006006003375a60660066eb8c0c4008c0d4008c0cc0044cc0c0cdd81ba9002374c0026600c00c0066eacc0b400cdd7181580118178011816800991900118040009981499bb037520066ea00092f5bded8c0a666048604090000a5eb7bdb1804c8c8cc0040052f5bded8c044a66605400226605666ec0dd480c9ba60034bd6f7b630099191919299981599b9001d00213302f337606ea4074dd30038028a99981599b8f01d00213302f337606ea4074dd300380189981799bb037520046e98004cc01801800cdd598160019bae302a002302e002302c00132330010014bd6f7b63011299981480089981519bb04c01094850524f504f53414c004c010101004bd6f7b630099191919299981519b904890850524f504f53414c0000213302e337609801094850524f504f53414c004c010101000051533302a3371e91010850524f504f53414c0000213302e337609801094850524f504f53414c004c0101010000313302e337606ea4008dd4000998030030019bad302b003375c6052004605a00460560026eb4c0a0c0a4008dd7181380098138011bae30250013021375403c600200244a66604400229309929998118008a4c26464a66604466e40dd7181198138021bae302300213300500533026002001163027002302500130250011533301d3375e6044603e6ea8034cdd2a4004660426ea403d2f5c0266ebcdd319299980f180d180f9baa00114bd6f7b63009bab30233020375400264660020026600602291010022533302200114c103d87a800013232323253330233372202a0042a66604666e3c0540084c01ccc09cdd3000a5eb80530103d87a8000133006006003375660480066eb8c088008c098008c09000530010ba14850524f504f53414c010014a06e95200014a044646600200200644a666044002297adef6c6013232323253330233372200e0042a66604666e3c01c008400c40144cc09ccdd81ba9002374c0026600c00c0066eacc09000cdd71811001181300118120008a5016301f001301f002375c603a00260326ea80045858c06cc060dd50010b180d180d801180c800980c8011bab3017001301700230150013011375460280066eb8c04cc040dd50030b1bab30123013301300237586022002602260220046eb0c03c004c02cdd518070011806980700098049baa00414984d9594ccc018c004c01cdd5002099191919299980698080010a4c2c601c002601c0046eb8c030004c020dd50020b09991129998049919192999806180418069baa002132533300d32323300100100422533301300114a0264a66602266e3cdd7180b0010020a511330030030013016001375c6024601e6ea802c5288a503011300e37540042c6eb0c040c044c044c044c044c044c044c044c044c034dd518080011807980800098059baa00114984d9594ccc018c004c01cdd5002099191919299980698080010a4c2c601c002601c0046eb8c030004c020dd50020b180598041baa003370e90001b87480095cd2ab9d5573caae7d5d02ba15745", [requiredCollateral], {"dataType":"list","items":[{"title":"CollateralValue","anyOf":[{"title":"CollateralValue","dataType":"constructor","index":0,"fields":[{"dataType":"bytes","title":"policyId"},{"dataType":"bytes","title":"assetName"},{"dataType":"integer","title":"quantity"}]}]}]} as any), ScriptType.PlutusV2);}, + + {proposal: {"title":"Proposal","anyOf":[{"title":"Proposal","dataType":"constructor","index":0,"fields":[{"dataType":"bytes","title":"owner"},{"title":"data","description":"Any Plutus data."}]}]}}, + ) as unknown as ProposalsNewProposal; + +export interface ProposalsReclaimCollateral { + new (requiredCollateral:{policyId:string;assetName:string;quantity:bigint}): Script; +datum: {owner:string;data:PlutusData}; + redeemer: {wrapper:PlutusData}; + }; + + export const ProposalsReclaimCollateral = Object.assign( + function (requiredCollateral:{policyId:string;assetName:string;quantity:bigint}) {return cborToScript(applyParamsToScript("5905f70100003232323232323222253232333006300130073754006264a66600e64646464646464a66601c6012601e6ea80184c8c8c8c8c8c8c8c94ccc058cdc3a4008602e6ea80084c94ccc05cc04cc060dd50010a99980b9809180c1baa001132323232533301e30210021533301b3370e6e3400d203813253323301d3375e6e98cc00802d220100374c6464646464646464a66604a60400042002264646600200200644a66605600226605866ec0dd48041ba60034bd6f7b630099191919299981619b9000c002133030337606ea4030dd30038028a99981619b8f00c002132533302d3028302e375400226606266ec0dd4806981918179baa001004100432533302d533303000114a22940530103d87a80001301133031374c00297ae03233001001002225333031001133032337606ea4030dd4005a5eb7bdb1804c8c8c8c94ccc0c8cdc800800109981b19bb037520206ea003c01454ccc0c8cdc780800109929998199817181a1baa001133037337606ea4044c0e0c0d4dd5000802080219299981998170008a6103d87a80001301733037375000297ae03370000201e26606c66ec0dd48011ba800133006006003375a60660066eb8c0c4008c0d4008c0cc0044cc0c0cdd81ba9002374c0026600c00c0066eacc0b400cdd7181580118178011816800991900118040009981499bb037520066ea00092f5bded8c0a666048604090000a5eb7bdb1804c8c8cc0040052f5bded8c044a66605400226605666ec0dd480c9ba60034bd6f7b630099191919299981599b9001d00213302f337606ea4074dd30038028a99981599b8f01d00213302f337606ea4074dd300380189981799bb037520046e98004cc01801800cdd598160019bae302a002302e002302c00132330010014bd6f7b63011299981480089981519bb04c01094850524f504f53414c004c010101004bd6f7b630099191919299981519b904890850524f504f53414c0000213302e337609801094850524f504f53414c004c010101000051533302a3371e91010850524f504f53414c0000213302e337609801094850524f504f53414c004c0101010000313302e337606ea4008dd4000998030030019bad302b003375c6052004605a00460560026eb4c0a0c0a4008dd7181380098138011bae30250013021375403c600200244a66604400229309929998118008a4c26464a66604466e40dd7181198138021bae302300213300500533026002001163027002302500130250011533301d3375e6044603e6ea8034cdd2a4004660426ea403d2f5c0266ebcdd319299980f180d180f9baa00114bd6f7b63009bab30233020375400264660020026600602291010022533302200114c103d87a800013232323253330233372202a0042a66604666e3c0540084c01ccc09cdd3000a5eb80530103d87a8000133006006003375660480066eb8c088008c098008c09000530010ba14850524f504f53414c010014a06e95200014a044646600200200644a666044002297adef6c6013232323253330233372200e0042a66604666e3c01c008400c40144cc09ccdd81ba9002374c0026600c00c0066eacc09000cdd71811001181300118120008a5016301f001301f002375c603a00260326ea80045858c06cc060dd50010b180d180d801180c800980c8011bab3017001301700230150013011375460280066eb8c04cc040dd50030b1bab30123013301300237586022002602260220046eb0c03c004c02cdd518070011806980700098049baa00414984d9594ccc018c004c01cdd5002099191919299980698080010a4c2c601c002601c0046eb8c030004c020dd50020b09991129998049919192999806180418069baa002132533300d32323300100100422533301300114a0264a66602266e3cdd7180b0010020a511330030030013016001375c6024601e6ea802c5288a503011300e37540042c6eb0c040c044c044c044c044c044c044c044c044c034dd518080011807980800098059baa00114984d9594ccc018c004c01cdd5002099191919299980698080010a4c2c601c002601c0046eb8c030004c020dd50020b180598041baa003370e90001b87480095cd2ab9d5573caae7d5d02ba15745", [requiredCollateral], {"dataType":"list","items":[{"title":"CollateralValue","anyOf":[{"title":"CollateralValue","dataType":"constructor","index":0,"fields":[{"dataType":"bytes","title":"policyId"},{"dataType":"bytes","title":"assetName"},{"dataType":"integer","title":"quantity"}]}]}]} as any), ScriptType.PlutusV2);}, + {datum: {"title":"Proposal","anyOf":[{"title":"Proposal","dataType":"constructor","index":0,"fields":[{"dataType":"bytes","title":"owner"},{"title":"data","description":"Any Plutus data."}]}]}}, + {redeemer: {"title":"Wrapped Redeemer","description":"A redeemer wrapped in an extra constructor to make multi-validator detection possible on-chain.","anyOf":[{"dataType":"constructor","index":1,"fields":[{"description":"Any Plutus data."}]}]}}, + ) as unknown as ProposalsReclaimCollateral; + +export interface StakingStake { + new (quorumNft:{policyid:string;assetname:string}): Script; + redeemer: "Stake" | "Unstake"; + }; + + export const StakingStake = Object.assign( + function (quorumNft:{policyid:string;assetname:string}) {return cborToScript(applyParamsToScript("587d0100003232323232222533233005300130063754004264a66600ca66600c6004600e6ea8010585852613656325333006300200115333009300837540082930b0a99980319b874800800454ccc024c020dd50020a4c2c2c600c6ea800cdc3a40002644a66600cc29309b2b180418031baa0015734aae7555cf2ab9f5743", [quorumNft], {"dataType":"list","items":[{"title":"AssetClass","anyOf":[{"title":"AssetClass","dataType":"constructor","index":0,"fields":[{"dataType":"bytes","title":"policyid"},{"dataType":"bytes","title":"assetname"}]}]}]} as any), ScriptType.PlutusV2);}, + + {redeemer: {"title":"Redeemer","anyOf":[{"title":"Stake","dataType":"constructor","index":0,"fields":[]},{"title":"Unstake","dataType":"constructor","index":1,"fields":[]}]}}, + ) as unknown as StakingStake; + +export interface StakingUnstake { + new (quorumNft:{policyid:string;assetname:string}): Script; +datum: PlutusData; + redeemer: {wrapper:PlutusData}; + }; + + export const StakingUnstake = Object.assign( + function (quorumNft:{policyid:string;assetname:string}) {return cborToScript(applyParamsToScript("587d0100003232323232222533233005300130063754004264a66600ca66600c6004600e6ea8010585852613656325333006300200115333009300837540082930b0a99980319b874800800454ccc024c020dd50020a4c2c2c600c6ea800cdc3a40002644a66600cc29309b2b180418031baa0015734aae7555cf2ab9f5743", [quorumNft], {"dataType":"list","items":[{"title":"AssetClass","anyOf":[{"title":"AssetClass","dataType":"constructor","index":0,"fields":[{"dataType":"bytes","title":"policyid"},{"dataType":"bytes","title":"assetname"}]}]}]} as any), ScriptType.PlutusV2);}, + {datum: {"title":"Data","description":"Any Plutus data."}}, + {redeemer: {"title":"Wrapped Redeemer","description":"A redeemer wrapped in an extra constructor to make multi-validator detection possible on-chain.","anyOf":[{"dataType":"constructor","index":1,"fields":[{"description":"Any Plutus data."}]}]}}, + ) as unknown as StakingUnstake; \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..19a3280 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1323 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@blaze-cardano/blueprint': + specifier: latest + version: 0.1.1 + +packages: + + /@balena/dockerignore@1.0.2: + resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} + dev: false + + /@blaze-cardano/blueprint@0.1.1: + resolution: {integrity: sha512-nygb6tm+qSSd7JbO6a3faL2vOqF8xzZyiaHn/drDsfu3QENyLpS4mVT34uu6B7zCiPYZ2vPA4yqunZAplMTNJA==} + hasBin: true + dependencies: + '@blaze-cardano/core': 0.2.5 + '@blaze-cardano/tx': 0.0.25 + '@blaze-cardano/uplc': 0.0.6 + '@cardano-sdk/core': 0.35.2(rxjs@7.8.1) + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - debug + - encoding + - rxjs + - supports-color + - utf-8-validate + dev: false + + /@blaze-cardano/core@0.2.5: + resolution: {integrity: sha512-GHUwO7cGN1OMuv8uWLgnue2VfYAajuvw/AFIPp5GZBrqUApDNMEEz07GBOS8yNnMhR5pGfUJxmMnXILtKGYiJQ==} + dependencies: + '@cardano-sdk/core': 0.35.2(rxjs@7.8.1) + '@cardano-sdk/crypto': 0.1.26 + '@cardano-sdk/util': 0.15.3 + '@noble/curves': 1.4.2 + '@noble/ed25519': 2.1.0 + '@noble/hashes': 1.4.0 + '@scure/bip39': 1.3.0 + blakejs: 1.2.1 + rxjs: 7.8.1 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - encoding + - utf-8-validate + dev: false + + /@blaze-cardano/tx@0.0.25: + resolution: {integrity: sha512-KSpdme7++ZeCGMOoBMT14fL3sPU8PoysbitEWcq71r2Hj0AgH1TYFYXXpvdbpzBHyVbWiif+ahx2Id0PT4PF1w==} + dependencies: + '@blaze-cardano/core': 0.2.5 + '@sinclair/typebox': 0.32.34 + uplc-node: 0.0.3 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - encoding + - utf-8-validate + dev: false + + /@blaze-cardano/uplc@0.0.6: + resolution: {integrity: sha512-3ibWtoCZOKOofolizjCwQEdrqeTlaDIKYc34sQsNHwiw0kjkaApclD0WWDohA0lT9LiOk0mcnxsKYdPGmqHB7Q==} + dependencies: + '@blaze-cardano/core': 0.2.5 + '@cardano-sdk/core': 0.30.2 + hex-encoding: 2.0.2 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - encoding + - rxjs + - utf-8-validate + dev: false + + /@cardano-ogmios/client@5.6.0: + resolution: {integrity: sha512-F0kWQ+TTc3OvSsp9CmxAPqo7fpB9yjrK+Lp52IqGG2YJVwyIynvHwlOW0cZNsRLO+KXwJrSoKdj9rHI0Vix4iw==} + engines: {node: '>=14'} + dependencies: + '@cardano-ogmios/schema': 5.6.0 + '@cardanosolutions/json-bigint': 1.0.1 + '@types/json-bigint': 1.0.4 + cross-fetch: 3.1.8 + fastq: 1.17.1 + isomorphic-ws: 4.0.1(ws@7.5.10) + nanoid: 3.3.7 + ts-custom-error: 3.3.1 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false + + /@cardano-ogmios/client@6.3.0: + resolution: {integrity: sha512-nWaZ76n/R+p8nxBfRCetOuoDH8o5QToL5zWhRUu9EwHDJqM/0rzvYEk9JYCikAcVlC1qt6+3CcG4nCpG0dsptw==} + engines: {node: '>=14'} + dependencies: + '@cardano-ogmios/schema': 6.3.0 + '@cardanosolutions/json-bigint': 1.0.1 + '@types/json-bigint': 1.0.4 + bech32: 2.0.0 + cross-fetch: 3.1.8 + fastq: 1.17.1 + isomorphic-ws: 4.0.1(ws@7.5.10) + nanoid: 3.3.7 + ts-custom-error: 3.3.1 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false + + /@cardano-ogmios/schema@5.6.0: + resolution: {integrity: sha512-JTlh/gOS5iM4b7CKc3dFRs2UC6fY+PeLiOv6fKxFSOSRMZ59sLgv+oGqjnzyVeZFUt6o683C9zFmBzh60l8KnA==} + engines: {node: '>=14'} + dev: false + + /@cardano-ogmios/schema@6.3.0: + resolution: {integrity: sha512-reM7NDYV4cgMAdFCzypoIuCVgSUfR9ztRMlk6p7k0cTeqUkbMfA83ps1FVkTDxzXxFjgM4EkhqoJyRjKIKRPQA==} + engines: {node: '>=14'} + dev: false + + /@cardano-sdk/core@0.30.2: + resolution: {integrity: sha512-aFlLfM0pqjhjAE5oMyUcnhl+mhpzXva9bAOuTGvOUDQbIRPZtvr2UVv3rXpqFy6FvtNr8WIA7moSrePRPm9aCA==} + engines: {node: '>=16.20.2'} + peerDependencies: + rxjs: ^7.4.0 + peerDependenciesMeta: + rxjs: + optional: true + dependencies: + '@cardano-ogmios/client': 5.6.0 + '@cardano-ogmios/schema': 5.6.0 + '@cardano-sdk/crypto': 0.1.26 + '@cardano-sdk/util': 0.15.3 + '@foxglove/crc': 0.0.3 + '@scure/base': 1.1.7 + fraction.js: 4.0.1 + ip-address: 8.1.0 + lodash: 4.17.21 + ts-custom-error: 3.3.1 + ts-log: 2.2.5 + web-encoding: 1.1.5 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - encoding + - utf-8-validate + dev: false + + /@cardano-sdk/core@0.35.2(rxjs@7.8.1): + resolution: {integrity: sha512-xeg8Wy+5B16G5CDjYmT8Wn0ZCXaPeo+O7GZayAMxdh8q8AQ08xs7UBvYFGvSq7nGxF0VpLvxwcHa0Mqv7fXGog==} + engines: {node: '>=16.20.2'} + peerDependencies: + rxjs: ^7.4.0 + peerDependenciesMeta: + rxjs: + optional: true + dependencies: + '@cardano-ogmios/client': 6.3.0 + '@cardano-ogmios/schema': 6.3.0 + '@cardano-sdk/crypto': 0.1.26 + '@cardano-sdk/util': 0.15.3 + '@cardano-sdk/util-dev': 0.21.6 + '@foxglove/crc': 0.0.3 + '@scure/base': 1.1.7 + fraction.js: 4.0.1 + ip-address: 8.1.0 + lodash: 4.17.21 + rxjs: 7.8.1 + ts-custom-error: 3.3.1 + ts-log: 2.2.5 + web-encoding: 1.1.5 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - debug + - encoding + - supports-color + - utf-8-validate + dev: false + + /@cardano-sdk/crypto@0.1.26: + resolution: {integrity: sha512-fR3GUdlGj+NCU7JZJN55Mpo57etW0bIYm79d0QRiTOboa+IiaySWBEgXg9IZDVzpC5Xoqh3K2WxRt9+uYrbxlg==} + engines: {node: '>=16.20.2'} + peerDependencies: + '@dcspark/cardano-multiplatform-lib-asmjs': ^3.1.1 + '@dcspark/cardano-multiplatform-lib-browser': ^3.1.1 + '@dcspark/cardano-multiplatform-lib-nodejs': ^3.1.1 + peerDependenciesMeta: + '@dcspark/cardano-multiplatform-lib-asmjs': + optional: true + '@dcspark/cardano-multiplatform-lib-browser': + optional: true + '@dcspark/cardano-multiplatform-lib-nodejs': + optional: true + dependencies: + '@cardano-sdk/util': 0.15.3 + blake2b: 2.1.4 + i: 0.3.7 + libsodium-wrappers-sumo: 0.7.14 + lodash: 4.17.21 + npm: 9.9.3 + pbkdf2: 3.1.2 + ts-custom-error: 3.3.1 + ts-log: 2.2.5 + dev: false + + /@cardano-sdk/dapp-connector@0.12.24(rxjs@7.8.1): + resolution: {integrity: sha512-c6dYQKEAlxfLEpgW0uWMS9JtfrwogDQEQ6VEKJb3AcUOl7OERAfnQ8rey8hIJU1rnqWDPhdVc6o+5wCcAh39CQ==} + engines: {node: '>=16.20.2'} + dependencies: + '@cardano-sdk/core': 0.35.2(rxjs@7.8.1) + '@cardano-sdk/crypto': 0.1.26 + '@cardano-sdk/util': 0.15.3 + ts-custom-error: 3.3.1 + ts-log: 2.2.5 + webextension-polyfill: 0.8.0 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - encoding + - rxjs + - utf-8-validate + dev: false + + /@cardano-sdk/key-management@0.20.11: + resolution: {integrity: sha512-C9pPSiWRq8oPBEsZJ28iigX7vdUH0swbG9ZqAaCvRk3BDDaeYw90HDOwbTdQH/KBsZuQ1I7E1gjfpNXng3Ne8w==} + engines: {node: '>=16.20.2'} + dependencies: + '@cardano-sdk/core': 0.35.2(rxjs@7.8.1) + '@cardano-sdk/crypto': 0.1.26 + '@cardano-sdk/dapp-connector': 0.12.24(rxjs@7.8.1) + '@cardano-sdk/util': 0.15.3 + '@emurgo/cardano-message-signing-nodejs': 1.0.1 + bip39: 3.1.0 + chacha: 2.1.0 + get-random-values: 2.1.0 + lodash: 4.17.21 + pbkdf2: 3.1.2 + rxjs: 7.8.1 + ts-custom-error: 3.3.1 + ts-log: 2.2.5 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - encoding + - utf-8-validate + dev: false + + /@cardano-sdk/util-dev@0.21.6: + resolution: {integrity: sha512-Jp4/kWMJj59tIcap9wc4FZu1IYPFxwU5KCxrUcml7EqKU0wFC1BkTlZL8UGJKPLL/T+/O+vvhxBm5j2yY10dWw==} + engines: {node: '>=16.20.2'} + dependencies: + '@cardano-sdk/core': 0.35.2(rxjs@7.8.1) + '@cardano-sdk/crypto': 0.1.26 + '@cardano-sdk/key-management': 0.20.11 + '@cardano-sdk/util': 0.15.3 + '@types/dockerode': 3.3.30 + axios: 0.28.1 + delay: 5.0.0 + dockerode: 3.3.5 + dockerode-utils: 0.0.7 + envalid: 7.3.1 + get-port-please: 2.6.1 + json-bigint: 1.0.0 + lodash: 4.17.21 + rxjs: 7.8.1 + ts-log: 2.2.5 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - debug + - encoding + - supports-color + - utf-8-validate + dev: false + + /@cardano-sdk/util@0.15.3: + resolution: {integrity: sha512-u7USoeogdMah2GrE0kKR7GJqsIcAa+mcAVer8a3iD4d8Gy2ipgxReMQM8YiYy2XuaFFJFg2fz8QabdRAEp89SQ==} + engines: {node: '>=16.20.2'} + dependencies: + bech32: 2.0.0 + lodash: 4.17.21 + serialize-error: 8.1.0 + ts-custom-error: 3.3.1 + ts-log: 2.2.5 + type-fest: 2.19.0 + dev: false + + /@cardanosolutions/json-bigint@1.0.1: + resolution: {integrity: sha512-mbYL6jtHqMFCZnTFhmkmoeDzHMBino0gMiGQnOJE7CwzZzkK2HCpH0MTBk+84QDadMEGX7iFt7uB+levm1a+bQ==} + dependencies: + bignumber.js: 9.1.2 + dev: false + + /@emurgo/cardano-message-signing-nodejs@1.0.1: + resolution: {integrity: sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==} + dev: false + + /@foxglove/crc@0.0.3: + resolution: {integrity: sha512-DjIZsnL3CyP/yQ/vUYA9cjrD0a/8YXejI5ZmsaOiT16cLfZcTwaCxIN01/ys4jsy+dZCQ/9DnWFn7AEFbiMDaA==} + dev: false + + /@noble/curves@1.4.2: + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + dependencies: + '@noble/hashes': 1.4.0 + dev: false + + /@noble/ed25519@2.1.0: + resolution: {integrity: sha512-KM4qTyXPinyCgMzeYJH/UudpdL+paJXtY3CHtHYZQtBkS8MZoPr4rOikZllIutJe0d06QDQKisyn02gxZ8TcQA==} + dev: false + + /@noble/hashes@1.4.0: + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + dev: false + + /@scure/base@1.1.7: + resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==} + dev: false + + /@scure/bip39@1.3.0: + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + dependencies: + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.7 + dev: false + + /@sinclair/typebox@0.32.34: + resolution: {integrity: sha512-a3Z3ytYl6R/+7ldxx04PO1semkwWlX/8pTqxsPw4quIcIXDFPZhOc1Wx8azWmkU26ccK3mHwcWenn0avNgAKQg==} + dev: false + + /@types/docker-modem@3.0.6: + resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} + dependencies: + '@types/node': 20.14.11 + '@types/ssh2': 1.15.0 + dev: false + + /@types/dockerode@3.3.30: + resolution: {integrity: sha512-MuxQQ7yQ+VzLbrIV2D8K2YqOYBd5Mz4yGbauEipFcn894bLnGwewNKXGKLlb7wpXTG4dn+13lk51qPXmKJ2+YA==} + dependencies: + '@types/docker-modem': 3.0.6 + '@types/node': 20.14.11 + '@types/ssh2': 1.15.0 + dev: false + + /@types/json-bigint@1.0.4: + resolution: {integrity: sha512-ydHooXLbOmxBbubnA7Eh+RpBzuaIiQjh8WGJYQB50JFGFrdxW7JzVlyEV7fAXw0T2sqJ1ysTneJbiyNLqZRAag==} + dev: false + + /@types/node@18.19.41: + resolution: {integrity: sha512-LX84pRJ+evD2e2nrgYCHObGWkiQJ1mL+meAgbvnwk/US6vmMY7S2ygBTGV2Jw91s9vUsLSXeDEkUHZIJGLrhsg==} + dependencies: + undici-types: 5.26.5 + dev: false + + /@types/node@20.14.11: + resolution: {integrity: sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==} + dependencies: + undici-types: 5.26.5 + dev: false + + /@types/node@8.10.66: + resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} + dev: false + + /@types/ssh2@1.15.0: + resolution: {integrity: sha512-YcT8jP5F8NzWeevWvcyrrLB3zcneVjzYY9ZDSMAMboI+2zR1qYWFhwsyOFVzT7Jorn67vqxC0FRiw8YyG9P1ww==} + dependencies: + '@types/node': 18.19.41 + dev: false + + /@zxing/text-encoding@0.9.0: + resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} + requiresBuild: true + dev: false + optional: true + + /asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + dependencies: + safer-buffer: 2.1.2 + dev: false + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false + + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: false + + /axios@0.28.1: + resolution: {integrity: sha512-iUcGA5a7p0mVb4Gm/sy+FSECNkPFT4y7wt6OM/CDpO/OnNCvSs3PoMG8ibrC9jRoGYU0gUK5pXVC4NPXq6lHRQ==} + dependencies: + follow-redirects: 1.15.6 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /b4a@1.6.6: + resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + dev: false + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false + + /bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + dependencies: + tweetnacl: 0.14.5 + dev: false + + /bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + dev: false + + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + dev: false + + /bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + requiresBuild: true + dependencies: + file-uri-to-path: 1.0.0 + dev: false + optional: true + + /bip39@3.1.0: + resolution: {integrity: sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==} + dependencies: + '@noble/hashes': 1.4.0 + dev: false + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + + /blake2b-wasm@2.4.0: + resolution: {integrity: sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w==} + dependencies: + b4a: 1.6.6 + nanoassert: 2.0.0 + dev: false + + /blake2b@2.1.4: + resolution: {integrity: sha512-AyBuuJNI64gIvwx13qiICz6H6hpmjvYS5DGkG6jbXMOT8Z3WUJ3V1X0FlhIoT1b/5JtHE3ki+xjtMvu1nn+t9A==} + dependencies: + blake2b-wasm: 2.4.0 + nanoassert: 2.0.0 + dev: false + + /blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + dev: false + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /buildcheck@0.0.6: + resolution: {integrity: sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dev: false + optional: true + + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + dev: false + + /chacha-native@2.0.3: + resolution: {integrity: sha512-93h+osfjhR2sMHAaapTLlL/COoBPEZ6upicPBQ4GfUyadoMb8t9/M0PKK8kC+F+DEA/Oy3Kg9w3HzY3J1foP3g==} + requiresBuild: true + dependencies: + bindings: 1.5.0 + inherits: 2.0.4 + nan: 2.20.0 + dev: false + optional: true + + /chacha@2.1.0: + resolution: {integrity: sha512-FhVtqaZOiHlOKUkAWfDlJ+oe/O8iPQbCC0pFXJqphr4YQBCZPXa8Mv3j35+W4eWFWCoTUcW2u5IWDDkknygvVA==} + dependencies: + inherits: 2.0.4 + readable-stream: 1.1.14 + optionalDependencies: + chacha-native: 2.0.3 + dev: false + + /chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: false + + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false + + /cpu-features@0.0.10: + resolution: {integrity: sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + buildcheck: 0.0.6 + nan: 2.20.0 + dev: false + optional: true + + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: false + + /create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: false + + /cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: false + + /debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: false + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: false + + /delay@5.0.0: + resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} + engines: {node: '>=10'} + dev: false + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false + + /docker-modem@3.0.8: + resolution: {integrity: sha512-f0ReSURdM3pcKPNS30mxOHSbaFLcknGmQjwSfmbcdOw1XWKXVhukM3NJHhr7NpY9BIyyWQb0EBo3KQvvuU5egQ==} + engines: {node: '>= 8.0'} + dependencies: + debug: 4.3.5 + readable-stream: 3.6.2 + split-ca: 1.0.1 + ssh2: 1.15.0 + transitivePeerDependencies: + - supports-color + dev: false + + /dockerode-utils@0.0.7: + resolution: {integrity: sha512-vxMjHFl54CZ/XNtaaBgeaYchIY1F79nD3ymZkiM1HC5cL9SRAFvsJfplqobsT3cfbLJPaUlHW1nuVJEnlu+SOg==} + dependencies: + '@types/node': 8.10.66 + dev: false + + /dockerode@3.3.5: + resolution: {integrity: sha512-/0YNa3ZDNeLr/tSckmD69+Gq+qVNhvKfAHNeZJBnp7EOP6RGKV8ORrJHkUn20So5wU+xxT7+1n5u8PjHbfjbSA==} + engines: {node: '>= 8.0'} + dependencies: + '@balena/dockerignore': 1.0.2 + docker-modem: 3.0.8 + tar-fs: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + dev: false + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: false + + /envalid@7.3.1: + resolution: {integrity: sha512-KL1YRwn8WcoF/Ty7t+yLLtZol01xr9ZJMTjzoGRM8NaSU+nQQjSWOQKKJhJP2P57bpdakJ9jbxqQX4fGTOicZg==} + engines: {node: '>=8.12'} + dependencies: + tslib: 2.3.1 + dev: false + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: false + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: false + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: false + + /file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + requiresBuild: true + dev: false + optional: true + + /follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: false + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /fraction.js@4.0.1: + resolution: {integrity: sha512-NQYzZw8MUsxSZFQo6E8tKOlmSd/BlDTNOR4puXFSHSwFwNaIlmbortQy5PDN/KnVQ4xWG2NtN0J0hjPw7eE06A==} + dev: false + + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: false + + /fs-memo@1.2.0: + resolution: {integrity: sha512-YEexkCpL4j03jn5SxaMHqcO6IuWuqm8JFUYhyCep7Ao89JIYmB8xoKhK7zXXJ9cCaNXpyNH5L3QtAmoxjoHW2w==} + dev: false + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: false + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + dev: false + + /get-port-please@2.6.1: + resolution: {integrity: sha512-4PDSrL6+cuMM1xs6w36ZIkaKzzE0xzfVBCfebHIJ3FE8iB9oic/ECwPw3iNiD4h1AoJ5XLLBhEviFAVrZsDC5A==} + dependencies: + fs-memo: 1.2.0 + dev: false + + /get-random-values@2.1.0: + resolution: {integrity: sha512-q2yOLpLyA8f9unfv2LV8KVRUFeOIrQVS5cnqpbv6N+ea9j1rmW5dFKj/2Q7CK3juEfDYQgPxGt941VJcmw0jKg==} + engines: {node: 14 || 16 || >=18} + dependencies: + global: 4.4.0 + dev: false + + /global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + dependencies: + min-document: 2.19.0 + process: 0.11.10 + dev: false + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + dev: false + + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + dev: false + + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: false + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: false + + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: false + + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: false + + /hex-encoding@2.0.2: + resolution: {integrity: sha512-NhclxbCmF1NTU9mE0GYEkUrFX5VvnfiHrzcqGbsQJcLT33rE/yqBB+U1bHDuLk86AQyN/hsr+Q/sX3jRxmarhg==} + dependencies: + node-buffer-encoding: 1.0.2 + uint8-encoding: 2.0.0 + dev: false + + /i@0.3.7: + resolution: {integrity: sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==} + engines: {node: '>=0.4'} + dev: false + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: false + + /ip-address@8.1.0: + resolution: {integrity: sha512-Wz91gZKpNKoXtqvY8ScarKYwhXoK4r/b5QuT+uywe/azv0/nUCo7Bh0IRRI7F9DHR06kJNWtzMGLIbXavngbKA==} + engines: {node: '>= 12'} + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.2 + dev: false + + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: false + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: false + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: false + + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.15 + dev: false + + /isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + dev: false + + /isomorphic-ws@4.0.1(ws@7.5.10): + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + dependencies: + ws: 7.5.10 + dev: false + + /jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + dev: false + + /json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + dependencies: + bignumber.js: 9.1.2 + dev: false + + /libsodium-sumo@0.7.14: + resolution: {integrity: sha512-2nDge6qlAjcwyslAhWfVumlkeSNK5+WCfKa2/VEq9prvlT5vP2FR0m0o5hmKaYqfsZ4TQVj5czQsimZvXDB1CQ==} + dev: false + + /libsodium-wrappers-sumo@0.7.14: + resolution: {integrity: sha512-0lm7ZwN5a95J2yUi8R1rgQeeaVDIWnvNzgVmXmZswis4mC+bQtbDrB+QpJlL4qklaKx3hVpJjoc6ubzJFiv64Q==} + dependencies: + libsodium-sumo: 0.7.14 + dev: false + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /min-document@2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + dependencies: + dom-walk: 0.1.2 + dev: false + + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: false + + /nan@2.20.0: + resolution: {integrity: sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==} + requiresBuild: true + dev: false + optional: true + + /nanoassert@2.0.0: + resolution: {integrity: sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==} + dev: false + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false + + /node-buffer-encoding@1.0.2: + resolution: {integrity: sha512-v2QFjf04xWb5Q7cyzbi8qEwe2vw2xJBXT7+pMOLA02+KJZlcJ/6syFYiH96ClXKfOG/kyBeysAuewJ7zfAUYKQ==} + dev: false + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /npm@9.9.3: + resolution: {integrity: sha512-Z1l+rcQ5kYb17F3hHtO601arEpvdRYnCLtg8xo3AGtyj3IthwaraEOexI9903uANkifFbqHC8hT53KIrozWg8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dev: false + bundledDependencies: + - '@isaacs/string-locale-compare' + - '@npmcli/arborist' + - '@npmcli/config' + - '@npmcli/fs' + - '@npmcli/map-workspaces' + - '@npmcli/package-json' + - '@npmcli/promise-spawn' + - '@npmcli/run-script' + - abbrev + - archy + - cacache + - chalk + - ci-info + - cli-columns + - cli-table3 + - columnify + - fastest-levenshtein + - fs-minipass + - glob + - graceful-fs + - hosted-git-info + - ini + - init-package-json + - is-cidr + - json-parse-even-better-errors + - libnpmaccess + - libnpmdiff + - libnpmexec + - libnpmfund + - libnpmhook + - libnpmorg + - libnpmpack + - libnpmpublish + - libnpmsearch + - libnpmteam + - libnpmversion + - make-fetch-happen + - minimatch + - minipass + - minipass-pipeline + - ms + - node-gyp + - nopt + - normalize-package-data + - npm-audit-report + - npm-install-checks + - npm-package-arg + - npm-pick-manifest + - npm-profile + - npm-registry-fetch + - npm-user-validate + - npmlog + - p-map + - pacote + - parse-conflict-json + - proc-log + - qrcode-terminal + - read + - semver + - sigstore + - spdx-expression-parse + - ssri + - supports-color + - tar + - text-table + - tiny-relative-date + - treeverse + - validate-npm-package-name + - which + - write-file-atomic + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: false + + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: false + + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: false + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: false + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: false + + /readable-stream@1.1.14: + resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: false + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: false + + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: false + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.3 + dev: false + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: false + + /serialize-error@8.1.0: + resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==} + engines: {node: '>=10'} + dependencies: + type-fest: 0.20.2 + dev: false + + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + dev: false + + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + + /split-ca@1.0.1: + resolution: {integrity: sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==} + dev: false + + /sprintf-js@1.1.2: + resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} + dev: false + + /ssh2@1.15.0: + resolution: {integrity: sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==} + engines: {node: '>=10.16.0'} + requiresBuild: true + dependencies: + asn1: 0.2.6 + bcrypt-pbkdf: 1.0.2 + optionalDependencies: + cpu-features: 0.0.10 + nan: 2.20.0 + dev: false + + /string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + dev: false + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /tar-fs@2.0.1: + resolution: {integrity: sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: false + + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + + /ts-custom-error@3.3.1: + resolution: {integrity: sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A==} + engines: {node: '>=14.0.0'} + dev: false + + /ts-log@2.2.5: + resolution: {integrity: sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==} + dev: false + + /tslib@2.3.1: + resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} + dev: false + + /tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + dev: false + + /tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + dev: false + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: false + + /type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + dev: false + + /uint8-encoding@2.0.0: + resolution: {integrity: sha512-MQcY+mEuLoHBqAawasWrFbZx1SqUoFU/wVYNGO6lsIxczeO+cNjA1djYHQM3GWU3SaEhKTfG3Z5cE2r+zR6tNw==} + dev: false + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: false + + /uplc-node@0.0.3: + resolution: {integrity: sha512-4vr7+RzsRmzS2xuMMMsAs7/VgUzq0Y6ha03IKY1yvTwTz4JQcrlOB0wISzpQ0wJUCxXCirsWKh95BJdrC9OT+w==} + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: false + + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + dev: false + + /web-encoding@1.1.5: + resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} + dependencies: + util: 0.12.5 + optionalDependencies: + '@zxing/text-encoding': 0.9.0 + dev: false + + /webextension-polyfill@0.8.0: + resolution: {integrity: sha512-a19+DzlT6Kp9/UI+mF9XQopeZ+n2ussjhxHJ4/pmIGge9ijCDz7Gn93mNnjpZAk95T4Tae8iHZ6sSf869txqiQ==} + dev: false + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: false + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: false + + /ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false diff --git a/validators/proposals.ak b/validators/proposals.ak new file mode 100644 index 0000000..a3ae2a9 --- /dev/null +++ b/validators/proposals.ak @@ -0,0 +1,80 @@ +use aiken/builtin +use aiken/bytearray +use aiken/dict +use aiken/hash.{Blake2b_224, Hash} +use aiken/list +use aiken/transaction.{ + InlineDatum, Mint, Output, ScriptContext, Spend, Transaction, +} +use aiken/transaction/credential.{ScriptCredential, VerificationKey} +use aiken/transaction/value.{AssetName, PolicyId} + +type Proposal { + owner: Hash, + data: Data, +} + +const proposal_asset_name = "PROPOSAL" + +type CollateralValue { + policy_id: PolicyId, + asset_name: AssetName, + quantity: Int, +} + +fn add_collateral_value(collateral_value: CollateralValue) { + let CollateralValue { policy_id, asset_name, quantity } = collateral_value + value.add(_, policy_id, asset_name, quantity) +} + +validator(required_collateral: CollateralValue) { + fn new_proposal(proposal: Proposal, context: ScriptContext) -> Bool { + expect ScriptContext { + transaction: Transaction { inputs, outputs, mint, .. }, + purpose: Mint(policy_id), + } = context + // for simplicity we take 0th output + expect [proposal_output, ..] = outputs + expect Output { + value: proposal_value, + datum: InlineDatum(proposal_datum), + reference_script: None, + address: proposal_address, + } = proposal_output + expect Proposal { owner, data }: Proposal = proposal_datum + let proposal_id = builtin.serialise_data(builtin.head_list(inputs)) + and { + bytearray.length(owner) == 28, + (( + proposal_value + |> value.without_lovelace + ) == ( + value.from_asset(policy_id, proposal_asset_name, 1) + |> add_collateral_value(required_collateral) + ))?, + (proposal_address.payment_credential == ScriptCredential(policy_id))?, + (( + mint + |> value.from_minted_value + |> value.tokens(policy_id) + |> dict.to_pairs + ) == [Pair(proposal_asset_name, 1)])?, + } + } + + fn reclaim_collateral( + datum: Proposal, + redeemer, + context: ScriptContext, + ) -> Bool { + expect ScriptContext { + transaction: Transaction { extra_signatories, .. }, + purpose: Spend(input), + } = context + let proposal_accepted = True + and { + list.has(extra_signatories, datum.owner), + proposal_accepted, + } + } +} diff --git a/validators/staking.ak b/validators/staking.ak new file mode 100644 index 0000000..1e6ca6d --- /dev/null +++ b/validators/staking.ak @@ -0,0 +1,29 @@ +use aiken/hash.{Blake2b_224, Hash} +use aiken/transaction.{ + InlineDatum, Mint, Output, OutputReference, ScriptContext, Spend, Transaction, +} +use aiken/transaction/credential.{Script} + +type AssetClass { + policyId: Hash, + assetName: ByteArray, +} + +type Redeemer { + Stake + Unstake +} + +validator(quorum_nft: AssetClass) { + // Staking is to mint and lock + fn stake(redeemer: Redeemer, context: ScriptContext) -> Bool { + when redeemer is { + Stake -> todo + Unstake -> todo + } + } + + fn unstake(datum, redeemer, context: ScriptContext) -> Bool { + todo + } +}