{"id":40500103,"url":"https://github.com/madfish-solutions/quipuswap-sdk","last_synced_at":"2026-01-20T19:05:00.745Z","repository":{"id":48441415,"uuid":"333808111","full_name":"madfish-solutions/quipuswap-sdk","owner":"madfish-solutions","description":"🔭  QuipuSwap SDK for JavaScript.","archived":false,"fork":false,"pushed_at":"2023-09-05T13:36:48.000Z","size":474,"stargazers_count":19,"open_issues_count":3,"forks_count":10,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-30T23:13:01.063Z","etag":null,"topics":["dapp","defi","quipuswap","sdk","smart-contracts","tezos"],"latest_commit_sha":null,"homepage":"https://quipuswap.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/madfish-solutions.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-28T15:56:07.000Z","updated_at":"2025-02-11T10:09:50.000Z","dependencies_parsed_at":"2024-06-19T11:14:08.136Z","dependency_job_id":"538dc0b1-fa7e-4d96-b32e-080c1da7cfcb","html_url":"https://github.com/madfish-solutions/quipuswap-sdk","commit_stats":{"total_commits":82,"total_committers":6,"mean_commits":"13.666666666666666","dds":0.1585365853658537,"last_synced_commit":"983bd06e4105d4a165862b263df3387d4ddd2542"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/madfish-solutions/quipuswap-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madfish-solutions%2Fquipuswap-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madfish-solutions%2Fquipuswap-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madfish-solutions%2Fquipuswap-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madfish-solutions%2Fquipuswap-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/madfish-solutions","download_url":"https://codeload.github.com/madfish-solutions/quipuswap-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madfish-solutions%2Fquipuswap-sdk/sbom","scorecard":{"id":610256,"data":{"date":"2025-08-11","repo":{"name":"github.com/madfish-solutions/quipuswap-sdk","commit":"983bd06e4105d4a165862b263df3387d4ddd2542"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 3/24 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/madfish-solutions/quipuswap-sdk/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/madfish-solutions/quipuswap-sdk/main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/madfish-solutions/quipuswap-sdk/main.yml/main?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 9 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"46 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-xq7p-g2vc-g82p","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-w8qv-6jwh-64r5","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-434g-2637-qmqr","Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m","Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw","Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p","Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747","Warn: Project is vulnerable to: GHSA-vjh7-7g9h-fjfh","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-ww39-953v-wcq6","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-5fw9-fq32-wv5p","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-44c6-4v22-4mhx","Warn: Project is vulnerable to: GHSA-4x5v-gmq8-25ch","Warn: Project is vulnerable to: GHSA-4rq4-32rv-6wp6","Warn: Project is vulnerable to: GHSA-64g7-mvw6-v9qj","Warn: Project is vulnerable to: GHSA-4wf5-vphf-c2xc","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-jgrx-mgxx-jf9v","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-6fc8-4gx4-v693","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-21T02:28:12.431Z","repository_id":48441415,"created_at":"2025-08-21T02:28:12.432Z","updated_at":"2025-08-21T02:28:12.432Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28609619,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T18:56:40.769Z","status":"ssl_error","status_checked_at":"2026-01-20T18:54:26.653Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dapp","defi","quipuswap","sdk","smart-contracts","tezos"],"created_at":"2026-01-20T19:04:52.008Z","updated_at":"2026-01-20T19:04:58.822Z","avatar_url":"https://github.com/madfish-solutions.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Quipuswap SDK\n\n## Install\n\n```bash\nyarn add @taquito/taquito @quipuswap/sdk\n```\n\n## Usage\n\n### Tips\n\n- This module works only with natural numbers. There are no decimals or metadata stuff.\n- `Asset` type. If `id` property exists in token structure, the module assumes that this is an FA2 token.\n\n```typescript\n// Contract = taquito contract\ntype ContractOrAddress = Contract | string;\n\ninterface Token {\n  contract: ContractOrAddress;\n  id?: BigNumber.Value;\n}\n\ninterface FA2Token extends Token {\n  id: BigNumber.Value;\n}\n\ntype Asset = Token | \"tez\";\n```\n\n### Configure\n\n```typescript\nimport { TezosToolkit, MichelCodecPacker } from \"@taquito/taquito\";\nimport { ReadOnlySigner } from \"@quipuswap/sdk\";\n\nconst publicKeyHash = \"tz1fVQangAfb9J1hRRMP2bSB6LvASD6KpY8A\";\nconst publicKey = \"edpkvWbk81uh1DEvdWKR4g1bjyTGhdu1mDvznPUFE2zDwNsLXrEb9K\";\n\nconst tezos = new TezosToolkit(\"https://hangzhounet.smartpy.io\");\ntezos.setSignerProvider(new ReadOnlySigner(publicKeyHash, publicKey));\n\n// Or if you using `privateKey`\nimport { InMemorySigner } from \"@taquito/signer\";\n\nInMemorySigner.fromSecretKey(privateKey).then((signer) =\u003e\n  tezos.setSignerProvider(signer)\n);\n```\n\n### Swap\n\n```typescript\nimport { swap, batchify } from \"@quipuswap/sdk\";\n\nconst tezos = new TezosToolkit(); // Full sample in \"Configure\" section\n\nconst factories = {\n  fa1_2Factory: \"KT1HrQWkSFe7ugihjoMWwQ7p8ja9e18LdUFn\",\n  fa2Factory: \"KT1Dx3SZ6r4h2BZNQM8xri1CtsdNcAoXLGZB\",\n};\n\n(async () =\u003e {\n  try {\n    const fromAsset = \"tez\";\n    const toAsset = {\n      contract: \"KT1EKo1Eihucz9N4cQyaDKeYRoMzTEoiZRAT\",\n      id: 0,\n    };\n    const inputValue = 1_000_000; // in mutez (without decimals)\n    const slippageTolerance = 0.005; // 0.5%\n\n    const swapParams = await swap(\n      tezos,\n      factories,\n      fromAsset,\n      toAsset,\n      inputValue,\n      slippageTolerance\n    );\n\n    const op = await batchify(tezos.wallet.batch([]), swapParams).send();\n\n    console.info(op.hash);\n    await op.confirmation();\n    console.info(\"Complete\");\n  } catch (err) {\n    console.error(err);\n  }\n})();\n```\n\n### Estimate swap\n\n```typescript\nimport { estimateSwap } from \"@quipuswap/sdk\";\n\nconst tezos = new TezosToolkit(); // Full sample in \"Configure\" section\n\nconst factories = {\n  fa1_2Factory: \"KT1HrQWkSFe7ugihjoMWwQ7p8ja9e18LdUFn\",\n  fa2Factory: \"KT1Dx3SZ6r4h2BZNQM8xri1CtsdNcAoXLGZB\",\n};\n\n(async () =\u003e {\n  try {\n    const fromAsset = \"tez\";\n    const toAsset = {\n      contract: \"KT1EKo1Eihucz9N4cQyaDKeYRoMzTEoiZRAT\",\n      id: 0,\n    };\n    const inputValue = 10_000_000; // in mutez (without decimals)\n\n    const estimatedOutputValue = await estimateSwap(\n      tezos,\n      factories,\n      fromAsset,\n      toAsset,\n      { inputValue }\n    );\n\n    console.info({ estimatedOutputValue });\n\n    const estimatedInputValue = await estimateSwap(\n      tezos,\n      factories,\n      fromAsset,\n      toAsset,\n      { outputValue: estimatedOutputValue }\n    );\n\n    console.info({ estimatedInputValue });\n  } catch (err) {\n    console.error(err);\n  }\n})();\n```\n\n- If you already have dexes, you can use it for `estimateSwap()`:\n\n```typescript\nimport { estimateSwap } from \"@quipuswap/sdk\";\n\nconst tezos = new TezosToolkit(); // Full sample in \"Configure\" section\n\nconst factories = {\n  fa1_2Factory: \"KT1HrQWkSFe7ugihjoMWwQ7p8ja9e18LdUFn\",\n  fa2Factory: \"KT1Dx3SZ6r4h2BZNQM8xri1CtsdNcAoXLGZB\",\n};\n\n(async () =\u003e {\n  try {\n    const fromAsset = \"tez\";\n    const toAsset = {\n      contract: \"KT1EKo1Eihucz9N4cQyaDKeYRoMzTEoiZRAT\",\n      id: 0,\n    };\n    const inputValue = 10_000_000; // in mutez (without decimals)\n\n    const inputDex = await findDex(tezos, factories, toAsset);\n    const estimatedOutputValue = await estimateSwap(\n      tezos,\n      factories,\n      fromAsset,\n      toAsset,\n      { inputValue },\n      { inputDex }\n    );\n\n    console.info({ estimatedOutputValue });\n  } catch (err) {\n    console.error(err);\n  }\n})();\n```\n\n### Add liquidity\n\n```typescript\nimport { findDex, addLiquidity } from \"@quipuswap/sdk\";\n\nconst tezos = new TezosToolkit(); // Full sample in \"Configure\" section\n\nconst factories = {\n  fa1_2Factory: \"KT1HrQWkSFe7ugihjoMWwQ7p8ja9e18LdUFn\",\n  fa2Factory: \"KT1Dx3SZ6r4h2BZNQM8xri1CtsdNcAoXLGZB\",\n};\nconst token = {\n  contract: \"KT1EKo1Eihucz9N4cQyaDKeYRoMzTEoiZRAT\",\n  id: 0,\n};\n\n(async () =\u003e {\n  try {\n    const dex = await findDex(tezos, factories, token);\n\n    const addLiquidityParams = await addLiquidity(\n      tezos,\n      dex,\n      { tezValue: 10_000_000 }\n      // or { tokenValue: 4_000 }\n      // or { tezValue: 10_000_000, tokenValue: 4_000 }\n      //\n      // @TIP:\n      // If one of the properties is omitted,\n      // it will estimate another automatically\n    );\n\n    const op = await batchify(\n      tezos.wallet.batch([]),\n      addLiquidityParams\n    ).send();\n\n    console.info(op.hash);\n    await op.confirmation();\n    console.info(\"Complete\");\n  } catch (err) {\n    console.error(err);\n  }\n})();\n```\n\n### Remove liquidity\n\n```typescript\nimport { findDex, removeLiquidity } from \"@quipuswap/sdk\";\n\nconst tezos = new TezosToolkit(); // Full sample in \"Configure\" section\n\nconst factories = {\n  fa1_2Factory: \"KT1HrQWkSFe7ugihjoMWwQ7p8ja9e18LdUFn\",\n  fa2Factory: \"KT1Dx3SZ6r4h2BZNQM8xri1CtsdNcAoXLGZB\",\n};\nconst token = {\n  contract: \"KT1EKo1Eihucz9N4cQyaDKeYRoMzTEoiZRAT\",\n  id: 0,\n};\n\n(async () =\u003e {\n  try {\n    const account = \"tz1Lx...\";\n    const slippageTolerance = 0.005; // 0.5%\n\n    const dex = await findDex(tezos, factories, token);\n    const share = await getLiquidityShare(tezos, dex, account);\n\n    const lpTokenValue = share.total;\n    const removeLiquidityParams = await removeLiquidity(\n      tezos,\n      dex,\n      lpTokenValue,\n      slippageTolerance\n    );\n\n    const op = await batchify(\n      tezos.wallet.batch([]),\n      removeLiquidityParams\n    ).send();\n\n    console.info(op.hash);\n    await op.confirmation();\n    console.info(\"Complete\");\n  } catch (err) {\n    console.error(err);\n  }\n})();\n```\n\n### Initialize liquidity\n\n```typescript\nimport { findDex, initializeLiquidity } from \"@quipuswap/sdk\";\n\nconst tezos = new TezosToolkit(); // Full sample in \"Configure\" section\n\nconst factories = {\n  fa1_2Factory: \"KT1HrQWkSFe7ugihjoMWwQ7p8ja9e18LdUFn\",\n  fa2Factory: \"KT1Dx3SZ6r4h2BZNQM8xri1CtsdNcAoXLGZB\",\n};\nconst token = {\n  contract: \"KT1EKo1Eihucz9N4cQyaDKeYRoMzTEoiZRAT\",\n  id: 0,\n};\n\n(async () =\u003e {\n  try {\n    const tokenValue = 4_000;\n    const tezValue = 10_000_000;\n\n    const initializeLiquidityParams = await initializeLiquidity(\n      tezos,\n      factories,\n      token,\n      tokenValue,\n      tezValue\n    );\n\n    const op = await batchify(\n      tezos.wallet.batch([]),\n      initializeLiquidityParams\n    ).send();\n\n    console.info(op.hash);\n    await op.confirmation();\n    console.info(\"Complete\");\n  } catch (err) {\n    console.error(err);\n  }\n})();\n```\n\n### Get token price\n\n```typescript\nimport { findDex, estimateTezInToken } from \"@quipuswap/sdk\";\n\nconst tezos = new TezosToolkit(); // Full sample in \"Configure\" section\n\nconst factories = {\n  fa1_2Factory: \"KT1HrQWkSFe7ugihjoMWwQ7p8ja9e18LdUFn\",\n  fa2Factory: \"KT1Dx3SZ6r4h2BZNQM8xri1CtsdNcAoXLGZB\",\n};\nconst token = {\n  contract: \"KT1EKo1Eihucz9N4cQyaDKeYRoMzTEoiZRAT\",\n  id: 0,\n};\n\n(async () =\u003e {\n  try {\n    const dex = await findDex(tezos, factories, token);\n    const dexStorage = await dex.contract.storage();\n\n    const tokenValue = 4_000;\n    const inTezValue = estimateTezInToken(dexStorage, tokenValue);\n\n    console.info(`4_000 tokens in tez: ${inTezValue}`);\n  } catch (err) {\n    console.error(err);\n  }\n})();\n```\n\n# TSDX User Guide\n\nCongrats! You just saved yourself hours of work by bootstrapping this project with TSDX. Let’s get you oriented with what’s here and how to use it.\n\n\u003e This TSDX setup is meant for developing libraries (not apps!) that can be published to NPM. If you’re looking to build a Node app, you could use `ts-node-dev`, plain `ts-node`, or simple `tsc`.\n\n\u003e If you’re new to TypeScript, checkout [this handy cheatsheet](https://devhints.io/typescript)\n\n## Commands\n\nTSDX scaffolds your new library inside `/src`.\n\nTo run TSDX, use:\n\n```bash\nnpm start # or yarn start\n```\n\nThis builds to `/dist` and runs the project in watch mode so any edits you save inside `src` causes a rebuild to `/dist`.\n\nTo do a one-off build, use `npm run build` or `yarn build`.\n\nTo run tests, use `npm test` or `yarn test`.\n\n## Configuration\n\nCode quality is set up for you with `prettier`, `husky`, and `lint-staged`. Adjust the respective fields in `package.json` accordingly.\n\n### Jest\n\nJest tests are set up to run with `npm test` or `yarn test`.\n\n### Bundle Analysis\n\n[`size-limit`](https://github.com/ai/size-limit) is set up to calculate the real cost of your library with `npm run size` and visualize the bundle with `npm run analyze`.\n\n#### Setup Files\n\nThis is the folder structure we set up for you:\n\n```txt\n/src\n  index.tsx       # EDIT THIS\n/test\n  blah.test.tsx   # EDIT THIS\n.gitignore\npackage.json\nREADME.md         # EDIT THIS\ntsconfig.json\n```\n\n### Rollup\n\nTSDX uses [Rollup](https://rollupjs.org) as a bundler and generates multiple rollup configs for various module formats and build settings. See [Optimizations](#optimizations) for details.\n\n### TypeScript\n\n`tsconfig.json` is set up to interpret `dom` and `esnext` types, as well as `react` for `jsx`. Adjust according to your needs.\n\n## Continuous Integration\n\n### GitHub Actions\n\nTwo actions are added by default:\n\n- `main` which installs deps w/ cache, lints, tests, and builds on all pushes against a Node and OS matrix\n- `size` which comments cost comparison of your library on every pull request using [`size-limit`](https://github.com/ai/size-limit)\n\n## Optimizations\n\nPlease see the main `tsdx` [optimizations docs](https://github.com/palmerhq/tsdx#optimizations). In particular, know that you can take advantage of development-only optimizations:\n\n```js\n// ./types/index.d.ts\ndeclare var __DEV__: boolean;\n\n// inside your code...\nif (__DEV__) {\n  console.log(\"foo\");\n}\n```\n\nYou can also choose to install and use [invariant](https://github.com/palmerhq/tsdx#invariant) and [warning](https://github.com/palmerhq/tsdx#warning) functions.\n\n## Module Formats\n\nCJS, ESModules, and UMD module formats are supported.\n\nThe appropriate paths are configured in `package.json` and `dist/index.js` accordingly. Please report if any issues are found.\n\n## Named Exports\n\nPer Palmer Group guidelines, [always use named exports.](https://github.com/palmerhq/typescript#exports) Code split inside your React app instead of your React library.\n\n## Including Styles\n\nThere are many ways to ship styles, including with CSS-in-JS. TSDX has no opinion on this, configure how you like.\n\nFor vanilla CSS, you can include it at the root directory and add it to the `files` section in your `package.json`, so that it can be imported separately by your users and run through their bundler's loader.\n\n## Publishing to NPM\n\nWe recommend using [np](https://github.com/sindresorhus/np).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadfish-solutions%2Fquipuswap-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmadfish-solutions%2Fquipuswap-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadfish-solutions%2Fquipuswap-sdk/lists"}