From 0d024a1e092e3566c6ba6554ce6f30a6d6b2d345 Mon Sep 17 00:00:00 2001 From: Jake Hartnell Date: Tue, 30 Jun 2026 05:58:45 -0700 Subject: [PATCH 01/84] Juno agent/dex guards 20260629 (#1) Merge Astroport-Juno DEX guard work after CI recovery. --- .github/workflows/check_artifacts.yml | 4 + .github/workflows/tests_and_checks.yml | 20 + .gitignore | 2 + contracts/tokenomics/incentives/src/reply.rs | 3 +- deployment/MAINNET_DEPLOYMENT.md | 309 +++ deployment/README.md | 130 ++ deployment/frontend-release-checklist.md | 41 + deployment/juno-v1-frontend-config.d.ts | 44 + deployment/juno-v1-frontend-config.example.ts | 73 + deployment/juno-v1-readiness-plan.md | 313 +++ deployment/juno-v1-testnet.template.json | 130 ++ deployment/operator-tx-checklist.md | 112 + .../tests/incentives_fake_pair_rejected.rs | 62 +- .../tests/incentives_migrate_legacy_config.rs | 23 +- .../tests/incentives_stuck_funds_recovered.rs | 8 +- packages/astroport/src/incentives.rs | 6 +- .../astroport_juno_types/tests/wire_drift.rs | 40 +- planning/00-overview.md | 25 + planning/01-strip-list.md | 8 +- planning/04-incentives-types-decision.md | 52 +- .../13-scope-guard-verification-2026-06-28.md | 42 + planning/14-schema-scope-guard-2026-06-28.md | 68 + .../15-juno-v1-guard-readiness-2026-06-29.md | 54 + planning/16-ci-artifact-guard-2026-06-29.md | 48 + .../17-frontend-schema-surface-2026-06-29.md | 29 + ...18-deployment-template-guard-2026-06-29.md | 47 + ...ci-deployment-template-guard-2026-06-29.md | 39 + planning/20-ci-wiring-guard-2026-06-29.md | 42 + .../21-deployment-fill-script-2026-06-29.md | 42 + planning/22-deployment-readme-2026-06-29.md | 51 + ...23-tx-json-extraction-helper-2026-06-29.md | 37 + ...4-tx-extractor-fixture-guard-2026-06-29.md | 38 + ...25-deployment-command-bundle-2026-06-29.md | 38 + ...-operator-tx-checklist-guard-2026-06-29.md | 40 + planning/27-dry-run-tx-fixtures-2026-06-29.md | 36 + planning/28-dry-run-ci-wiring-2026-06-29.md | 31 + ...9-deployment-gitignore-guard-2026-06-29.md | 45 + .../30-frontend-config-guard-2026-06-29.md | 32 + ...-dry-run-frontend-validation-2026-06-29.md | 32 + .../32-frontend-types-handoff-2026-06-29.md | 49 + .../33-frontend-example-guard-2026-06-29.md | 38 + ...-frontend-readme-consumption-2026-06-29.md | 32 + .../35-deployment-readme-guard-2026-06-29.md | 35 + ...-frontend-handoff-sync-guard-2026-06-29.md | 47 + ...tend-release-checklist-guard-2026-06-29.md | 38 + .../astro-token-converter.json | 217 -- .../astro-token-converter/raw/execute.json | 107 - .../raw/instantiate.json | 101 - .../astroport-incentives.json | 168 +- schemas/astroport-incentives/raw/execute.json | 98 +- .../astroport-incentives/raw/instantiate.json | 15 +- schemas/astroport-incentives/raw/query.json | 2 +- .../raw/response_to_config.json | 47 +- .../raw/response_to_pool_info.json | 2 +- .../raw/response_to_reward_info.json | 2 +- schemas/astroport-maker/astroport-maker.json | 1409 ------------- schemas/astroport-maker/raw/execute.json | 576 ------ schemas/astroport-maker/raw/instantiate.json | 183 -- schemas/astroport-maker/raw/migrate.json | 56 - schemas/astroport-maker/raw/query.json | 128 -- .../raw/response_to_balances.json | 104 - .../raw/response_to_bridges.json | 18 - .../raw/response_to_config.json | 254 --- .../raw/response_to_query_seize_config.json | 82 - .../astroport-pair-concentrated-duality.json | 1807 ----------------- .../raw/execute.json | 486 ----- .../raw/instantiate.json | 156 -- .../raw/query.json | 364 ---- .../raw/response_to_asset_balance_at.json | 18 - .../raw/response_to_config.json | 68 - .../raw/response_to_cumulative_prices.json | 135 -- .../raw/response_to_observe.json | 26 - .../raw/response_to_pair.json | 143 -- .../raw/response_to_pool.json | 114 -- .../raw/response_to_query_compute_d.json | 6 - .../raw/response_to_reverse_simulation.json | 44 - .../raw/response_to_share.json | 94 - .../raw/response_to_simulate_provide.json | 6 - .../raw/response_to_simulate_withdraw.json | 94 - .../raw/response_to_simulation.json | 44 - .../astroport-pair-concentrated-sale-tax.json | 1730 ---------------- .../raw/execute.json | 383 ---- .../raw/instantiate.json | 156 -- .../raw/migrate.json | 7 - .../raw/query.json | 378 ---- .../raw/response_to_asset_balance_at.json | 18 - .../raw/response_to_compute_d.json | 6 - .../raw/response_to_config.json | 68 - .../raw/response_to_cumulative_prices.json | 135 -- .../raw/response_to_lp_price.json | 6 - .../raw/response_to_observe.json | 26 - .../raw/response_to_pair.json | 143 -- .../raw/response_to_pool.json | 114 -- .../raw/response_to_reverse_simulation.json | 44 - .../raw/response_to_share.json | 94 - .../raw/response_to_simulate_provide.json | 6 - .../raw/response_to_simulate_withdraw.json | 94 - .../raw/response_to_simulation.json | 44 - .../astroport-pair-concentrated.json | 1730 ---------------- .../raw/execute.json | 383 ---- .../raw/instantiate.json | 156 -- .../raw/migrate.json | 7 - .../raw/query.json | 378 ---- .../raw/response_to_asset_balance_at.json | 18 - .../raw/response_to_compute_d.json | 6 - .../raw/response_to_config.json | 68 - .../raw/response_to_cumulative_prices.json | 135 -- .../raw/response_to_lp_price.json | 6 - .../raw/response_to_observe.json | 26 - .../raw/response_to_pair.json | 143 -- .../raw/response_to_pool.json | 114 -- .../raw/response_to_reverse_simulation.json | 44 - .../raw/response_to_share.json | 94 - .../raw/response_to_simulate_provide.json | 6 - .../raw/response_to_simulate_withdraw.json | 94 - .../raw/response_to_simulation.json | 44 - .../astroport-pair-converter.json | 1428 ------------- .../astroport-pair-converter/raw/execute.json | 324 --- .../raw/instantiate.json | 101 - .../astroport-pair-converter/raw/migrate.json | 7 - .../astroport-pair-converter/raw/query.json | 303 --- .../raw/response_to_asset_balance_at.json | 18 - .../raw/response_to_config.json | 57 - .../raw/response_to_cumulative_prices.json | 135 -- .../raw/response_to_observe.json | 26 - .../raw/response_to_pair.json | 147 -- .../raw/response_to_pool.json | 114 -- .../raw/response_to_query_compute_d.json | 6 - .../raw/response_to_reverse_simulation.json | 44 - .../raw/response_to_share.json | 94 - .../raw/response_to_simulation.json | 44 - .../astroport-pair-stable.json | 1710 ---------------- .../astroport-pair-stable/raw/execute.json | 383 ---- .../raw/instantiate.json | 156 -- .../astroport-pair-stable/raw/migrate.json | 7 - schemas/astroport-pair-stable/raw/query.json | 364 ---- .../raw/response_to_asset_balance_at.json | 18 - .../raw/response_to_config.json | 68 - .../raw/response_to_cumulative_prices.json | 135 -- .../raw/response_to_observe.json | 26 - .../raw/response_to_pair.json | 143 -- .../raw/response_to_pool.json | 114 -- .../raw/response_to_query_compute_d.json | 6 - .../raw/response_to_reverse_simulation.json | 44 - .../raw/response_to_share.json | 94 - .../raw/response_to_simulate_provide.json | 6 - .../raw/response_to_simulate_withdraw.json | 94 - .../raw/response_to_simulation.json | 44 - .../astroport-pair-xastro.json | 1704 ---------------- .../astroport-pair-xastro/raw/execute.json | 383 ---- .../raw/instantiate.json | 156 -- schemas/astroport-pair-xastro/raw/query.json | 364 ---- .../raw/response_to_asset_balance_at.json | 18 - .../raw/response_to_config.json | 68 - .../raw/response_to_cumulative_prices.json | 135 -- .../raw/response_to_observe.json | 26 - .../raw/response_to_pair.json | 143 -- .../raw/response_to_pool.json | 114 -- .../raw/response_to_query_compute_d.json | 6 - .../raw/response_to_reverse_simulation.json | 44 - .../raw/response_to_share.json | 94 - .../raw/response_to_simulate_provide.json | 6 - .../raw/response_to_simulate_withdraw.json | 94 - .../raw/response_to_simulation.json | 44 - .../astroport-pair-xyk-sale-tax.json | 1763 ---------------- .../raw/execute.json | 383 ---- .../raw/instantiate.json | 156 -- .../raw/migrate.json | 60 - .../raw/query.json | 364 ---- .../raw/response_to_asset_balance_at.json | 18 - .../raw/response_to_config.json | 68 - .../raw/response_to_cumulative_prices.json | 135 -- .../raw/response_to_observe.json | 26 - .../raw/response_to_pair.json | 143 -- .../raw/response_to_pool.json | 114 -- .../raw/response_to_query_compute_d.json | 6 - .../raw/response_to_reverse_simulation.json | 44 - .../raw/response_to_share.json | 94 - .../raw/response_to_simulate_provide.json | 6 - .../raw/response_to_simulate_withdraw.json | 94 - .../raw/response_to_simulation.json | 44 - .../astroport-staking/astroport-staking.json | 319 --- schemas/astroport-staking/raw/execute.json | 83 - .../astroport-staking/raw/instantiate.json | 33 - schemas/astroport-staking/raw/query.json | 116 -- .../raw/response_to_balance_at.json | 6 - .../raw/response_to_config.json | 21 - .../raw/response_to_total_deposit.json | 6 - .../raw/response_to_total_shares.json | 6 - .../raw/response_to_total_supply_at.json | 6 - .../raw/response_to_tracker_config.json | 33 - .../astroport-vesting/astroport-vesting.json | 868 -------- schemas/astroport-vesting/raw/execute.json | 283 --- .../astroport-vesting/raw/instantiate.json | 80 - schemas/astroport-vesting/raw/migrate.json | 16 - schemas/astroport-vesting/raw/query.json | 129 -- .../raw/response_to_available_amount.json | 6 - .../raw/response_to_config.json | 84 - .../raw/response_to_timestamp.json | 7 - .../raw/response_to_vesting_account.json | 119 -- .../raw/response_to_vesting_accounts.json | 136 -- .../astroport-whitelist.json | 1301 +----------- schemas/astroport-whitelist/raw/execute.json | 1313 +----------- .../astroport-xastro-token.json | 1340 ------------ .../astroport-xastro-token/raw/execute.json | 475 ----- .../raw/instantiate.json | 208 -- schemas/astroport-xastro-token/raw/query.json | 229 --- .../raw/response_to_all_accounts.json | 16 - .../raw/response_to_all_allowances.json | 101 - .../raw/response_to_allowance.json | 82 - .../raw/response_to_balance.json | 20 - .../raw/response_to_balance_at.json | 20 - .../raw/response_to_download_logo.json | 25 - .../raw/response_to_marketing_info.json | 74 - .../raw/response_to_minter.json | 41 - .../raw/response_to_token_info.json | 34 - .../raw/response_to_total_supply_at.json | 6 - scripts/build_juno_v1_deployment_command.py | 181 ++ .../build_juno_v1_frontend_release_bundle.py | 197 ++ scripts/check_juno_v1_artifacts.py | 86 + scripts/check_juno_v1_ci_wiring.py | 136 ++ scripts/check_juno_v1_deployment_command.py | 112 + scripts/check_juno_v1_deployment_gitignore.py | 103 + scripts/check_juno_v1_deployment_readme.py | 127 ++ scripts/check_juno_v1_deployment_template.py | 135 ++ scripts/check_juno_v1_dry_run_txs.py | 110 + scripts/check_juno_v1_frontend_config.py | 158 ++ scripts/check_juno_v1_frontend_example.py | 138 ++ .../check_juno_v1_frontend_handoff_sync.py | 136 ++ .../check_juno_v1_frontend_release_bundle.py | 149 ++ ...heck_juno_v1_frontend_release_checklist.py | 132 ++ scripts/check_juno_v1_operator_checklist.py | 113 ++ scripts/check_juno_v1_schemas.py | 69 + scripts/check_juno_v1_scope.py | 96 + scripts/check_juno_v1_tx_extractor.py | 162 ++ scripts/extract_juno_v1_tx_sets.py | 178 ++ scripts/fill_juno_v1_deployment_config.py | 210 ++ scripts/generate_juno_v1_dry_run_txs.py | 103 + scripts/generate_juno_v1_frontend_types.py | 165 ++ scripts/summarize_juno_v1_schema_surface.py | 112 + 240 files changed, 5686 insertions(+), 34754 deletions(-) create mode 100644 deployment/MAINNET_DEPLOYMENT.md create mode 100644 deployment/README.md create mode 100644 deployment/frontend-release-checklist.md create mode 100644 deployment/juno-v1-frontend-config.d.ts create mode 100644 deployment/juno-v1-frontend-config.example.ts create mode 100644 deployment/juno-v1-readiness-plan.md create mode 100644 deployment/juno-v1-testnet.template.json create mode 100644 deployment/operator-tx-checklist.md create mode 100644 planning/13-scope-guard-verification-2026-06-28.md create mode 100644 planning/14-schema-scope-guard-2026-06-28.md create mode 100644 planning/15-juno-v1-guard-readiness-2026-06-29.md create mode 100644 planning/16-ci-artifact-guard-2026-06-29.md create mode 100644 planning/17-frontend-schema-surface-2026-06-29.md create mode 100644 planning/18-deployment-template-guard-2026-06-29.md create mode 100644 planning/19-ci-deployment-template-guard-2026-06-29.md create mode 100644 planning/20-ci-wiring-guard-2026-06-29.md create mode 100644 planning/21-deployment-fill-script-2026-06-29.md create mode 100644 planning/22-deployment-readme-2026-06-29.md create mode 100644 planning/23-tx-json-extraction-helper-2026-06-29.md create mode 100644 planning/24-tx-extractor-fixture-guard-2026-06-29.md create mode 100644 planning/25-deployment-command-bundle-2026-06-29.md create mode 100644 planning/26-operator-tx-checklist-guard-2026-06-29.md create mode 100644 planning/27-dry-run-tx-fixtures-2026-06-29.md create mode 100644 planning/28-dry-run-ci-wiring-2026-06-29.md create mode 100644 planning/29-deployment-gitignore-guard-2026-06-29.md create mode 100644 planning/30-frontend-config-guard-2026-06-29.md create mode 100644 planning/31-dry-run-frontend-validation-2026-06-29.md create mode 100644 planning/32-frontend-types-handoff-2026-06-29.md create mode 100644 planning/33-frontend-example-guard-2026-06-29.md create mode 100644 planning/34-frontend-readme-consumption-2026-06-29.md create mode 100644 planning/35-deployment-readme-guard-2026-06-29.md create mode 100644 planning/36-frontend-handoff-sync-guard-2026-06-29.md create mode 100644 planning/37-frontend-release-checklist-guard-2026-06-29.md delete mode 100644 schemas/astro-token-converter/astro-token-converter.json delete mode 100644 schemas/astro-token-converter/raw/execute.json delete mode 100644 schemas/astro-token-converter/raw/instantiate.json delete mode 100644 schemas/astroport-maker/astroport-maker.json delete mode 100644 schemas/astroport-maker/raw/execute.json delete mode 100644 schemas/astroport-maker/raw/instantiate.json delete mode 100644 schemas/astroport-maker/raw/migrate.json delete mode 100644 schemas/astroport-maker/raw/query.json delete mode 100644 schemas/astroport-maker/raw/response_to_balances.json delete mode 100644 schemas/astroport-maker/raw/response_to_bridges.json delete mode 100644 schemas/astroport-maker/raw/response_to_config.json delete mode 100644 schemas/astroport-maker/raw/response_to_query_seize_config.json delete mode 100644 schemas/astroport-pair-concentrated-duality/astroport-pair-concentrated-duality.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/execute.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/instantiate.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/query.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/response_to_asset_balance_at.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/response_to_config.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/response_to_cumulative_prices.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/response_to_observe.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/response_to_pair.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/response_to_pool.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/response_to_query_compute_d.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/response_to_reverse_simulation.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/response_to_share.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/response_to_simulate_provide.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/response_to_simulate_withdraw.json delete mode 100644 schemas/astroport-pair-concentrated-duality/raw/response_to_simulation.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/astroport-pair-concentrated-sale-tax.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/execute.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/instantiate.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/migrate.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/query.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/response_to_asset_balance_at.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/response_to_compute_d.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/response_to_config.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/response_to_cumulative_prices.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/response_to_lp_price.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/response_to_observe.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/response_to_pair.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/response_to_pool.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/response_to_reverse_simulation.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/response_to_share.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/response_to_simulate_provide.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/response_to_simulate_withdraw.json delete mode 100644 schemas/astroport-pair-concentrated-sale-tax/raw/response_to_simulation.json delete mode 100644 schemas/astroport-pair-concentrated/astroport-pair-concentrated.json delete mode 100644 schemas/astroport-pair-concentrated/raw/execute.json delete mode 100644 schemas/astroport-pair-concentrated/raw/instantiate.json delete mode 100644 schemas/astroport-pair-concentrated/raw/migrate.json delete mode 100644 schemas/astroport-pair-concentrated/raw/query.json delete mode 100644 schemas/astroport-pair-concentrated/raw/response_to_asset_balance_at.json delete mode 100644 schemas/astroport-pair-concentrated/raw/response_to_compute_d.json delete mode 100644 schemas/astroport-pair-concentrated/raw/response_to_config.json delete mode 100644 schemas/astroport-pair-concentrated/raw/response_to_cumulative_prices.json delete mode 100644 schemas/astroport-pair-concentrated/raw/response_to_lp_price.json delete mode 100644 schemas/astroport-pair-concentrated/raw/response_to_observe.json delete mode 100644 schemas/astroport-pair-concentrated/raw/response_to_pair.json delete mode 100644 schemas/astroport-pair-concentrated/raw/response_to_pool.json delete mode 100644 schemas/astroport-pair-concentrated/raw/response_to_reverse_simulation.json delete mode 100644 schemas/astroport-pair-concentrated/raw/response_to_share.json delete mode 100644 schemas/astroport-pair-concentrated/raw/response_to_simulate_provide.json delete mode 100644 schemas/astroport-pair-concentrated/raw/response_to_simulate_withdraw.json delete mode 100644 schemas/astroport-pair-concentrated/raw/response_to_simulation.json delete mode 100644 schemas/astroport-pair-converter/astroport-pair-converter.json delete mode 100644 schemas/astroport-pair-converter/raw/execute.json delete mode 100644 schemas/astroport-pair-converter/raw/instantiate.json delete mode 100644 schemas/astroport-pair-converter/raw/migrate.json delete mode 100644 schemas/astroport-pair-converter/raw/query.json delete mode 100644 schemas/astroport-pair-converter/raw/response_to_asset_balance_at.json delete mode 100644 schemas/astroport-pair-converter/raw/response_to_config.json delete mode 100644 schemas/astroport-pair-converter/raw/response_to_cumulative_prices.json delete mode 100644 schemas/astroport-pair-converter/raw/response_to_observe.json delete mode 100644 schemas/astroport-pair-converter/raw/response_to_pair.json delete mode 100644 schemas/astroport-pair-converter/raw/response_to_pool.json delete mode 100644 schemas/astroport-pair-converter/raw/response_to_query_compute_d.json delete mode 100644 schemas/astroport-pair-converter/raw/response_to_reverse_simulation.json delete mode 100644 schemas/astroport-pair-converter/raw/response_to_share.json delete mode 100644 schemas/astroport-pair-converter/raw/response_to_simulation.json delete mode 100644 schemas/astroport-pair-stable/astroport-pair-stable.json delete mode 100644 schemas/astroport-pair-stable/raw/execute.json delete mode 100644 schemas/astroport-pair-stable/raw/instantiate.json delete mode 100644 schemas/astroport-pair-stable/raw/migrate.json delete mode 100644 schemas/astroport-pair-stable/raw/query.json delete mode 100644 schemas/astroport-pair-stable/raw/response_to_asset_balance_at.json delete mode 100644 schemas/astroport-pair-stable/raw/response_to_config.json delete mode 100644 schemas/astroport-pair-stable/raw/response_to_cumulative_prices.json delete mode 100644 schemas/astroport-pair-stable/raw/response_to_observe.json delete mode 100644 schemas/astroport-pair-stable/raw/response_to_pair.json delete mode 100644 schemas/astroport-pair-stable/raw/response_to_pool.json delete mode 100644 schemas/astroport-pair-stable/raw/response_to_query_compute_d.json delete mode 100644 schemas/astroport-pair-stable/raw/response_to_reverse_simulation.json delete mode 100644 schemas/astroport-pair-stable/raw/response_to_share.json delete mode 100644 schemas/astroport-pair-stable/raw/response_to_simulate_provide.json delete mode 100644 schemas/astroport-pair-stable/raw/response_to_simulate_withdraw.json delete mode 100644 schemas/astroport-pair-stable/raw/response_to_simulation.json delete mode 100644 schemas/astroport-pair-xastro/astroport-pair-xastro.json delete mode 100644 schemas/astroport-pair-xastro/raw/execute.json delete mode 100644 schemas/astroport-pair-xastro/raw/instantiate.json delete mode 100644 schemas/astroport-pair-xastro/raw/query.json delete mode 100644 schemas/astroport-pair-xastro/raw/response_to_asset_balance_at.json delete mode 100644 schemas/astroport-pair-xastro/raw/response_to_config.json delete mode 100644 schemas/astroport-pair-xastro/raw/response_to_cumulative_prices.json delete mode 100644 schemas/astroport-pair-xastro/raw/response_to_observe.json delete mode 100644 schemas/astroport-pair-xastro/raw/response_to_pair.json delete mode 100644 schemas/astroport-pair-xastro/raw/response_to_pool.json delete mode 100644 schemas/astroport-pair-xastro/raw/response_to_query_compute_d.json delete mode 100644 schemas/astroport-pair-xastro/raw/response_to_reverse_simulation.json delete mode 100644 schemas/astroport-pair-xastro/raw/response_to_share.json delete mode 100644 schemas/astroport-pair-xastro/raw/response_to_simulate_provide.json delete mode 100644 schemas/astroport-pair-xastro/raw/response_to_simulate_withdraw.json delete mode 100644 schemas/astroport-pair-xastro/raw/response_to_simulation.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/astroport-pair-xyk-sale-tax.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/execute.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/instantiate.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/migrate.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/query.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/response_to_asset_balance_at.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/response_to_config.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/response_to_cumulative_prices.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/response_to_observe.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/response_to_pair.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/response_to_pool.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/response_to_query_compute_d.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/response_to_reverse_simulation.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/response_to_share.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/response_to_simulate_provide.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/response_to_simulate_withdraw.json delete mode 100644 schemas/astroport-pair-xyk-sale-tax/raw/response_to_simulation.json delete mode 100644 schemas/astroport-staking/astroport-staking.json delete mode 100644 schemas/astroport-staking/raw/execute.json delete mode 100644 schemas/astroport-staking/raw/instantiate.json delete mode 100644 schemas/astroport-staking/raw/query.json delete mode 100644 schemas/astroport-staking/raw/response_to_balance_at.json delete mode 100644 schemas/astroport-staking/raw/response_to_config.json delete mode 100644 schemas/astroport-staking/raw/response_to_total_deposit.json delete mode 100644 schemas/astroport-staking/raw/response_to_total_shares.json delete mode 100644 schemas/astroport-staking/raw/response_to_total_supply_at.json delete mode 100644 schemas/astroport-staking/raw/response_to_tracker_config.json delete mode 100644 schemas/astroport-vesting/astroport-vesting.json delete mode 100644 schemas/astroport-vesting/raw/execute.json delete mode 100644 schemas/astroport-vesting/raw/instantiate.json delete mode 100644 schemas/astroport-vesting/raw/migrate.json delete mode 100644 schemas/astroport-vesting/raw/query.json delete mode 100644 schemas/astroport-vesting/raw/response_to_available_amount.json delete mode 100644 schemas/astroport-vesting/raw/response_to_config.json delete mode 100644 schemas/astroport-vesting/raw/response_to_timestamp.json delete mode 100644 schemas/astroport-vesting/raw/response_to_vesting_account.json delete mode 100644 schemas/astroport-vesting/raw/response_to_vesting_accounts.json delete mode 100644 schemas/astroport-xastro-token/astroport-xastro-token.json delete mode 100644 schemas/astroport-xastro-token/raw/execute.json delete mode 100644 schemas/astroport-xastro-token/raw/instantiate.json delete mode 100644 schemas/astroport-xastro-token/raw/query.json delete mode 100644 schemas/astroport-xastro-token/raw/response_to_all_accounts.json delete mode 100644 schemas/astroport-xastro-token/raw/response_to_all_allowances.json delete mode 100644 schemas/astroport-xastro-token/raw/response_to_allowance.json delete mode 100644 schemas/astroport-xastro-token/raw/response_to_balance.json delete mode 100644 schemas/astroport-xastro-token/raw/response_to_balance_at.json delete mode 100644 schemas/astroport-xastro-token/raw/response_to_download_logo.json delete mode 100644 schemas/astroport-xastro-token/raw/response_to_marketing_info.json delete mode 100644 schemas/astroport-xastro-token/raw/response_to_minter.json delete mode 100644 schemas/astroport-xastro-token/raw/response_to_token_info.json delete mode 100644 schemas/astroport-xastro-token/raw/response_to_total_supply_at.json create mode 100644 scripts/build_juno_v1_deployment_command.py create mode 100644 scripts/build_juno_v1_frontend_release_bundle.py create mode 100755 scripts/check_juno_v1_artifacts.py create mode 100644 scripts/check_juno_v1_ci_wiring.py create mode 100644 scripts/check_juno_v1_deployment_command.py create mode 100644 scripts/check_juno_v1_deployment_gitignore.py create mode 100644 scripts/check_juno_v1_deployment_readme.py create mode 100644 scripts/check_juno_v1_deployment_template.py create mode 100755 scripts/check_juno_v1_dry_run_txs.py create mode 100644 scripts/check_juno_v1_frontend_config.py create mode 100644 scripts/check_juno_v1_frontend_example.py create mode 100644 scripts/check_juno_v1_frontend_handoff_sync.py create mode 100644 scripts/check_juno_v1_frontend_release_bundle.py create mode 100644 scripts/check_juno_v1_frontend_release_checklist.py create mode 100644 scripts/check_juno_v1_operator_checklist.py create mode 100755 scripts/check_juno_v1_schemas.py create mode 100755 scripts/check_juno_v1_scope.py create mode 100644 scripts/check_juno_v1_tx_extractor.py create mode 100644 scripts/extract_juno_v1_tx_sets.py create mode 100644 scripts/fill_juno_v1_deployment_config.py create mode 100755 scripts/generate_juno_v1_dry_run_txs.py create mode 100644 scripts/generate_juno_v1_frontend_types.py create mode 100755 scripts/summarize_juno_v1_schema_surface.py diff --git a/.github/workflows/check_artifacts.yml b/.github/workflows/check_artifacts.yml index c4ace5cad..3565c8898 100644 --- a/.github/workflows/check_artifacts.yml +++ b/.github/workflows/check_artifacts.yml @@ -55,6 +55,10 @@ jobs: run: | $GITHUB_WORKSPACE/scripts/check_artifacts_size.sh + - name: Check Juno v1 artifact set + run: | + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_artifacts.py + cosmwasm-check: diff --git a/.github/workflows/tests_and_checks.yml b/.github/workflows/tests_and_checks.yml index a7068f04d..12a961ed8 100644 --- a/.github/workflows/tests_and_checks.yml +++ b/.github/workflows/tests_and_checks.yml @@ -22,6 +22,25 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 + + - name: Check Juno v1 launch guards + run: | + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_scope.py + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_schemas.py + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_deployment_template.py + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_tx_extractor.py + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_deployment_command.py + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_operator_checklist.py + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_dry_run_txs.py + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_deployment_gitignore.py + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_deployment_readme.py + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_frontend_config.py + python3 $GITHUB_WORKSPACE/scripts/generate_juno_v1_frontend_types.py --check + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_frontend_example.py + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_frontend_handoff_sync.py + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_frontend_release_checklist.py + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_ci_wiring.py + - uses: actions/cache@v4 if: always() with: @@ -57,5 +76,6 @@ jobs: - name: Generate and check schemas run: | $GITHUB_WORKSPACE/scripts/build_schemas.sh + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_schemas.py git add -A $GITHUB_WORKSPACE/schemas # consider new contract schemas git diff-index --cached HEAD --exit-code -- diff --git a/.gitignore b/.gitignore index 1ca0e3bf2..19e5db4e9 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,5 @@ target/ /artifacts/ /contracts/**/schema/ /e2e/config.json +/deployment/tx/ +/deployment/juno-v1-testnet.json diff --git a/contracts/tokenomics/incentives/src/reply.rs b/contracts/tokenomics/incentives/src/reply.rs index 8eaac4b44..c869678e3 100644 --- a/contracts/tokenomics/incentives/src/reply.rs +++ b/contracts/tokenomics/incentives/src/reply.rs @@ -72,8 +72,7 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result= FIRST_DYNAMIC_REPLY_ID => { - let Some((reward_key, amount)) = - PENDING_REWARD_TRANSFERS.may_load(deps.storage, id)? + let Some((reward_key, amount)) = PENDING_REWARD_TRANSFERS.may_load(deps.storage, id)? else { // Defensive: a payload we did not register. Best-effort log and // continue rather than aborting the whole transaction. diff --git a/deployment/MAINNET_DEPLOYMENT.md b/deployment/MAINNET_DEPLOYMENT.md new file mode 100644 index 000000000..964b353bb --- /dev/null +++ b/deployment/MAINNET_DEPLOYMENT.md @@ -0,0 +1,309 @@ +# Astroport-Juno v1 mainnet deployment guide + +Scope: Juno mainnet (`juno-1`) deployment of the stripped Astroport-Juno v1 DEX surface. + +This guide is an operator runbook. It does not authorize broadcasting transactions by itself. Broadcast only after the owner/guardian/treasury/uploader/counterparty/seed-liquidity decisions are explicitly approved. + +## 0. Launch constraints + +- Chain: `juno-1` +- Native denom: `ujuno` +- Product scope: XYK swaps, pools, and liquidity only. +- No DEX token, stablecoin, LST, perps, yield vaults, PCL/stable pairs, maker, staking, vesting, converter, or xASTRO launch surface. +- Frontend launch is blocked until at least one seeded XYK pool verifies via factory `pairs`, pair `pool`, and pair `simulation` queries. + +## 1. Human decisions required before broadcast + +Fill this table before any `junod tx ... --yes` command is run. + +| Decision | Value | Source / approval | +|---|---|---| +| Upload signer key name | `TODO` | `TODO` | +| DAO/steward owner/admin | `TODO` | `TODO` | +| Incentives guardian | `TODO` | `TODO` | +| Treasury / fee destination | `TODO` | `TODO` | +| First counterparty denom | `TODO` | `TODO` | +| Counterparty decimals | `TODO` | `TODO` | +| Seed liquidity plan | `TODO` | `TODO` | +| Public launch comms owner | `TODO` | `TODO` | + +Recommended default for owner/guardian/treasury is a DAO-controlled address, not an unattended hot wallet. If a hot wallet must deploy, transfer ownership/admin controls immediately after verification. + +## 2. Environment + +```sh +export CHAIN_ID=juno-1 +export DENOM=ujuno +export RPC=https://juno-rpc.publicnode.com:443 +export REST=https://juno-rest.publicnode.com +export KEY_NAME=juno-agent # replace if a different approved uploader is used +export KEYRING_DIR=/opt/data/.juno-agent +export KEYRING_BACKEND=test +export GAS_PRICES=0.075ujuno +export JUNOD=/opt/data/bin/junod +``` + +Never print or export private keys or seed phrases. Keep tx JSON outputs; they are the deployment evidence. + +## 3. Preflight: re-query mainnet state + +Run immediately before any tx work: + +```sh +$JUNOD version +curl -fsS "$RPC/status" | jq -r '.result.node_info.network, .result.sync_info.catching_up, .result.sync_info.latest_block_height' +curl -fsS "$REST/cosmos/base/tendermint/v1beta1/node_info" | jq -r '.default_node_info.network' +$JUNOD query wasm params --node "$RPC" -o json | jq +$JUNOD query globalfee minimum-gas-prices --node "$RPC" -o json | jq +$JUNOD query auth module-account tokenfactory --node "$RPC" -o json | jq -r '.account.value.address // .account.address' +$JUNOD keys show "$KEY_NAME" --keyring-backend "$KEYRING_BACKEND" --keyring-dir "$KEYRING_DIR" -a +$JUNOD query bank balances "$($JUNOD keys show "$KEY_NAME" --keyring-backend "$KEYRING_BACKEND" --keyring-dir "$KEYRING_DIR" -a)" --node "$RPC" -o json | jq +``` + +Abort if: + +- RPC/REST network is not `juno-1`. +- Node is catching up. +- Wasm upload/instantiate params do not permit the chosen path. +- Gas price policy differs materially from `0.075ujuno`. +- Uploader does not have enough `ujuno` for stores, instantiates, pool creation, and smoke tests. + +## 4. Build optimized artifacts + +Use a machine with Docker daemon access or an equivalent reproducible CosmWasm optimizer path. + +```sh +cd /opt/data/repos/astroport-core +scripts/build_release.sh +python3 scripts/check_juno_v1_artifacts.py artifacts +``` + +The artifact set must be exactly: + +```text +artifacts/astroport_factory.wasm +artifacts/astroport_pair.wasm +artifacts/astroport_router.wasm +artifacts/astroport_native_coin_registry.wasm +artifacts/astroport_oracle.wasm +artifacts/astroport_tokenfactory_tracker.wasm +artifacts/astroport_whitelist.wasm +artifacts/astroport_incentives.wasm +``` + +Then run `cosmwasm-check` on each artifact: + +```sh +for wasm in \ + artifacts/astroport_factory.wasm \ + artifacts/astroport_pair.wasm \ + artifacts/astroport_router.wasm \ + artifacts/astroport_native_coin_registry.wasm \ + artifacts/astroport_oracle.wasm \ + artifacts/astroport_tokenfactory_tracker.wasm \ + artifacts/astroport_whitelist.wasm \ + artifacts/astroport_incentives.wasm; do + cosmwasm-check --available-capabilities staking,cosmwasm_1_1,cosmwasm_2_0,iterator,stargate "$wasm" +done +``` + +## 5. Upload contracts and capture code IDs + +Create a durable tx output directory: + +```sh +mkdir -p deployment/tx/juno-1 +``` + +For each v1 wasm: + +```sh +SYNC_JSON=/tmp/store-astroport-factory.sync.json +$JUNOD tx wasm store artifacts/astroport_factory.wasm \ + --from "$KEY_NAME" --chain-id "$CHAIN_ID" --node "$RPC" \ + --gas auto --gas-adjustment 1.5 --gas-prices "$GAS_PRICES" \ + --keyring-backend "$KEYRING_BACKEND" --keyring-dir "$KEYRING_DIR" \ + --broadcast-mode sync --yes -o json \ + > "$SYNC_JSON" +TXHASH=$(jq -r '.txhash' "$SYNC_JSON") +test -n "$TXHASH" && test "$TXHASH" != null +# Wait for inclusion, then save the included tx response with DeliverTx events. +until $JUNOD query tx "$TXHASH" --node "$RPC" -o json > deployment/tx/juno-1/store-astroport-factory.json; do sleep 3; done +``` + +Do not feed the sync broadcast JSON directly to `extract_juno_v1_tx_sets.py`: sync responses generally only contain CheckTx/txhash. Always wait for inclusion and save the included tx response from `junod query tx -o json` (or an equivalent full tx response containing DeliverTx events). + +Repeat for: + +- `astroport-incentives` +- `astroport-native-coin-registry` +- `astroport-oracle` +- `astroport-pair` +- `astroport-router` +- `astroport-tokenfactory-tracker` +- `astroport-whitelist` + +Also provide `cw20-base` code ID. Either use a verified existing mainnet code ID or upload a pinned `cw20-base` artifact and save `deployment/tx/juno-1/store-cw20-base.json`. + +Extract/check code IDs: + +```sh +python3 scripts/extract_juno_v1_tx_sets.py --scan deployment/tx/juno-1/store-astroport-factory.json +``` + +## 6. Instantiate order + +Use the update-after-incentives path unless the team explicitly chooses Instantiate2 and records salt/checksum/predicted-address evidence. + +1. Instantiate native coin registry. +2. Register `ujuno` and the verified first counterparty denom + decimals. +3. Instantiate whitelist. +4. Instantiate factory with one permissionless XYK pair config and `generator_address=null`. +5. Instantiate incentives with factory address, owner, guardian, and `reward_token={"native_token":{"denom":"ujuno"}}`. +6. Execute factory `update_config` to set `generator_address` to incentives. +7. Instantiate router with factory address. +8. Instantiate oracle only after a real pair asset vector exists, or keep oracle dormant/out of the frontend launch-critical path. +9. Instantiate standalone tokenfactory tracker only if the operator still needs it; factory-created pair trackers are the critical path. +10. Create first XYK pair through factory. +11. Seed liquidity. + +Save every tx response under `deployment/tx/juno-1/` with explicit names, for example: + +```text +instantiate-astroport-native-coin-registry.json +execute-native-coin-registry-add-ujuno.json +execute-native-coin-registry-add-counterparty.json +instantiate-astroport-whitelist.json +instantiate-astroport-factory.json +instantiate-astroport-incentives.json +execute-factory-update-generator.json +instantiate-astroport-router.json +instantiate-astroport-oracle.json +instantiate-astroport-tokenfactory-tracker.json +execute-factory-create-pair.json +execute-pair-provide-liquidity.json +``` + +## 7. Render deployment config from tx output + +Build a tx set, then render the canonical handoff: + +```sh +python3 scripts/extract_juno_v1_tx_sets.py \ + --code-id astroport-factory=deployment/tx/juno-1/store-astroport-factory.json \ + --code-id astroport-incentives=deployment/tx/juno-1/store-astroport-incentives.json \ + --code-id astroport-native-coin-registry=deployment/tx/juno-1/store-astroport-native-coin-registry.json \ + --code-id astroport-oracle=deployment/tx/juno-1/store-astroport-oracle.json \ + --code-id astroport-pair=deployment/tx/juno-1/store-astroport-pair.json \ + --code-id astroport-router=deployment/tx/juno-1/store-astroport-router.json \ + --code-id astroport-tokenfactory-tracker=deployment/tx/juno-1/store-astroport-tokenfactory-tracker.json \ + --code-id astroport-whitelist=deployment/tx/juno-1/store-astroport-whitelist.json \ + --code-id cw20-base=deployment/tx/juno-1/store-cw20-base.json \ + --address astroport-factory=deployment/tx/juno-1/instantiate-astroport-factory.json \ + --address astroport-incentives=deployment/tx/juno-1/instantiate-astroport-incentives.json \ + --address astroport-native-coin-registry=deployment/tx/juno-1/instantiate-astroport-native-coin-registry.json \ + --address astroport-oracle=deployment/tx/juno-1/instantiate-astroport-oracle.json \ + --address astroport-router=deployment/tx/juno-1/instantiate-astroport-router.json \ + --address astroport-tokenfactory-tracker=deployment/tx/juno-1/instantiate-astroport-tokenfactory-tracker.json \ + --address astroport-whitelist=deployment/tx/juno-1/instantiate-astroport-whitelist.json \ + > deployment/tx/juno-1/tx-sets.txt + +python3 scripts/build_juno_v1_deployment_command.py \ + --tx-sets deployment/tx/juno-1/tx-sets.txt \ + --network juno-1 \ + --owner "$JUNO_OWNER" \ + --guardian "$JUNO_GUARDIAN" \ + --treasury "$JUNO_TREASURY" \ + --tokenfactory-module "$JUNO_TOKENFACTORY_MODULE" \ + --counterparty-denom "$FIRST_COUNTERPARTY_DENOM" \ + --output deployment/juno-v1-mainnet.json \ + --render +``` + +Validate: + +```sh +python3 scripts/check_juno_v1_deployment_template.py deployment/juno-v1-mainnet.json +python3 scripts/check_juno_v1_frontend_config.py deployment/juno-v1-mainnet.json +python3 -m json.tool deployment/juno-v1-mainnet.json >/tmp/juno-v1-mainnet.pretty.json +``` + +## 8. Post-deploy verification queries + +```sh +$JUNOD query wasm contract-state smart "$ADDR_FACTORY" '{"config":{}}' --node "$RPC" -o json | jq +$JUNOD query wasm contract-state smart "$ADDR_NATIVE_COIN_REGISTRY" '{"native_tokens":{"limit":30}}' --node "$RPC" -o json | jq +$JUNOD query wasm contract-state smart "$ADDR_FACTORY" '{"pairs":{"limit":30}}' --node "$RPC" -o json | jq +$JUNOD query wasm contract-state smart "$PAIR_ADDR" '{"pool":{}}' --node "$RPC" -o json | jq +$JUNOD query wasm contract-state smart "$PAIR_ADDR" '{"simulation":{"offer_asset":{"info":{"native_token":{"denom":"ujuno"}},"amount":"1000000"}}}' --node "$RPC" -o json | jq +$JUNOD query wasm contract-state smart "$ADDR_ROUTER" '{"config":{}}' --node "$RPC" -o json | jq +``` + +Expected launch state: + +- Factory owner is the approved DAO/steward owner. +- Factory has exactly one active pair config: permissionless XYK. +- Native registry returns correct decimals for `ujuno` and first counterparty denom. +- Factory `pairs` includes the first seeded pair. +- Pair `pool` returns non-zero liquidity. +- Pair `simulation` returns a sane ask amount. +- Router config points to the deployed factory. + +## 9. Frontend registry handoff + +Only after section 8 passes, fill the DEX frontend registry with real values: + +- chain ID: `juno-1` +- native denom: `ujuno` +- working RPC/REST endpoints +- factory address +- native coin registry address +- router address +- incentives address +- optional oracle address +- first pool metadata if the frontend expects static bootstrap metadata + +Then run the frontend repo checks: + +```sh +cd /opt/data/repos/juno-website-dex-v1 +python3 -m json.tool public/dex/registry.juno-1.json >/tmp/registry.juno-1.pretty.json +yarn lint +yarn type-check +yarn build +``` + +## 10. Smoke tests before public announcement + +Minimum live smoke: + +1. Direct swap using the seeded pair. +2. Add liquidity. +3. Remove a small amount of liquidity. +4. Query balances before/after each action. +5. Verify explorer links and contract labels. +6. Publish a risk notice: experimental v1 DEX, thin liquidity, verify contracts. + +## 11. Freeze / rollback playbook + +- Bad code ID: stop using it, upload fixed code, instantiate replacements or migrate only if migration is explicitly safe. +- Bad factory config: execute factory update to disable XYK pair config or remove the factory from the frontend registry. +- Bad incentives config: hide incentives in UI and set factory `generator_address=null` if needed. +- Bad pool: remove from frontend registry, warn publicly, create a replacement pool, do not seed more liquidity. +- Bad denom decimals: freeze affected denom in frontend/native registry until fixed and reverified. +- Router issue: hide multi-hop/router paths; direct pair swaps remain the launch-critical surface. + +## 12. Final launch gate + +Do not call launch ready until all are true: + +- [ ] Human decision table is filled and approved. +- [ ] Optimized artifact set is exact and checked. +- [ ] Code IDs and contract addresses are captured from real tx JSON. +- [ ] Owner/guardian/treasury are correct on-chain. +- [ ] First counterparty denom trace + decimals are verified. +- [ ] First XYK pool exists and has seeded liquidity. +- [ ] Factory `pairs`, pair `pool`, and pair `simulation` queries pass. +- [ ] Frontend registry has no placeholders and builds. +- [ ] Swap + add/remove liquidity smoke tests pass. +- [ ] Risk notice and contract address list are ready for public comms. diff --git a/deployment/README.md b/deployment/README.md new file mode 100644 index 000000000..cbd50cfd0 --- /dev/null +++ b/deployment/README.md @@ -0,0 +1,130 @@ +# Astroport-Juno v1 deployment handoff + +This folder is the narrow handoff between contract upload/instantiate output and the frontend config for the uni-7 bakeoff. + +## Files + +- `juno-v1-testnet.template.json` — canonical placeholder template for the v1 surface. +- `juno-v1-testnet.json` — suggested rendered output path; do not commit real values until the DAO/stewards choose to publish them. +- `juno-v1-mainnet.json` — rendered mainnet output path; do not commit real values until the DAO/stewards choose to publish them. +- `juno-v1-readiness-plan.md` — operator deployment/readiness plan with instantiate order, no-broadcast dry-run commands, safety checks, rollback/freeze risks, and exact blockers. +- `MAINNET_DEPLOYMENT.md` — mainnet `juno-1` operator runbook for approvals, artifact checks, tx capture, config rendering, frontend handoff, smoke tests, and rollback/freeze actions. +- `frontend-release-checklist.md` — final copy/verification checklist for moving the rendered handoff into the UI repo. + +## Required values after upload / instantiate + +Collect these from the real uni-7 transaction output before rendering: + +### Accounts + +- `accounts.owner` — DAO/steward admin for owned contracts. +- `accounts.guardian` — incentives guardian. +- `accounts.treasury` — fee destination and incentives vesting placeholder for v1 native rewards. +- `accounts.tokenfactory_module` — chain tokenfactory module address used by tracker/factory config. + +### Code IDs + +- `code_ids.astroport-factory` +- `code_ids.astroport-incentives` +- `code_ids.astroport-native-coin-registry` +- `code_ids.astroport-oracle` +- `code_ids.astroport-pair` +- `code_ids.astroport-router` +- `code_ids.astroport-tokenfactory-tracker` +- `code_ids.astroport-whitelist` +- `code_ids.cw20-base` + +### Instantiated addresses + +- `addresses.astroport-factory` +- `addresses.astroport-incentives` +- `addresses.astroport-native-coin-registry` +- `addresses.astroport-oracle` +- `addresses.astroport-router` +- `addresses.astroport-tokenfactory-tracker` +- `addresses.astroport-whitelist` + +### First pool counterpart denom + +- `pair_create_msg_template.asset_infos.1.native_token.denom` — real `ibc/...` denom for the non-`ujunox` side of the first test pool. + +## Extract values from tx JSON + +For the complete operator handoff, use [`operator-tx-checklist.md`](operator-tx-checklist.md). It names the 16 expected `junod -o json` tx files, builds `deployment/tx/uni-7/tx-sets.txt`, and feeds the deployment command builder. + +To rehearse the full handoff without chain txs, generate harmless synthetic fixtures in an ignored directory: + +```sh +python3 scripts/generate_juno_v1_dry_run_txs.py --output-dir deployment/tx/uni-7-dry-run +python3 scripts/check_juno_v1_dry_run_txs.py +``` + +For one-off inspection, use the extractor directly: + +```sh +python3 scripts/extract_juno_v1_tx_sets.py \ + --code-id astroport-factory=store-factory.json \ + --address astroport-factory=instantiate-factory.json +``` + +Use `--scan tx.json` first when a tx response shape is unfamiliar; it prints discovered `code_id` and contract address values without mapping them. + +## Render command shape + +Set shell variables from real uni-7 outputs, then render and validate: + +```sh +python3 scripts/fill_juno_v1_deployment_config.py \ + --output deployment/juno-v1-testnet.json \ + --require-complete \ + --set accounts.owner="$JUNO_OWNER" \ + --set accounts.guardian="$JUNO_GUARDIAN" \ + --set accounts.treasury="$JUNO_TREASURY" \ + --set accounts.tokenfactory_module="$JUNO_TOKENFACTORY_MODULE" \ + --set code_ids.astroport-factory="$CODE_ID_FACTORY" \ + --set code_ids.astroport-incentives="$CODE_ID_INCENTIVES" \ + --set code_ids.astroport-native-coin-registry="$CODE_ID_NATIVE_COIN_REGISTRY" \ + --set code_ids.astroport-oracle="$CODE_ID_ORACLE" \ + --set code_ids.astroport-pair="$CODE_ID_PAIR" \ + --set code_ids.astroport-router="$CODE_ID_ROUTER" \ + --set code_ids.astroport-tokenfactory-tracker="$CODE_ID_TOKENFACTORY_TRACKER" \ + --set code_ids.astroport-whitelist="$CODE_ID_WHITELIST" \ + --set code_ids.cw20-base="$CODE_ID_CW20_BASE" \ + --set addresses.astroport-factory="$ADDR_FACTORY" \ + --set addresses.astroport-incentives="$ADDR_INCENTIVES" \ + --set addresses.astroport-native-coin-registry="$ADDR_NATIVE_COIN_REGISTRY" \ + --set addresses.astroport-oracle="$ADDR_ORACLE" \ + --set addresses.astroport-router="$ADDR_ROUTER" \ + --set addresses.astroport-tokenfactory-tracker="$ADDR_TOKENFACTORY_TRACKER" \ + --set addresses.astroport-whitelist="$ADDR_WHITELIST" \ + --set pair_create_msg_template.asset_infos.1.native_token.denom="$FIRST_COUNTERPARTY_DENOM" + +python3 scripts/check_juno_v1_deployment_template.py deployment/juno-v1-testnet.json +``` + +The fill script rewires dependent instantiate fields from the top-level values, including factory pair code ID, whitelist/tracker config, router factory address, native incentives denom, and oracle asset info. + +## Frontend consumption + +After rendering `deployment/juno-v1-testnet.json`, copy or import it alongside the generated declaration file: + +```ts +import deployment from "./juno-v1-testnet.json"; +import type { JunoV1FrontendDeploymentConfig } from "./juno-v1-frontend-config"; + +const config = deployment satisfies JunoV1FrontendDeploymentConfig; +``` + +Use `config.addresses` for the canonical contract map. For launch UX, the first pool form can start from `config.pair_create_msg_template`, but existing pools must be discovered by querying the factory; do not bake pool addresses into frontend config. + +Required frontend addresses: `astroport-factory`, `astroport-router`, `astroport-native-coin-registry`, `astroport-incentives`. +Optional frontend addresses: `astroport-oracle`. + +See `juno-v1-frontend-config.example.ts` for a dependency-free fixture that demonstrates the exact address map and first XYK pair-create helper. + +## Scope guardrails + +- v1 is XYK-only and permissionless. +- No new DEX token is introduced; incentives use the configured native denom. +- Do not add stable pairs, LSTs, perps, or yield surfaces to this config. +- Frontend should read canonical contract addresses from `addresses` and discover pools through factory queries. diff --git a/deployment/frontend-release-checklist.md b/deployment/frontend-release-checklist.md new file mode 100644 index 000000000..e17d051dc --- /dev/null +++ b/deployment/frontend-release-checklist.md @@ -0,0 +1,41 @@ +# Astroport-Juno v1 frontend release checklist + +Use this when real uni-7 values exist and the UI repo is ready to consume the DEX handoff. This is deliberately narrow: publish the rendered contract map and generated type, then verify the UI discovers pools through the factory. + +## Release files to hand to the UI repo + +Copy these files together from `deployment/`: + +- `juno-v1-testnet.json` — rendered uni-7 config produced from real upload/instantiate tx output; keep local/private until stewards choose to publish. +- `juno-v1-frontend-config.d.ts` — generated TypeScript contract for the frontend handoff. +- `juno-v1-frontend-config.example.ts` — optional fixture showing the address map and first XYK pair create helper. + +Do not copy `juno-v1-testnet.template.json` as the live config. + +## Pre-copy verification + +Run from repo root before handing files to the UI repo: + +```sh +python3 scripts/check_juno_v1_deployment_template.py deployment/juno-v1-testnet.json +python3 scripts/check_juno_v1_frontend_config.py deployment/juno-v1-testnet.json +python3 scripts/generate_juno_v1_frontend_types.py --check +python3 scripts/check_juno_v1_frontend_example.py +python3 scripts/check_juno_v1_frontend_handoff_sync.py +``` + +The first two commands require the rendered `deployment/juno-v1-testnet.json`; rehearse without chain output via `python3 scripts/check_juno_v1_dry_run_txs.py`. + +## Frontend address surface + +Required frontend addresses: `astroport-factory`, `astroport-router`, `astroport-native-coin-registry`, `astroport-incentives`. +Optional frontend addresses: `astroport-oracle`. + +Use `config.addresses` as the canonical contract map. Use `config.pair_create_msg_template` only to seed the first XYK create-pair form; discover existing pools by querying the factory contract. Do not hardcode pools or pair addresses in the UI repo. + +## Scope guardrails + +- v1 is XYK-only and permissionless. +- No new DEX token is introduced; incentives use the configured native denom. +- Do not add stable pairs, PCL, LSTs, perps, or yield surfaces to this handoff. +- Release blockers are missing real code IDs/addresses, stale generated types, or UI code that bypasses factory pair discovery. diff --git a/deployment/juno-v1-frontend-config.d.ts b/deployment/juno-v1-frontend-config.d.ts new file mode 100644 index 000000000..4b865840e --- /dev/null +++ b/deployment/juno-v1-frontend-config.d.ts @@ -0,0 +1,44 @@ +// AUTO-GENERATED by scripts/generate_juno_v1_frontend_types.py; do not edit by hand. +// Source: deployment/juno-v1-testnet.template.json + +export type JunoV1CodeIdKey = "astroport-factory" | "astroport-incentives" | "astroport-native-coin-registry" | "astroport-oracle" | "astroport-pair" | "astroport-router" | "astroport-tokenfactory-tracker" | "astroport-whitelist" | "cw20-base"; + +export type JunoV1AddressKey = "astroport-factory" | "astroport-incentives" | "astroport-native-coin-registry" | "astroport-oracle" | "astroport-router" | "astroport-tokenfactory-tracker" | "astroport-whitelist"; + +export type JunoV1RequiredFrontendAddressKey = "astroport-factory" | "astroport-router" | "astroport-native-coin-registry" | "astroport-incentives"; + +export type JunoV1OptionalFrontendAddressKey = "astroport-oracle"; + +export type JunoV1FrontendAddressKey = + | JunoV1RequiredFrontendAddressKey + | JunoV1OptionalFrontendAddressKey; + +export type NativeAssetInfo = { native_token: { denom: string } }; +export type XykPairType = { xyk: Record }; + +export interface JunoV1DeploymentNetwork { + chain_id: "uni-7" | "juno-1" | string; + bech32_prefix: "juno"; + fee_denom: string; + native_asset_denom: "ujunox" | string; +} + +export interface JunoV1FrontendConfig { + required_addresses: JunoV1RequiredFrontendAddressKey[]; + optional_addresses: JunoV1OptionalFrontendAddressKey[]; + pair_discovery: string; +} + +export interface JunoV1PairCreateMsgTemplate { + pair_type: XykPairType; + asset_infos: [NativeAssetInfo, NativeAssetInfo]; + init_params: null; +} + +export interface JunoV1FrontendDeploymentConfig { + network: JunoV1DeploymentNetwork; + code_ids: Record; + addresses: Record; + pair_create_msg_template: JunoV1PairCreateMsgTemplate; + frontend: JunoV1FrontendConfig; +} diff --git a/deployment/juno-v1-frontend-config.example.ts b/deployment/juno-v1-frontend-config.example.ts new file mode 100644 index 000000000..425045c37 --- /dev/null +++ b/deployment/juno-v1-frontend-config.example.ts @@ -0,0 +1,73 @@ +// Example consumer fixture for the Astroport-Juno v1 frontend handoff. +// It intentionally mirrors deployment/juno-v1-testnet.template.json placeholders; +// replace values by importing a rendered deployment/juno-v1-testnet.json at launch. + +import type { + JunoV1FrontendAddressKey, + JunoV1FrontendDeploymentConfig, +} from "./juno-v1-frontend-config"; + +export const junoV1FrontendConfigExample = { + network: { + chain_id: "uni-7", + bech32_prefix: "juno", + fee_denom: "ujunox", + native_asset_denom: "ujunox", + }, + code_ids: { + "astroport-factory": 0, + "astroport-incentives": 0, + "astroport-native-coin-registry": 0, + "astroport-oracle": 0, + "astroport-pair": 0, + "astroport-router": 0, + "astroport-tokenfactory-tracker": 0, + "astroport-whitelist": 0, + "cw20-base": 0, + }, + addresses: { + "astroport-factory": "juno1replacefactory000000000000000000000000000000", + "astroport-incentives": "juno1replaceincentives00000000000000000000000000", + "astroport-native-coin-registry": "juno1replacecoinregistry00000000000000000000000", + "astroport-oracle": "juno1replaceoracle0000000000000000000000000000000", + "astroport-router": "juno1replacerouter000000000000000000000000000000", + "astroport-tokenfactory-tracker": "juno1replacetracker0000000000000000000000000000", + "astroport-whitelist": "juno1replacewhitelist00000000000000000000000000", + }, + pair_create_msg_template: { + pair_type: { xyk: {} }, + asset_infos: [ + { native_token: { denom: "ujunox" } }, + { native_token: { denom: "ibc/REPLACE_COUNTERPARTY_DENOM_HASH" } }, + ], + init_params: null, + }, + frontend: { + required_addresses: [ + "astroport-factory", + "astroport-router", + "astroport-native-coin-registry", + "astroport-incentives", + ], + optional_addresses: ["astroport-oracle"], + pair_discovery: "query astroport-factory pairs/pair; do not hardcode pools before launch", + }, +} satisfies JunoV1FrontendDeploymentConfig; + +export function frontendAddressMap( + config: JunoV1FrontendDeploymentConfig, +): Record { + return { + "astroport-factory": config.addresses["astroport-factory"], + "astroport-router": config.addresses["astroport-router"], + "astroport-native-coin-registry": config.addresses["astroport-native-coin-registry"], + "astroport-incentives": config.addresses["astroport-incentives"], + "astroport-oracle": config.addresses["astroport-oracle"], + }; +} + +export function firstXykPairCreateMsg(config: JunoV1FrontendDeploymentConfig) { + // Frontends should use this as a create-pair message template only. + // Existing pools/pairs must be discovered from the factory contract, not hardcoded here. + return config.pair_create_msg_template; +} diff --git a/deployment/juno-v1-readiness-plan.md b/deployment/juno-v1-readiness-plan.md new file mode 100644 index 000000000..a1f887d63 --- /dev/null +++ b/deployment/juno-v1-readiness-plan.md @@ -0,0 +1,313 @@ +# Astroport-Juno v1 deployment/readiness plan + +Date: 2026-06-29T17:22:23Z +Scope: Juno DEX v1 contracts/config only. This is an operator checklist and blocker list; it is not authorization to broadcast transactions. + +## 0. Current verified state + +- Repo branch: `juno-agent/dex-guards-20260629` at `c1623b5b chore(juno): remove stale non-v1 schemas`. +- `junod`: `/opt/data/bin/junod`, version `v29.0.0`. +- Mainnet RPC check: `https://juno-rpc.publicnode.com:443/status` returned `network=juno-1`, `catching_up=false`. +- Mainnet tokenfactory module account query returned `juno19ejy8n9qsectrf4semdp9cpknflld0j6tj7k2a`. +- Mainnet wasm params query returned `code_upload_access.permission=Everybody` and `instantiate_default_permission=Everybody`; re-query immediately before any real upload/broadcast because chain params can change. +- `cosmwasm-check`: `/usr/local/bin/cosmwasm-check`, version `3.0.9`. +- Docker is installed but daemon is not reachable here, so `scripts/build_release.sh` cannot produce optimized artifacts in this environment. +- No real optimized v1 artifact directory exists yet; only a test fixture wasm was found under `contracts/periphery/tokenfactory_tracker/tests/test_data/`. + +## 1. Required v1 wasm artifacts + +Final optimized artifact set must contain exactly these eight files and no deferred/stable/PCL/tokenomics extras: + +1. `artifacts/astroport_factory.wasm` +2. `artifacts/astroport_pair.wasm` +3. `artifacts/astroport_router.wasm` +4. `artifacts/astroport_native_coin_registry.wasm` +5. `artifacts/astroport_oracle.wasm` +6. `artifacts/astroport_tokenfactory_tracker.wasm` +7. `artifacts/astroport_whitelist.wasm` +8. `artifacts/astroport_incentives.wasm` + +Build/check commands, run in an environment with Docker daemon access: + +```sh +cd /opt/data/repos/astroport-core +scripts/build_release.sh +python3 scripts/check_juno_v1_artifacts.py artifacts +for wasm in \ + artifacts/astroport_factory.wasm \ + artifacts/astroport_pair.wasm \ + artifacts/astroport_router.wasm \ + artifacts/astroport_native_coin_registry.wasm \ + artifacts/astroport_oracle.wasm \ + artifacts/astroport_tokenfactory_tracker.wasm \ + artifacts/astroport_whitelist.wasm \ + artifacts/astroport_incentives.wasm; do + cosmwasm-check --available-capabilities staking,cosmwasm_1_1,cosmwasm_2_0,iterator,stargate "$wasm" +done +``` + +`cw20-base` is also required as a code ID in the deployment config because the factory instantiate schema still carries `token_code_id`, even though Juno v1 LP shares are TokenFactory-native. Use a known verified cw20-base code ID for the target network or upload a pinned cw20-base artifact separately. + +## 2. Required code IDs and addresses + +`deployment/juno-v1-testnet.template.json` expects these code IDs: + +- `code_ids.astroport-factory` +- `code_ids.astroport-incentives` +- `code_ids.astroport-native-coin-registry` +- `code_ids.astroport-oracle` +- `code_ids.astroport-pair` +- `code_ids.astroport-router` +- `code_ids.astroport-tokenfactory-tracker` +- `code_ids.astroport-whitelist` +- `code_ids.cw20-base` + +Final frontend/deployment handoff expects these instantiated addresses: + +- `addresses.astroport-native-coin-registry` +- `addresses.astroport-whitelist` +- `addresses.astroport-factory` +- `addresses.astroport-incentives` +- `addresses.astroport-router` +- `addresses.astroport-oracle` +- `addresses.astroport-tokenfactory-tracker` + +Launch-critical addresses for frontend: factory, native coin registry, router, incentives. Oracle and standalone tokenfactory tracker can be deployed/dormant, but the factory pair tracker config must be correct before public pool creation. + +## 3. Instantiate/update order + +Use this order to avoid circular dependencies. The rendered config represents the final state, but the first factory instantiate cannot normally know the incentives contract address unless using address precomputation/Instantiate2. + +1. Store all v1 wasms and capture code IDs. +2. Resolve manual accounts: + - `JUNO_OWNER`: DAO/steward owner/admin. + - `JUNO_GUARDIAN`: incentives guardian. + - `JUNO_TREASURY`: fee destination and v1 incentives vesting placeholder. + - `JUNO_TOKENFACTORY_MODULE`: tokenfactory module account (`juno19ejy8n9qsectrf4semdp9cpknflld0j6tj7k2a` on current juno-1 query; re-query before mainnet use). +3. Instantiate `astroport-native-coin-registry` with owner. +4. Execute native coin registry `add`/`register` for `ujuno` plus verified launch IBC denoms and decimals. +5. Instantiate `astroport-whitelist` with owner admin and `mutable=true`. +6. Instantiate `astroport-factory` with: + - `coin_registry_address` = native coin registry address, + - `owner` = DAO/steward owner, + - `fee_address` = treasury, + - `generator_address` = `null` for the initial instantiate unless the incentives address is safely precomputed, + - one XYK pair config only: pair code ID, `total_fee_bps=30`, `maker_fee_bps=0`, `permissioned=false`, not disabled, + - `token_code_id` = cw20-base code ID, + - `whitelist_code_id` = whitelist code ID, + - `tracker_config.code_id` = tokenfactory tracker code ID, + - `tracker_config.token_factory_addr` = tokenfactory module account. +7. Instantiate `astroport-incentives` with native denom (`reward_token={"native_token":{"denom":"ujuno"}}` on mainnet, `ujunox` on uni-7), factory address, owner, and guardian. Do not use legacy `astro_token` or `vesting_contract` fields. +8. Execute factory `update_config` to set `generator_address` to the incentives address. +9. Instantiate `astroport-router` with factory address. +10. Instantiate `astroport-oracle` only for a real pair asset vector when a pool exists; otherwise leave it out of launch-critical UI and do not pretend it proves readiness. +11. Instantiate standalone `astroport-tokenfactory-tracker` only if an operator-facing tracker address is still desired; factory-created pair trackers are the launch-critical path. +12. Create first XYK pool through factory `create_pair`; wait for pair address and LP denom. +13. Provide seed liquidity. +14. Query factory/pair/router/config state and produce `deployment/juno-v1-testnet.json` or mainnet equivalent from tx output. + +If the team chooses Instantiate2/address precomputation, document the salt, code checksum, creator, predicted addresses, and verification query before deviating from the update-after-incentives path. + +## 4. Pool factory config checks + +Factory `Config {}` must show: + +- owner = approved DAO/steward address. +- one `pair_configs` entry only. +- pair type = `{ "xyk": {} }`. +- pair code ID = uploaded `astroport_pair.wasm` code ID. +- `is_disabled=false` and `is_generator_disabled=false` unless intentionally freezing launch. +- `permissioned=false` for v1 public pool creation, unless governance explicitly chooses a permissioned launch. +- `total_fee_bps=30`, `maker_fee_bps=0` unless governance explicitly changes fees. +- `coin_registry_address` = deployed native coin registry. +- `whitelist_code_id` = deployed whitelist code ID. +- `generator_address` = incentives address after step 8, or `null` if incentives are deliberately dormant and UI hides rewards. + +Native coin registry must return correct decimals for each launch denom. Do not launch a pool in the UI until denom trace + decimals + explorer links are verified. + +## 5. No-broadcast dry-run commands + +Set these once per target. Use uni-7 for rehearsal, juno-1 for mainnet generate-only/dry-run checks. + +```sh +# uni-7 rehearsal +export CHAIN_ID=uni-7 +export DENOM=ujunox +export RPC=https://juno-testnet-rpc.polkachu.com +export KEY_NAME=juno-agent +export KEYRING_DIR=/opt/data/.juno-agent +export KEYRING_BACKEND=test +export GAS_PRICES=0.075ujunox + +# mainnet generate-only/dry-run +export CHAIN_ID=juno-1 +export DENOM=ujuno +export RPC=https://juno-rpc.publicnode.com:443 +export KEY_NAME=juno-agent +export KEYRING_DIR=/opt/data/.juno-agent +export KEYRING_BACKEND=test +export GAS_PRICES=0.075ujuno +``` + +Preflight: + +```sh +/opt/data/bin/junod version +curl -sS "$RPC/status" | jq -r '.result.node_info.network, .result.sync_info.catching_up' +/opt/data/bin/junod query auth module-account tokenfactory --node "$RPC" -o json | jq -r '.account.value.address // .account.address' +/opt/data/bin/junod query wasm params --node "$RPC" -o json +/opt/data/bin/junod query feemarket params --node "$RPC" -o json || true +/opt/data/bin/junod keys show "$KEY_NAME" --keyring-backend "$KEYRING_BACKEND" --keyring-dir "$KEYRING_DIR" -a +``` + +Store tx generate-only/dry-run pattern, repeat for each artifact: + +```sh +/opt/data/bin/junod tx wasm store artifacts/astroport_factory.wasm \ + --from "$KEY_NAME" --chain-id "$CHAIN_ID" --node "$RPC" \ + --gas auto --gas-adjustment 1.5 --gas-prices "$GAS_PRICES" \ + --keyring-backend "$KEYRING_BACKEND" --keyring-dir "$KEYRING_DIR" \ + --generate-only > /tmp/store-astroport-factory.unsigned.json + +/opt/data/bin/junod tx wasm store artifacts/astroport_factory.wasm \ + --from "$KEY_NAME" --chain-id "$CHAIN_ID" --node "$RPC" \ + --gas auto --gas-adjustment 1.5 --gas-prices "$GAS_PRICES" \ + --keyring-backend "$KEYRING_BACKEND" --keyring-dir "$KEYRING_DIR" \ + --dry-run -o json +``` + +Instantiate generate-only pattern: + +```sh +jq '.instantiate_msgs["astroport-native-coin-registry"]' deployment/juno-v1-testnet.json > /tmp/native-registry-msg.json +/opt/data/bin/junod tx wasm instantiate "$CODE_ID_NATIVE_COIN_REGISTRY" "$(cat /tmp/native-registry-msg.json)" \ + --label 'astroport-juno-v1-native-coin-registry' \ + --admin "$JUNO_OWNER" \ + --from "$KEY_NAME" --chain-id "$CHAIN_ID" --node "$RPC" \ + --gas auto --gas-adjustment 1.4 --gas-prices "$GAS_PRICES" \ + --keyring-backend "$KEYRING_BACKEND" --keyring-dir "$KEYRING_DIR" \ + --generate-only > /tmp/instantiate-native-registry.unsigned.json +``` + +Factory post-incentives update generate-only: + +```sh +/opt/data/bin/junod tx wasm execute "$ADDR_FACTORY" \ + '{"update_config":{"token_code_id":null,"fee_address":null,"generator_address":"'$ADDR_INCENTIVES'","whitelist_code_id":null,"coin_registry_address":null}}' \ + --from "$KEY_NAME" --chain-id "$CHAIN_ID" --node "$RPC" \ + --gas auto --gas-adjustment 1.4 --gas-prices "$GAS_PRICES" \ + --keyring-backend "$KEYRING_BACKEND" --keyring-dir "$KEYRING_DIR" \ + --generate-only > /tmp/update-factory-generator.unsigned.json +``` + +Pair create generate-only: + +```sh +jq '.pair_create_msg_template | {create_pair: .}' deployment/juno-v1-testnet.json > /tmp/create-pair-msg.json +/opt/data/bin/junod tx wasm execute "$ADDR_FACTORY" "$(cat /tmp/create-pair-msg.json)" \ + --from "$KEY_NAME" --chain-id "$CHAIN_ID" --node "$RPC" \ + --gas auto --gas-adjustment 1.4 --gas-prices "$GAS_PRICES" \ + --keyring-backend "$KEYRING_BACKEND" --keyring-dir "$KEYRING_DIR" \ + --generate-only > /tmp/create-pair.unsigned.json +``` + +Do not add `--yes`; do not broadcast from this plan. + +## 6. Readiness verification queries + +After real txs exist, save full `junod -o json` tx responses under `deployment/tx//` and render config: + +```sh +python3 scripts/extract_juno_v1_tx_sets.py \ + --code-id astroport-factory=deployment/tx/uni-7/store-astroport-factory.json \ + --code-id astroport-incentives=deployment/tx/uni-7/store-astroport-incentives.json \ + --code-id astroport-native-coin-registry=deployment/tx/uni-7/store-astroport-native-coin-registry.json \ + --code-id astroport-oracle=deployment/tx/uni-7/store-astroport-oracle.json \ + --code-id astroport-pair=deployment/tx/uni-7/store-astroport-pair.json \ + --code-id astroport-router=deployment/tx/uni-7/store-astroport-router.json \ + --code-id astroport-tokenfactory-tracker=deployment/tx/uni-7/store-astroport-tokenfactory-tracker.json \ + --code-id astroport-whitelist=deployment/tx/uni-7/store-astroport-whitelist.json \ + --code-id cw20-base=deployment/tx/uni-7/store-cw20-base.json \ + --address astroport-factory=deployment/tx/uni-7/instantiate-astroport-factory.json \ + --address astroport-incentives=deployment/tx/uni-7/instantiate-astroport-incentives.json \ + --address astroport-native-coin-registry=deployment/tx/uni-7/instantiate-astroport-native-coin-registry.json \ + --address astroport-oracle=deployment/tx/uni-7/instantiate-astroport-oracle.json \ + --address astroport-router=deployment/tx/uni-7/instantiate-astroport-router.json \ + --address astroport-tokenfactory-tracker=deployment/tx/uni-7/instantiate-astroport-tokenfactory-tracker.json \ + --address astroport-whitelist=deployment/tx/uni-7/instantiate-astroport-whitelist.json \ + > deployment/tx/uni-7/tx-sets.txt + +python3 scripts/build_juno_v1_deployment_command.py \ + --tx-sets deployment/tx/uni-7/tx-sets.txt \ + --owner "$JUNO_OWNER" \ + --guardian "$JUNO_GUARDIAN" \ + --treasury "$JUNO_TREASURY" \ + --tokenfactory-module "$JUNO_TOKENFACTORY_MODULE" \ + --counterparty-denom "$FIRST_COUNTERPARTY_DENOM" \ + --output deployment/juno-v1-testnet.json \ + --render +python3 scripts/check_juno_v1_frontend_config.py deployment/juno-v1-testnet.json +``` + +State checks: + +```sh +/opt/data/bin/junod query wasm contract-state smart "$ADDR_FACTORY" '{"config":{}}' --node "$RPC" -o json | jq +/opt/data/bin/junod query wasm contract-state smart "$ADDR_NATIVE_COIN_REGISTRY" '{"native_tokens":{"limit":30}}' --node "$RPC" -o json | jq +/opt/data/bin/junod query wasm contract-state smart "$ADDR_FACTORY" '{"pairs":{"limit":30}}' --node "$RPC" -o json | jq +/opt/data/bin/junod query wasm contract-state smart "$PAIR_ADDR" '{"pool":{}}' --node "$RPC" -o json | jq +/opt/data/bin/junod query wasm contract-state smart "$PAIR_ADDR" '{"simulation":{"offer_asset":{"info":{"native_token":{"denom":"ujuno"}},"amount":"1000000"}}}' --node "$RPC" -o json | jq +/opt/data/bin/junod query wasm contract-state smart "$ADDR_ROUTER" '{"config":{}}' --node "$RPC" -o json | jq +``` + +Launch is not ready until factory `pairs`, pair `pool`, and pair `simulation` all return sensible values for at least one seeded XYK pool. + +## 7. Safety checks before public launch + +- Artifact set exactly matches the eight v1 wasms; no stable/PCL/maker/staking/vesting/xASTRO/converter artifacts. +- Every wasm passes `cosmwasm-check` with Juno capabilities and no neutron capability requirement. +- Mainnet `wasm params` are re-queried immediately before broadcast; current review state is open upload/instantiate, but if `wasm store` becomes permissioned, upload path must be governance/authorized uploader, not a hot wallet assumption. +- Owner/guardian/treasury are DAO-approved and documented. +- Factory instantiate/update txs are reviewed for no stable/PCL pair configs and no surprise maker fee. +- Native registry has correct decimals for `ujuno` and each launch denom. +- First pool denoms are verified through IBC denom trace and wallet/explorer display. +- UI registry/config has no placeholders and passes strict guards. +- Seed liquidity amount is intentional and publicly acceptable; do not list thin/empty pools. +- One direct swap smoke test and one add/remove liquidity smoke test are executed on the target chain before public comms. +- Risk notice is published: experimental Juno DEX v1, thin liquidity, verify contracts. + +## 8. Rollback/freeze risks + +- `wasm store` code IDs are immutable. Rollback means stop using a bad code ID, upload fixed code, migrate only contracts that support safe migrate, or instantiate replacements. +- Bad factory config can block or misroute pool creation. Immediate freeze: execute factory `update_pair_config` with `is_disabled=true` for XYK, or remove/avoid listing the factory in the frontend registry. +- Bad incentives config can create reward accounting confusion. Immediate freeze: hide incentives in UI and update factory `generator_address` to `null` if needed. +- Bad pool cannot be deleted from chain history. Mitigation: remove from registry/UI, publish warning, create replacement pool, and do not seed more liquidity. +- Bad native denom decimals corrupt display/quotes. Freeze affected denom in registry/UI until native coin registry and frontend config agree. +- Router misconfiguration affects multi-hop only. Keep direct pair swaps as launch path; hide router routes until router `config` and simulations pass. +- Mainnet upload permissioning can block deployment entirely if chain params change. Current review query shows `code_upload_access.permission=Everybody`; re-query before broadcast and require a governance/authorized uploader path only if the target query says code upload is restricted. + +## 9. Exact current blockers + +1. Optimized artifacts have not been produced in this environment because Docker daemon is unreachable. +2. Real code IDs do not exist in this repo yet for the eight Astroport-Juno v1 artifacts plus cw20-base. +3. Real instantiated contract addresses do not exist in this repo yet. +4. Owner, guardian, treasury, target upload signer, and first launch counterpart denom are not finalized in repo state. +5. The factory/incentives circular address dependency must be resolved by the update-after-incentives path above or by a documented Instantiate2/precomputed-address path. +6. No seeded XYK pool has been verified by factory `pairs`, pair `pool`, and pair `simulation` queries. +7. No real direct swap or add/remove liquidity smoke tx has been executed on the target chain. + +## 10. Operator-ready acceptance gate + +DEX v1 deployment handoff is ready for frontend only when this exact command sequence passes against real target-chain outputs: + +```sh +python3 scripts/check_juno_v1_artifacts.py artifacts +python3 scripts/check_juno_v1_deployment_template.py deployment/juno-v1-testnet.json +python3 scripts/check_juno_v1_frontend_config.py deployment/juno-v1-testnet.json +/opt/data/bin/junod query wasm contract-state smart "$ADDR_FACTORY" '{"config":{}}' --node "$RPC" -o json +/opt/data/bin/junod query wasm contract-state smart "$ADDR_FACTORY" '{"pairs":{"limit":30}}' --node "$RPC" -o json +/opt/data/bin/junod query wasm contract-state smart "$PAIR_ADDR" '{"pool":{}}' --node "$RPC" -o json +/opt/data/bin/junod query wasm contract-state smart "$PAIR_ADDR" '{"simulation":{"offer_asset":{"info":{"native_token":{"denom":"'$DENOM'"}},"amount":"1000000"}}}' --node "$RPC" -o json +``` + +Until then, frontend work may use the placeholder template/read-only shell, but it must not present Juno DEX v1 as live. diff --git a/deployment/juno-v1-testnet.template.json b/deployment/juno-v1-testnet.template.json new file mode 100644 index 000000000..0c5719371 --- /dev/null +++ b/deployment/juno-v1-testnet.template.json @@ -0,0 +1,130 @@ +{ + "network": { + "chain_id": "uni-7", + "bech32_prefix": "juno", + "fee_denom": "ujunox", + "native_asset_denom": "ujunox" + }, + "accounts": { + "owner": "juno1replaceowner000000000000000000000000000000000", + "guardian": "juno1replaceguardian000000000000000000000000000000", + "treasury": "juno1replacetreasury0000000000000000000000000000", + "tokenfactory_module": "juno1replacefactorymodule0000000000000000000000000" + }, + "code_ids": { + "astroport-factory": 0, + "astroport-incentives": 0, + "astroport-native-coin-registry": 0, + "astroport-oracle": 0, + "astroport-pair": 0, + "astroport-router": 0, + "astroport-tokenfactory-tracker": 0, + "astroport-whitelist": 0, + "cw20-base": 0 + }, + "addresses": { + "astroport-factory": "juno1replacefactory000000000000000000000000000000", + "astroport-incentives": "juno1replaceincentives00000000000000000000000000", + "astroport-native-coin-registry": "juno1replacecoinregistry00000000000000000000000", + "astroport-oracle": "juno1replaceoracle0000000000000000000000000000000", + "astroport-router": "juno1replacerouter000000000000000000000000000000", + "astroport-tokenfactory-tracker": "juno1replacetracker0000000000000000000000000000", + "astroport-whitelist": "juno1replacewhitelist00000000000000000000000000" + }, + "instantiate_msgs": { + "astroport-native-coin-registry": { + "owner": "juno1replaceowner000000000000000000000000000000000" + }, + "astroport-whitelist": { + "admins": [ + "juno1replaceowner000000000000000000000000000000000" + ], + "mutable": true + }, + "astroport-tokenfactory-tracker": { + "tokenfactory_module_address": "juno1replacefactorymodule0000000000000000000000000", + "track_over_seconds": true, + "tracked_denom": "factory/juno1replacefactory000000000000000000000000000000/astroport/share" + }, + "astroport-factory": { + "coin_registry_address": "juno1replacecoinregistry00000000000000000000000", + "fee_address": "juno1replacetreasury0000000000000000000000000000", + "generator_address": "juno1replaceincentives00000000000000000000000000", + "owner": "juno1replaceowner000000000000000000000000000000000", + "pair_configs": [ + { + "code_id": 0, + "is_disabled": false, + "is_generator_disabled": false, + "maker_fee_bps": 0, + "pair_type": { + "xyk": {} + }, + "permissioned": false, + "total_fee_bps": 30, + "whitelist": null + } + ], + "token_code_id": 0, + "tracker_config": { + "code_id": 0, + "token_factory_addr": "juno1replacefactorymodule0000000000000000000000000" + }, + "whitelist_code_id": 0 + }, + "astroport-router": { + "astroport_factory": "juno1replacefactory000000000000000000000000000000" + }, + "astroport-incentives": { + "reward_token": { + "native_token": { + "denom": "ujunox" + } + }, + "factory": "juno1replacefactory000000000000000000000000000000", + "guardian": "juno1replaceguardian000000000000000000000000000000", + "incentivization_fee_info": null, + "owner": "juno1replaceowner000000000000000000000000000000000" + }, + "astroport-oracle": { + "asset_infos": [ + { + "native_token": { + "denom": "ujunox" + } + } + ], + "factory_contract": "juno1replacefactory000000000000000000000000000000" + } + }, + "pair_create_msg_template": { + "pair_type": { + "xyk": {} + }, + "asset_infos": [ + { + "native_token": { + "denom": "ujunox" + } + }, + { + "native_token": { + "denom": "ibc/REPLACE_COUNTERPARTY_DENOM_HASH" + } + } + ], + "init_params": null + }, + "frontend": { + "required_addresses": [ + "astroport-factory", + "astroport-router", + "astroport-native-coin-registry", + "astroport-incentives" + ], + "optional_addresses": [ + "astroport-oracle" + ], + "pair_discovery": "query astroport-factory pairs/pair; do not hardcode pools before launch" + } +} diff --git a/deployment/operator-tx-checklist.md b/deployment/operator-tx-checklist.md new file mode 100644 index 000000000..387e83ec1 --- /dev/null +++ b/deployment/operator-tx-checklist.md @@ -0,0 +1,112 @@ +# Astroport-Juno v1 operator tx checklist + +Date: 2026-06-29T06:21:18Z + +Purpose: make the uni-7 DeFi v1 deployment handoff boring. This checklist names the exact transaction JSON files an operator should save, the values each file must yield, and the single command that converts them into the deployment config fill command. + +## Save these 16 tx JSON files + +Run store/instantiate commands with `--output json`, then save the full tx response bodies under an ignored local directory such as `deployment/tx/uni-7/`. Do not paste mnemonics, keyring output, or private material into these files. + +### Store txs → 9 code IDs + +| File | Extracted config key | +| --- | --- | +| `deployment/tx/uni-7/store-astroport-factory.json` | `code_ids.astroport-factory` | +| `deployment/tx/uni-7/store-astroport-incentives.json` | `code_ids.astroport-incentives` | +| `deployment/tx/uni-7/store-astroport-native-coin-registry.json` | `code_ids.astroport-native-coin-registry` | +| `deployment/tx/uni-7/store-astroport-oracle.json` | `code_ids.astroport-oracle` | +| `deployment/tx/uni-7/store-astroport-pair.json` | `code_ids.astroport-pair` | +| `deployment/tx/uni-7/store-astroport-router.json` | `code_ids.astroport-router` | +| `deployment/tx/uni-7/store-astroport-tokenfactory-tracker.json` | `code_ids.astroport-tokenfactory-tracker` | +| `deployment/tx/uni-7/store-astroport-whitelist.json` | `code_ids.astroport-whitelist` | +| `deployment/tx/uni-7/store-cw20-base.json` | `code_ids.cw20-base` | + +### Instantiate txs → 7 contract addresses + +| File | Extracted config key | +| --- | --- | +| `deployment/tx/uni-7/instantiate-astroport-factory.json` | `addresses.astroport-factory` | +| `deployment/tx/uni-7/instantiate-astroport-incentives.json` | `addresses.astroport-incentives` | +| `deployment/tx/uni-7/instantiate-astroport-native-coin-registry.json` | `addresses.astroport-native-coin-registry` | +| `deployment/tx/uni-7/instantiate-astroport-oracle.json` | `addresses.astroport-oracle` | +| `deployment/tx/uni-7/instantiate-astroport-router.json` | `addresses.astroport-router` | +| `deployment/tx/uni-7/instantiate-astroport-tokenfactory-tracker.json` | `addresses.astroport-tokenfactory-tracker` | +| `deployment/tx/uni-7/instantiate-astroport-whitelist.json` | `addresses.astroport-whitelist` | + +## Manual values to decide before rendering + +Set these as environment variables from the actual deployment plan: + +```sh +export JUNO_OWNER='juno...' +export JUNO_GUARDIAN='juno...' +export JUNO_TREASURY='juno...' +export JUNO_TOKENFACTORY_MODULE='juno...' +export FIRST_COUNTERPARTY_DENOM='ibc/...' +``` + +Keep v1 narrow: XYK pools, swaps, liquidity, native-denom incentives plumbing. No stable pools, LSTs, perps, yield theater, or new token scope. + +## Build `tx-sets.txt` + +```sh +mkdir -p deployment/tx/uni-7 +python3 scripts/extract_juno_v1_tx_sets.py \ + --code-id astroport-factory=deployment/tx/uni-7/store-astroport-factory.json \ + --code-id astroport-incentives=deployment/tx/uni-7/store-astroport-incentives.json \ + --code-id astroport-native-coin-registry=deployment/tx/uni-7/store-astroport-native-coin-registry.json \ + --code-id astroport-oracle=deployment/tx/uni-7/store-astroport-oracle.json \ + --code-id astroport-pair=deployment/tx/uni-7/store-astroport-pair.json \ + --code-id astroport-router=deployment/tx/uni-7/store-astroport-router.json \ + --code-id astroport-tokenfactory-tracker=deployment/tx/uni-7/store-astroport-tokenfactory-tracker.json \ + --code-id astroport-whitelist=deployment/tx/uni-7/store-astroport-whitelist.json \ + --code-id cw20-base=deployment/tx/uni-7/store-cw20-base.json \ + --address astroport-factory=deployment/tx/uni-7/instantiate-astroport-factory.json \ + --address astroport-incentives=deployment/tx/uni-7/instantiate-astroport-incentives.json \ + --address astroport-native-coin-registry=deployment/tx/uni-7/instantiate-astroport-native-coin-registry.json \ + --address astroport-oracle=deployment/tx/uni-7/instantiate-astroport-oracle.json \ + --address astroport-router=deployment/tx/uni-7/instantiate-astroport-router.json \ + --address astroport-tokenfactory-tracker=deployment/tx/uni-7/instantiate-astroport-tokenfactory-tracker.json \ + --address astroport-whitelist=deployment/tx/uni-7/instantiate-astroport-whitelist.json \ + > deployment/tx/uni-7/tx-sets.txt +``` + +Quick sanity check before rendering: + +```sh +wc -l deployment/tx/uni-7/tx-sets.txt +python3 scripts/extract_juno_v1_tx_sets.py --scan deployment/tx/uni-7/*.json +``` + +Expected: `tx-sets.txt` has 16 non-empty `--set ...` lines, each mapped file scans to exactly one relevant code ID or address, and no unrelated contract addresses leak into a mapped tx file. + +## Render and validate final config + +```sh +python3 scripts/build_juno_v1_deployment_command.py \ + --tx-sets deployment/tx/uni-7/tx-sets.txt \ + --owner "$JUNO_OWNER" \ + --guardian "$JUNO_GUARDIAN" \ + --treasury "$JUNO_TREASURY" \ + --tokenfactory-module "$JUNO_TOKENFACTORY_MODULE" \ + --counterparty-denom "$FIRST_COUNTERPARTY_DENOM" \ + --output deployment/juno-v1-testnet.json \ + --render +``` + +The final green line should include: + +```text +OK: Juno v1 deployment template matches instantiate schema requirements +instantiate_msgs=7 code_ids=9 addresses=7 pair_type=xyk +``` + +## If extraction fails + +- `missing tx JSON`: save the full `junod` tx response body at the expected path. +- `no code_id found` or `no contract address found`: run `--scan` against the file and confirm it is the final committed tx response, not an unsigned tx or broadcast stub. +- `multiple code_id` or `multiple contract addresses`: split the operation into one tx JSON per config key, or inspect manually before mapping. +- `tx sets missing required deployment values`: compare `deployment/tx/uni-7/tx-sets.txt` against the 16-row list above. + +Forward. The DEX v1 handoff should be mechanical, not mystical. diff --git a/integration-tests/tests/incentives_fake_pair_rejected.rs b/integration-tests/tests/incentives_fake_pair_rejected.rs index b94ca812b..fe1fddfa2 100644 --- a/integration-tests/tests/incentives_fake_pair_rejected.rs +++ b/integration-tests/tests/incentives_fake_pair_rejected.rs @@ -36,8 +36,8 @@ use cosmwasm_schema::{cw_serde, QueryResponses}; use cosmwasm_std::{ - coin, to_json_binary, Addr, Binary, Coin, Deps, DepsMut, Env, MessageInfo, Response, - StdError, StdResult, Timestamp, Uint128, + coin, to_json_binary, Addr, Binary, Coin, Deps, DepsMut, Env, MessageInfo, Response, StdError, + StdResult, Timestamp, Uint128, }; use cw_storage_plus::Item; @@ -75,7 +75,13 @@ fn incentivize_rejects_fake_pair_impersonating_real_asset_infos() { // Stand up the real (UJUNO, MOCK_USDC) pair so the factory has an // entry for that asset_info pair — the attacker will try to // impersonate it. - let real_pair = create_pair(&mut app, &handles.factory, &handles.deployer, UJUNO, MOCK_USDC); + let real_pair = create_pair( + &mut app, + &handles.factory, + &handles.deployer, + UJUNO, + MOCK_USDC, + ); let real_lp_denom = lp_denom_of(&app, &handles.factory, UJUNO, MOCK_USDC); // Deploy the fake-pair contract. Its sole purpose is to respond to @@ -85,8 +91,12 @@ fn incentivize_rejects_fake_pair_impersonating_real_asset_infos() { let fake_pair = instantiate_fake_pair( &mut app, vec![ - AssetInfo::NativeToken { denom: UJUNO.to_string() }, - AssetInfo::NativeToken { denom: MOCK_USDC.to_string() }, + AssetInfo::NativeToken { + denom: UJUNO.to_string(), + }, + AssetInfo::NativeToken { + denom: MOCK_USDC.to_string(), + }, ], ); let fake_denom = format!("factory/{fake_pair}/astroport/share"); @@ -136,8 +146,14 @@ fn incentivize_rejects_fake_pair_impersonating_real_asset_infos() { ); // Make sure the error message names both contenders so on-chain // attribution can attribute the spoof. - assert!(msg.contains(real_pair.as_str()), "error names the real pair address: {msg}"); - assert!(msg.contains(fake_pair.as_str()), "error names the fake (claimed) pair address: {msg}"); + assert!( + msg.contains(real_pair.as_str()), + "error names the real pair address: {msg}" + ); + assert!( + msg.contains(fake_pair.as_str()), + "error names the fake (claimed) pair address: {msg}" + ); // Belt-and-braces: the real pair's LP denom must still be acceptable // (proving the new gate doesn't false-positive on legitimate pairs). @@ -174,7 +190,9 @@ fn incentivize_rejects_fake_pair_with_unregistered_asset_infos() { let fake_pair = instantiate_fake_pair( &mut app, vec![ - AssetInfo::NativeToken { denom: UJUNO.to_string() }, + AssetInfo::NativeToken { + denom: UJUNO.to_string(), + }, AssetInfo::NativeToken { denom: "ibc/no-such-pair-token".to_string(), }, @@ -210,7 +228,9 @@ fn incentivize_rejects_fake_pair_with_unregistered_asset_infos() { }, &[coin(REWARD_AMOUNT, UJUNO)], ) - .expect_err("Incentivize against a fake pair with unregistered asset_infos must be rejected by rc4"); + .expect_err( + "Incentivize against a fake pair with unregistered asset_infos must be rejected by rc4", + ); let msg = err.root_cause().to_string(); assert!( @@ -223,10 +243,20 @@ fn incentivize_rejects_fake_pair_with_unregistered_asset_infos() { // helpers // ===================================================================== -fn create_pair(app: &mut TestApp, factory: &Addr, deployer: &Addr, denom_a: &str, denom_b: &str) -> Addr { +fn create_pair( + app: &mut TestApp, + factory: &Addr, + deployer: &Addr, + denom_a: &str, + denom_b: &str, +) -> Addr { let asset_infos = vec![ - AssetInfo::NativeToken { denom: denom_a.to_string() }, - AssetInfo::NativeToken { denom: denom_b.to_string() }, + AssetInfo::NativeToken { + denom: denom_a.to_string(), + }, + AssetInfo::NativeToken { + denom: denom_b.to_string(), + }, ]; app.execute_contract( deployer.clone(), @@ -253,8 +283,12 @@ fn lp_denom_of(app: &TestApp, factory: &Addr, denom_a: &str, denom_b: &str) -> S factory.clone(), &FactoryQueryMsg::Pair { asset_infos: vec![ - AssetInfo::NativeToken { denom: denom_a.to_string() }, - AssetInfo::NativeToken { denom: denom_b.to_string() }, + AssetInfo::NativeToken { + denom: denom_a.to_string(), + }, + AssetInfo::NativeToken { + denom: denom_b.to_string(), + }, ], }, ) diff --git a/integration-tests/tests/incentives_migrate_legacy_config.rs b/integration-tests/tests/incentives_migrate_legacy_config.rs index d00382324..943888429 100644 --- a/integration-tests/tests/incentives_migrate_legacy_config.rs +++ b/integration-tests/tests/incentives_migrate_legacy_config.rs @@ -181,18 +181,25 @@ fn migrate_from_upstream_unsupported_version_rejected() { // Seed legacy state: cw2 says "astroport-incentives 1.3.0" (note: the // fork's CARGO_PKG_NAME match is just "astroport-incentives" — the // crates.io-published `crates.io:` prefix is exercised in test 2). - write_legacy_cw2(&mut app, &incentives, FORK_CONTRACT_NAME, UPSTREAM_VERSION_1_3_0); + write_legacy_cw2( + &mut app, + &incentives, + FORK_CONTRACT_NAME, + UPSTREAM_VERSION_1_3_0, + ); write_legacy_config_json(&mut app, &incentives); // Snapshot the legacy bytes so we can prove no partial write. - let cw2_before = read_raw(&app, &incentives, CW2_CONTRACT_INFO_KEY) - .expect("cw2 contract_info seeded"); + let cw2_before = + read_raw(&app, &incentives, CW2_CONTRACT_INFO_KEY).expect("cw2 contract_info seeded"); let config_before = read_raw(&app, &incentives, CONFIG_KEY).expect("legacy config seeded"); // Migrate to the same code_id (real-world this would be a new wasm // upload, but for the rejection path the code identity doesn't // matter — the guard fires before any contract logic runs). - let deployer = app.api().addr_make(astroport_juno_integration_tests::DEPLOYER); + let deployer = app + .api() + .addr_make(astroport_juno_integration_tests::DEPLOYER); let err = app .migrate_contract(deployer, incentives.clone(), &Empty {}, code_id) .expect_err( @@ -260,7 +267,9 @@ fn migrate_from_upstream_contract_name_rejected() { ); write_legacy_config_json(&mut app, &incentives); - let deployer = app.api().addr_make(astroport_juno_integration_tests::DEPLOYER); + let deployer = app + .api() + .addr_make(astroport_juno_integration_tests::DEPLOYER); let err = app .migrate_contract(deployer, incentives.clone(), &Empty {}, code_id) .expect_err( @@ -308,7 +317,9 @@ fn migrate_from_current_fork_version_rejected() { assert_eq!(cw2.contract, FORK_CONTRACT_NAME); assert_eq!(cw2.version, FORK_CONTRACT_VERSION); - let deployer = app.api().addr_make(astroport_juno_integration_tests::DEPLOYER); + let deployer = app + .api() + .addr_make(astroport_juno_integration_tests::DEPLOYER); let err = app .migrate_contract(deployer, incentives.clone(), &Empty {}, code_id) .expect_err( diff --git a/integration-tests/tests/incentives_stuck_funds_recovered.rs b/integration-tests/tests/incentives_stuck_funds_recovered.rs index 73defd734..ab4ea9255 100644 --- a/integration-tests/tests/incentives_stuck_funds_recovered.rs +++ b/integration-tests/tests/incentives_stuck_funds_recovered.rs @@ -606,12 +606,7 @@ mod mock_cw20 { } } - fn transfer_inner( - state: &mut State, - from: &str, - to: &str, - amount: Uint128, - ) -> StdResult<()> { + fn transfer_inner(state: &mut State, from: &str, to: &str, amount: Uint128) -> StdResult<()> { // Subtract from sender. let from_balance = state .balances @@ -653,5 +648,4 @@ mod mock_cw20 { .map_err(StdError::overflow)?; Ok(()) } - } diff --git a/packages/astroport/src/incentives.rs b/packages/astroport/src/incentives.rs index 9e671fc4d..dfdc14473 100644 --- a/packages/astroport/src/incentives.rs +++ b/packages/astroport/src/incentives.rs @@ -1,8 +1,8 @@ use std::hash::{Hash, Hasher}; use std::ops::RangeInclusive; -use cosmwasm_schema::{cw_serde, QueryResponses}; use cosmwasm_schema::serde::{de::Error as _, Deserialize as _, Deserializer}; +use cosmwasm_schema::{cw_serde, QueryResponses}; use cosmwasm_std::{Addr, Coin, Decimal256, Env, StdError, StdResult, Uint128}; use crate::asset::{Asset, AssetInfo}; @@ -341,8 +341,8 @@ fn deserialize_generator_controller_update<'de, D>( where D: Deserializer<'de>, { - let opt = Option::::deserialize(deserializer) - .map_err(D::Error::custom)?; + let opt = + Option::::deserialize(deserializer).map_err(D::Error::custom)?; Ok(opt.unwrap_or_default()) } diff --git a/packages/astroport_juno_types/tests/wire_drift.rs b/packages/astroport_juno_types/tests/wire_drift.rs index 6ffe7b8e0..154844e3a 100644 --- a/packages/astroport_juno_types/tests/wire_drift.rs +++ b/packages/astroport_juno_types/tests/wire_drift.rs @@ -508,8 +508,8 @@ fn pair_xyk_pool_params_unpause_omitted_default() { assert_eq!(shim.track_asset_balances, Some(true)); assert_eq!(shim.pool_unpause_at, None); - let upstream: astroport::pair::XYKPoolParams = serde_json::from_str(legacy_json) - .expect("upstream accepts legacy XYKPoolParams JSON"); + let upstream: astroport::pair::XYKPoolParams = + serde_json::from_str(legacy_json).expect("upstream accepts legacy XYKPoolParams JSON"); assert_eq!(upstream.track_asset_balances, Some(true)); assert_eq!(upstream.pool_unpause_at, None); } @@ -646,8 +646,8 @@ fn pair_execute_withdraw_liquidity_assets_omitted_default() { other => panic!("expected WithdrawLiquidity, got {other:?}"), } - let upstream: astroport::pair::ExecuteMsg = serde_json::from_str(legacy_json) - .expect("upstream accepts legacy WithdrawLiquidity JSON"); + let upstream: astroport::pair::ExecuteMsg = + serde_json::from_str(legacy_json).expect("upstream accepts legacy WithdrawLiquidity JSON"); match upstream { astroport::pair::ExecuteMsg::WithdrawLiquidity { assets, @@ -969,32 +969,48 @@ fn pair_config_response_bidir() { fn pair_cumulative_prices_response_bidir() { let assets_juno = vec![ juno::asset::Asset { - info: juno::asset::AssetInfo::NativeToken { denom: "ujuno".to_string() }, + info: juno::asset::AssetInfo::NativeToken { + denom: "ujuno".to_string(), + }, amount: Uint128::new(1_000_000), }, juno::asset::Asset { - info: juno::asset::AssetInfo::NativeToken { denom: "ibc/USDC".to_string() }, + info: juno::asset::AssetInfo::NativeToken { + denom: "ibc/USDC".to_string(), + }, amount: Uint128::new(500_000), }, ]; let assets_up = vec![ astroport::asset::Asset { - info: astroport::asset::AssetInfo::NativeToken { denom: "ujuno".to_string() }, + info: astroport::asset::AssetInfo::NativeToken { + denom: "ujuno".to_string(), + }, amount: Uint128::new(1_000_000), }, astroport::asset::Asset { - info: astroport::asset::AssetInfo::NativeToken { denom: "ibc/USDC".to_string() }, + info: astroport::asset::AssetInfo::NativeToken { + denom: "ibc/USDC".to_string(), + }, amount: Uint128::new(500_000), }, ]; let prices_juno = vec![( - juno::asset::AssetInfo::NativeToken { denom: "ujuno".to_string() }, - juno::asset::AssetInfo::NativeToken { denom: "ibc/USDC".to_string() }, + juno::asset::AssetInfo::NativeToken { + denom: "ujuno".to_string(), + }, + juno::asset::AssetInfo::NativeToken { + denom: "ibc/USDC".to_string(), + }, Uint128::new(987_654_321), )]; let prices_up = vec![( - astroport::asset::AssetInfo::NativeToken { denom: "ujuno".to_string() }, - astroport::asset::AssetInfo::NativeToken { denom: "ibc/USDC".to_string() }, + astroport::asset::AssetInfo::NativeToken { + denom: "ujuno".to_string(), + }, + astroport::asset::AssetInfo::NativeToken { + denom: "ibc/USDC".to_string(), + }, Uint128::new(987_654_321), )]; bidir_roundtrip( diff --git a/planning/00-overview.md b/planning/00-overview.md index 7d7c6f4cc..23a230679 100644 --- a/planning/00-overview.md +++ b/planning/00-overview.md @@ -78,6 +78,31 @@ Three diffs to the AI audit; one mechanical (A), two functional (B, C). See | `10-open-questions.md` | Running list. | | `11-incentives-and-gauges.md` | (P2.5) Re-introduce `astroport-incentives`; bind to DAO DAO gauge for community-voted emissions; permissionless external incentives. | | `12-incentives-strip-decisions.md` | (P2.5) ADR D6 — per-decision rationale for the rc1→rc2 strip (vesting, cw20 axes, naming, MAX_REWARD_TOKENS, generator_controller, bech32 test mode). | +| `13-scope-guard-verification-2026-06-28.md` | Scope guard verification notes for the Juno v1 contract set. | +| `14-schema-scope-guard-2026-06-28.md` | Schema pruning and schema-set guard notes. | +| `15-juno-v1-guard-readiness-2026-06-29.md` | Readiness check notes for the Juno v1 guards. | +| `16-ci-artifact-guard-2026-06-29.md` | CI artifact-set guard notes for optimized wasm output. | +| `17-frontend-schema-surface-2026-06-29.md` | Frontend integration map generated from committed v1 JSON schemas. | +| `18-deployment-template-guard-2026-06-29.md` | Testnet deployment config template and schema-derived guard. | +| `19-ci-deployment-template-guard-2026-06-29.md` | CI wiring for the deployment template guard. | +| `20-ci-wiring-guard-2026-06-29.md` | Dependency-free guard that verifies the Juno v1 CI guard ordering. | +| `21-deployment-fill-script-2026-06-29.md` | Renderer for turning the uni-7 deployment template into a concrete config once code IDs/addresses are known. | +| `22-deployment-readme-2026-06-29.md` | Operator/frontend handoff README for filling and validating uni-7 deployment config values. | +| `23-tx-json-extraction-helper-2026-06-29.md` | Helper for extracting deployment `--set` values from `junod -o json` store/instantiate tx responses. | +| `24-tx-extractor-fixture-guard-2026-06-29.md` | CI fixture guard for the tx JSON extraction helper and launch-guard ordering. | +| `25-deployment-command-bundle-2026-06-29.md` | Final deployment command bundler that combines tx-derived values with manual operator values and validates rendered config. | +| `26-operator-tx-checklist-guard-2026-06-29.md` | Operator tx filename checklist plus CI guard for the uni-7 deployment handoff. | +| `27-dry-run-tx-fixtures-2026-06-29.md` | Dry-run tx fixture generator and rehearsal guard for the uni-7 handoff. | +| `28-dry-run-ci-wiring-2026-06-29.md` | CI wiring for the dry-run tx rehearsal guard. | +| `29-deployment-gitignore-guard-2026-06-29.md` | Gitignore guard that keeps local tx JSON and rendered deployment configs out of commits. | +| `30-frontend-config-guard-2026-06-29.md` | Frontend handoff guard that verifies rendered config address wiring and first XYK pair template without chain access. | +| `31-dry-run-frontend-validation-2026-06-29.md` | Dry-run deployment rehearsal now validates the temp rendered config with both deployment and frontend guards. | +| `32-frontend-types-handoff-2026-06-29.md` | Generated TypeScript frontend handoff type and CI guard tied to the deployment template. | +| `33-frontend-example-guard-2026-06-29.md` | TypeScript frontend consumer example plus CI guard for the generated handoff type. | +| `34-frontend-readme-consumption-2026-06-29.md` | Frontend README snippet showing how to import rendered JSON with the generated handoff type. | +| `35-deployment-readme-guard-2026-06-29.md` | Deployment README guard that keeps operator/frontend handoff docs aligned with helper scripts. | +| `36-frontend-handoff-sync-guard-2026-06-29.md` | Frontend address key sync guard across template, TypeScript, example, README, and CI. | +| `37-frontend-release-checklist-guard-2026-06-29.md` | Frontend release checklist and guard for copying rendered deployment files into the UI repo. | Files marked "(P*)" are stubs until that phase begins. diff --git a/planning/01-strip-list.md b/planning/01-strip-list.md index f9e6686e2..6bfac7f56 100644 --- a/planning/01-strip-list.md +++ b/planning/01-strip-list.md @@ -8,13 +8,14 @@ table is wrong — fix it. | Path | Role | Notes | |---|---|---| -| `contracts/factory` | Pool creation + registry | `whitelist_code_id` non-optional — see whitelist note below. `generator_address: None` in v1 (no incentives). | +| `contracts/factory` | Pool creation + registry | `whitelist_code_id` non-optional — see whitelist note below. `generator_address` points at `contracts/tokenomics/incentives` once incentives are instantiated. | | `contracts/pair` | XYK constant-product AMM | Receives `pool_unpause_at` patch in P2. LP token is TokenFactory-native (no cw20 LP code path in v5.13.1). | | `contracts/router` | Multi-hop swap composition | XYK-only routing in v1. Dev-deps on `pair_concentrated` will be removed in P0. | | `contracts/whitelist` | cw1-style permissioned-pair gate | Neutron-stripped in P0 (drops `neutron-sdk`, `NeutronMsg`, `sudo` entry, `src/ibc.rs`). See `03-whitelist-decision.md`. | | `contracts/periphery/native_coin_registry` | Native-denom precision oracle | Required by factory; v1 seeds with `ujuno` + canonical IBC denoms. | | `contracts/periphery/oracle` | Per-pair TWAP | Uploaded but not auto-instantiated. UI uses for price charts. 1-day hardcoded window. | | `contracts/periphery/tokenfactory_tracker` | TF snapshot tracker | Uploaded, dormant in v1. Wakes up when a pair sets `track_asset_balances: true`. | +| `contracts/tokenomics/incentives` | LP reward distributor | Re-added in P2.5 for DAO-funded `ujuno` emissions plus permissionless external cw20/native rewards; no DEX token, no vesting, no staking. See `11-incentives-and-gauges.md` and ADR D6. | | `packages/astroport` | Wire-type + helper crate | Most modules kept; chain-specific modules removed (see "Pruned modules" below). | | `packages/astroport_test` | cw-multi-test harness | Injective feature branches stripped. | @@ -39,7 +40,7 @@ audit-delta cycle, not a re-fork from upstream. | `contracts/pair_transmuter` | 1:1 constant-sum. Niche. Defer indefinitely. | | `contracts/pair_xyk_sale_tax` | XYK with sale tax. cw-abc graduation handles meme-launch flow orthogonally. | | `contracts/pair_concentrated_sale_tax` | PCL with sale tax. Same reason. | -| `contracts/tokenomics/` (entire subtree) | No DEX token in v1 — no incentives, maker fee collector, xASTRO staking, vesting, or xastro_token. | +| `contracts/tokenomics/maker`, `contracts/tokenomics/staking`, `contracts/tokenomics/vesting`, `contracts/tokenomics/xastro_token` | No DEX token in v1 — no maker fee collector, xASTRO staking, vesting, or xASTRO token. `contracts/tokenomics/incentives` is the only tokenomics contract re-added for Juno v1. | | `contracts/periphery/astro_converter` | Terra-specific cw20→TF converter. | | `contracts/periphery/astro_converter_neutron` | Neutron outpost of above. | | `e2e/` | TypeScript e2e harness bound to localterra-1 + localneutron-1 via feather.js. Juno-incompatible without a full rewrite. | @@ -82,7 +83,8 @@ astroport_native_coin_registry.wasm astroport_oracle.wasm astroport_tokenfactory_tracker.wasm astroport_whitelist.wasm +astroport_incentives.wasm ``` -7 wasms. Each must pass `cosmwasm-check --available-capabilities staking,cosmwasm_1_1,cosmwasm_2_0,iterator,stargate` +8 wasms. Each must pass `cosmwasm-check --available-capabilities staking,cosmwasm_1_1,cosmwasm_2_0,iterator,stargate` (no `neutron` capability). diff --git a/planning/04-incentives-types-decision.md b/planning/04-incentives-types-decision.md index 45da23b2c..6629b6b48 100644 --- a/planning/04-incentives-types-decision.md +++ b/planning/04-incentives-types-decision.md @@ -1,7 +1,9 @@ # 04 — Incentives types-only retention (ADR D1) -**Status:** decided 2026-05-13. Keep `packages/astroport/src/incentives.rs` -as a types-only module. Do not refactor the factory's import of it. +**Status:** superseded by P2.5 / ADR D6. This ADR records the earlier rc0/rc1 +reason for keeping `packages/astroport/src/incentives.rs` while the incentives +contract was stripped. Juno v1 now ships a stripped `contracts/tokenomics/incentives` +contract; see `11-incentives-and-gauges.md` and `12-incentives-strip-decisions.md`. ## Problem @@ -10,9 +12,10 @@ as a types-only module. Do not refactor the factory's import of it. this message when a pair is deactivated and the factory has a `generator_address: Some(_)` configured. -In v1 we ship `generator_address: None` (no incentives, no DEX token, see -`memory/juno-defi-direction.md`). The code path that constructs the -`DeactivatePool` message is unreachable. +In rc0/rc1 we shipped `generator_address: None` (no incentives, no DEX token, +see `memory/juno-defi-direction.md`). The code path that constructs the +`DeactivatePool` message was unreachable at that boundary. In P2.5, incentives +returned to v1 scope without adding a DEX token. But: `packages/astroport/src/incentives.rs` defines the type. If we delete that module, the factory no longer compiles. @@ -42,36 +45,39 @@ Two sub-options: Both larger diffs than (a) and worse on every axis. -## Decision +## Decision at rc0/rc1 Option (a). Keep `packages/astroport/src/incentives.rs` exactly as upstream. Keep `pub mod incentives;` in `src/lib.rs`. The factory's import line at `contracts/factory/src/contract.rs:19` stays untouched. -## What changes in the strip +## What changed in the rc0/rc1 strip -- The `contracts/tokenomics/incentives` *contract* is deleted (it implements - the incentives state machine; we don't ship it). +- The `contracts/tokenomics/incentives` *contract* was deleted at rc0/rc1 (it + implements the incentives state machine; we did not ship it at that boundary). - The `astroport::incentives` *types module* in `packages/astroport` stays. +P2.5 supersedes the first bullet: `contracts/tokenomics/incentives` is now a +workspace member again, with Juno-specific strips documented in ADR D6. + The factory imports `astroport::incentives::ExecuteMsg::DeactivatePool` — -the *type*, not the contract. Type stays; contract goes. +the *type*, not the contract binary. Type stays; the stripped incentives +contract now ships separately as a v1 workspace member. ## How to apply this in audit narrative In `planning/07-audit-scope.md`, the audit-house brief should state: > The `astroport::incentives` module in `packages/astroport` is retained as -> a wire-type declaration only. The corresponding `tokenomics/incentives` -> contract is not shipped. The factory's single import-site of this type is -> in a `generator_address: Some(_)` branch that is never reached in v1 -> deployments (factory is instantiated with `generator_address: None`). -> Treat the import as dead code; treat the type module as a JSON schema -> artifact, not a contract surface. - -## Future shape - -When v2 brings incentives: ship a new `astroport-incentives` contract built -from upstream Astroport's reference impl, instantiate it, set -`factory.generator_address: Some(addr)`. Factory's existing -`DeactivatePool` import-site activates with no factory change required. +> the canonical wire-type surface for both the factory deactivation hook and +> the shipped `contracts/tokenomics/incentives` contract. In rc0/rc1 the +> module was types-only because the contract was out of scope; P2.5 re-added +> the stripped incentives contract. Audit the type module together with the +> incentives contract and confirm factory `DeactivatePool` messages still +> match the shipped execute schema. + +## Current shape after P2.5 + +Juno v1 ships `astroport-incentives` as a bounded LP rewards contract: DAO-funded +internal rewards, permissionless external incentives, no vesting contract, no +xASTRO staking, no maker, and no new DEX token. diff --git a/planning/13-scope-guard-verification-2026-06-28.md b/planning/13-scope-guard-verification-2026-06-28.md new file mode 100644 index 000000000..49b429dc9 --- /dev/null +++ b/planning/13-scope-guard-verification-2026-06-28.md @@ -0,0 +1,42 @@ +# 13 — Juno v1 scope guard verification + +Date: 2026-06-28 + +## Slice + +Verified the local Astroport-Juno v1 scope guard after P2.5 re-added bounded LP incentives to v1. + +## Why it matters + +The launch scope must stay simple: XYK swaps, pools, liquidity, and bounded LP incentives only. The docs now say `contracts/tokenomics/incentives` is included, so `Cargo.toml`, the canonical strip list, and the final wasm artifact set need to agree. + +## Commands run + +```sh +python3 scripts/check_juno_v1_scope.py +git diff --check -- planning/01-strip-list.md planning/04-incentives-types-decision.md scripts/check_juno_v1_scope.py +git status --short --branch +``` + +## Results + +```text +OK: Astroport-Juno v1 scope matches Cargo.toml and planning/01-strip-list.md +workspace_members=13 expected_wasms=8 +``` + +`git diff --check` produced no output, so the changed planning files and new guard script have no whitespace errors. + +## Current local refs + +```text +## main...origin/main + M planning/01-strip-list.md + M planning/04-incentives-types-decision.md +?? scripts/check_juno_v1_scope.py +?? planning/13-scope-guard-verification-2026-06-28.md +``` + +## Next + +Run the broader contract build/check path for the eight expected wasm artifacts, then wire `scripts/check_juno_v1_scope.py` into CI or a documented pre-audit checklist. diff --git a/planning/14-schema-scope-guard-2026-06-28.md b/planning/14-schema-scope-guard-2026-06-28.md new file mode 100644 index 000000000..ba9b5bda8 --- /dev/null +++ b/planning/14-schema-scope-guard-2026-06-28.md @@ -0,0 +1,68 @@ +# 14 — Juno v1 schema scope guard + +Date: 2026-06-28 + +## Slice + +Pruned committed JSON schema directories so frontend/integration consumers only see the eight Astroport-Juno v1 contracts, then added a no-dependency schema-scope guard. + +## Why it matters + +The repository still contained generated schemas for stripped or deferred surfaces (`maker`, `staking`, `vesting`, `xastro_token`, stable/PCL/sale-tax/converter pairs). Those schemas make non-v1 contracts look available even when `Cargo.toml` and the strip plan exclude them. For a Juno-native v1 DEX, the schema surface should advertise only XYK swaps/pools, routing, registry/oracle/tracker/whitelist, and bounded LP incentives. + +## Kept schema directories + +```text +astroport-factory +astroport-incentives +astroport-native-coin-registry +astroport-oracle +astroport-pair +astroport-router +astroport-tokenfactory-tracker +astroport-whitelist +``` + +## Removed stale schema directories + +```text +astro-token-converter +astroport-maker +astroport-pair-concentrated +astroport-pair-concentrated-duality +astroport-pair-concentrated-sale-tax +astroport-pair-converter +astroport-pair-stable +astroport-pair-xastro +astroport-pair-xyk-sale-tax +astroport-staking +astroport-vesting +astroport-xastro-token +``` + +## Verification + +```sh +python3 scripts/check_juno_v1_schemas.py +python3 scripts/check_juno_v1_scope.py +git diff --check -- scripts/check_juno_v1_schemas.py schemas scripts/check_juno_v1_scope.py planning/01-strip-list.md planning/04-incentives-types-decision.md +``` + +Results: + +```text +OK: committed schemas match Astroport-Juno v1 contract set +schema_dirs=8 expected=8 +OK: Astroport-Juno v1 scope matches Cargo.toml and planning/01-strip-list.md +workspace_members=13 expected_wasms=8 +``` + +`git diff --check` produced no output. + +## Build caveat + +This host currently has no `cargo` binary on `PATH`, so I could not regenerate schemas with `scripts/build_schemas.sh` in this run. The new guard is deliberately Python-only and verifies the committed schema surface that frontend work will consume. + +## Next + +Install/activate Rust on this host or run inside the known build container, then execute `scripts/build_schemas.sh` and re-run both Juno v1 guards. diff --git a/planning/15-juno-v1-guard-readiness-2026-06-29.md b/planning/15-juno-v1-guard-readiness-2026-06-29.md new file mode 100644 index 000000000..d847e446b --- /dev/null +++ b/planning/15-juno-v1-guard-readiness-2026-06-29.md @@ -0,0 +1,54 @@ +# 15 — Juno v1 guard readiness check + +Date: 2026-06-29 + +## Slice + +Re-ran the local Astroport-Juno v1 guardrail checks and captured release-readiness state for the simple DEX surface. + +## Why it matters + +Juno DeFi v1 should stay boring and shippable: swaps, pools, liquidity, routing, and bounded LP incentives. The guard scripts keep `Cargo.toml`, planning docs, and committed JSON schemas from quietly drifting back into stable/PCL/converter/staking/vesting scope. + +## Verification run + +```sh +python3 scripts/check_juno_v1_scope.py \ + && python3 scripts/check_juno_v1_schemas.py \ + && git diff --check -- scripts/check_juno_v1_scope.py scripts/check_juno_v1_schemas.py planning/01-strip-list.md planning/04-incentives-types-decision.md planning/13-scope-guard-verification-2026-06-28.md planning/14-schema-scope-guard-2026-06-28.md schemas +command -v cargo || true; command -v rustc || true; command -v just || true +``` + +Results: + +```text +OK: Astroport-Juno v1 scope matches Cargo.toml and planning/01-strip-list.md +workspace_members=13 expected_wasms=8 +OK: committed schemas match Astroport-Juno v1 contract set +schema_dirs=8 expected=8 +``` + +`git diff --check` produced no output. + +Tooling available on this host: + +```text +/usr/bin/just +``` + +No `cargo` or `rustc` binary was found on `PATH`, so full Rust build/schema regeneration remains blocked on a Rust toolchain or build container. + +## Current guarded v1 contract surface + +- `astroport_factory.wasm` +- `astroport_pair.wasm` +- `astroport_router.wasm` +- `astroport_native_coin_registry.wasm` +- `astroport_oracle.wasm` +- `astroport_tokenfactory_tracker.wasm` +- `astroport_whitelist.wasm` +- `astroport_incentives.wasm` + +## Next + +Run the same guards inside the Rust-enabled build environment after regenerating schemas, then wire both Python guards into CI/pre-audit docs before any Juno DEX v1 release branch. diff --git a/planning/16-ci-artifact-guard-2026-06-29.md b/planning/16-ci-artifact-guard-2026-06-29.md new file mode 100644 index 000000000..aec2e3273 --- /dev/null +++ b/planning/16-ci-artifact-guard-2026-06-29.md @@ -0,0 +1,48 @@ +# 16 — CI guard for Juno v1 artifacts + +Date: 2026-06-29 + +## Slice + +Added an optimized-artifact guard and wired the Juno v1 scope/schema/artifact checks into GitHub Actions. + +## Why it matters + +The v1 launch surface should remain a simple Juno-native DEX: factory, XYK pair, router, whitelist, native coin registry, oracle, tokenfactory tracker, and bounded LP incentives. CI now has cheap fail-fast checks before Rust work starts, after schema regeneration, and after rust-optimizer emits wasm artifacts. + +This reduces the launch-risk class where deferred contracts such as stable/PCL pairs, maker, staking, vesting, xASTRO, converters, or sale-tax variants silently re-enter release artifacts. + +## Files touched + +- `scripts/check_juno_v1_artifacts.py` +- `.github/workflows/tests_and_checks.yml` +- `.github/workflows/check_artifacts.yml` + +## CI wiring + +- `tests_and_checks.yml` now runs: + - `python3 scripts/check_juno_v1_scope.py` + - `python3 scripts/check_juno_v1_schemas.py` + - and re-runs the schema guard after `scripts/build_schemas.sh`. +- `check_artifacts.yml` now runs: + - `scripts/check_artifacts_size.sh` + - `python3 scripts/check_juno_v1_artifacts.py` after optimizer output exists. + +## Expected v1 artifact set + +- `astroport_factory.wasm` +- `astroport_pair.wasm` +- `astroport_router.wasm` +- `astroport_native_coin_registry.wasm` +- `astroport_oracle.wasm` +- `astroport_tokenfactory_tracker.wasm` +- `astroport_whitelist.wasm` +- `astroport_incentives.wasm` + +## Verification + +Local host still has no Rust toolchain, and `scripts/build_release.sh` is blocked because the Docker daemon is not reachable here (`Cannot connect to the Docker daemon at unix:///var/run/docker.sock`). The new artifact guard was verified with a temporary fake artifact directory containing exactly the eight expected wasm names, plus a negative extra-artifact check. + +## Next + +Run the CI path or local `scripts/build_release.sh` in a Rust/Docker-enabled environment and confirm `scripts/check_juno_v1_artifacts.py` passes against real optimized wasm output. diff --git a/planning/17-frontend-schema-surface-2026-06-29.md b/planning/17-frontend-schema-surface-2026-06-29.md new file mode 100644 index 000000000..717ae5170 --- /dev/null +++ b/planning/17-frontend-schema-surface-2026-06-29.md @@ -0,0 +1,29 @@ +# Astroport-Juno v1 frontend schema surface + +Generated from committed `schemas/*/raw/*.json`. Keep this surface boring: XYK swap/liquidity, pair discovery, registry/oracle reads, and external incentives only. + +| Contract | Instantiate fields | Execute variants | Query variants | Other messages | Response schemas | +|---|---|---|---|---|---| +| `astroport-factory` | `coin_registry_address`, `fee_address`, `generator_address`, `owner`, `pair_configs`, `token_code_id`, `tracker_config`, `whitelist_code_id` | `update_config`, `update_tracker_config`, `update_pair_config`, `create_pair`, `deregister`, `propose_new_owner`, `drop_ownership_proposal`, `claim_ownership` | `config`, `pair`, `pairs`, `fee_info`, `blacklisted_pair_types`, `tracker_config` | — | `blacklisted_pair_types`, `config`, `fee_info`, `pair`, `pairs`, `tracker_config` | +| `astroport-incentives` | `astro_token`, `factory`, `guardian`, `incentivization_fee_info`, `owner`, `vesting_contract` | `setup_pools`, `claim_rewards`, `receive`, `deposit`, `withdraw`, `set_tokens_per_second`, `incentivize`, `incentivize_many`, `remove_reward_from_pool`, `claim_orphaned_rewards`, `update_config`, `update_blocked_tokenslist`, `deactivate_pool`, `deactivate_blocked_pools`, `propose_new_owner`, `drop_ownership_proposal`, `claim_ownership` | `config`, `deposit`, `pending_rewards`, `reward_info`, `pool_info`, `pool_stakers`, `blocked_tokens_list`, `is_fee_expected`, `external_reward_schedules`, `list_pools`, `active_pools` | — | `active_pools`, `blocked_tokens_list`, `config`, `deposit`, `external_reward_schedules`, `is_fee_expected`, `list_pools`, `pending_rewards`, `pool_info`, `pool_stakers`, `reward_info` | +| `astroport-native-coin-registry` | `owner` | `add`, `register`, `remove`, `propose_new_owner`, `drop_ownership_proposal`, `claim_ownership` | `config`, `native_token`, `native_tokens` | — | `config`, `native_token`, `native_tokens` | +| `astroport-oracle` | `asset_infos`, `factory_contract` | `update` | `consult` | — | `consult` | +| `astroport-pair` | `asset_infos`, `factory_addr`, `init_params`, `pair_type`, `token_code_id` | `receive`, `provide_liquidity`, `withdraw_liquidity`, `swap`, `update_config`, `propose_new_owner`, `drop_ownership_proposal`, `claim_ownership`, `custom` | `pair`, `pool`, `config`, `share`, `simulation`, `reverse_simulation`, `cumulative_prices`, `query_compute_d`, `asset_balance_at`, `observe`, `simulate_withdraw`, `simulate_provide` | — | `asset_balance_at`, `config`, `cumulative_prices`, `observe`, `pair`, `pool`, `query_compute_d`, `reverse_simulation`, `share`, `simulate_provide`, `simulate_withdraw`, `simulation` | +| `astroport-router` | `astroport_factory` | `receive`, `execute_swap_operations`, `execute_swap_operation` | `config`, `simulate_swap_operations`, `reverse_simulate_swap_operations` | — | `config`, `reverse_simulate_swap_operations`, `simulate_swap_operations` | +| `astroport-tokenfactory-tracker` | `tokenfactory_module_address`, `track_over_seconds`, `tracked_denom` | — | `balance_at`, `total_supply_at`, `config` | `sudo:block_before_send`, `sudo:track_before_send` | `balance_at`, `config`, `total_supply_at` | +| `astroport-whitelist` | `admins`, `mutable` | `execute`, `freeze`, `update_admins` | `admin_list`, `can_execute` | — | `admin_list`, `can_execute` | + +contracts=8 + +## Frontend launch implications + +- Use `astroport-factory` for pair discovery and `create_pair`; v1 pair type is XYK only. +- Use `astroport-router` for multi-hop swaps; direct pair `swap` remains the single-hop primitive. +- Liquidity UX must support pair `provide_liquidity`, `withdraw_liquidity`, `simulation`, `reverse_simulation`, `simulate_provide`, and `simulate_withdraw`. +- Incentives UX is external-rewards only for v1: claim/deposit/withdraw plus pool/reward queries. No new DEX token UI, vesting, staking, stable pools, PCL, LSTs, perps, or yield vaults. +- Deployment config that frontends need: factory address, router address, native coin registry address, incentives address, optional oracle addresses, and factory-discovered pair addresses. + +## Verification + +- Generated by `python3 scripts/summarize_juno_v1_schema_surface.py` from committed JSON schemas. +- Guarded by `python3 scripts/check_juno_v1_schemas.py` to keep the eight-contract v1 surface exact. diff --git a/planning/18-deployment-template-guard-2026-06-29.md b/planning/18-deployment-template-guard-2026-06-29.md new file mode 100644 index 000000000..f36226c85 --- /dev/null +++ b/planning/18-deployment-template-guard-2026-06-29.md @@ -0,0 +1,47 @@ +# 18 — Juno v1 deployment template guard + +Date: 2026-06-29 + +## Increment + +Added a minimal testnet deployment config template and a no-dependency validator for the Astroport-Juno v1 launch surface. + +The template is intentionally boring: code IDs, contract addresses, instantiate messages, and frontend-required addresses for factory, router, native coin registry, incentives, oracle, tokenfactory tracker, and whitelist. It does not add a DEX token, stable pools, PCL, LSTs, perps, yield vaults, or other deferred surfaces. + +## Files + +- `deployment/juno-v1-testnet.template.json` +- `scripts/check_juno_v1_deployment_template.py` + +## Guard behavior + +`check_juno_v1_deployment_template.py` reads committed `schemas/*/raw/instantiate.json` and verifies: + +- the template has instantiate messages for each directly instantiated v1 contract; +- each instantiate message includes all schema-required fields; +- code IDs include exactly the v1 contracts plus `cw20-base` for LP tokens; +- addresses include exactly the directly instantiated v1 contracts; +- factory `pair_configs` contains exactly one permissionless XYK config; +- the pair creation template is XYK-only; +- frontend-required addresses resolve to template addresses. + +## Verification + +```text +$ python3 scripts/check_juno_v1_deployment_template.py +OK: Juno v1 deployment template matches instantiate schema requirements +instantiate_msgs=7 code_ids=9 addresses=7 pair_type=xyk + +$ python3 scripts/check_juno_v1_scope.py && python3 scripts/check_juno_v1_schemas.py +OK: Astroport-Juno v1 scope matches Cargo.toml and planning/01-strip-list.md +workspace_members=13 expected_wasms=8 +OK: committed schemas match Astroport-Juno v1 contract set +schema_dirs=8 expected=8 + +$ git diff --check -- deployment/juno-v1-testnet.template.json scripts/check_juno_v1_deployment_template.py planning/18-deployment-template-guard-2026-06-29.md planning/00-overview.md +# no output +``` + +## Next bounded slice + +Wire the deployment template guard into CI, then replace placeholders with real uni-7 code IDs/addresses after a successful optimized artifact build and upload. diff --git a/planning/19-ci-deployment-template-guard-2026-06-29.md b/planning/19-ci-deployment-template-guard-2026-06-29.md new file mode 100644 index 000000000..f1212b4f4 --- /dev/null +++ b/planning/19-ci-deployment-template-guard-2026-06-29.md @@ -0,0 +1,39 @@ +# 19 — CI deployment template guard + +Date: 2026-06-29 + +## Increment + +Wired the Juno v1 deployment template validator into the normal GitHub Actions test/check path. + +The first CI step now runs all no-dependency launch guards before Rust install/cache-heavy work: + +1. `scripts/check_juno_v1_scope.py` +2. `scripts/check_juno_v1_schemas.py` +3. `scripts/check_juno_v1_deployment_template.py` + +This keeps the v1 launch surface boring and exact: XYK pools only, no stable/PCL/perps/yield creep, and a deployment template that tracks the instantiate schemas. + +## Files + +- `.github/workflows/tests_and_checks.yml` +- `planning/19-ci-deployment-template-guard-2026-06-29.md` + +## Verification + +```text +$ python3 scripts/check_juno_v1_scope.py && python3 scripts/check_juno_v1_schemas.py && python3 scripts/check_juno_v1_deployment_template.py +OK: Astroport-Juno v1 scope matches Cargo.toml and planning/01-strip-list.md +workspace_members=13 expected_wasms=8 +OK: committed schemas match Astroport-Juno v1 contract set +schema_dirs=8 expected=8 +OK: Juno v1 deployment template matches instantiate schema requirements +instantiate_msgs=7 code_ids=9 addresses=7 pair_type=xyk + +$ git diff --check -- .github/workflows/tests_and_checks.yml planning/19-ci-deployment-template-guard-2026-06-29.md +# no output +``` + +## Next bounded slice + +Run the GitHub Actions path on a branch/PR, or locally run the Rust checks after schema generation to make sure the full workflow still passes end-to-end. diff --git a/planning/20-ci-wiring-guard-2026-06-29.md b/planning/20-ci-wiring-guard-2026-06-29.md new file mode 100644 index 000000000..b9d530b69 --- /dev/null +++ b/planning/20-ci-wiring-guard-2026-06-29.md @@ -0,0 +1,42 @@ +# 20 — CI wiring guard + +Date: 2026-06-29 + +## Increment + +Added a dependency-free GitHub Actions wiring validator for the Juno v1 launch guards. + +The new `scripts/check_juno_v1_ci_wiring.py` scans workflow text and fails if: + +- the scope/schema/deployment-template guards stop running before Rust install/cache-heavy work; +- the schema guard stops running again after schema regeneration and before the schema diff check; +- the artifact-set guard stops running after optimizer output and artifact size checks but before `cosmwasm-check`. + +This is deliberately boring infrastructure: if someone edits CI while rushing toward uni-7, the launch guards should not silently become documentation theater. + +## Files + +- `.github/workflows/tests_and_checks.yml` +- `scripts/check_juno_v1_ci_wiring.py` +- `planning/20-ci-wiring-guard-2026-06-29.md` + +## Verification + +```text +$ python3 scripts/check_juno_v1_ci_wiring.py && python3 scripts/check_juno_v1_scope.py && python3 scripts/check_juno_v1_schemas.py && python3 scripts/check_juno_v1_deployment_template.py +OK: GitHub Actions wiring enforces Astroport-Juno v1 guards +tests_guards=scope/schema/template pre_rust=true schema_post_generation=true artifact_guard_after_size=true +OK: Astroport-Juno v1 scope matches Cargo.toml and planning/01-strip-list.md +workspace_members=13 expected_wasms=8 +OK: committed schemas match Astroport-Juno v1 contract set +schema_dirs=8 expected=8 +OK: Juno v1 deployment template matches instantiate schema requirements +instantiate_msgs=7 code_ids=9 addresses=7 pair_type=xyk + +$ git diff --check -- .github/workflows/tests_and_checks.yml scripts/check_juno_v1_ci_wiring.py planning/20-ci-wiring-guard-2026-06-29.md +# no output +``` + +## Next bounded slice + +Add a minimal deployment fill script that takes real uni-7 code IDs/addresses and updates a copied config while preserving the template guard’s v1 constraints. diff --git a/planning/21-deployment-fill-script-2026-06-29.md b/planning/21-deployment-fill-script-2026-06-29.md new file mode 100644 index 000000000..32a358919 --- /dev/null +++ b/planning/21-deployment-fill-script-2026-06-29.md @@ -0,0 +1,42 @@ +# 21 — Deployment fill script + +Date: 2026-06-29 + +## Increment + +Added a small, dependency-free renderer for the uni-7 deployment/frontend config handoff: + +- `scripts/fill_juno_v1_deployment_config.py` + +It starts from `deployment/juno-v1-testnet.template.json`, accepts repeated `--set dotted.path=value` overrides for real code IDs, addresses, accounts, and network values, then rewires dependent instantiate fields from those top-level values. + +This keeps the v1 deployment surface boring: + +- XYK-only pair config remains in the template/guard. +- No DEX token is introduced; incentives still use the configured native denom. +- Frontend-required contract addresses stay in one top-level `addresses` section. +- `--require-complete` fails if placeholder strings remain or any code ID is still `0`. + +## Guard update + +`check_juno_v1_deployment_template.py` now accepts an optional config path, so both the placeholder template and a rendered concrete config can be checked with the same schema-derived guard. + +## Verification + +Ran a temp render with dummy uni-7 values and `--require-complete`, then validated the rendered config: + +```sh +python3 scripts/fill_juno_v1_deployment_config.py --output /tmp/juno-v1-filled.json --require-complete ... +# OK: wrote rendered Juno v1 deployment config to /tmp/juno-v1-filled.json +# sets=21 require_complete=True + +python3 scripts/check_juno_v1_deployment_template.py /tmp/juno-v1-filled.json +# OK: Juno v1 deployment template matches instantiate schema requirements +# instantiate_msgs=7 code_ids=9 addresses=7 pair_type=xyk +``` + +Also re-ran the default template guard to ensure existing CI behavior is unchanged. + +## Next bounded slice + +Add a sample `deployment/README.md` command block showing the exact fill command shape for uni-7 once upload/instantiate outputs are known. diff --git a/planning/22-deployment-readme-2026-06-29.md b/planning/22-deployment-readme-2026-06-29.md new file mode 100644 index 000000000..3d852f093 --- /dev/null +++ b/planning/22-deployment-readme-2026-06-29.md @@ -0,0 +1,51 @@ +# 22 — Deployment handoff README + +Date: 2026-06-29 + +## Increment + +Added `deployment/README.md` as the operator/frontend handoff for the uni-7 bakeoff. + +The README lists the exact values that must be collected from real upload and instantiate output before rendering a concrete config: + +- four governance/operator accounts; +- nine code IDs; +- seven instantiated contract addresses; +- one real first-pool counterpart denom. + +It also includes a copy/paste `fill_juno_v1_deployment_config.py --require-complete` command and the follow-up template guard command so the rendered `deployment/juno-v1-testnet.json` can be checked before frontend use. + +## Scope guardrails + +The README keeps the v1 surface narrow: + +- XYK-only and permissionless; +- no new DEX token; +- no stable pairs, LSTs, perps, or yield surfaces; +- frontend discovers pools through the factory instead of hardcoding prelaunch pools. + +## Verification + +```text +$ python3 scripts/fill_juno_v1_deployment_config.py --output /tmp/juno-v1-readme-check.json --require-complete ... +OK: wrote rendered Juno v1 deployment config to /tmp/juno-v1-readme-check.json +sets=21 require_complete=True + +$ python3 scripts/check_juno_v1_deployment_template.py /tmp/juno-v1-readme-check.json +OK: Juno v1 deployment template matches instantiate schema requirements +instantiate_msgs=7 code_ids=9 addresses=7 pair_type=xyk + +$ python3 scripts/check_juno_v1_deployment_template.py && python3 scripts/check_juno_v1_scope.py && python3 scripts/check_juno_v1_schemas.py && python3 scripts/check_juno_v1_ci_wiring.py +OK: Juno v1 deployment template matches instantiate schema requirements +instantiate_msgs=7 code_ids=9 addresses=7 pair_type=xyk +OK: Astroport-Juno v1 scope matches Cargo.toml and planning/01-strip-list.md +workspace_members=13 expected_wasms=8 +OK: committed schemas match Astroport-Juno v1 contract set +schema_dirs=8 expected=8 +OK: GitHub Actions wiring enforces Astroport-Juno v1 guards +tests_guards=scope/schema/template pre_rust=true schema_post_generation=true artifact_guard_after_size=true +``` + +## Next bounded slice + +Add a small upload-output parser/checklist that can turn `junod tx wasm store` / `instantiate` JSON logs into the `--set` values for this README command. diff --git a/planning/23-tx-json-extraction-helper-2026-06-29.md b/planning/23-tx-json-extraction-helper-2026-06-29.md new file mode 100644 index 000000000..e72898222 --- /dev/null +++ b/planning/23-tx-json-extraction-helper-2026-06-29.md @@ -0,0 +1,37 @@ +# 23 — Tx JSON extraction helper + +Date: 2026-06-29 + +## Increment + +Added `scripts/extract_juno_v1_tx_sets.py`, a small operator helper for the Astroport-Juno v1 uni-7 deployment handoff. + +It parses common `junod -o json` tx response shapes and extracts: + +- wasm upload `code_id` attributes into `--set code_ids.=...` flags; +- instantiate `_contract_address` / `contract_address` attributes into `--set addresses.=...` flags; +- unmapped `--scan` output for unfamiliar tx JSON before assigning names. + +Also linked the helper from `deployment/README.md` so operators have the path from tx logs to `fill_juno_v1_deployment_config.py`. + +## Verification + +```text +$ python3 scripts/extract_juno_v1_tx_sets.py --code-id astroport-factory=target/juno-v1-store-sample.json --address astroport-factory=target/juno-v1-instantiate-sample.json +--set code_ids.astroport-factory='77' +--set addresses.astroport-factory='juno1factory000000000000000000000000000000000' + +$ python3 scripts/extract_juno_v1_tx_sets.py --scan target/juno-v1-store-sample.json target/juno-v1-instantiate-sample.json +# target/juno-v1-store-sample.json +code_ids=77 +addresses=- +# target/juno-v1-instantiate-sample.json +code_ids=- +addresses=juno1factory000000000000000000000000000000000 + +$ python3 scripts/extract_juno_v1_tx_sets.py --code-id not-a-contract=target/juno-v1-store-sample.json >/tmp/juno-bad-key.out 2>/tmp/juno-bad-key.err; test $? -ne 0 +``` + +## Next bounded slice + +Add a tiny fixture-based test command for `extract_juno_v1_tx_sets.py` to CI, or use it against the first real uni-7 upload tx outputs when they exist. diff --git a/planning/24-tx-extractor-fixture-guard-2026-06-29.md b/planning/24-tx-extractor-fixture-guard-2026-06-29.md new file mode 100644 index 000000000..03ae11634 --- /dev/null +++ b/planning/24-tx-extractor-fixture-guard-2026-06-29.md @@ -0,0 +1,38 @@ +# 24 — Tx extractor fixture guard + +Date: 2026-06-29 + +## Increment + +Added `scripts/check_juno_v1_tx_extractor.py`, a dependency-free fixture guard for the deployment tx parser. + +The guard exercises the operator handoff path before any live uni-7 outputs exist: + +- maps a `tx_response.events` wasm upload `code_id` into `--set code_ids.astroport-factory=...`; +- maps instantiate addresses from both `logs[].events` and JSON-encoded `raw_log` shapes; +- verifies unmapped `--scan` output surfaces discovered code IDs/addresses; +- verifies failure behavior for unknown contract keys and ambiguous multi-code tx files. + +Wired this guard into `.github/workflows/tests_and_checks.yml` before Rust setup, and extended `scripts/check_juno_v1_ci_wiring.py` so CI fails if the tx extractor guard is removed or moved after expensive Rust work. + +## Verification + +```text +$ python3 scripts/check_juno_v1_tx_extractor.py && python3 scripts/check_juno_v1_ci_wiring.py && python3 scripts/check_juno_v1_deployment_template.py && python3 scripts/check_juno_v1_scope.py && python3 scripts/check_juno_v1_schemas.py && git diff --check -- .github/workflows/tests_and_checks.yml scripts/check_juno_v1_ci_wiring.py scripts/check_juno_v1_tx_extractor.py +OK: Juno v1 tx extractor handles mapped, scan, raw_log, and failure cases +fixtures=4 mapped_sets=3 failure_cases=2 +OK: GitHub Actions wiring enforces Astroport-Juno v1 guards +tests_guards=scope/schema/template/tx-extractor pre_rust=true schema_post_generation=true artifact_guard_after_size=true +OK: Juno v1 deployment template matches instantiate schema requirements +instantiate_msgs=7 code_ids=9 addresses=7 pair_type=xyk +OK: Astroport-Juno v1 scope matches Cargo.toml and planning/01-strip-list.md +workspace_members=13 expected_wasms=8 +OK: committed schemas match Astroport-Juno v1 contract set +schema_dirs=8 expected=8 +``` + +`git diff --check` produced no output. + +## Next bounded slice + +Add a dry-run deployment value bundle/checklist that combines extractor output plus accounts/counterparty denom into one render command, or run the extractor against the first real uni-7 upload/instantiate tx JSON when available. diff --git a/planning/25-deployment-command-bundle-2026-06-29.md b/planning/25-deployment-command-bundle-2026-06-29.md new file mode 100644 index 000000000..e8c7210eb --- /dev/null +++ b/planning/25-deployment-command-bundle-2026-06-29.md @@ -0,0 +1,38 @@ +# 25 — Deployment command bundle + +Date: 2026-06-29 + +## Increment + +Added `scripts/build_juno_v1_deployment_command.py`, a dependency-free handoff helper that combines: + +- tx-derived `--set` lines from `scripts/extract_juno_v1_tx_sets.py` for the 9 v1 code IDs and 7 instantiated contract addresses; and +- manual operator values for `owner`, `guardian`, `treasury`, tokenfactory module address, and the first counterparty denom in the sample XYK pair-create template. + +The helper prints one copy/paste-safe `scripts/fill_juno_v1_deployment_config.py --require-complete` command. With `--render`, it executes that command and immediately validates the rendered config through `scripts/check_juno_v1_deployment_template.py`. + +Added `scripts/check_juno_v1_deployment_command.py` to fixture-test the happy path, render+guard path, and missing tx-value failure. Wired it into `.github/workflows/tests_and_checks.yml` before Rust setup, and extended `scripts/check_juno_v1_ci_wiring.py` so CI fails if this handoff guard is removed or reordered after expensive Rust work. + +## Verification + +```text +$ python3 scripts/check_juno_v1_deployment_command.py && python3 scripts/check_juno_v1_ci_wiring.py && python3 scripts/check_juno_v1_tx_extractor.py && python3 scripts/check_juno_v1_deployment_template.py && python3 scripts/check_juno_v1_scope.py && python3 scripts/check_juno_v1_schemas.py && git diff --check -- .github/workflows/tests_and_checks.yml scripts/check_juno_v1_ci_wiring.py scripts/build_juno_v1_deployment_command.py scripts/check_juno_v1_deployment_command.py +OK: Juno v1 deployment command builder combines tx sets and manual values +sets=21 tx_sets=16 manual_sets=5 render_guard=true failure_cases=1 +OK: GitHub Actions wiring enforces Astroport-Juno v1 guards +tests_guards=scope/schema/template/tx-extractor/deployment-command pre_rust=true schema_post_generation=true artifact_guard_after_size=true +OK: Juno v1 tx extractor handles mapped, scan, raw_log, and failure cases +fixtures=4 mapped_sets=3 failure_cases=2 +OK: Juno v1 deployment template matches instantiate schema requirements +instantiate_msgs=7 code_ids=9 addresses=7 pair_type=xyk +OK: Astroport-Juno v1 scope matches Cargo.toml and planning/01-strip-list.md +workspace_members=13 expected_wasms=8 +OK: committed schemas match Astroport-Juno v1 contract set +schema_dirs=8 expected=8 +``` + +`git diff --check` produced no output. + +## Next bounded slice + +Use the bundle helper against the first real uni-7 upload/instantiate tx JSON, or add a tiny operator checklist that names the expected tx JSON filenames for all 16 tx-derived values. diff --git a/planning/26-operator-tx-checklist-guard-2026-06-29.md b/planning/26-operator-tx-checklist-guard-2026-06-29.md new file mode 100644 index 000000000..4fba2dcb9 --- /dev/null +++ b/planning/26-operator-tx-checklist-guard-2026-06-29.md @@ -0,0 +1,40 @@ +# 26 — Operator tx checklist guard + +Date: 2026-06-29 + +## Increment + +Added a guarded operator checklist for the uni-7 Astroport-Juno v1 deployment handoff. The checklist names the exact 16 transaction JSON files expected after `junod -o json` upload/instantiate work: + +- 9 store tx files for v1 code IDs: factory, incentives, native coin registry, oracle, pair, router, tokenfactory tracker, whitelist, and `cw20-base`. +- 7 instantiate tx files for v1 contract addresses: factory, incentives, native coin registry, oracle, router, tokenfactory tracker, and whitelist. + +Added `scripts/check_juno_v1_operator_checklist.py`, a dependency-free guard that verifies the checklist stays aligned with `scripts/extract_juno_v1_tx_sets.py`, `scripts/build_juno_v1_deployment_command.py`, the deployment README link, the required 5 manual operator values, and the narrow v1 scope guardrail. + +Wired the checklist guard into `.github/workflows/tests_and_checks.yml` before Rust setup and extended `scripts/check_juno_v1_ci_wiring.py` so CI fails if the guard is removed or reordered after expensive Rust work. Also ignored local deployment tx JSON and rendered `deployment/juno-v1-testnet.json` to reduce the chance that real tx output or environment-specific config is committed accidentally. + +## Verification + +```text +$ python3 scripts/check_juno_v1_operator_checklist.py && python3 scripts/check_juno_v1_ci_wiring.py && python3 scripts/check_juno_v1_deployment_command.py && python3 scripts/check_juno_v1_tx_extractor.py && python3 scripts/check_juno_v1_deployment_template.py && python3 scripts/check_juno_v1_scope.py && python3 scripts/check_juno_v1_schemas.py +OK: Juno v1 operator tx checklist matches deployment helpers +store_txs=9 instantiate_txs=7 manual_values=5 +OK: GitHub Actions wiring enforces Astroport-Juno v1 guards +tests_guards=scope/schema/template/tx-extractor/deployment-command/operator-checklist pre_rust=true schema_post_generation=true artifact_guard_after_size=true +OK: Juno v1 deployment command builder combines tx sets and manual values +sets=21 tx_sets=16 manual_sets=5 render_guard=true failure_cases=1 +OK: Juno v1 tx extractor handles mapped, scan, raw_log, and failure cases +fixtures=4 mapped_sets=3 failure_cases=2 +OK: Juno v1 deployment template matches instantiate schema requirements +instantiate_msgs=7 code_ids=9 addresses=7 pair_type=xyk +OK: Astroport-Juno v1 scope matches Cargo.toml and planning/01-strip-list.md +workspace_members=13 expected_wasms=8 +OK: committed schemas match Astroport-Juno v1 contract set +schema_dirs=8 expected=8 +``` + +`git diff --check` produced no output for the touched files. + +## Next bounded slice + +Add a tiny dry-run tx fixture generator for the 16 expected uni-7 tx JSON files so operators can rehearse the full extractor → bundle → render flow without real chain txs, then replace fixtures with actual uni-7 outputs when available. diff --git a/planning/27-dry-run-tx-fixtures-2026-06-29.md b/planning/27-dry-run-tx-fixtures-2026-06-29.md new file mode 100644 index 000000000..2186fce3a --- /dev/null +++ b/planning/27-dry-run-tx-fixtures-2026-06-29.md @@ -0,0 +1,36 @@ +# 27 — Dry-run tx fixture rehearsal + +Date: 2026-06-29 + +## Increment + +Added a rehearsal path for the Astroport-Juno v1 uni-7 deployment handoff: + +- `scripts/generate_juno_v1_dry_run_txs.py` writes the exact 16 tx JSON filenames expected by the operator checklist, using harmless synthetic `code_id` and `_contract_address` events. +- `scripts/check_juno_v1_dry_run_txs.py` proves the full local path works: generator → extractor → `tx-sets.txt` → deployment command builder with `--render` → template guard. +- `deployment/README.md` now points operators at the dry-run rehearsal before real chain tx output exists. + +This keeps DeFi v1 boring and narrow: swaps/pools/liquidity deployment plumbing only, no scope creep. + +## Verification + +```text +$ python3 scripts/check_juno_v1_dry_run_txs.py && python3 scripts/check_juno_v1_operator_checklist.py && python3 scripts/check_juno_v1_deployment_command.py && python3 scripts/check_juno_v1_tx_extractor.py && python3 scripts/check_juno_v1_deployment_template.py && git diff --check -- scripts/generate_juno_v1_dry_run_txs.py scripts/check_juno_v1_dry_run_txs.py deployment/README.md +OK: Juno v1 dry-run tx fixtures exercise generator -> extractor -> builder -> template guard +fixture_files=16 tx_sets=16 render_guard=true +store_txs=9 instantiate_txs=7 total=16 +OK: Juno v1 operator tx checklist matches deployment helpers +store_txs=9 instantiate_txs=7 manual_values=5 +OK: Juno v1 deployment command builder combines tx sets and manual values +sets=21 tx_sets=16 manual_sets=5 render_guard=true failure_cases=1 +OK: Juno v1 tx extractor handles mapped, scan, raw_log, and failure cases +fixtures=4 mapped_sets=3 failure_cases=2 +OK: Juno v1 deployment template matches instantiate schema requirements +instantiate_msgs=7 code_ids=9 addresses=7 pair_type=xyk +``` + +`git diff --check` produced no output. + +## Next bounded slice + +Wire `scripts/check_juno_v1_dry_run_txs.py` into the cheap pre-Rust CI guard sequence, then extend `scripts/check_juno_v1_ci_wiring.py` so it fails if the rehearsal guard disappears. diff --git a/planning/28-dry-run-ci-wiring-2026-06-29.md b/planning/28-dry-run-ci-wiring-2026-06-29.md new file mode 100644 index 000000000..91b68a873 --- /dev/null +++ b/planning/28-dry-run-ci-wiring-2026-06-29.md @@ -0,0 +1,31 @@ +# 28 — Dry-run tx rehearsal CI wiring + +Date: 2026-06-29T07:15:42Z + +## Increment + +Wired the Astroport-Juno v1 dry-run deployment rehearsal into the cheap pre-Rust GitHub Actions guard sequence. + +Changed: + +- `.github/workflows/tests_and_checks.yml` now runs `scripts/check_juno_v1_dry_run_txs.py` before the self-checking CI wiring guard. +- `scripts/check_juno_v1_ci_wiring.py` now fails if the dry-run rehearsal guard disappears or moves after Rust setup. + +This protects the uni-7 handoff path: synthetic tx fixtures → extractor → tx set file → deployment command builder → rendered template guard. + +## Verification + +```text +$ python3 scripts/check_juno_v1_dry_run_txs.py && python3 scripts/check_juno_v1_ci_wiring.py && git diff --check -- .github/workflows/tests_and_checks.yml scripts/check_juno_v1_ci_wiring.py +OK: Juno v1 dry-run tx fixtures exercise generator -> extractor -> builder -> template guard +fixture_files=16 tx_sets=16 render_guard=true +store_txs=9 instantiate_txs=7 total=16 +OK: GitHub Actions wiring enforces Astroport-Juno v1 guards +tests_guards=scope/schema/template/tx-extractor/deployment-command/operator-checklist pre_rust=true dry_run_txs=true schema_post_generation=true artifact_guard_after_size=true +``` + +`git diff --check` produced no output. + +## Next bounded slice + +Make the final operator path even harder to misuse: add a tiny guard that confirms `deployment/tx/uni-7/` stays gitignored and that generated dry-run tx JSON never gets committed. diff --git a/planning/29-deployment-gitignore-guard-2026-06-29.md b/planning/29-deployment-gitignore-guard-2026-06-29.md new file mode 100644 index 000000000..0153c2071 --- /dev/null +++ b/planning/29-deployment-gitignore-guard-2026-06-29.md @@ -0,0 +1,45 @@ +# 29 — Deployment artifact gitignore guard + +Date: 2026-06-29T07:44:26Z + +## Increment + +Added a cheap safety guard for the Astroport-Juno v1 uni-7 handoff local artifacts: + +- `scripts/check_juno_v1_deployment_gitignore.py` verifies `.gitignore` keeps `deployment/tx/` and `deployment/juno-v1-testnet.json` ignored. +- The guard uses `git check-ignore --no-index` against representative real and dry-run tx paths, confirms no `deployment/tx/` or rendered `deployment/juno-v1-testnet.json` artifacts are tracked, and ensures the dry-run generator default stays under ignored `deployment/tx/`. +- `.github/workflows/tests_and_checks.yml` now runs the guard in the pre-Rust launch-guard sequence. +- `scripts/check_juno_v1_ci_wiring.py` now fails if the deployment gitignore guard disappears or moves after Rust setup. + +This reduces launch risk by keeping operator tx JSON and rendered configs local until stewards intentionally publish final uni-7 values. + +## Verification + +```text +$ python3 scripts/check_juno_v1_deployment_gitignore.py && python3 scripts/check_juno_v1_ci_wiring.py && python3 scripts/check_juno_v1_dry_run_txs.py && python3 scripts/check_juno_v1_operator_checklist.py && python3 scripts/check_juno_v1_deployment_command.py && python3 scripts/check_juno_v1_tx_extractor.py && python3 scripts/check_juno_v1_deployment_template.py && python3 scripts/check_juno_v1_scope.py && python3 scripts/check_juno_v1_schemas.py && git diff --check -- scripts/check_juno_v1_deployment_gitignore.py scripts/check_juno_v1_ci_wiring.py .github/workflows/tests_and_checks.yml +OK: Juno v1 deployment tx/output paths stay gitignored +ignored_paths=5 tracked_artifacts=0 generator_default=deployment/tx/uni-7-dry-run +OK: GitHub Actions wiring enforces Astroport-Juno v1 guards +tests_guards=scope/schema/template/tx-extractor/deployment-command/operator-checklist pre_rust=true dry_run_txs=true deployment_gitignore=true schema_post_generation=true artifact_guard_after_size=true +OK: Juno v1 dry-run tx fixtures exercise generator -> extractor -> builder -> template guard +fixture_files=16 tx_sets=16 render_guard=true +store_txs=9 instantiate_txs=7 total=16 +OK: Juno v1 operator tx checklist matches deployment helpers +store_txs=9 instantiate_txs=7 manual_values=5 +OK: Juno v1 deployment command builder combines tx sets and manual values +sets=21 tx_sets=16 manual_sets=5 render_guard=true failure_cases=1 +OK: Juno v1 tx extractor handles mapped, scan, raw_log, and failure cases +fixtures=4 mapped_sets=3 failure_cases=2 +OK: Juno v1 deployment template matches instantiate schema requirements +instantiate_msgs=7 code_ids=9 addresses=7 pair_type=xyk +OK: Astroport-Juno v1 scope matches Cargo.toml and planning/01-strip-list.md +workspace_members=13 expected_wasms=8 +OK: committed schemas match Astroport-Juno v1 contract set +schema_dirs=8 expected=8 +``` + +`git diff --check` produced no output. + +## Next bounded slice + +Add a small frontend config sanity guard that reads a rendered deployment config and verifies the frontend-facing `addresses` + first XYK pair template are internally consistent without needing chain access. diff --git a/planning/30-frontend-config-guard-2026-06-29.md b/planning/30-frontend-config-guard-2026-06-29.md new file mode 100644 index 000000000..9d87ea31b --- /dev/null +++ b/planning/30-frontend-config-guard-2026-06-29.md @@ -0,0 +1,32 @@ +# 30 — Frontend config handoff guard + +Date: 2026-06-29T08:25:39Z + +## Increment + +Added an offline, dependency-free frontend sanity guard for the Astroport-Juno v1 uni-7 deployment handoff: + +- `scripts/check_juno_v1_frontend_config.py` validates the config consumed by a DEX frontend. +- It confirms `frontend.required_addresses` and `frontend.optional_addresses` stay on the intended small v1 surface. +- It checks frontend address keys exist in top-level `addresses` and that factory/router/incentives/oracle instantiate messages point back to those canonical addresses. +- It rejects pre-launch hardcoded `frontend.pools` / `frontend.pairs` and requires factory-based pair discovery. +- It verifies the first pool template remains simple: XYK-only, exactly two native assets, first asset equals `network.native_asset_denom`, counterparty differs, and `init_params` is `null`. +- CI now runs this guard before the CI-wiring guard, still before Rust setup. + +This gives the future frontend handoff a cheap red light if a rendered deployment config drifts from the simple v1 DEX scope: swaps, pools, liquidity; no hardcoded pools or expanded product surface. + +## Verification + +```text +$ python3 scripts/check_juno_v1_frontend_config.py && python3 scripts/check_juno_v1_ci_wiring.py && git diff --check -- scripts/check_juno_v1_frontend_config.py scripts/check_juno_v1_ci_wiring.py .github/workflows/tests_and_checks.yml planning/00-overview.md planning/30-frontend-config-guard-2026-06-29.md +OK: Juno v1 frontend config handoff is internally consistent +required_addresses=4 optional_addresses=1 native=ujunox pair_type=xyk factory_ref=juno1replacefactory000000000000000000000000000000 +OK: GitHub Actions wiring enforces Astroport-Juno v1 guards +tests_guards=scope/schema/template/tx-extractor/deployment-command/operator-checklist pre_rust=true dry_run_txs=true deployment_gitignore=true frontend_config=true schema_post_generation=true artifact_guard_after_size=true +``` + +`git diff --check` produced no output. + +## Next bounded slice + +Run the dry-run renderer into an ignored temp config and validate that concrete rendered output with both `check_juno_v1_deployment_template.py` and `check_juno_v1_frontend_config.py`. diff --git a/planning/31-dry-run-frontend-validation-2026-06-29.md b/planning/31-dry-run-frontend-validation-2026-06-29.md new file mode 100644 index 000000000..dcba64edc --- /dev/null +++ b/planning/31-dry-run-frontend-validation-2026-06-29.md @@ -0,0 +1,32 @@ +# 31 — Dry-run rendered frontend validation + +Date: 2026-06-29T08:31:45Z + +## Increment + +Extended the existing dry-run deployment rehearsal so it now validates the frontend handoff against a concrete rendered config, not only the placeholder template: + +- `scripts/check_juno_v1_dry_run_txs.py` still generates 16 synthetic uni-7 tx JSON files, extracts the 16 tx-derived `--set` values, and renders a complete deployment config through `scripts/build_juno_v1_deployment_command.py --render`. +- It now also runs `scripts/check_juno_v1_frontend_config.py ` against that temp rendered output. +- This catches a real operator-handoff class of drift: tx-derived addresses/code IDs plus manual values can pass instantiate-schema checks but still break frontend address wiring or the simple first XYK pair template. + +This is still offline and dependency-free. It does not assert real chain deployment success; it proves the rehearsal path can produce a config that both deployment and frontend guards accept. + +## Verification + +```text +$ python3 scripts/check_juno_v1_dry_run_txs.py && python3 scripts/check_juno_v1_frontend_config.py && python3 scripts/check_juno_v1_ci_wiring.py && git diff --check -- scripts/check_juno_v1_dry_run_txs.py +OK: Juno v1 dry-run tx fixtures exercise generator -> extractor -> builder -> template guard -> frontend guard +fixture_files=16 tx_sets=16 render_guard=true frontend_guard=true +store_txs=9 instantiate_txs=7 total=16 +OK: Juno v1 frontend config handoff is internally consistent +required_addresses=4 optional_addresses=1 native=ujunox pair_type=xyk factory_ref=juno1replacefactory000000000000000000000000000000 +OK: GitHub Actions wiring enforces Astroport-Juno v1 guards +tests_guards=scope/schema/template/tx-extractor/deployment-command/operator-checklist pre_rust=true dry_run_txs=true deployment_gitignore=true frontend_config=true schema_post_generation=true artifact_guard_after_size=true +``` + +`git diff --check` produced no output. + +## Next bounded slice + +Add a small frontend handoff JSON schema/TypeScript type generator from `deployment/juno-v1-testnet.template.json`, or run this rehearsal against real uni-7 tx JSON once the first upload/instantiate outputs exist. diff --git a/planning/32-frontend-types-handoff-2026-06-29.md b/planning/32-frontend-types-handoff-2026-06-29.md new file mode 100644 index 000000000..3a52184e3 --- /dev/null +++ b/planning/32-frontend-types-handoff-2026-06-29.md @@ -0,0 +1,49 @@ +# 32 — Frontend TypeScript handoff guard + +Date: 2026-06-29 + +## Increment + +Generated a narrow TypeScript declaration file for the Astroport-Juno v1 frontend deployment handoff from the canonical deployment template. + +## Why + +Frontend integration should not infer launch scope from ad hoc JSON or stale Astroport surfaces. The handoff type exposes the exact v1 keys a UI needs after uni-7 render: + +- network metadata +- v1 code ID keys +- v1 deployed address keys +- required frontend addresses: factory, router, native coin registry, incentives +- optional frontend address: oracle +- XYK-only first-pair create template + +It deliberately excludes prelaunch hardcoded pools/pairs, stable/PCL variants, DEX-token surfaces, and other post-v1 scope. + +## Files + +- `scripts/generate_juno_v1_frontend_types.py` +- `deployment/juno-v1-frontend-config.d.ts` +- `.github/workflows/tests_and_checks.yml` +- `scripts/check_juno_v1_ci_wiring.py` + +## Verification + +```sh +python3 scripts/generate_juno_v1_frontend_types.py --check +python3 scripts/check_juno_v1_frontend_config.py +python3 scripts/check_juno_v1_ci_wiring.py +python3 scripts/check_juno_v1_dry_run_txs.py +python3 scripts/check_juno_v1_deployment_template.py +git diff --check -- deployment/juno-v1-frontend-config.d.ts scripts/generate_juno_v1_frontend_types.py .github/workflows/tests_and_checks.yml scripts/check_juno_v1_ci_wiring.py planning/00-overview.md planning/32-frontend-types-handoff-2026-06-29.md +``` + +Expected results from this run: + +- TypeScript generator check passes and reports the generated declaration path. +- Frontend config guard passes with required/optional addresses and XYK factory discovery intact. +- CI wiring guard passes and enforces the type check before Rust work. +- Dry-run tx rehearsal still renders a config accepted by deployment and frontend guards. + +## Next bounded slice + +Add a tiny frontend example fixture that imports/copies `JunoV1FrontendDeploymentConfig` and validates a rendered config shape locally, or run the deployment bundle against real uni-7 tx JSON once available. diff --git a/planning/33-frontend-example-guard-2026-06-29.md b/planning/33-frontend-example-guard-2026-06-29.md new file mode 100644 index 000000000..165a0f73c --- /dev/null +++ b/planning/33-frontend-example-guard-2026-06-29.md @@ -0,0 +1,38 @@ +# 33 — Frontend example handoff guard + +## Increment + +Added a tiny TypeScript consumer fixture for the Astroport-Juno v1 frontend deployment handoff: + +- `deployment/juno-v1-frontend-config.example.ts` imports the generated `JunoV1FrontendDeploymentConfig` type. +- The example uses `satisfies JunoV1FrontendDeploymentConfig` against the current uni-7 placeholder shape. +- It exposes a minimal frontend address map helper and a first XYK pair-create template helper. +- It explicitly keeps pair discovery at the factory and does not hardcode launch pools/pairs. + +Added `scripts/check_juno_v1_frontend_example.py`, a dependency-free guard that verifies the example stays aligned with: + +- `deployment/juno-v1-testnet.template.json` code ID keys +- deployment address keys +- frontend required/optional address arrays +- generated `JunoV1AddressKey` union +- v1 XYK-only/no-token/no-stable/no-PCL scope + +Wired the new guard into `.github/workflows/tests_and_checks.yml` and extended the CI wiring guard so the example check must run before Rust setup and after frontend type generation. + +## Verification + +```console +$ python3 scripts/check_juno_v1_frontend_example.py +OK: Juno v1 frontend TypeScript example consumes the generated handoff type +code_ids=9 addresses=7 required=4 optional=1 pair_type=xyk + +$ python3 scripts/check_juno_v1_ci_wiring.py +OK: GitHub Actions wiring enforces Astroport-Juno v1 guards +tests_guards=scope/schema/template/tx-extractor/deployment-command/operator-checklist pre_rust=true dry_run_txs=true deployment_gitignore=true frontend_config=true frontend_types=true frontend_example=true schema_post_generation=true artifact_guard_after_size=true +``` + +Also reran the frontend type/config guards plus scope/schema/deployment/dry-run guards in this slice. + +## Next bounded slice + +Run the dry-run deployment bundle and frontend example guard against the first real uni-7 tx JSON outputs when upload/instantiate transactions exist, or add a short frontend README snippet showing how a frontend repo should import the rendered JSON plus this declaration file. diff --git a/planning/34-frontend-readme-consumption-2026-06-29.md b/planning/34-frontend-readme-consumption-2026-06-29.md new file mode 100644 index 000000000..fe83df8ee --- /dev/null +++ b/planning/34-frontend-readme-consumption-2026-06-29.md @@ -0,0 +1,32 @@ +# 34 — Frontend README consumption snippet + +## Increment + +Added a focused frontend-consumption section to `deployment/README.md` for the Astroport-Juno v1 handoff. + +The snippet shows frontend builders how to: + +- import the rendered `juno-v1-testnet.json`, +- bind it to `JunoV1FrontendDeploymentConfig`, +- read canonical contract addresses from `config.addresses`, +- use the first XYK pair-create template only as a launch form seed, +- keep existing pool discovery routed through factory queries instead of hardcoded pool addresses. + +## Verification + +```console +$ python3 scripts/check_juno_v1_frontend_example.py +OK: Juno v1 frontend TypeScript example consumes the generated handoff type +code_ids=9 addresses=7 required=4 optional=1 pair_type=xyk + +$ python3 scripts/check_juno_v1_frontend_config.py +OK: Juno v1 frontend config handoff is internally consistent +required_addresses=4 optional_addresses=1 native=ujunox pair_type=xyk factory_ref=juno1replacefactory000000000000000000000000000000 + +$ git diff --check -- deployment/README.md planning/34-frontend-readme-consumption-2026-06-29.md +# no output +``` + +## Next bounded slice + +When real uni-7 upload/instantiate transaction JSON exists, run the deployment command bundle and confirm the rendered `juno-v1-testnet.json` still satisfies the frontend config/example guards. diff --git a/planning/35-deployment-readme-guard-2026-06-29.md b/planning/35-deployment-readme-guard-2026-06-29.md new file mode 100644 index 000000000..5228901aa --- /dev/null +++ b/planning/35-deployment-readme-guard-2026-06-29.md @@ -0,0 +1,35 @@ +# 35 — Deployment README handoff guard + +## Increment + +Added `scripts/check_juno_v1_deployment_readme.py`, a dependency-free guard for the uni-7 deployment handoff README. + +The guard keeps `deployment/README.md` aligned with the launch helpers by checking: + +- required operator/frontend sections, +- dry-run and extraction commands, +- the full render command shape with 4 account, 9 code ID, 7 address, and 1 first-pool denom `--set` values, +- generated frontend handoff files are present, +- the TypeScript `satisfies JunoV1FrontendDeploymentConfig` consumption snippet remains documented, +- v1 scope guardrails stay explicit: XYK-only, permissionless, no DEX token, no stable/LST/perps/yield scope, and factory-based pool discovery. + +Wired the guard into `.github/workflows/tests_and_checks.yml` before Rust setup and extended `scripts/check_juno_v1_ci_wiring.py` so CI fails if the README guard disappears or runs out of order. + +## Verification + +```console +$ python3 scripts/check_juno_v1_deployment_readme.py +OK: Juno v1 deployment README matches operator/frontend handoff helpers +account_sets=4 code_id_sets=9 address_sets=7 frontend_snippet=true scope_guardrails=true + +$ python3 scripts/check_juno_v1_ci_wiring.py +OK: GitHub Actions wiring enforces Astroport-Juno v1 guards +tests_guards=scope/schema/template/tx-extractor/deployment-command/operator-checklist pre_rust=true dry_run_txs=true deployment_gitignore=true deployment_readme=true frontend_config=true frontend_types=true frontend_example=true schema_post_generation=true artifact_guard_after_size=true + +$ git diff --check -- .github/workflows/tests_and_checks.yml scripts/check_juno_v1_deployment_readme.py scripts/check_juno_v1_ci_wiring.py planning/35-deployment-readme-guard-2026-06-29.md +# no output +``` + +## Next bounded slice + +Run the deployment bundle against real uni-7 tx JSON when available, or add a tiny CI/docs guard that verifies the frontend example and README stay synchronized on required frontend address keys. diff --git a/planning/36-frontend-handoff-sync-guard-2026-06-29.md b/planning/36-frontend-handoff-sync-guard-2026-06-29.md new file mode 100644 index 000000000..5bb2ba10d --- /dev/null +++ b/planning/36-frontend-handoff-sync-guard-2026-06-29.md @@ -0,0 +1,47 @@ +# 36 — Frontend handoff sync guard (2026-06-29) + +## Decision + +Add a dependency-free guard that keeps the frontend address handoff synchronized across the deployment template, generated TypeScript declarations, consumer example, and deployment README. + +## Why + +The frontend launch surface is now spread across four files: + +- `deployment/juno-v1-testnet.template.json` — source of truth for `frontend.required_addresses` and `frontend.optional_addresses`. +- `deployment/juno-v1-frontend-config.d.ts` — generated TypeScript union consumed by frontend repos. +- `deployment/juno-v1-frontend-config.example.ts` — minimal consumer fixture and helper map. +- `deployment/README.md` — operator/frontend prose handoff. + +If any one of these drifts, a frontend can ship against the wrong contract map even when the contract artifacts are correct. This is launch risk, not scope expansion. + +## Guard + +`scripts/check_juno_v1_frontend_handoff_sync.py` verifies: + +- the deployment template frontend address keys exist in the top-level `addresses` map; +- required and optional generated TypeScript unions match the template exactly; +- the TypeScript example `required_addresses`, `optional_addresses`, and `frontendAddressMap` match the template exactly; +- the README contains the synchronized required/optional frontend address lines. + +The guard is wired into `.github/workflows/tests_and_checks.yml` before Rust setup and is itself enforced by `scripts/check_juno_v1_ci_wiring.py`. + +## Verification + +Run from repo root: + +```sh +python3 scripts/check_juno_v1_frontend_handoff_sync.py +python3 scripts/check_juno_v1_ci_wiring.py +``` + +Expected output includes: + +```text +OK: Juno v1 frontend handoff address keys are synchronized +required=4 optional=1 map_keys=5 source=deployment-template +``` + +## Scope + +Still v1 only: XYK pair creation, native incentives, no new DEX token, no stable/PCL/LST/perp/yield surface. diff --git a/planning/37-frontend-release-checklist-guard-2026-06-29.md b/planning/37-frontend-release-checklist-guard-2026-06-29.md new file mode 100644 index 000000000..6fa41f3f4 --- /dev/null +++ b/planning/37-frontend-release-checklist-guard-2026-06-29.md @@ -0,0 +1,38 @@ +# 37 — Frontend release checklist guard (2026-06-29) + +## Decision + +Add a final frontend release checklist plus a dependency-free guard for the moment real uni-7 deployment values move into the UI repo. + +## Why + +The handoff now has solid machine checks for templates, tx extraction, rendered configs, generated TypeScript, examples, and README prose. The remaining launch-risk seam is operational: copying the right files into the UI repo after real code IDs and contract addresses exist. + +A short checklist makes that seam explicit without expanding v1 scope. + +## Files + +- `deployment/frontend-release-checklist.md` — names the release files, pre-copy verification commands, synchronized frontend address surface, and v1 scope guardrails. +- `scripts/check_juno_v1_frontend_release_checklist.py` — validates the checklist against the deployment template and handoff files. + +The guard is wired into `.github/workflows/tests_and_checks.yml` before Rust setup and is enforced by `scripts/check_juno_v1_ci_wiring.py`. + +## Verification + +Run from repo root: + +```sh +python3 scripts/check_juno_v1_frontend_release_checklist.py +python3 scripts/check_juno_v1_ci_wiring.py +``` + +Expected output includes: + +```text +OK: Juno v1 frontend release checklist matches the deployment handoff +release_files=3 commands=5 required=4 optional=1 pair_discovery=factory +``` + +## Scope + +Still v1 only: copy rendered config + generated handoff type, use XYK pair-create template only as a form seed, discover pools through the factory, no new DEX token, no stable/PCL/LST/perp/yield surface. diff --git a/schemas/astro-token-converter/astro-token-converter.json b/schemas/astro-token-converter/astro-token-converter.json deleted file mode 100644 index 717129301..000000000 --- a/schemas/astro-token-converter/astro-token-converter.json +++ /dev/null @@ -1,217 +0,0 @@ -{ - "contract_name": "astro-token-converter", - "contract_version": "1.1.0", - "idl_version": "1.0.0", - "instantiate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "Instantiate message. Fields meaning is the same as in Config.", - "type": "object", - "required": [ - "new_astro_denom", - "old_astro_asset_info" - ], - "properties": { - "new_astro_denom": { - "type": "string" - }, - "old_astro_asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "outpost_burn_params": { - "anyOf": [ - { - "$ref": "#/definitions/OutpostBurnParams" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "OutpostBurnParams": { - "description": "Defines parameters for sending old IBCed ASTRO to the Hub for burning.", - "type": "object", - "required": [ - "old_astro_transfer_channel", - "terra_burn_addr" - ], - "properties": { - "old_astro_transfer_channel": { - "type": "string" - }, - "terra_burn_addr": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "execute": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "Available contract execute messages. - `Convert` is used to convert old ASTRO to new ASTRO on outposts. New ASTRO sent to `receiver` if specified. - `Receive` is used to process cw20 send hook from old cw20 ASTRO and release new ASTRO token on the old Hub. Custom `receiver` is forwarded within Cw20HookMsg. - `TransferForBurning` is used to send old ASTRO to the old Hub for burning. Is meant to be used by outposts. - `Burn` is used to burn old cw20 ASTRO on the old Hub.", - "oneOf": [ - { - "type": "object", - "required": [ - "convert" - ], - "properties": { - "convert": { - "type": "object", - "properties": { - "receiver": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "transfer_for_burning" - ], - "properties": { - "transfer_for_burning": { - "type": "object", - "properties": { - "timeout": { - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "burn" - ], - "properties": { - "burn": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "query": null, - "migrate": null, - "sudo": null, - "responses": null -} diff --git a/schemas/astro-token-converter/raw/execute.json b/schemas/astro-token-converter/raw/execute.json deleted file mode 100644 index 669d71136..000000000 --- a/schemas/astro-token-converter/raw/execute.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "Available contract execute messages. - `Convert` is used to convert old ASTRO to new ASTRO on outposts. New ASTRO sent to `receiver` if specified. - `Receive` is used to process cw20 send hook from old cw20 ASTRO and release new ASTRO token on the old Hub. Custom `receiver` is forwarded within Cw20HookMsg. - `TransferForBurning` is used to send old ASTRO to the old Hub for burning. Is meant to be used by outposts. - `Burn` is used to burn old cw20 ASTRO on the old Hub.", - "oneOf": [ - { - "type": "object", - "required": [ - "convert" - ], - "properties": { - "convert": { - "type": "object", - "properties": { - "receiver": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "transfer_for_burning" - ], - "properties": { - "transfer_for_burning": { - "type": "object", - "properties": { - "timeout": { - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "burn" - ], - "properties": { - "burn": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astro-token-converter/raw/instantiate.json b/schemas/astro-token-converter/raw/instantiate.json deleted file mode 100644 index c0f09827b..000000000 --- a/schemas/astro-token-converter/raw/instantiate.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "Instantiate message. Fields meaning is the same as in Config.", - "type": "object", - "required": [ - "new_astro_denom", - "old_astro_asset_info" - ], - "properties": { - "new_astro_denom": { - "type": "string" - }, - "old_astro_asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "outpost_burn_params": { - "anyOf": [ - { - "$ref": "#/definitions/OutpostBurnParams" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "OutpostBurnParams": { - "description": "Defines parameters for sending old IBCed ASTRO to the Hub for burning.", - "type": "object", - "required": [ - "old_astro_transfer_channel", - "terra_burn_addr" - ], - "properties": { - "old_astro_transfer_channel": { - "type": "string" - }, - "terra_burn_addr": { - "type": "string" - } - }, - "additionalProperties": false - } - } -} diff --git a/schemas/astroport-incentives/astroport-incentives.json b/schemas/astroport-incentives/astroport-incentives.json index 342caba7a..cdc2c54d7 100644 --- a/schemas/astroport-incentives/astroport-incentives.json +++ b/schemas/astroport-incentives/astroport-incentives.json @@ -1,21 +1,17 @@ { "contract_name": "astroport-incentives", - "contract_version": "1.4.0", + "contract_version": "1.4.0-juno", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "InstantiateMsg", "type": "object", "required": [ - "astro_token", "factory", "owner", - "vesting_contract" + "reward_token" ], "properties": { - "astro_token": { - "$ref": "#/definitions/AssetInfo" - }, "factory": { "type": "string" }, @@ -38,8 +34,13 @@ "owner": { "type": "string" }, - "vesting_contract": { - "type": "string" + "reward_token": { + "description": "The internal \"main emission\" reward token. Renamed from upstream's `astro_token`; Juno's deployment defaults this to native ujuno but any AssetInfo is allowed at instantiate time.", + "allOf": [ + { + "$ref": "#/definitions/AssetInfo" + } + ] } }, "additionalProperties": false, @@ -211,20 +212,7 @@ "additionalProperties": false }, { - "description": "Receives a message of type [`Cw20ReceiveMsg`]. Handles cw20 LP token deposits.", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "Stake LP tokens in the Generator. LP tokens staked on behalf of recipient if recipient is set. Otherwise LP tokens are staked on behalf of message sender.", + "description": "Stake LP tokens in the Generator. LP tokens staked on behalf of recipient if recipient is set. Otherwise LP tokens are staked on behalf of message sender.\n\nAstroport-Juno only accepts token-factory LP tokens (the pair contract emits only TF LPs in this fork); the legacy cw20-LP entry point (`ExecuteMsg::Receive` + `Cw20Msg::{Deposit, DepositFor}`) was stripped in P2.5. See planning/11-incentives-and-gauges.md.", "type": "object", "required": [ "deposit" @@ -278,7 +266,7 @@ "additionalProperties": false }, { - "description": "Set a new amount of ASTRO to distribute per seconds. Only the owner can execute this.", + "description": "Set a new amount of the internal reward token to distribute per second. Only the owner can execute this.", "type": "object", "required": [ "set_tokens_per_second" @@ -291,7 +279,7 @@ ], "properties": { "amount": { - "description": "The new amount of ASTRO to distribute per second", + "description": "The new amount of the internal reward token to distribute per second", "allOf": [ { "$ref": "#/definitions/Uint128" @@ -433,7 +421,7 @@ "additionalProperties": false }, { - "description": "Update config. Only the owner can execute it.", + "description": "Update config. Only the owner can execute it.\n\nAstroport-Juno stripped `astro_token` and `vesting_contract` from the upstream UpdateConfig payload — the internal reward token is now immutable post-instantiate (a rotation requires migration) and rewards are paid directly from the incentives contract's own bank balance (the DAO refunds via BankMsg::Send).", "type": "object", "required": [ "update_config" @@ -442,24 +430,15 @@ "update_config": { "type": "object", "properties": { - "astro_token": { - "description": "The new ASTRO token info", - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, + "generator_controller": { + "description": "Tristate update for the generator controller contract address. `Set(addr)` writes a new controller; `Unset` revokes the existing one (clears the binding); `NoChange` (the default) leaves the controller untouched. Both JSON field-omission AND an explicit JSON `null` decode to `NoChange` — the latter so cwgen-style TS clients that emit `null` for unset fields (rather than omitting the key) don't fail at the contract boundary. The controller — when set — is the only address other than the owner allowed to call SetupPools, and is the binding to the DAO DAO gauge adapter. An explicit `Unset` path is required so the DAO can revoke a compromised adapter without rotating ownership. See audit findings \"generator_controller unset path\" (rc2) + \"GeneratorControllerUpdate rejects explicit JSON null\" (rc3 R2).", + "default": "no_change", + "allOf": [ { - "type": "null" + "$ref": "#/definitions/GeneratorControllerUpdate" } ] }, - "generator_controller": { - "description": "The new generator controller contract address", - "type": [ - "string", - "null" - ] - }, "guardian": { "description": "The new generator guardian", "type": [ @@ -486,13 +465,6 @@ ], "format": "uint64", "minimum": 0.0 - }, - "vesting_contract": { - "description": "The new vesting contract address", - "type": [ - "string", - "null" - ] } }, "additionalProperties": false @@ -501,7 +473,7 @@ "additionalProperties": false }, { - "description": "Add or remove token to the block list. Only owner or guardian can execute this. Pools which contain these tokens can't be incentivized with ASTRO rewards. Also blocked tokens can't be used as external reward. Current active pools with these tokens will be removed from active set.", + "description": "Add or remove token to the block list. Only owner or guardian can execute this. Pools which contain these tokens can't be incentivized with internal rewards. Blocked tokens also can't be used as external rewards. Current active pools with these tokens will be removed from active set.", "type": "object", "required": [ "update_blocked_tokenslist" @@ -708,10 +680,6 @@ } ] }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, "Coin": { "type": "object", "required": [ @@ -727,26 +695,37 @@ } } }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" + "GeneratorControllerUpdate": { + "description": "Tristate update wire for the optional `generator_controller` field on `UpdateConfig`. The previous `Option` wire could only set or no-op — it had no path to revoke a controller short of rotating ownership — so a compromised gauge adapter could not be cleanly detached. This enum gives the owner an explicit `Unset` path.\n\nJSON shape (cw_serde lowercases variant names): - `{\"set\": \"\"}` — write a new controller address - `\"unset\"` — clear the controller (set to `None`) - `\"no_change\"` — leave the controller untouched (also the default when the field is omitted)", + "oneOf": [ + { + "description": "Set the controller to the given address.", + "type": "object", + "required": [ + "set" + ], + "properties": { + "set": { + "type": "string" + } + }, + "additionalProperties": false }, - "msg": { - "$ref": "#/definitions/Binary" + { + "description": "Revoke the controller (clear `Config.generator_controller`).", + "type": "string", + "enum": [ + "unset" + ] }, - "sender": { - "type": "string" + { + "description": "Leave the controller untouched. This is the default so that omitting the field from a JSON `UpdateConfig` payload behaves identically to the pre-rc3 `Option::None` semantics.", + "type": "string", + "enum": [ + "no_change" + ] } - }, - "additionalProperties": false + ] }, "IncentivizationFeeInfo": { "type": "object", @@ -1086,7 +1065,7 @@ "additionalProperties": false }, { - "description": "Returns the list of all pools receiving astro emissions", + "description": "Returns the list of all pools receiving internal emissions", "type": "object", "required": [ "active_pools" @@ -1251,30 +1230,13 @@ "title": "Config", "type": "object", "required": [ - "astro_per_second", - "astro_token", "factory", "owner", - "total_alloc_points", - "vesting_contract" + "reward_per_second", + "reward_token", + "total_alloc_points" ], "properties": { - "astro_per_second": { - "description": "Total amount of ASTRO rewards per second", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "astro_token": { - "description": "[`AssetInfo`] of the ASTRO token", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - }, "factory": { "description": "The Factory address", "allOf": [ @@ -1324,6 +1286,22 @@ } ] }, + "reward_per_second": { + "description": "Total amount of the internal reward token to distribute per second. Renamed from upstream's `astro_per_second`.", + "allOf": [ + { + "$ref": "#/definitions/Uint128" + } + ] + }, + "reward_token": { + "description": "[`AssetInfo`] of the internal (DAO-funded) reward token. Renamed from upstream's `astro_token`; for Astroport-Juno this is typically `AssetInfo::native(\"ujuno\")`. Immutable post-instantiate.", + "allOf": [ + { + "$ref": "#/definitions/AssetInfo" + } + ] + }, "token_transfer_gas_limit": { "description": "Max allowed gas limit per one external incentive token transfer. If token transfer hits this gas limit, reward will be considered as claimed while in reality it will be stuck in the contract. If None, there is no gas limit.", "type": [ @@ -1340,14 +1318,6 @@ "$ref": "#/definitions/Uint128" } ] - }, - "vesting_contract": { - "description": "The vesting contract which distributes internal (ASTRO) rewards", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] } }, "additionalProperties": false, @@ -1742,7 +1712,7 @@ "description": "This enum is a tiny wrapper over [`AssetInfo`] to differentiate between internal and external rewards. External rewards always have a next_update_ts field which is used to update reward per second (or disable them).", "oneOf": [ { - "description": "Internal rewards aka ASTRO emissions don't have next_update_ts field and they are paid out from Vesting contract.", + "description": "Internal rewards (the DAO-funded \"main emission\" reward token; was ASTRO upstream) don't have a next_update_ts field. Astroport-Juno pays these directly from the incentives contract's own bank balance (the DAO refunds via BankMsg::Send) — upstream's vesting-contract dependency was stripped in P2.5.", "type": "object", "required": [ "int" @@ -1928,7 +1898,7 @@ "description": "This enum is a tiny wrapper over [`AssetInfo`] to differentiate between internal and external rewards. External rewards always have a next_update_ts field which is used to update reward per second (or disable them).", "oneOf": [ { - "description": "Internal rewards aka ASTRO emissions don't have next_update_ts field and they are paid out from Vesting contract.", + "description": "Internal rewards (the DAO-funded \"main emission\" reward token; was ASTRO upstream) don't have a next_update_ts field. Astroport-Juno pays these directly from the incentives contract's own bank balance (the DAO refunds via BankMsg::Send) — upstream's vesting-contract dependency was stripped in P2.5.", "type": "object", "required": [ "int" diff --git a/schemas/astroport-incentives/raw/execute.json b/schemas/astroport-incentives/raw/execute.json index efde9af48..60453d767 100644 --- a/schemas/astroport-incentives/raw/execute.json +++ b/schemas/astroport-incentives/raw/execute.json @@ -65,20 +65,7 @@ "additionalProperties": false }, { - "description": "Receives a message of type [`Cw20ReceiveMsg`]. Handles cw20 LP token deposits.", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "Stake LP tokens in the Generator. LP tokens staked on behalf of recipient if recipient is set. Otherwise LP tokens are staked on behalf of message sender.", + "description": "Stake LP tokens in the Generator. LP tokens staked on behalf of recipient if recipient is set. Otherwise LP tokens are staked on behalf of message sender.\n\nAstroport-Juno only accepts token-factory LP tokens (the pair contract emits only TF LPs in this fork); the legacy cw20-LP entry point (`ExecuteMsg::Receive` + `Cw20Msg::{Deposit, DepositFor}`) was stripped in P2.5. See planning/11-incentives-and-gauges.md.", "type": "object", "required": [ "deposit" @@ -132,7 +119,7 @@ "additionalProperties": false }, { - "description": "Set a new amount of ASTRO to distribute per seconds. Only the owner can execute this.", + "description": "Set a new amount of the internal reward token to distribute per second. Only the owner can execute this.", "type": "object", "required": [ "set_tokens_per_second" @@ -145,7 +132,7 @@ ], "properties": { "amount": { - "description": "The new amount of ASTRO to distribute per second", + "description": "The new amount of the internal reward token to distribute per second", "allOf": [ { "$ref": "#/definitions/Uint128" @@ -287,7 +274,7 @@ "additionalProperties": false }, { - "description": "Update config. Only the owner can execute it.", + "description": "Update config. Only the owner can execute it.\n\nAstroport-Juno stripped `astro_token` and `vesting_contract` from the upstream UpdateConfig payload — the internal reward token is now immutable post-instantiate (a rotation requires migration) and rewards are paid directly from the incentives contract's own bank balance (the DAO refunds via BankMsg::Send).", "type": "object", "required": [ "update_config" @@ -296,24 +283,15 @@ "update_config": { "type": "object", "properties": { - "astro_token": { - "description": "The new ASTRO token info", - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, + "generator_controller": { + "description": "Tristate update for the generator controller contract address. `Set(addr)` writes a new controller; `Unset` revokes the existing one (clears the binding); `NoChange` (the default) leaves the controller untouched. Both JSON field-omission AND an explicit JSON `null` decode to `NoChange` — the latter so cwgen-style TS clients that emit `null` for unset fields (rather than omitting the key) don't fail at the contract boundary. The controller — when set — is the only address other than the owner allowed to call SetupPools, and is the binding to the DAO DAO gauge adapter. An explicit `Unset` path is required so the DAO can revoke a compromised adapter without rotating ownership. See audit findings \"generator_controller unset path\" (rc2) + \"GeneratorControllerUpdate rejects explicit JSON null\" (rc3 R2).", + "default": "no_change", + "allOf": [ { - "type": "null" + "$ref": "#/definitions/GeneratorControllerUpdate" } ] }, - "generator_controller": { - "description": "The new generator controller contract address", - "type": [ - "string", - "null" - ] - }, "guardian": { "description": "The new generator guardian", "type": [ @@ -340,13 +318,6 @@ ], "format": "uint64", "minimum": 0.0 - }, - "vesting_contract": { - "description": "The new vesting contract address", - "type": [ - "string", - "null" - ] } }, "additionalProperties": false @@ -355,7 +326,7 @@ "additionalProperties": false }, { - "description": "Add or remove token to the block list. Only owner or guardian can execute this. Pools which contain these tokens can't be incentivized with ASTRO rewards. Also blocked tokens can't be used as external reward. Current active pools with these tokens will be removed from active set.", + "description": "Add or remove token to the block list. Only owner or guardian can execute this. Pools which contain these tokens can't be incentivized with internal rewards. Blocked tokens also can't be used as external rewards. Current active pools with these tokens will be removed from active set.", "type": "object", "required": [ "update_blocked_tokenslist" @@ -562,10 +533,6 @@ } ] }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, "Coin": { "type": "object", "required": [ @@ -581,26 +548,37 @@ } } }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" + "GeneratorControllerUpdate": { + "description": "Tristate update wire for the optional `generator_controller` field on `UpdateConfig`. The previous `Option` wire could only set or no-op — it had no path to revoke a controller short of rotating ownership — so a compromised gauge adapter could not be cleanly detached. This enum gives the owner an explicit `Unset` path.\n\nJSON shape (cw_serde lowercases variant names): - `{\"set\": \"\"}` — write a new controller address - `\"unset\"` — clear the controller (set to `None`) - `\"no_change\"` — leave the controller untouched (also the default when the field is omitted)", + "oneOf": [ + { + "description": "Set the controller to the given address.", + "type": "object", + "required": [ + "set" + ], + "properties": { + "set": { + "type": "string" + } + }, + "additionalProperties": false }, - "msg": { - "$ref": "#/definitions/Binary" + { + "description": "Revoke the controller (clear `Config.generator_controller`).", + "type": "string", + "enum": [ + "unset" + ] }, - "sender": { - "type": "string" + { + "description": "Leave the controller untouched. This is the default so that omitting the field from a JSON `UpdateConfig` payload behaves identically to the pre-rc3 `Option::None` semantics.", + "type": "string", + "enum": [ + "no_change" + ] } - }, - "additionalProperties": false + ] }, "IncentivizationFeeInfo": { "type": "object", diff --git a/schemas/astroport-incentives/raw/instantiate.json b/schemas/astroport-incentives/raw/instantiate.json index c891dc515..9c16d5c50 100644 --- a/schemas/astroport-incentives/raw/instantiate.json +++ b/schemas/astroport-incentives/raw/instantiate.json @@ -3,15 +3,11 @@ "title": "InstantiateMsg", "type": "object", "required": [ - "astro_token", "factory", "owner", - "vesting_contract" + "reward_token" ], "properties": { - "astro_token": { - "$ref": "#/definitions/AssetInfo" - }, "factory": { "type": "string" }, @@ -34,8 +30,13 @@ "owner": { "type": "string" }, - "vesting_contract": { - "type": "string" + "reward_token": { + "description": "The internal \"main emission\" reward token. Renamed from upstream's `astro_token`; Juno's deployment defaults this to native ujuno but any AssetInfo is allowed at instantiate time.", + "allOf": [ + { + "$ref": "#/definitions/AssetInfo" + } + ] } }, "additionalProperties": false, diff --git a/schemas/astroport-incentives/raw/query.json b/schemas/astroport-incentives/raw/query.json index 1fb73080c..b75d6395e 100644 --- a/schemas/astroport-incentives/raw/query.json +++ b/schemas/astroport-incentives/raw/query.json @@ -286,7 +286,7 @@ "additionalProperties": false }, { - "description": "Returns the list of all pools receiving astro emissions", + "description": "Returns the list of all pools receiving internal emissions", "type": "object", "required": [ "active_pools" diff --git a/schemas/astroport-incentives/raw/response_to_config.json b/schemas/astroport-incentives/raw/response_to_config.json index 2b12857d8..cc1d22c18 100644 --- a/schemas/astroport-incentives/raw/response_to_config.json +++ b/schemas/astroport-incentives/raw/response_to_config.json @@ -3,30 +3,13 @@ "title": "Config", "type": "object", "required": [ - "astro_per_second", - "astro_token", "factory", "owner", - "total_alloc_points", - "vesting_contract" + "reward_per_second", + "reward_token", + "total_alloc_points" ], "properties": { - "astro_per_second": { - "description": "Total amount of ASTRO rewards per second", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "astro_token": { - "description": "[`AssetInfo`] of the ASTRO token", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - }, "factory": { "description": "The Factory address", "allOf": [ @@ -76,6 +59,22 @@ } ] }, + "reward_per_second": { + "description": "Total amount of the internal reward token to distribute per second. Renamed from upstream's `astro_per_second`.", + "allOf": [ + { + "$ref": "#/definitions/Uint128" + } + ] + }, + "reward_token": { + "description": "[`AssetInfo`] of the internal (DAO-funded) reward token. Renamed from upstream's `astro_token`; for Astroport-Juno this is typically `AssetInfo::native(\"ujuno\")`. Immutable post-instantiate.", + "allOf": [ + { + "$ref": "#/definitions/AssetInfo" + } + ] + }, "token_transfer_gas_limit": { "description": "Max allowed gas limit per one external incentive token transfer. If token transfer hits this gas limit, reward will be considered as claimed while in reality it will be stuck in the contract. If None, there is no gas limit.", "type": [ @@ -92,14 +91,6 @@ "$ref": "#/definitions/Uint128" } ] - }, - "vesting_contract": { - "description": "The vesting contract which distributes internal (ASTRO) rewards", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] } }, "additionalProperties": false, diff --git a/schemas/astroport-incentives/raw/response_to_pool_info.json b/schemas/astroport-incentives/raw/response_to_pool_info.json index 74b4e4a69..1cccbdfe9 100644 --- a/schemas/astroport-incentives/raw/response_to_pool_info.json +++ b/schemas/astroport-incentives/raw/response_to_pool_info.json @@ -137,7 +137,7 @@ "description": "This enum is a tiny wrapper over [`AssetInfo`] to differentiate between internal and external rewards. External rewards always have a next_update_ts field which is used to update reward per second (or disable them).", "oneOf": [ { - "description": "Internal rewards aka ASTRO emissions don't have next_update_ts field and they are paid out from Vesting contract.", + "description": "Internal rewards (the DAO-funded \"main emission\" reward token; was ASTRO upstream) don't have a next_update_ts field. Astroport-Juno pays these directly from the incentives contract's own bank balance (the DAO refunds via BankMsg::Send) — upstream's vesting-contract dependency was stripped in P2.5.", "type": "object", "required": [ "int" diff --git a/schemas/astroport-incentives/raw/response_to_reward_info.json b/schemas/astroport-incentives/raw/response_to_reward_info.json index 7dee6a0fa..6f96642f1 100644 --- a/schemas/astroport-incentives/raw/response_to_reward_info.json +++ b/schemas/astroport-incentives/raw/response_to_reward_info.json @@ -111,7 +111,7 @@ "description": "This enum is a tiny wrapper over [`AssetInfo`] to differentiate between internal and external rewards. External rewards always have a next_update_ts field which is used to update reward per second (or disable them).", "oneOf": [ { - "description": "Internal rewards aka ASTRO emissions don't have next_update_ts field and they are paid out from Vesting contract.", + "description": "Internal rewards (the DAO-funded \"main emission\" reward token; was ASTRO upstream) don't have a next_update_ts field. Astroport-Juno pays these directly from the incentives contract's own bank balance (the DAO refunds via BankMsg::Send) — upstream's vesting-contract dependency was stripped in P2.5.", "type": "object", "required": [ "int" diff --git a/schemas/astroport-maker/astroport-maker.json b/schemas/astroport-maker/astroport-maker.json deleted file mode 100644 index c0b0fd6d3..000000000 --- a/schemas/astroport-maker/astroport-maker.json +++ /dev/null @@ -1,1409 +0,0 @@ -{ - "contract_name": "astroport-maker", - "contract_version": "1.7.0", - "idl_version": "1.0.0", - "instantiate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure stores general parameters for the contract.", - "type": "object", - "required": [ - "astro_token", - "factory_contract", - "owner" - ], - "properties": { - "astro_token": { - "description": "The ASTRO token asset info", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - }, - "collect_cooldown": { - "description": "If set defines the period when maker collect can be called", - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - }, - "default_bridge": { - "description": "Default bridge asset (Terra1 - LUNC, Terra2 - LUNA, etc.)", - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "factory_contract": { - "description": "The factory contract address", - "type": "string" - }, - "governance_contract": { - "description": "The governance contract address (fee distributor for vxASTRO)", - "type": [ - "string", - "null" - ] - }, - "governance_percent": { - "description": "The percentage of fees that go to governance_contract", - "anyOf": [ - { - "$ref": "#/definitions/Uint64" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "description": "The maximum spread used when swapping fee tokens to ASTRO", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "owner": { - "description": "Address that's allowed to change contract parameters", - "type": "string" - }, - "second_receiver_params": { - "description": "The second receiver parameters of fees", - "anyOf": [ - { - "$ref": "#/definitions/SecondReceiverParams" - }, - { - "type": "null" - } - ] - }, - "staking_contract": { - "description": "The xASTRO staking contract address. If None then governance_contract must be set with 100% fee.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "SecondReceiverParams": { - "description": "This structure describes the parameters for updating the second receiver of fees.", - "type": "object", - "required": [ - "second_fee_receiver", - "second_receiver_cut" - ], - "properties": { - "second_fee_receiver": { - "description": "The second fee receiver", - "type": "string" - }, - "second_receiver_cut": { - "description": "The percentage of fees that go to the second fee receiver", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - } - }, - "additionalProperties": false - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } - }, - "execute": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the functions that can be executed in this contract.", - "oneOf": [ - { - "description": "Collects and swaps fee tokens to ASTRO", - "type": "object", - "required": [ - "collect" - ], - "properties": { - "collect": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets to swap to ASTRO", - "type": "array", - "items": { - "$ref": "#/definitions/AssetWithLimit" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Updates general settings", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "properties": { - "astro_token": { - "description": "The ASTRO token asset info", - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "basic_asset": { - "description": "Basic chain asset (Terra1 - LUNC, Terra2 - LUNA, etc.)", - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "collect_cooldown": { - "description": "Defines the period when maker collect can be called", - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - }, - "dev_fund_config": { - "description": "Dev tax configuration", - "anyOf": [ - { - "$ref": "#/definitions/UpdateDevFundConfig" - }, - { - "type": "null" - } - ] - }, - "factory_contract": { - "description": "The factory contract address", - "type": [ - "string", - "null" - ] - }, - "governance_contract": { - "description": "The governance contract address (fee distributor for vxASTRO)", - "anyOf": [ - { - "$ref": "#/definitions/UpdateAddr" - }, - { - "type": "null" - } - ] - }, - "governance_percent": { - "description": "The percentage of fees that go to governance_contract", - "anyOf": [ - { - "$ref": "#/definitions/Uint64" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "description": "The maximum spread used when swapping fee tokens to ASTRO", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "second_receiver_params": { - "description": "The second receiver parameters of fees", - "anyOf": [ - { - "$ref": "#/definitions/SecondReceiverParams" - }, - { - "type": "null" - } - ] - }, - "staking_contract": { - "description": "The xASTRO staking contract address", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Add bridge tokens used to swap specific fee tokens to ASTRO (effectively declaring a swap route)", - "type": "object", - "required": [ - "update_bridges" - ], - "properties": { - "update_bridges": { - "type": "object", - "properties": { - "add": { - "type": [ - "array", - "null" - ], - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - } - ], - "maxItems": 2, - "minItems": 2 - } - }, - "remove": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/AssetInfo" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap fee tokens via bridge assets", - "type": "object", - "required": [ - "swap_bridge_assets" - ], - "properties": { - "swap_bridge_assets": { - "type": "object", - "required": [ - "assets", - "depth" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "depth": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Distribute ASTRO to stakers and to governance", - "type": "object", - "required": [ - "distribute_astro" - ], - "properties": { - "distribute_astro": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Creates a request to change the contract's ownership", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The validity period of the proposal to change the owner", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "The newly proposed owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Removes a request to change contract ownership", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Claims contract ownership", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Enables the distribution of current fees accrued in the contract over \"blocks\" number of blocks", - "type": "object", - "required": [ - "enable_rewards" - ], - "properties": { - "enable_rewards": { - "type": "object", - "required": [ - "blocks" - ], - "properties": { - "blocks": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Permissionless endpoint that sends certain assets to predefined seizing address", - "type": "object", - "required": [ - "seize" - ], - "properties": { - "seize": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets to seize", - "type": "array", - "items": { - "$ref": "#/definitions/AssetWithLimit" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Sets parameters for seizing assets. Permissioned to a contract owner. If governance wants to stop seizing assets, it can set an empty list of seizable assets.", - "type": "object", - "required": [ - "update_seize_config" - ], - "properties": { - "update_seize_config": { - "type": "object", - "properties": { - "receiver": { - "description": "The address that will receive the seized tokens", - "type": [ - "string", - "null" - ] - }, - "seizable_assets": { - "description": "The assets that can be seized. Resets the list to this one every time it is executed", - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "AssetWithLimit": { - "description": "This struct holds parameters to help with swapping a specific amount of a fee token to ASTRO.", - "type": "object", - "required": [ - "info" - ], - "properties": { - "info": { - "description": "Information about the fee token to swap", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - }, - "limit": { - "description": "The amount of tokens to swap", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "DevFundConfig": { - "type": "object", - "required": [ - "address", - "asset_info", - "share" - ], - "properties": { - "address": { - "description": "The dev fund address", - "type": "string" - }, - "asset_info": { - "description": "Asset that devs want ASTRO to be swapped to", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - }, - "share": { - "description": "The percentage of fees that go to the dev fund", - "allOf": [ - { - "$ref": "#/definitions/Decimal" - } - ] - } - }, - "additionalProperties": false - }, - "SecondReceiverParams": { - "description": "This structure describes the parameters for updating the second receiver of fees.", - "type": "object", - "required": [ - "second_fee_receiver", - "second_receiver_cut" - ], - "properties": { - "second_fee_receiver": { - "description": "The second fee receiver", - "type": "string" - }, - "second_receiver_cut": { - "description": "The percentage of fees that go to the second fee receiver", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "UpdateAddr": { - "description": "This is an enum used for setting and removing a contract address.", - "oneOf": [ - { - "description": "Sets a new contract address.", - "type": "object", - "required": [ - "set" - ], - "properties": { - "set": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "Removes a contract address.", - "type": "object", - "required": [ - "remove" - ], - "properties": { - "remove": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "UpdateDevFundConfig": { - "type": "object", - "properties": { - "set": { - "description": "If 'set' is None then dev fund config will be removed, otherwise it will be updated with the new parameters", - "anyOf": [ - { - "$ref": "#/definitions/DevFundConfig" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - } - }, - "query": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query functions available in the contract.", - "oneOf": [ - { - "description": "Returns information about the maker configs that contains in the [`ConfigResponse`]", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance for each asset in the specified input parameters", - "type": "object", - "required": [ - "balances" - ], - "properties": { - "balances": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "bridges" - ], - "properties": { - "bridges": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the seize config", - "type": "object", - "required": [ - "query_seize_config" - ], - "properties": { - "query_seize_config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } - }, - "migrate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "description": "This structure describes a migration message.", - "type": "object", - "properties": { - "collect_cooldown": { - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - }, - "second_receiver_params": { - "anyOf": [ - { - "$ref": "#/definitions/SecondReceiverParams" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "SecondReceiverParams": { - "description": "This structure describes the parameters for updating the second receiver of fees.", - "type": "object", - "required": [ - "second_fee_receiver", - "second_receiver_cut" - ], - "properties": { - "second_fee_receiver": { - "description": "The second fee receiver", - "type": "string" - }, - "second_receiver_cut": { - "description": "The percentage of fees that go to the second fee receiver", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - } - }, - "additionalProperties": false - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } - }, - "sudo": null, - "responses": { - "balances": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "BalancesResponse", - "description": "A custom struct used to return multiple asset balances.", - "type": "object", - "required": [ - "balances" - ], - "properties": { - "balances": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "bridges": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Tuple_of_String_and_String", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "type": "string" - }, - { - "type": "string" - } - ], - "maxItems": 2, - "minItems": 2 - } - }, - "config": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "A custom struct that holds contract parameters and is used to retrieve them.", - "type": "object", - "required": [ - "astro_token", - "factory_contract", - "governance_percent", - "max_spread", - "owner", - "pre_upgrade_astro_amount", - "remainder_reward" - ], - "properties": { - "astro_token": { - "description": "The ASTRO token asset info", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - }, - "default_bridge": { - "description": "Default bridge (Terra1 - LUNC, Terra2 - LUNA, etc.)", - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "dev_fund_conf": { - "description": "The dev fund configuration", - "anyOf": [ - { - "$ref": "#/definitions/DevFundConfig" - }, - { - "type": "null" - } - ] - }, - "factory_contract": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "governance_contract": { - "description": "The governance contract address (fee distributor for vxASTRO stakers)", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - }, - "governance_percent": { - "description": "The percentage of fees that go to governance_contract", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - }, - "max_spread": { - "description": "The maximum spread used when swapping fee tokens to ASTRO", - "allOf": [ - { - "$ref": "#/definitions/Decimal" - } - ] - }, - "owner": { - "description": "Address that is allowed to update contract parameters", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "pre_upgrade_astro_amount": { - "description": "The amount of ASTRO tokens accrued before upgrading the Maker implementation and enabling reward distribution", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "remainder_reward": { - "description": "The remainder ASTRO tokens (accrued before the Maker is upgraded) to be distributed to xASTRO stakers", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "second_receiver_cfg": { - "description": "Parameters that describe the second receiver of fees", - "anyOf": [ - { - "$ref": "#/definitions/SecondReceiverConfig" - }, - { - "type": "null" - } - ] - }, - "staking_contract": { - "description": "The xASTRO staking contract address", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "DevFundConfig": { - "type": "object", - "required": [ - "address", - "asset_info", - "share" - ], - "properties": { - "address": { - "description": "The dev fund address", - "type": "string" - }, - "asset_info": { - "description": "Asset that devs want ASTRO to be swapped to", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - }, - "share": { - "description": "The percentage of fees that go to the dev fund", - "allOf": [ - { - "$ref": "#/definitions/Decimal" - } - ] - } - }, - "additionalProperties": false - }, - "SecondReceiverConfig": { - "description": "This structure stores the parameters for the second receiver of fees.", - "type": "object", - "required": [ - "second_fee_receiver", - "second_receiver_cut" - ], - "properties": { - "second_fee_receiver": { - "description": "The second fee receiver contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "second_receiver_cut": { - "description": "The percentage of fees that go to the second fee receiver", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } - }, - "query_seize_config": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SeizeConfig", - "type": "object", - "required": [ - "receiver", - "seizable_assets" - ], - "properties": { - "receiver": { - "description": "The address of the contract that will receive the seized tokens", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "seizable_assets": { - "description": "The assets that can be seized", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } - } - } -} diff --git a/schemas/astroport-maker/raw/execute.json b/schemas/astroport-maker/raw/execute.json deleted file mode 100644 index d14e4cfb6..000000000 --- a/schemas/astroport-maker/raw/execute.json +++ /dev/null @@ -1,576 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the functions that can be executed in this contract.", - "oneOf": [ - { - "description": "Collects and swaps fee tokens to ASTRO", - "type": "object", - "required": [ - "collect" - ], - "properties": { - "collect": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets to swap to ASTRO", - "type": "array", - "items": { - "$ref": "#/definitions/AssetWithLimit" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Updates general settings", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "properties": { - "astro_token": { - "description": "The ASTRO token asset info", - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "basic_asset": { - "description": "Basic chain asset (Terra1 - LUNC, Terra2 - LUNA, etc.)", - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "collect_cooldown": { - "description": "Defines the period when maker collect can be called", - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - }, - "dev_fund_config": { - "description": "Dev tax configuration", - "anyOf": [ - { - "$ref": "#/definitions/UpdateDevFundConfig" - }, - { - "type": "null" - } - ] - }, - "factory_contract": { - "description": "The factory contract address", - "type": [ - "string", - "null" - ] - }, - "governance_contract": { - "description": "The governance contract address (fee distributor for vxASTRO)", - "anyOf": [ - { - "$ref": "#/definitions/UpdateAddr" - }, - { - "type": "null" - } - ] - }, - "governance_percent": { - "description": "The percentage of fees that go to governance_contract", - "anyOf": [ - { - "$ref": "#/definitions/Uint64" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "description": "The maximum spread used when swapping fee tokens to ASTRO", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "second_receiver_params": { - "description": "The second receiver parameters of fees", - "anyOf": [ - { - "$ref": "#/definitions/SecondReceiverParams" - }, - { - "type": "null" - } - ] - }, - "staking_contract": { - "description": "The xASTRO staking contract address", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Add bridge tokens used to swap specific fee tokens to ASTRO (effectively declaring a swap route)", - "type": "object", - "required": [ - "update_bridges" - ], - "properties": { - "update_bridges": { - "type": "object", - "properties": { - "add": { - "type": [ - "array", - "null" - ], - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - } - ], - "maxItems": 2, - "minItems": 2 - } - }, - "remove": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/AssetInfo" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap fee tokens via bridge assets", - "type": "object", - "required": [ - "swap_bridge_assets" - ], - "properties": { - "swap_bridge_assets": { - "type": "object", - "required": [ - "assets", - "depth" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "depth": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Distribute ASTRO to stakers and to governance", - "type": "object", - "required": [ - "distribute_astro" - ], - "properties": { - "distribute_astro": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Creates a request to change the contract's ownership", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The validity period of the proposal to change the owner", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "The newly proposed owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Removes a request to change contract ownership", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Claims contract ownership", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Enables the distribution of current fees accrued in the contract over \"blocks\" number of blocks", - "type": "object", - "required": [ - "enable_rewards" - ], - "properties": { - "enable_rewards": { - "type": "object", - "required": [ - "blocks" - ], - "properties": { - "blocks": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Permissionless endpoint that sends certain assets to predefined seizing address", - "type": "object", - "required": [ - "seize" - ], - "properties": { - "seize": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets to seize", - "type": "array", - "items": { - "$ref": "#/definitions/AssetWithLimit" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Sets parameters for seizing assets. Permissioned to a contract owner. If governance wants to stop seizing assets, it can set an empty list of seizable assets.", - "type": "object", - "required": [ - "update_seize_config" - ], - "properties": { - "update_seize_config": { - "type": "object", - "properties": { - "receiver": { - "description": "The address that will receive the seized tokens", - "type": [ - "string", - "null" - ] - }, - "seizable_assets": { - "description": "The assets that can be seized. Resets the list to this one every time it is executed", - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "AssetWithLimit": { - "description": "This struct holds parameters to help with swapping a specific amount of a fee token to ASTRO.", - "type": "object", - "required": [ - "info" - ], - "properties": { - "info": { - "description": "Information about the fee token to swap", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - }, - "limit": { - "description": "The amount of tokens to swap", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "DevFundConfig": { - "type": "object", - "required": [ - "address", - "asset_info", - "share" - ], - "properties": { - "address": { - "description": "The dev fund address", - "type": "string" - }, - "asset_info": { - "description": "Asset that devs want ASTRO to be swapped to", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - }, - "share": { - "description": "The percentage of fees that go to the dev fund", - "allOf": [ - { - "$ref": "#/definitions/Decimal" - } - ] - } - }, - "additionalProperties": false - }, - "SecondReceiverParams": { - "description": "This structure describes the parameters for updating the second receiver of fees.", - "type": "object", - "required": [ - "second_fee_receiver", - "second_receiver_cut" - ], - "properties": { - "second_fee_receiver": { - "description": "The second fee receiver", - "type": "string" - }, - "second_receiver_cut": { - "description": "The percentage of fees that go to the second fee receiver", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "UpdateAddr": { - "description": "This is an enum used for setting and removing a contract address.", - "oneOf": [ - { - "description": "Sets a new contract address.", - "type": "object", - "required": [ - "set" - ], - "properties": { - "set": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "Removes a contract address.", - "type": "object", - "required": [ - "remove" - ], - "properties": { - "remove": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "UpdateDevFundConfig": { - "type": "object", - "properties": { - "set": { - "description": "If 'set' is None then dev fund config will be removed, otherwise it will be updated with the new parameters", - "anyOf": [ - { - "$ref": "#/definitions/DevFundConfig" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - } -} diff --git a/schemas/astroport-maker/raw/instantiate.json b/schemas/astroport-maker/raw/instantiate.json deleted file mode 100644 index b7943f02e..000000000 --- a/schemas/astroport-maker/raw/instantiate.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure stores general parameters for the contract.", - "type": "object", - "required": [ - "astro_token", - "factory_contract", - "owner" - ], - "properties": { - "astro_token": { - "description": "The ASTRO token asset info", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - }, - "collect_cooldown": { - "description": "If set defines the period when maker collect can be called", - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - }, - "default_bridge": { - "description": "Default bridge asset (Terra1 - LUNC, Terra2 - LUNA, etc.)", - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "factory_contract": { - "description": "The factory contract address", - "type": "string" - }, - "governance_contract": { - "description": "The governance contract address (fee distributor for vxASTRO)", - "type": [ - "string", - "null" - ] - }, - "governance_percent": { - "description": "The percentage of fees that go to governance_contract", - "anyOf": [ - { - "$ref": "#/definitions/Uint64" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "description": "The maximum spread used when swapping fee tokens to ASTRO", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "owner": { - "description": "Address that's allowed to change contract parameters", - "type": "string" - }, - "second_receiver_params": { - "description": "The second receiver parameters of fees", - "anyOf": [ - { - "$ref": "#/definitions/SecondReceiverParams" - }, - { - "type": "null" - } - ] - }, - "staking_contract": { - "description": "The xASTRO staking contract address. If None then governance_contract must be set with 100% fee.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "SecondReceiverParams": { - "description": "This structure describes the parameters for updating the second receiver of fees.", - "type": "object", - "required": [ - "second_fee_receiver", - "second_receiver_cut" - ], - "properties": { - "second_fee_receiver": { - "description": "The second fee receiver", - "type": "string" - }, - "second_receiver_cut": { - "description": "The percentage of fees that go to the second fee receiver", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - } - }, - "additionalProperties": false - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-maker/raw/migrate.json b/schemas/astroport-maker/raw/migrate.json deleted file mode 100644 index dcdb89cc4..000000000 --- a/schemas/astroport-maker/raw/migrate.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "description": "This structure describes a migration message.", - "type": "object", - "properties": { - "collect_cooldown": { - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - }, - "second_receiver_params": { - "anyOf": [ - { - "$ref": "#/definitions/SecondReceiverParams" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "SecondReceiverParams": { - "description": "This structure describes the parameters for updating the second receiver of fees.", - "type": "object", - "required": [ - "second_fee_receiver", - "second_receiver_cut" - ], - "properties": { - "second_fee_receiver": { - "description": "The second fee receiver", - "type": "string" - }, - "second_receiver_cut": { - "description": "The percentage of fees that go to the second fee receiver", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - } - }, - "additionalProperties": false - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-maker/raw/query.json b/schemas/astroport-maker/raw/query.json deleted file mode 100644 index c1602afb3..000000000 --- a/schemas/astroport-maker/raw/query.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query functions available in the contract.", - "oneOf": [ - { - "description": "Returns information about the maker configs that contains in the [`ConfigResponse`]", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance for each asset in the specified input parameters", - "type": "object", - "required": [ - "balances" - ], - "properties": { - "balances": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "bridges" - ], - "properties": { - "bridges": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the seize config", - "type": "object", - "required": [ - "query_seize_config" - ], - "properties": { - "query_seize_config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-maker/raw/response_to_balances.json b/schemas/astroport-maker/raw/response_to_balances.json deleted file mode 100644 index 08340407b..000000000 --- a/schemas/astroport-maker/raw/response_to_balances.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "BalancesResponse", - "description": "A custom struct used to return multiple asset balances.", - "type": "object", - "required": [ - "balances" - ], - "properties": { - "balances": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-maker/raw/response_to_bridges.json b/schemas/astroport-maker/raw/response_to_bridges.json deleted file mode 100644 index 7d9d67ae0..000000000 --- a/schemas/astroport-maker/raw/response_to_bridges.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Tuple_of_String_and_String", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "type": "string" - }, - { - "type": "string" - } - ], - "maxItems": 2, - "minItems": 2 - } -} diff --git a/schemas/astroport-maker/raw/response_to_config.json b/schemas/astroport-maker/raw/response_to_config.json deleted file mode 100644 index 2e2bcf042..000000000 --- a/schemas/astroport-maker/raw/response_to_config.json +++ /dev/null @@ -1,254 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "A custom struct that holds contract parameters and is used to retrieve them.", - "type": "object", - "required": [ - "astro_token", - "factory_contract", - "governance_percent", - "max_spread", - "owner", - "pre_upgrade_astro_amount", - "remainder_reward" - ], - "properties": { - "astro_token": { - "description": "The ASTRO token asset info", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - }, - "default_bridge": { - "description": "Default bridge (Terra1 - LUNC, Terra2 - LUNA, etc.)", - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "dev_fund_conf": { - "description": "The dev fund configuration", - "anyOf": [ - { - "$ref": "#/definitions/DevFundConfig" - }, - { - "type": "null" - } - ] - }, - "factory_contract": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "governance_contract": { - "description": "The governance contract address (fee distributor for vxASTRO stakers)", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - }, - "governance_percent": { - "description": "The percentage of fees that go to governance_contract", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - }, - "max_spread": { - "description": "The maximum spread used when swapping fee tokens to ASTRO", - "allOf": [ - { - "$ref": "#/definitions/Decimal" - } - ] - }, - "owner": { - "description": "Address that is allowed to update contract parameters", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "pre_upgrade_astro_amount": { - "description": "The amount of ASTRO tokens accrued before upgrading the Maker implementation and enabling reward distribution", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "remainder_reward": { - "description": "The remainder ASTRO tokens (accrued before the Maker is upgraded) to be distributed to xASTRO stakers", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "second_receiver_cfg": { - "description": "Parameters that describe the second receiver of fees", - "anyOf": [ - { - "$ref": "#/definitions/SecondReceiverConfig" - }, - { - "type": "null" - } - ] - }, - "staking_contract": { - "description": "The xASTRO staking contract address", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "DevFundConfig": { - "type": "object", - "required": [ - "address", - "asset_info", - "share" - ], - "properties": { - "address": { - "description": "The dev fund address", - "type": "string" - }, - "asset_info": { - "description": "Asset that devs want ASTRO to be swapped to", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - }, - "share": { - "description": "The percentage of fees that go to the dev fund", - "allOf": [ - { - "$ref": "#/definitions/Decimal" - } - ] - } - }, - "additionalProperties": false - }, - "SecondReceiverConfig": { - "description": "This structure stores the parameters for the second receiver of fees.", - "type": "object", - "required": [ - "second_fee_receiver", - "second_receiver_cut" - ], - "properties": { - "second_fee_receiver": { - "description": "The second fee receiver contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "second_receiver_cut": { - "description": "The percentage of fees that go to the second fee receiver", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-maker/raw/response_to_query_seize_config.json b/schemas/astroport-maker/raw/response_to_query_seize_config.json deleted file mode 100644 index 874f52574..000000000 --- a/schemas/astroport-maker/raw/response_to_query_seize_config.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SeizeConfig", - "type": "object", - "required": [ - "receiver", - "seizable_assets" - ], - "properties": { - "receiver": { - "description": "The address of the contract that will receive the seized tokens", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "seizable_assets": { - "description": "The assets that can be seized", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-pair-concentrated-duality/astroport-pair-concentrated-duality.json b/schemas/astroport-pair-concentrated-duality/astroport-pair-concentrated-duality.json deleted file mode 100644 index d990b44d3..000000000 --- a/schemas/astroport-pair-concentrated-duality/astroport-pair-concentrated-duality.json +++ /dev/null @@ -1,1807 +0,0 @@ -{ - "contract_name": "astroport-pair-concentrated-duality", - "contract_version": "4.3.3", - "idl_version": "1.0.0", - "instantiate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "asset_infos", - "factory_addr", - "pair_type", - "token_code_id" - ], - "properties": { - "asset_infos": { - "description": "Information about assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "factory_addr": { - "description": "The factory contract address", - "type": "string" - }, - "init_params": { - "description": "Optional binary serialised parameters for custom pool types", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "pair_type": { - "description": "The pair type", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - }, - "token_code_id": { - "description": "The token contract code ID used for the tokens in the pool", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } - }, - "execute": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Receives a message of type [`Cw20ReceiveMsg`]", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "ProvideLiquidity allows someone to provide liquidity in the pool", - "type": "object", - "required": [ - "provide_liquidity" - ], - "properties": { - "provide_liquidity": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets available in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "auto_stake": { - "description": "Determines whether the LP tokens minted for the user is auto_staked in the Incentives contract", - "type": [ - "boolean", - "null" - ] - }, - "min_lp_to_receive": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "receiver": { - "description": "The receiver of LP tokens", - "type": [ - "string", - "null" - ] - }, - "slippage_tolerance": { - "description": "The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "WithdrawLiquidity allows someone to withdraw liquidity from the pool", - "type": "object", - "required": [ - "withdraw_liquidity" - ], - "properties": { - "withdraw_liquidity": { - "type": "object", - "properties": { - "assets": { - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "min_assets_to_receive": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Asset" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap performs a swap in the pool", - "type": "object", - "required": [ - "swap" - ], - "properties": { - "swap": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "belief_price": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - }, - "to": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Update the pair configuration", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "required": [ - "params" - ], - "properties": { - "params": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "ProposeNewOwner creates a proposal to change contract ownership. The validity period for the proposal is set in the `expires_in` variable.", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The date after which this proposal expires", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "Newly proposed contract owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "DropOwnershipProposal removes the existing offer to change contract ownership.", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Used to claim contract ownership.", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom execute endpoints for extended pool implementations", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "$ref": "#/definitions/DualityPairMsg" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "DualityPairMsg": { - "oneOf": [ - { - "type": "object", - "required": [ - "sync_orderbook" - ], - "properties": { - "sync_orderbook": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "update_orderbook_config" - ], - "properties": { - "update_orderbook_config": { - "$ref": "#/definitions/UpdateDualityOrderbook" - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "UpdateDualityOrderbook": { - "type": "object", - "properties": { - "avg_price_adjustment": { - "description": "Due to possible rounding issues on Duality side we have to set price tolerance, which serves as a worsening factor for the end price from PCL. Should be relatively low something like 1-10 bps.", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "enable": { - "description": "Determines whether the orderbook is enabled", - "type": [ - "boolean", - "null" - ] - }, - "executor": { - "description": "The address of the orderbook sync executor", - "type": [ - "string", - "null" - ] - }, - "liquidity_percent": { - "description": "Percent of liquidity to be deployed to the orderbook", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "min_asset_0_order_size": { - "description": "Minimum order size for asset 0", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "min_asset_1_order_size": { - "description": "Minimum order size for asset 1", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "orders_number": { - "description": "Number of orders on each side of the orderbook", - "type": [ - "integer", - "null" - ], - "format": "uint8", - "minimum": 0.0 - }, - "remove_executor": { - "description": "Determines whether the executor should be removed. If removed, then sync endpoint becomes permissionless", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - } - } - }, - "query": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns information about a pair in an object of type [`super::asset::PairInfo`].", - "type": "object", - "required": [ - "pair" - ], - "properties": { - "pair": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a pool in an object of type [`PoolResponse`].", - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns contract configuration settings in a custom [`ConfigResponse`] structure.", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the share of the pool in a vector that contains objects of type [`Asset`].", - "type": "object", - "required": [ - "share" - ], - "properties": { - "share": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a swap simulation in a [`SimulationResponse`] object.", - "type": "object", - "required": [ - "simulation" - ], - "properties": { - "simulation": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about cumulative prices in a [`ReverseSimulationResponse`] object.", - "type": "object", - "required": [ - "reverse_simulation" - ], - "properties": { - "reverse_simulation": { - "type": "object", - "required": [ - "ask_asset" - ], - "properties": { - "ask_asset": { - "$ref": "#/definitions/Asset" - }, - "offer_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the cumulative prices in a [`CumulativePricesResponse`] object", - "type": "object", - "required": [ - "cumulative_prices" - ], - "properties": { - "cumulative_prices": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns current D invariant in as a [`u128`] value", - "type": "object", - "required": [ - "query_compute_d" - ], - "properties": { - "query_compute_d": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance of the specified asset that was in the pool just preceeding the moment of the specified block height creation.", - "type": "object", - "required": [ - "asset_balance_at" - ], - "properties": { - "asset_balance_at": { - "type": "object", - "required": [ - "asset_info", - "block_height" - ], - "properties": { - "asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "block_height": { - "$ref": "#/definitions/Uint64" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query price from observations", - "type": "object", - "required": [ - "observe" - ], - "properties": { - "observe": { - "type": "object", - "required": [ - "seconds_ago" - ], - "properties": { - "seconds_ago": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of assets received for the given amount of LP tokens", - "type": "object", - "required": [ - "simulate_withdraw" - ], - "properties": { - "simulate_withdraw": { - "type": "object", - "required": [ - "lp_amount" - ], - "properties": { - "lp_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of shares received for the given amount of assets", - "type": "object", - "required": [ - "simulate_provide" - ], - "properties": { - "simulate_provide": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "slippage_tolerance": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } - }, - "migrate": null, - "sudo": null, - "responses": { - "asset_balance_at": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_Uint128", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "config": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This struct is used to return a query result with the general contract configuration.", - "type": "object", - "required": [ - "block_time_last", - "factory_addr", - "owner" - ], - "properties": { - "block_time_last": { - "description": "Last timestamp when the cumulative prices in the pool were updated", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "factory_addr": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "owner": { - "description": "The contract owner", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "params": { - "description": "The pool's parameters", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "tracker_addr": { - "description": "Tracker contract address", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } - }, - "cumulative_prices": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CumulativePricesResponse", - "description": "This structure is used to return a cumulative prices query response.", - "type": "object", - "required": [ - "assets", - "cumulative_prices", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool to query", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "cumulative_prices": { - "description": "The vector contains cumulative prices for each pair of assets in the pool", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/Uint128" - } - ], - "maxItems": 3, - "minItems": 3 - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "observe": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OracleObservation", - "type": "object", - "required": [ - "price", - "timestamp" - ], - "properties": { - "price": { - "$ref": "#/definitions/Decimal" - }, - "timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - } - } - }, - "pair": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PairInfo", - "description": "This structure stores the main parameters for an Astroport pair", - "type": "object", - "required": [ - "asset_infos", - "contract_addr", - "liquidity_token", - "pair_type" - ], - "properties": { - "asset_infos": { - "description": "Asset information for the assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "contract_addr": { - "description": "Pair contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "liquidity_token": { - "description": "Pair LP token denom", - "type": "string" - }, - "pair_type": { - "description": "The pool type (xyk, stableswap etc) available in [`PairType`]", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } - }, - "pool": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PoolResponse", - "description": "This struct is used to return a query result with the total amount of LP tokens and assets in a specific pool.", - "type": "object", - "required": [ - "assets", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool together with asset amounts", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "query_compute_d": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "reverse_simulation": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReverseSimulationResponse", - "description": "This structure holds the parameters that are returned from a reverse swap simulation response.", - "type": "object", - "required": [ - "commission_amount", - "offer_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "offer_amount": { - "description": "The amount of offer assets returned by the reverse swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "share": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "simulate_provide": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "simulate_withdraw": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "simulation": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SimulationResponse", - "description": "This structure holds the parameters that are returned from a swap simulation response", - "type": "object", - "required": [ - "commission_amount", - "return_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "return_amount": { - "description": "The amount of ask assets returned by the swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - } - } -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/execute.json b/schemas/astroport-pair-concentrated-duality/raw/execute.json deleted file mode 100644 index 63b93f5e3..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/execute.json +++ /dev/null @@ -1,486 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Receives a message of type [`Cw20ReceiveMsg`]", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "ProvideLiquidity allows someone to provide liquidity in the pool", - "type": "object", - "required": [ - "provide_liquidity" - ], - "properties": { - "provide_liquidity": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets available in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "auto_stake": { - "description": "Determines whether the LP tokens minted for the user is auto_staked in the Incentives contract", - "type": [ - "boolean", - "null" - ] - }, - "min_lp_to_receive": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "receiver": { - "description": "The receiver of LP tokens", - "type": [ - "string", - "null" - ] - }, - "slippage_tolerance": { - "description": "The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "WithdrawLiquidity allows someone to withdraw liquidity from the pool", - "type": "object", - "required": [ - "withdraw_liquidity" - ], - "properties": { - "withdraw_liquidity": { - "type": "object", - "properties": { - "assets": { - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "min_assets_to_receive": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Asset" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap performs a swap in the pool", - "type": "object", - "required": [ - "swap" - ], - "properties": { - "swap": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "belief_price": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - }, - "to": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Update the pair configuration", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "required": [ - "params" - ], - "properties": { - "params": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "ProposeNewOwner creates a proposal to change contract ownership. The validity period for the proposal is set in the `expires_in` variable.", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The date after which this proposal expires", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "Newly proposed contract owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "DropOwnershipProposal removes the existing offer to change contract ownership.", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Used to claim contract ownership.", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom execute endpoints for extended pool implementations", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "$ref": "#/definitions/DualityPairMsg" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "DualityPairMsg": { - "oneOf": [ - { - "type": "object", - "required": [ - "sync_orderbook" - ], - "properties": { - "sync_orderbook": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "update_orderbook_config" - ], - "properties": { - "update_orderbook_config": { - "$ref": "#/definitions/UpdateDualityOrderbook" - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "UpdateDualityOrderbook": { - "type": "object", - "properties": { - "avg_price_adjustment": { - "description": "Due to possible rounding issues on Duality side we have to set price tolerance, which serves as a worsening factor for the end price from PCL. Should be relatively low something like 1-10 bps.", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "enable": { - "description": "Determines whether the orderbook is enabled", - "type": [ - "boolean", - "null" - ] - }, - "executor": { - "description": "The address of the orderbook sync executor", - "type": [ - "string", - "null" - ] - }, - "liquidity_percent": { - "description": "Percent of liquidity to be deployed to the orderbook", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "min_asset_0_order_size": { - "description": "Minimum order size for asset 0", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "min_asset_1_order_size": { - "description": "Minimum order size for asset 1", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "orders_number": { - "description": "Number of orders on each side of the orderbook", - "type": [ - "integer", - "null" - ], - "format": "uint8", - "minimum": 0.0 - }, - "remove_executor": { - "description": "Determines whether the executor should be removed. If removed, then sync endpoint becomes permissionless", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - } - } -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/instantiate.json b/schemas/astroport-pair-concentrated-duality/raw/instantiate.json deleted file mode 100644 index 00ccada94..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/instantiate.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "asset_infos", - "factory_addr", - "pair_type", - "token_code_id" - ], - "properties": { - "asset_infos": { - "description": "Information about assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "factory_addr": { - "description": "The factory contract address", - "type": "string" - }, - "init_params": { - "description": "Optional binary serialised parameters for custom pool types", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "pair_type": { - "description": "The pair type", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - }, - "token_code_id": { - "description": "The token contract code ID used for the tokens in the pool", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/query.json b/schemas/astroport-pair-concentrated-duality/raw/query.json deleted file mode 100644 index b7da792ec..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/query.json +++ /dev/null @@ -1,364 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns information about a pair in an object of type [`super::asset::PairInfo`].", - "type": "object", - "required": [ - "pair" - ], - "properties": { - "pair": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a pool in an object of type [`PoolResponse`].", - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns contract configuration settings in a custom [`ConfigResponse`] structure.", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the share of the pool in a vector that contains objects of type [`Asset`].", - "type": "object", - "required": [ - "share" - ], - "properties": { - "share": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a swap simulation in a [`SimulationResponse`] object.", - "type": "object", - "required": [ - "simulation" - ], - "properties": { - "simulation": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about cumulative prices in a [`ReverseSimulationResponse`] object.", - "type": "object", - "required": [ - "reverse_simulation" - ], - "properties": { - "reverse_simulation": { - "type": "object", - "required": [ - "ask_asset" - ], - "properties": { - "ask_asset": { - "$ref": "#/definitions/Asset" - }, - "offer_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the cumulative prices in a [`CumulativePricesResponse`] object", - "type": "object", - "required": [ - "cumulative_prices" - ], - "properties": { - "cumulative_prices": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns current D invariant in as a [`u128`] value", - "type": "object", - "required": [ - "query_compute_d" - ], - "properties": { - "query_compute_d": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance of the specified asset that was in the pool just preceeding the moment of the specified block height creation.", - "type": "object", - "required": [ - "asset_balance_at" - ], - "properties": { - "asset_balance_at": { - "type": "object", - "required": [ - "asset_info", - "block_height" - ], - "properties": { - "asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "block_height": { - "$ref": "#/definitions/Uint64" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query price from observations", - "type": "object", - "required": [ - "observe" - ], - "properties": { - "observe": { - "type": "object", - "required": [ - "seconds_ago" - ], - "properties": { - "seconds_ago": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of assets received for the given amount of LP tokens", - "type": "object", - "required": [ - "simulate_withdraw" - ], - "properties": { - "simulate_withdraw": { - "type": "object", - "required": [ - "lp_amount" - ], - "properties": { - "lp_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of shares received for the given amount of assets", - "type": "object", - "required": [ - "simulate_provide" - ], - "properties": { - "simulate_provide": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "slippage_tolerance": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/response_to_asset_balance_at.json b/schemas/astroport-pair-concentrated-duality/raw/response_to_asset_balance_at.json deleted file mode 100644 index 2eaf6e96f..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/response_to_asset_balance_at.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_Uint128", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/response_to_config.json b/schemas/astroport-pair-concentrated-duality/raw/response_to_config.json deleted file mode 100644 index 953b0adc7..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/response_to_config.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This struct is used to return a query result with the general contract configuration.", - "type": "object", - "required": [ - "block_time_last", - "factory_addr", - "owner" - ], - "properties": { - "block_time_last": { - "description": "Last timestamp when the cumulative prices in the pool were updated", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "factory_addr": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "owner": { - "description": "The contract owner", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "params": { - "description": "The pool's parameters", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "tracker_addr": { - "description": "Tracker contract address", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/response_to_cumulative_prices.json b/schemas/astroport-pair-concentrated-duality/raw/response_to_cumulative_prices.json deleted file mode 100644 index 695a3121f..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/response_to_cumulative_prices.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CumulativePricesResponse", - "description": "This structure is used to return a cumulative prices query response.", - "type": "object", - "required": [ - "assets", - "cumulative_prices", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool to query", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "cumulative_prices": { - "description": "The vector contains cumulative prices for each pair of assets in the pool", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/Uint128" - } - ], - "maxItems": 3, - "minItems": 3 - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/response_to_observe.json b/schemas/astroport-pair-concentrated-duality/raw/response_to_observe.json deleted file mode 100644 index a8c389cb0..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/response_to_observe.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OracleObservation", - "type": "object", - "required": [ - "price", - "timestamp" - ], - "properties": { - "price": { - "$ref": "#/definitions/Decimal" - }, - "timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/response_to_pair.json b/schemas/astroport-pair-concentrated-duality/raw/response_to_pair.json deleted file mode 100644 index 16721f81d..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/response_to_pair.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PairInfo", - "description": "This structure stores the main parameters for an Astroport pair", - "type": "object", - "required": [ - "asset_infos", - "contract_addr", - "liquidity_token", - "pair_type" - ], - "properties": { - "asset_infos": { - "description": "Asset information for the assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "contract_addr": { - "description": "Pair contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "liquidity_token": { - "description": "Pair LP token denom", - "type": "string" - }, - "pair_type": { - "description": "The pool type (xyk, stableswap etc) available in [`PairType`]", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/response_to_pool.json b/schemas/astroport-pair-concentrated-duality/raw/response_to_pool.json deleted file mode 100644 index 693cad0e0..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/response_to_pool.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PoolResponse", - "description": "This struct is used to return a query result with the total amount of LP tokens and assets in a specific pool.", - "type": "object", - "required": [ - "assets", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool together with asset amounts", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/response_to_query_compute_d.json b/schemas/astroport-pair-concentrated-duality/raw/response_to_query_compute_d.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/response_to_query_compute_d.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/response_to_reverse_simulation.json b/schemas/astroport-pair-concentrated-duality/raw/response_to_reverse_simulation.json deleted file mode 100644 index ca711e182..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/response_to_reverse_simulation.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReverseSimulationResponse", - "description": "This structure holds the parameters that are returned from a reverse swap simulation response.", - "type": "object", - "required": [ - "commission_amount", - "offer_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "offer_amount": { - "description": "The amount of offer assets returned by the reverse swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/response_to_share.json b/schemas/astroport-pair-concentrated-duality/raw/response_to_share.json deleted file mode 100644 index 8285d4916..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/response_to_share.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/response_to_simulate_provide.json b/schemas/astroport-pair-concentrated-duality/raw/response_to_simulate_provide.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/response_to_simulate_provide.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/response_to_simulate_withdraw.json b/schemas/astroport-pair-concentrated-duality/raw/response_to_simulate_withdraw.json deleted file mode 100644 index 8285d4916..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/response_to_simulate_withdraw.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-duality/raw/response_to_simulation.json b/schemas/astroport-pair-concentrated-duality/raw/response_to_simulation.json deleted file mode 100644 index 4bc828d4a..000000000 --- a/schemas/astroport-pair-concentrated-duality/raw/response_to_simulation.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SimulationResponse", - "description": "This structure holds the parameters that are returned from a swap simulation response", - "type": "object", - "required": [ - "commission_amount", - "return_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "return_amount": { - "description": "The amount of ask assets returned by the swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/astroport-pair-concentrated-sale-tax.json b/schemas/astroport-pair-concentrated-sale-tax/astroport-pair-concentrated-sale-tax.json deleted file mode 100644 index 55ff9b34c..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/astroport-pair-concentrated-sale-tax.json +++ /dev/null @@ -1,1730 +0,0 @@ -{ - "contract_name": "astroport-pair-concentrated-sale-tax", - "contract_version": "4.2.2", - "idl_version": "1.0.0", - "instantiate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "asset_infos", - "factory_addr", - "pair_type", - "token_code_id" - ], - "properties": { - "asset_infos": { - "description": "Information about assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "factory_addr": { - "description": "The factory contract address", - "type": "string" - }, - "init_params": { - "description": "Optional binary serialised parameters for custom pool types", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "pair_type": { - "description": "The pair type", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - }, - "token_code_id": { - "description": "The token contract code ID used for the tokens in the pool", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } - }, - "execute": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Receives a message of type [`Cw20ReceiveMsg`]", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "ProvideLiquidity allows someone to provide liquidity in the pool", - "type": "object", - "required": [ - "provide_liquidity" - ], - "properties": { - "provide_liquidity": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets available in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "auto_stake": { - "description": "Determines whether the LP tokens minted for the user is auto_staked in the Incentives contract", - "type": [ - "boolean", - "null" - ] - }, - "min_lp_to_receive": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "receiver": { - "description": "The receiver of LP tokens", - "type": [ - "string", - "null" - ] - }, - "slippage_tolerance": { - "description": "The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "WithdrawLiquidity allows someone to withdraw liquidity from the pool", - "type": "object", - "required": [ - "withdraw_liquidity" - ], - "properties": { - "withdraw_liquidity": { - "type": "object", - "properties": { - "assets": { - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "min_assets_to_receive": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Asset" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap performs a swap in the pool", - "type": "object", - "required": [ - "swap" - ], - "properties": { - "swap": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "belief_price": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - }, - "to": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Update the pair configuration", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "required": [ - "params" - ], - "properties": { - "params": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "ProposeNewOwner creates a proposal to change contract ownership. The validity period for the proposal is set in the `expires_in` variable.", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The date after which this proposal expires", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "Newly proposed contract owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "DropOwnershipProposal removes the existing offer to change contract ownership.", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Used to claim contract ownership.", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom execute endpoints for extended pool implementations", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "$ref": "#/definitions/Empty" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Empty": { - "description": "An empty struct that serves as a placeholder in different places, such as contracts that don't set a custom message.\n\nIt is designed to be expressable in correct JSON and JSON Schema but contains no meaningful data. Previously we used enums without cases, but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)", - "type": "object" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "query": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns information about a pair", - "type": "object", - "required": [ - "pair" - ], - "properties": { - "pair": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a pool", - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns contract configuration", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the share of the pool in a vector that contains objects of type [`Asset`].", - "type": "object", - "required": [ - "share" - ], - "properties": { - "share": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a swap simulation", - "type": "object", - "required": [ - "simulation" - ], - "properties": { - "simulation": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a reverse swap simulation", - "type": "object", - "required": [ - "reverse_simulation" - ], - "properties": { - "reverse_simulation": { - "type": "object", - "required": [ - "ask_asset" - ], - "properties": { - "ask_asset": { - "$ref": "#/definitions/Asset" - }, - "offer_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the cumulative prices", - "type": "object", - "required": [ - "cumulative_prices" - ], - "properties": { - "cumulative_prices": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns current D invariant", - "type": "object", - "required": [ - "compute_d" - ], - "properties": { - "compute_d": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query LP token virtual price", - "type": "object", - "required": [ - "lp_price" - ], - "properties": { - "lp_price": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance of the specified asset that was in the pool just preceding the moment of the specified block height creation.", - "type": "object", - "required": [ - "asset_balance_at" - ], - "properties": { - "asset_balance_at": { - "type": "object", - "required": [ - "asset_info", - "block_height" - ], - "properties": { - "asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "block_height": { - "$ref": "#/definitions/Uint64" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query price from observations", - "type": "object", - "required": [ - "observe" - ], - "properties": { - "observe": { - "type": "object", - "required": [ - "seconds_ago" - ], - "properties": { - "seconds_ago": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of shares received for the given amount of assets", - "type": "object", - "required": [ - "simulate_provide" - ], - "properties": { - "simulate_provide": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "slippage_tolerance": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of assets received for the given amount of LP tokens", - "type": "object", - "required": [ - "simulate_withdraw" - ], - "properties": { - "simulate_withdraw": { - "type": "object", - "required": [ - "lp_amount" - ], - "properties": { - "lp_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } - }, - "migrate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "description": "This structure describes a migration message. We currently take no arguments for migrations.", - "type": "object", - "additionalProperties": false - }, - "sudo": null, - "responses": { - "asset_balance_at": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_Uint128", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "compute_d": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Decimal256", - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal256(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 115792089237316195423570985008687907853269984665640564039457.584007913129639935 (which is (2^256 - 1) / 10^18)", - "type": "string" - }, - "config": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This struct is used to return a query result with the general contract configuration.", - "type": "object", - "required": [ - "block_time_last", - "factory_addr", - "owner" - ], - "properties": { - "block_time_last": { - "description": "Last timestamp when the cumulative prices in the pool were updated", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "factory_addr": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "owner": { - "description": "The contract owner", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "params": { - "description": "The pool's parameters", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "tracker_addr": { - "description": "Tracker contract address", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } - }, - "cumulative_prices": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CumulativePricesResponse", - "description": "This structure is used to return a cumulative prices query response.", - "type": "object", - "required": [ - "assets", - "cumulative_prices", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool to query", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "cumulative_prices": { - "description": "The vector contains cumulative prices for each pair of assets in the pool", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/Uint128" - } - ], - "maxItems": 3, - "minItems": 3 - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "lp_price": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Decimal256", - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal256(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 115792089237316195423570985008687907853269984665640564039457.584007913129639935 (which is (2^256 - 1) / 10^18)", - "type": "string" - }, - "observe": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OracleObservation", - "type": "object", - "required": [ - "price", - "timestamp" - ], - "properties": { - "price": { - "$ref": "#/definitions/Decimal" - }, - "timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - } - } - }, - "pair": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PairInfo", - "description": "This structure stores the main parameters for an Astroport pair", - "type": "object", - "required": [ - "asset_infos", - "contract_addr", - "liquidity_token", - "pair_type" - ], - "properties": { - "asset_infos": { - "description": "Asset information for the assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "contract_addr": { - "description": "Pair contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "liquidity_token": { - "description": "Pair LP token denom", - "type": "string" - }, - "pair_type": { - "description": "The pool type (xyk, stableswap etc) available in [`PairType`]", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } - }, - "pool": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PoolResponse", - "description": "This struct is used to return a query result with the total amount of LP tokens and assets in a specific pool.", - "type": "object", - "required": [ - "assets", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool together with asset amounts", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "reverse_simulation": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReverseSimulationResponse", - "description": "This structure holds the parameters that are returned from a reverse swap simulation response.", - "type": "object", - "required": [ - "commission_amount", - "offer_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "offer_amount": { - "description": "The amount of offer assets returned by the reverse swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "share": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "simulate_provide": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "simulate_withdraw": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "simulation": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SimulationResponse", - "description": "This structure holds the parameters that are returned from a swap simulation response", - "type": "object", - "required": [ - "commission_amount", - "return_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "return_amount": { - "description": "The amount of ask assets returned by the swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - } - } -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/execute.json b/schemas/astroport-pair-concentrated-sale-tax/raw/execute.json deleted file mode 100644 index 3a6ac6f12..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/execute.json +++ /dev/null @@ -1,383 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Receives a message of type [`Cw20ReceiveMsg`]", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "ProvideLiquidity allows someone to provide liquidity in the pool", - "type": "object", - "required": [ - "provide_liquidity" - ], - "properties": { - "provide_liquidity": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets available in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "auto_stake": { - "description": "Determines whether the LP tokens minted for the user is auto_staked in the Incentives contract", - "type": [ - "boolean", - "null" - ] - }, - "min_lp_to_receive": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "receiver": { - "description": "The receiver of LP tokens", - "type": [ - "string", - "null" - ] - }, - "slippage_tolerance": { - "description": "The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "WithdrawLiquidity allows someone to withdraw liquidity from the pool", - "type": "object", - "required": [ - "withdraw_liquidity" - ], - "properties": { - "withdraw_liquidity": { - "type": "object", - "properties": { - "assets": { - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "min_assets_to_receive": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Asset" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap performs a swap in the pool", - "type": "object", - "required": [ - "swap" - ], - "properties": { - "swap": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "belief_price": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - }, - "to": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Update the pair configuration", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "required": [ - "params" - ], - "properties": { - "params": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "ProposeNewOwner creates a proposal to change contract ownership. The validity period for the proposal is set in the `expires_in` variable.", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The date after which this proposal expires", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "Newly proposed contract owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "DropOwnershipProposal removes the existing offer to change contract ownership.", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Used to claim contract ownership.", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom execute endpoints for extended pool implementations", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "$ref": "#/definitions/Empty" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Empty": { - "description": "An empty struct that serves as a placeholder in different places, such as contracts that don't set a custom message.\n\nIt is designed to be expressable in correct JSON and JSON Schema but contains no meaningful data. Previously we used enums without cases, but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)", - "type": "object" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/instantiate.json b/schemas/astroport-pair-concentrated-sale-tax/raw/instantiate.json deleted file mode 100644 index 00ccada94..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/instantiate.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "asset_infos", - "factory_addr", - "pair_type", - "token_code_id" - ], - "properties": { - "asset_infos": { - "description": "Information about assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "factory_addr": { - "description": "The factory contract address", - "type": "string" - }, - "init_params": { - "description": "Optional binary serialised parameters for custom pool types", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "pair_type": { - "description": "The pair type", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - }, - "token_code_id": { - "description": "The token contract code ID used for the tokens in the pool", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/migrate.json b/schemas/astroport-pair-concentrated-sale-tax/raw/migrate.json deleted file mode 100644 index 1b9dcecf9..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/migrate.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "description": "This structure describes a migration message. We currently take no arguments for migrations.", - "type": "object", - "additionalProperties": false -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/query.json b/schemas/astroport-pair-concentrated-sale-tax/raw/query.json deleted file mode 100644 index ea222d022..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/query.json +++ /dev/null @@ -1,378 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns information about a pair", - "type": "object", - "required": [ - "pair" - ], - "properties": { - "pair": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a pool", - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns contract configuration", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the share of the pool in a vector that contains objects of type [`Asset`].", - "type": "object", - "required": [ - "share" - ], - "properties": { - "share": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a swap simulation", - "type": "object", - "required": [ - "simulation" - ], - "properties": { - "simulation": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a reverse swap simulation", - "type": "object", - "required": [ - "reverse_simulation" - ], - "properties": { - "reverse_simulation": { - "type": "object", - "required": [ - "ask_asset" - ], - "properties": { - "ask_asset": { - "$ref": "#/definitions/Asset" - }, - "offer_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the cumulative prices", - "type": "object", - "required": [ - "cumulative_prices" - ], - "properties": { - "cumulative_prices": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns current D invariant", - "type": "object", - "required": [ - "compute_d" - ], - "properties": { - "compute_d": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query LP token virtual price", - "type": "object", - "required": [ - "lp_price" - ], - "properties": { - "lp_price": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance of the specified asset that was in the pool just preceding the moment of the specified block height creation.", - "type": "object", - "required": [ - "asset_balance_at" - ], - "properties": { - "asset_balance_at": { - "type": "object", - "required": [ - "asset_info", - "block_height" - ], - "properties": { - "asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "block_height": { - "$ref": "#/definitions/Uint64" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query price from observations", - "type": "object", - "required": [ - "observe" - ], - "properties": { - "observe": { - "type": "object", - "required": [ - "seconds_ago" - ], - "properties": { - "seconds_ago": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of shares received for the given amount of assets", - "type": "object", - "required": [ - "simulate_provide" - ], - "properties": { - "simulate_provide": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "slippage_tolerance": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of assets received for the given amount of LP tokens", - "type": "object", - "required": [ - "simulate_withdraw" - ], - "properties": { - "simulate_withdraw": { - "type": "object", - "required": [ - "lp_amount" - ], - "properties": { - "lp_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_asset_balance_at.json b/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_asset_balance_at.json deleted file mode 100644 index 2eaf6e96f..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_asset_balance_at.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_Uint128", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_compute_d.json b/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_compute_d.json deleted file mode 100644 index def41169f..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_compute_d.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Decimal256", - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal256(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 115792089237316195423570985008687907853269984665640564039457.584007913129639935 (which is (2^256 - 1) / 10^18)", - "type": "string" -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_config.json b/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_config.json deleted file mode 100644 index 953b0adc7..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_config.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This struct is used to return a query result with the general contract configuration.", - "type": "object", - "required": [ - "block_time_last", - "factory_addr", - "owner" - ], - "properties": { - "block_time_last": { - "description": "Last timestamp when the cumulative prices in the pool were updated", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "factory_addr": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "owner": { - "description": "The contract owner", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "params": { - "description": "The pool's parameters", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "tracker_addr": { - "description": "Tracker contract address", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_cumulative_prices.json b/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_cumulative_prices.json deleted file mode 100644 index 695a3121f..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_cumulative_prices.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CumulativePricesResponse", - "description": "This structure is used to return a cumulative prices query response.", - "type": "object", - "required": [ - "assets", - "cumulative_prices", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool to query", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "cumulative_prices": { - "description": "The vector contains cumulative prices for each pair of assets in the pool", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/Uint128" - } - ], - "maxItems": 3, - "minItems": 3 - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_lp_price.json b/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_lp_price.json deleted file mode 100644 index def41169f..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_lp_price.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Decimal256", - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal256(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 115792089237316195423570985008687907853269984665640564039457.584007913129639935 (which is (2^256 - 1) / 10^18)", - "type": "string" -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_observe.json b/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_observe.json deleted file mode 100644 index a8c389cb0..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_observe.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OracleObservation", - "type": "object", - "required": [ - "price", - "timestamp" - ], - "properties": { - "price": { - "$ref": "#/definitions/Decimal" - }, - "timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_pair.json b/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_pair.json deleted file mode 100644 index 16721f81d..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_pair.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PairInfo", - "description": "This structure stores the main parameters for an Astroport pair", - "type": "object", - "required": [ - "asset_infos", - "contract_addr", - "liquidity_token", - "pair_type" - ], - "properties": { - "asset_infos": { - "description": "Asset information for the assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "contract_addr": { - "description": "Pair contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "liquidity_token": { - "description": "Pair LP token denom", - "type": "string" - }, - "pair_type": { - "description": "The pool type (xyk, stableswap etc) available in [`PairType`]", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_pool.json b/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_pool.json deleted file mode 100644 index 693cad0e0..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_pool.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PoolResponse", - "description": "This struct is used to return a query result with the total amount of LP tokens and assets in a specific pool.", - "type": "object", - "required": [ - "assets", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool together with asset amounts", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_reverse_simulation.json b/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_reverse_simulation.json deleted file mode 100644 index ca711e182..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_reverse_simulation.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReverseSimulationResponse", - "description": "This structure holds the parameters that are returned from a reverse swap simulation response.", - "type": "object", - "required": [ - "commission_amount", - "offer_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "offer_amount": { - "description": "The amount of offer assets returned by the reverse swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_share.json b/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_share.json deleted file mode 100644 index 8285d4916..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_share.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_simulate_provide.json b/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_simulate_provide.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_simulate_provide.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_simulate_withdraw.json b/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_simulate_withdraw.json deleted file mode 100644 index 8285d4916..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_simulate_withdraw.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_simulation.json b/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_simulation.json deleted file mode 100644 index 4bc828d4a..000000000 --- a/schemas/astroport-pair-concentrated-sale-tax/raw/response_to_simulation.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SimulationResponse", - "description": "This structure holds the parameters that are returned from a swap simulation response", - "type": "object", - "required": [ - "commission_amount", - "return_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "return_amount": { - "description": "The amount of ask assets returned by the swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated/astroport-pair-concentrated.json b/schemas/astroport-pair-concentrated/astroport-pair-concentrated.json deleted file mode 100644 index 78f9d442e..000000000 --- a/schemas/astroport-pair-concentrated/astroport-pair-concentrated.json +++ /dev/null @@ -1,1730 +0,0 @@ -{ - "contract_name": "astroport-pair-concentrated", - "contract_version": "4.2.2", - "idl_version": "1.0.0", - "instantiate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "asset_infos", - "factory_addr", - "pair_type", - "token_code_id" - ], - "properties": { - "asset_infos": { - "description": "Information about assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "factory_addr": { - "description": "The factory contract address", - "type": "string" - }, - "init_params": { - "description": "Optional binary serialised parameters for custom pool types", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "pair_type": { - "description": "The pair type", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - }, - "token_code_id": { - "description": "The token contract code ID used for the tokens in the pool", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } - }, - "execute": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Receives a message of type [`Cw20ReceiveMsg`]", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "ProvideLiquidity allows someone to provide liquidity in the pool", - "type": "object", - "required": [ - "provide_liquidity" - ], - "properties": { - "provide_liquidity": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets available in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "auto_stake": { - "description": "Determines whether the LP tokens minted for the user is auto_staked in the Incentives contract", - "type": [ - "boolean", - "null" - ] - }, - "min_lp_to_receive": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "receiver": { - "description": "The receiver of LP tokens", - "type": [ - "string", - "null" - ] - }, - "slippage_tolerance": { - "description": "The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "WithdrawLiquidity allows someone to withdraw liquidity from the pool", - "type": "object", - "required": [ - "withdraw_liquidity" - ], - "properties": { - "withdraw_liquidity": { - "type": "object", - "properties": { - "assets": { - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "min_assets_to_receive": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Asset" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap performs a swap in the pool", - "type": "object", - "required": [ - "swap" - ], - "properties": { - "swap": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "belief_price": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - }, - "to": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Update the pair configuration", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "required": [ - "params" - ], - "properties": { - "params": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "ProposeNewOwner creates a proposal to change contract ownership. The validity period for the proposal is set in the `expires_in` variable.", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The date after which this proposal expires", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "Newly proposed contract owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "DropOwnershipProposal removes the existing offer to change contract ownership.", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Used to claim contract ownership.", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom execute endpoints for extended pool implementations", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "$ref": "#/definitions/Empty" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Empty": { - "description": "An empty struct that serves as a placeholder in different places, such as contracts that don't set a custom message.\n\nIt is designed to be expressable in correct JSON and JSON Schema but contains no meaningful data. Previously we used enums without cases, but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)", - "type": "object" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "query": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns information about a pair", - "type": "object", - "required": [ - "pair" - ], - "properties": { - "pair": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a pool", - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns contract configuration", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the share of the pool in a vector that contains objects of type [`Asset`].", - "type": "object", - "required": [ - "share" - ], - "properties": { - "share": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a swap simulation", - "type": "object", - "required": [ - "simulation" - ], - "properties": { - "simulation": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a reverse swap simulation", - "type": "object", - "required": [ - "reverse_simulation" - ], - "properties": { - "reverse_simulation": { - "type": "object", - "required": [ - "ask_asset" - ], - "properties": { - "ask_asset": { - "$ref": "#/definitions/Asset" - }, - "offer_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the cumulative prices", - "type": "object", - "required": [ - "cumulative_prices" - ], - "properties": { - "cumulative_prices": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns current D invariant", - "type": "object", - "required": [ - "compute_d" - ], - "properties": { - "compute_d": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query LP token virtual price", - "type": "object", - "required": [ - "lp_price" - ], - "properties": { - "lp_price": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance of the specified asset that was in the pool just preceding the moment of the specified block height creation.", - "type": "object", - "required": [ - "asset_balance_at" - ], - "properties": { - "asset_balance_at": { - "type": "object", - "required": [ - "asset_info", - "block_height" - ], - "properties": { - "asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "block_height": { - "$ref": "#/definitions/Uint64" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query price from observations", - "type": "object", - "required": [ - "observe" - ], - "properties": { - "observe": { - "type": "object", - "required": [ - "seconds_ago" - ], - "properties": { - "seconds_ago": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of shares received for the given amount of assets", - "type": "object", - "required": [ - "simulate_provide" - ], - "properties": { - "simulate_provide": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "slippage_tolerance": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of assets received for the given amount of LP tokens", - "type": "object", - "required": [ - "simulate_withdraw" - ], - "properties": { - "simulate_withdraw": { - "type": "object", - "required": [ - "lp_amount" - ], - "properties": { - "lp_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } - }, - "migrate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "description": "This structure describes a migration message. We currently take no arguments for migrations.", - "type": "object", - "additionalProperties": false - }, - "sudo": null, - "responses": { - "asset_balance_at": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_Uint128", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "compute_d": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Decimal256", - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal256(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 115792089237316195423570985008687907853269984665640564039457.584007913129639935 (which is (2^256 - 1) / 10^18)", - "type": "string" - }, - "config": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This struct is used to return a query result with the general contract configuration.", - "type": "object", - "required": [ - "block_time_last", - "factory_addr", - "owner" - ], - "properties": { - "block_time_last": { - "description": "Last timestamp when the cumulative prices in the pool were updated", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "factory_addr": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "owner": { - "description": "The contract owner", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "params": { - "description": "The pool's parameters", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "tracker_addr": { - "description": "Tracker contract address", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } - }, - "cumulative_prices": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CumulativePricesResponse", - "description": "This structure is used to return a cumulative prices query response.", - "type": "object", - "required": [ - "assets", - "cumulative_prices", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool to query", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "cumulative_prices": { - "description": "The vector contains cumulative prices for each pair of assets in the pool", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/Uint128" - } - ], - "maxItems": 3, - "minItems": 3 - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "lp_price": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Decimal256", - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal256(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 115792089237316195423570985008687907853269984665640564039457.584007913129639935 (which is (2^256 - 1) / 10^18)", - "type": "string" - }, - "observe": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OracleObservation", - "type": "object", - "required": [ - "price", - "timestamp" - ], - "properties": { - "price": { - "$ref": "#/definitions/Decimal" - }, - "timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - } - } - }, - "pair": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PairInfo", - "description": "This structure stores the main parameters for an Astroport pair", - "type": "object", - "required": [ - "asset_infos", - "contract_addr", - "liquidity_token", - "pair_type" - ], - "properties": { - "asset_infos": { - "description": "Asset information for the assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "contract_addr": { - "description": "Pair contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "liquidity_token": { - "description": "Pair LP token denom", - "type": "string" - }, - "pair_type": { - "description": "The pool type (xyk, stableswap etc) available in [`PairType`]", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } - }, - "pool": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PoolResponse", - "description": "This struct is used to return a query result with the total amount of LP tokens and assets in a specific pool.", - "type": "object", - "required": [ - "assets", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool together with asset amounts", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "reverse_simulation": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReverseSimulationResponse", - "description": "This structure holds the parameters that are returned from a reverse swap simulation response.", - "type": "object", - "required": [ - "commission_amount", - "offer_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "offer_amount": { - "description": "The amount of offer assets returned by the reverse swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "share": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "simulate_provide": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "simulate_withdraw": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "simulation": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SimulationResponse", - "description": "This structure holds the parameters that are returned from a swap simulation response", - "type": "object", - "required": [ - "commission_amount", - "return_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "return_amount": { - "description": "The amount of ask assets returned by the swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - } - } -} diff --git a/schemas/astroport-pair-concentrated/raw/execute.json b/schemas/astroport-pair-concentrated/raw/execute.json deleted file mode 100644 index 3a6ac6f12..000000000 --- a/schemas/astroport-pair-concentrated/raw/execute.json +++ /dev/null @@ -1,383 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Receives a message of type [`Cw20ReceiveMsg`]", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "ProvideLiquidity allows someone to provide liquidity in the pool", - "type": "object", - "required": [ - "provide_liquidity" - ], - "properties": { - "provide_liquidity": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets available in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "auto_stake": { - "description": "Determines whether the LP tokens minted for the user is auto_staked in the Incentives contract", - "type": [ - "boolean", - "null" - ] - }, - "min_lp_to_receive": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "receiver": { - "description": "The receiver of LP tokens", - "type": [ - "string", - "null" - ] - }, - "slippage_tolerance": { - "description": "The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "WithdrawLiquidity allows someone to withdraw liquidity from the pool", - "type": "object", - "required": [ - "withdraw_liquidity" - ], - "properties": { - "withdraw_liquidity": { - "type": "object", - "properties": { - "assets": { - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "min_assets_to_receive": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Asset" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap performs a swap in the pool", - "type": "object", - "required": [ - "swap" - ], - "properties": { - "swap": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "belief_price": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - }, - "to": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Update the pair configuration", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "required": [ - "params" - ], - "properties": { - "params": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "ProposeNewOwner creates a proposal to change contract ownership. The validity period for the proposal is set in the `expires_in` variable.", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The date after which this proposal expires", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "Newly proposed contract owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "DropOwnershipProposal removes the existing offer to change contract ownership.", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Used to claim contract ownership.", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom execute endpoints for extended pool implementations", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "$ref": "#/definitions/Empty" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Empty": { - "description": "An empty struct that serves as a placeholder in different places, such as contracts that don't set a custom message.\n\nIt is designed to be expressable in correct JSON and JSON Schema but contains no meaningful data. Previously we used enums without cases, but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)", - "type": "object" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated/raw/instantiate.json b/schemas/astroport-pair-concentrated/raw/instantiate.json deleted file mode 100644 index 00ccada94..000000000 --- a/schemas/astroport-pair-concentrated/raw/instantiate.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "asset_infos", - "factory_addr", - "pair_type", - "token_code_id" - ], - "properties": { - "asset_infos": { - "description": "Information about assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "factory_addr": { - "description": "The factory contract address", - "type": "string" - }, - "init_params": { - "description": "Optional binary serialised parameters for custom pool types", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "pair_type": { - "description": "The pair type", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - }, - "token_code_id": { - "description": "The token contract code ID used for the tokens in the pool", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-pair-concentrated/raw/migrate.json b/schemas/astroport-pair-concentrated/raw/migrate.json deleted file mode 100644 index 1b9dcecf9..000000000 --- a/schemas/astroport-pair-concentrated/raw/migrate.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "description": "This structure describes a migration message. We currently take no arguments for migrations.", - "type": "object", - "additionalProperties": false -} diff --git a/schemas/astroport-pair-concentrated/raw/query.json b/schemas/astroport-pair-concentrated/raw/query.json deleted file mode 100644 index ea222d022..000000000 --- a/schemas/astroport-pair-concentrated/raw/query.json +++ /dev/null @@ -1,378 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns information about a pair", - "type": "object", - "required": [ - "pair" - ], - "properties": { - "pair": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a pool", - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns contract configuration", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the share of the pool in a vector that contains objects of type [`Asset`].", - "type": "object", - "required": [ - "share" - ], - "properties": { - "share": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a swap simulation", - "type": "object", - "required": [ - "simulation" - ], - "properties": { - "simulation": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a reverse swap simulation", - "type": "object", - "required": [ - "reverse_simulation" - ], - "properties": { - "reverse_simulation": { - "type": "object", - "required": [ - "ask_asset" - ], - "properties": { - "ask_asset": { - "$ref": "#/definitions/Asset" - }, - "offer_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the cumulative prices", - "type": "object", - "required": [ - "cumulative_prices" - ], - "properties": { - "cumulative_prices": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns current D invariant", - "type": "object", - "required": [ - "compute_d" - ], - "properties": { - "compute_d": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query LP token virtual price", - "type": "object", - "required": [ - "lp_price" - ], - "properties": { - "lp_price": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance of the specified asset that was in the pool just preceding the moment of the specified block height creation.", - "type": "object", - "required": [ - "asset_balance_at" - ], - "properties": { - "asset_balance_at": { - "type": "object", - "required": [ - "asset_info", - "block_height" - ], - "properties": { - "asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "block_height": { - "$ref": "#/definitions/Uint64" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query price from observations", - "type": "object", - "required": [ - "observe" - ], - "properties": { - "observe": { - "type": "object", - "required": [ - "seconds_ago" - ], - "properties": { - "seconds_ago": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of shares received for the given amount of assets", - "type": "object", - "required": [ - "simulate_provide" - ], - "properties": { - "simulate_provide": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "slippage_tolerance": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of assets received for the given amount of LP tokens", - "type": "object", - "required": [ - "simulate_withdraw" - ], - "properties": { - "simulate_withdraw": { - "type": "object", - "required": [ - "lp_amount" - ], - "properties": { - "lp_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated/raw/response_to_asset_balance_at.json b/schemas/astroport-pair-concentrated/raw/response_to_asset_balance_at.json deleted file mode 100644 index 2eaf6e96f..000000000 --- a/schemas/astroport-pair-concentrated/raw/response_to_asset_balance_at.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_Uint128", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated/raw/response_to_compute_d.json b/schemas/astroport-pair-concentrated/raw/response_to_compute_d.json deleted file mode 100644 index def41169f..000000000 --- a/schemas/astroport-pair-concentrated/raw/response_to_compute_d.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Decimal256", - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal256(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 115792089237316195423570985008687907853269984665640564039457.584007913129639935 (which is (2^256 - 1) / 10^18)", - "type": "string" -} diff --git a/schemas/astroport-pair-concentrated/raw/response_to_config.json b/schemas/astroport-pair-concentrated/raw/response_to_config.json deleted file mode 100644 index 953b0adc7..000000000 --- a/schemas/astroport-pair-concentrated/raw/response_to_config.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This struct is used to return a query result with the general contract configuration.", - "type": "object", - "required": [ - "block_time_last", - "factory_addr", - "owner" - ], - "properties": { - "block_time_last": { - "description": "Last timestamp when the cumulative prices in the pool were updated", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "factory_addr": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "owner": { - "description": "The contract owner", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "params": { - "description": "The pool's parameters", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "tracker_addr": { - "description": "Tracker contract address", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated/raw/response_to_cumulative_prices.json b/schemas/astroport-pair-concentrated/raw/response_to_cumulative_prices.json deleted file mode 100644 index 695a3121f..000000000 --- a/schemas/astroport-pair-concentrated/raw/response_to_cumulative_prices.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CumulativePricesResponse", - "description": "This structure is used to return a cumulative prices query response.", - "type": "object", - "required": [ - "assets", - "cumulative_prices", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool to query", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "cumulative_prices": { - "description": "The vector contains cumulative prices for each pair of assets in the pool", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/Uint128" - } - ], - "maxItems": 3, - "minItems": 3 - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated/raw/response_to_lp_price.json b/schemas/astroport-pair-concentrated/raw/response_to_lp_price.json deleted file mode 100644 index def41169f..000000000 --- a/schemas/astroport-pair-concentrated/raw/response_to_lp_price.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Decimal256", - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal256(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 115792089237316195423570985008687907853269984665640564039457.584007913129639935 (which is (2^256 - 1) / 10^18)", - "type": "string" -} diff --git a/schemas/astroport-pair-concentrated/raw/response_to_observe.json b/schemas/astroport-pair-concentrated/raw/response_to_observe.json deleted file mode 100644 index a8c389cb0..000000000 --- a/schemas/astroport-pair-concentrated/raw/response_to_observe.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OracleObservation", - "type": "object", - "required": [ - "price", - "timestamp" - ], - "properties": { - "price": { - "$ref": "#/definitions/Decimal" - }, - "timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated/raw/response_to_pair.json b/schemas/astroport-pair-concentrated/raw/response_to_pair.json deleted file mode 100644 index 16721f81d..000000000 --- a/schemas/astroport-pair-concentrated/raw/response_to_pair.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PairInfo", - "description": "This structure stores the main parameters for an Astroport pair", - "type": "object", - "required": [ - "asset_infos", - "contract_addr", - "liquidity_token", - "pair_type" - ], - "properties": { - "asset_infos": { - "description": "Asset information for the assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "contract_addr": { - "description": "Pair contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "liquidity_token": { - "description": "Pair LP token denom", - "type": "string" - }, - "pair_type": { - "description": "The pool type (xyk, stableswap etc) available in [`PairType`]", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-pair-concentrated/raw/response_to_pool.json b/schemas/astroport-pair-concentrated/raw/response_to_pool.json deleted file mode 100644 index 693cad0e0..000000000 --- a/schemas/astroport-pair-concentrated/raw/response_to_pool.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PoolResponse", - "description": "This struct is used to return a query result with the total amount of LP tokens and assets in a specific pool.", - "type": "object", - "required": [ - "assets", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool together with asset amounts", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated/raw/response_to_reverse_simulation.json b/schemas/astroport-pair-concentrated/raw/response_to_reverse_simulation.json deleted file mode 100644 index ca711e182..000000000 --- a/schemas/astroport-pair-concentrated/raw/response_to_reverse_simulation.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReverseSimulationResponse", - "description": "This structure holds the parameters that are returned from a reverse swap simulation response.", - "type": "object", - "required": [ - "commission_amount", - "offer_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "offer_amount": { - "description": "The amount of offer assets returned by the reverse swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated/raw/response_to_share.json b/schemas/astroport-pair-concentrated/raw/response_to_share.json deleted file mode 100644 index 8285d4916..000000000 --- a/schemas/astroport-pair-concentrated/raw/response_to_share.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated/raw/response_to_simulate_provide.json b/schemas/astroport-pair-concentrated/raw/response_to_simulate_provide.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-pair-concentrated/raw/response_to_simulate_provide.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-pair-concentrated/raw/response_to_simulate_withdraw.json b/schemas/astroport-pair-concentrated/raw/response_to_simulate_withdraw.json deleted file mode 100644 index 8285d4916..000000000 --- a/schemas/astroport-pair-concentrated/raw/response_to_simulate_withdraw.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-concentrated/raw/response_to_simulation.json b/schemas/astroport-pair-concentrated/raw/response_to_simulation.json deleted file mode 100644 index 4bc828d4a..000000000 --- a/schemas/astroport-pair-concentrated/raw/response_to_simulation.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SimulationResponse", - "description": "This structure holds the parameters that are returned from a swap simulation response", - "type": "object", - "required": [ - "commission_amount", - "return_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "return_amount": { - "description": "The amount of ask assets returned by the swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-converter/astroport-pair-converter.json b/schemas/astroport-pair-converter/astroport-pair-converter.json deleted file mode 100644 index 9723d2c10..000000000 --- a/schemas/astroport-pair-converter/astroport-pair-converter.json +++ /dev/null @@ -1,1428 +0,0 @@ -{ - "contract_name": "astroport-pair-converter", - "contract_version": "1.1.0", - "idl_version": "1.0.0", - "instantiate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "asset_infos", - "factory_addr", - "token_code_id" - ], - "properties": { - "asset_infos": { - "description": "Information about assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "factory_addr": { - "description": "The factory contract address", - "type": "string" - }, - "init_params": { - "description": "Optional binary serialised parameters for custom pool types", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "token_code_id": { - "description": "The token contract code ID used for the tokens in the pool", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } - }, - "execute": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Receives a message of type [`Cw20ReceiveMsg`]", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "ProvideLiquidity allows someone to provide liquidity in the pool", - "type": "object", - "required": [ - "provide_liquidity" - ], - "properties": { - "provide_liquidity": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets available in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "auto_stake": { - "description": "Determines whether the LP tokens minted for the user is auto_staked in the Generator contract", - "type": [ - "boolean", - "null" - ] - }, - "receiver": { - "description": "The receiver of LP tokens", - "type": [ - "string", - "null" - ] - }, - "slippage_tolerance": { - "description": "The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap performs a swap in the pool", - "type": "object", - "required": [ - "swap" - ], - "properties": { - "swap": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "belief_price": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - }, - "to": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Update the pair configuration", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "required": [ - "params" - ], - "properties": { - "params": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "ProposeNewOwner creates a proposal to change contract ownership. The validity period for the proposal is set in the `expires_in` variable.", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The date after which this proposal expires", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "Newly proposed contract owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "DropOwnershipProposal removes the existing offer to change contract ownership.", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Used to claim contract ownership.", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "query": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns information about a pair in an object of type [`super::asset::PairInfo`].", - "type": "object", - "required": [ - "pair" - ], - "properties": { - "pair": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a pool in an object of type [`PoolResponse`].", - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns contract configuration settings in a custom [`ConfigResponse`] structure.", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the share of the pool in a vector that contains objects of type [`Asset`].", - "type": "object", - "required": [ - "share" - ], - "properties": { - "share": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a swap simulation in a [`SimulationResponse`] object.", - "type": "object", - "required": [ - "simulation" - ], - "properties": { - "simulation": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about cumulative prices in a [`ReverseSimulationResponse`] object.", - "type": "object", - "required": [ - "reverse_simulation" - ], - "properties": { - "reverse_simulation": { - "type": "object", - "required": [ - "ask_asset" - ], - "properties": { - "ask_asset": { - "$ref": "#/definitions/Asset" - }, - "offer_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the cumulative prices in a [`CumulativePricesResponse`] object", - "type": "object", - "required": [ - "cumulative_prices" - ], - "properties": { - "cumulative_prices": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns current D invariant in as a [`u128`] value", - "type": "object", - "required": [ - "query_compute_d" - ], - "properties": { - "query_compute_d": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance of the specified asset that was in the pool just preceeding the moment of the specified block height creation.", - "type": "object", - "required": [ - "asset_balance_at" - ], - "properties": { - "asset_balance_at": { - "type": "object", - "required": [ - "asset_info", - "block_height" - ], - "properties": { - "asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "block_height": { - "$ref": "#/definitions/Uint64" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query price from observations", - "type": "object", - "required": [ - "observe" - ], - "properties": { - "observe": { - "type": "object", - "required": [ - "seconds_ago" - ], - "properties": { - "seconds_ago": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } - }, - "migrate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "description": "This structure describes a migration message. We currently take no arguments for migrations.", - "type": "object", - "additionalProperties": false - }, - "sudo": null, - "responses": { - "asset_balance_at": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_Uint128", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "config": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This struct is used to return a query result with the general contract configuration.", - "type": "object", - "required": [ - "block_time_last", - "factory_addr", - "owner" - ], - "properties": { - "block_time_last": { - "description": "Last timestamp when the cumulative prices in the pool were updated", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "factory_addr": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "owner": { - "description": "The contract owner", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "params": { - "description": "The pool's parameters", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } - }, - "cumulative_prices": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CumulativePricesResponse", - "description": "This structure is used to return a cumulative prices query response.", - "type": "object", - "required": [ - "assets", - "cumulative_prices", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool to query", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "cumulative_prices": { - "description": "The vector contains cumulative prices for each pair of assets in the pool", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/Uint128" - } - ], - "maxItems": 3, - "minItems": 3 - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "observe": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OracleObservation", - "type": "object", - "required": [ - "price", - "timestamp" - ], - "properties": { - "price": { - "$ref": "#/definitions/Decimal" - }, - "timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - } - } - }, - "pair": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PairInfo", - "description": "This structure stores the main parameters for an Astroport pair", - "type": "object", - "required": [ - "asset_infos", - "contract_addr", - "liquidity_token", - "pair_type" - ], - "properties": { - "asset_infos": { - "description": "Asset information for the assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "contract_addr": { - "description": "Pair contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "liquidity_token": { - "description": "Pair LP token address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "pair_type": { - "description": "The pool type (xyk, stableswap etc) available in [`PairType`]", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } - }, - "pool": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PoolResponse", - "description": "This struct is used to return a query result with the total amount of LP tokens and assets in a specific pool.", - "type": "object", - "required": [ - "assets", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool together with asset amounts", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "query_compute_d": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "reverse_simulation": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReverseSimulationResponse", - "description": "This structure holds the parameters that are returned from a reverse swap simulation response.", - "type": "object", - "required": [ - "commission_amount", - "offer_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "offer_amount": { - "description": "The amount of offer assets returned by the reverse swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "share": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "simulation": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SimulationResponse", - "description": "This structure holds the parameters that are returned from a swap simulation response", - "type": "object", - "required": [ - "commission_amount", - "return_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "return_amount": { - "description": "The amount of ask assets returned by the swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - } - } -} diff --git a/schemas/astroport-pair-converter/raw/execute.json b/schemas/astroport-pair-converter/raw/execute.json deleted file mode 100644 index 179a53617..000000000 --- a/schemas/astroport-pair-converter/raw/execute.json +++ /dev/null @@ -1,324 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Receives a message of type [`Cw20ReceiveMsg`]", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "ProvideLiquidity allows someone to provide liquidity in the pool", - "type": "object", - "required": [ - "provide_liquidity" - ], - "properties": { - "provide_liquidity": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets available in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "auto_stake": { - "description": "Determines whether the LP tokens minted for the user is auto_staked in the Generator contract", - "type": [ - "boolean", - "null" - ] - }, - "receiver": { - "description": "The receiver of LP tokens", - "type": [ - "string", - "null" - ] - }, - "slippage_tolerance": { - "description": "The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap performs a swap in the pool", - "type": "object", - "required": [ - "swap" - ], - "properties": { - "swap": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "belief_price": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - }, - "to": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Update the pair configuration", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "required": [ - "params" - ], - "properties": { - "params": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "ProposeNewOwner creates a proposal to change contract ownership. The validity period for the proposal is set in the `expires_in` variable.", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The date after which this proposal expires", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "Newly proposed contract owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "DropOwnershipProposal removes the existing offer to change contract ownership.", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Used to claim contract ownership.", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-converter/raw/instantiate.json b/schemas/astroport-pair-converter/raw/instantiate.json deleted file mode 100644 index 9d812253f..000000000 --- a/schemas/astroport-pair-converter/raw/instantiate.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "asset_infos", - "factory_addr", - "token_code_id" - ], - "properties": { - "asset_infos": { - "description": "Information about assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "factory_addr": { - "description": "The factory contract address", - "type": "string" - }, - "init_params": { - "description": "Optional binary serialised parameters for custom pool types", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "token_code_id": { - "description": "The token contract code ID used for the tokens in the pool", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-converter/raw/migrate.json b/schemas/astroport-pair-converter/raw/migrate.json deleted file mode 100644 index 1b9dcecf9..000000000 --- a/schemas/astroport-pair-converter/raw/migrate.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "description": "This structure describes a migration message. We currently take no arguments for migrations.", - "type": "object", - "additionalProperties": false -} diff --git a/schemas/astroport-pair-converter/raw/query.json b/schemas/astroport-pair-converter/raw/query.json deleted file mode 100644 index c63191060..000000000 --- a/schemas/astroport-pair-converter/raw/query.json +++ /dev/null @@ -1,303 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns information about a pair in an object of type [`super::asset::PairInfo`].", - "type": "object", - "required": [ - "pair" - ], - "properties": { - "pair": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a pool in an object of type [`PoolResponse`].", - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns contract configuration settings in a custom [`ConfigResponse`] structure.", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the share of the pool in a vector that contains objects of type [`Asset`].", - "type": "object", - "required": [ - "share" - ], - "properties": { - "share": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a swap simulation in a [`SimulationResponse`] object.", - "type": "object", - "required": [ - "simulation" - ], - "properties": { - "simulation": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about cumulative prices in a [`ReverseSimulationResponse`] object.", - "type": "object", - "required": [ - "reverse_simulation" - ], - "properties": { - "reverse_simulation": { - "type": "object", - "required": [ - "ask_asset" - ], - "properties": { - "ask_asset": { - "$ref": "#/definitions/Asset" - }, - "offer_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the cumulative prices in a [`CumulativePricesResponse`] object", - "type": "object", - "required": [ - "cumulative_prices" - ], - "properties": { - "cumulative_prices": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns current D invariant in as a [`u128`] value", - "type": "object", - "required": [ - "query_compute_d" - ], - "properties": { - "query_compute_d": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance of the specified asset that was in the pool just preceeding the moment of the specified block height creation.", - "type": "object", - "required": [ - "asset_balance_at" - ], - "properties": { - "asset_balance_at": { - "type": "object", - "required": [ - "asset_info", - "block_height" - ], - "properties": { - "asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "block_height": { - "$ref": "#/definitions/Uint64" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query price from observations", - "type": "object", - "required": [ - "observe" - ], - "properties": { - "observe": { - "type": "object", - "required": [ - "seconds_ago" - ], - "properties": { - "seconds_ago": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-converter/raw/response_to_asset_balance_at.json b/schemas/astroport-pair-converter/raw/response_to_asset_balance_at.json deleted file mode 100644 index 2eaf6e96f..000000000 --- a/schemas/astroport-pair-converter/raw/response_to_asset_balance_at.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_Uint128", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-converter/raw/response_to_config.json b/schemas/astroport-pair-converter/raw/response_to_config.json deleted file mode 100644 index ce805e9c4..000000000 --- a/schemas/astroport-pair-converter/raw/response_to_config.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This struct is used to return a query result with the general contract configuration.", - "type": "object", - "required": [ - "block_time_last", - "factory_addr", - "owner" - ], - "properties": { - "block_time_last": { - "description": "Last timestamp when the cumulative prices in the pool were updated", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "factory_addr": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "owner": { - "description": "The contract owner", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "params": { - "description": "The pool's parameters", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-converter/raw/response_to_cumulative_prices.json b/schemas/astroport-pair-converter/raw/response_to_cumulative_prices.json deleted file mode 100644 index 695a3121f..000000000 --- a/schemas/astroport-pair-converter/raw/response_to_cumulative_prices.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CumulativePricesResponse", - "description": "This structure is used to return a cumulative prices query response.", - "type": "object", - "required": [ - "assets", - "cumulative_prices", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool to query", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "cumulative_prices": { - "description": "The vector contains cumulative prices for each pair of assets in the pool", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/Uint128" - } - ], - "maxItems": 3, - "minItems": 3 - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-converter/raw/response_to_observe.json b/schemas/astroport-pair-converter/raw/response_to_observe.json deleted file mode 100644 index a8c389cb0..000000000 --- a/schemas/astroport-pair-converter/raw/response_to_observe.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OracleObservation", - "type": "object", - "required": [ - "price", - "timestamp" - ], - "properties": { - "price": { - "$ref": "#/definitions/Decimal" - }, - "timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-converter/raw/response_to_pair.json b/schemas/astroport-pair-converter/raw/response_to_pair.json deleted file mode 100644 index 837f3f8dc..000000000 --- a/schemas/astroport-pair-converter/raw/response_to_pair.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PairInfo", - "description": "This structure stores the main parameters for an Astroport pair", - "type": "object", - "required": [ - "asset_infos", - "contract_addr", - "liquidity_token", - "pair_type" - ], - "properties": { - "asset_infos": { - "description": "Asset information for the assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "contract_addr": { - "description": "Pair contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "liquidity_token": { - "description": "Pair LP token address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "pair_type": { - "description": "The pool type (xyk, stableswap etc) available in [`PairType`]", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-pair-converter/raw/response_to_pool.json b/schemas/astroport-pair-converter/raw/response_to_pool.json deleted file mode 100644 index 693cad0e0..000000000 --- a/schemas/astroport-pair-converter/raw/response_to_pool.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PoolResponse", - "description": "This struct is used to return a query result with the total amount of LP tokens and assets in a specific pool.", - "type": "object", - "required": [ - "assets", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool together with asset amounts", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-converter/raw/response_to_query_compute_d.json b/schemas/astroport-pair-converter/raw/response_to_query_compute_d.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-pair-converter/raw/response_to_query_compute_d.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-pair-converter/raw/response_to_reverse_simulation.json b/schemas/astroport-pair-converter/raw/response_to_reverse_simulation.json deleted file mode 100644 index ca711e182..000000000 --- a/schemas/astroport-pair-converter/raw/response_to_reverse_simulation.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReverseSimulationResponse", - "description": "This structure holds the parameters that are returned from a reverse swap simulation response.", - "type": "object", - "required": [ - "commission_amount", - "offer_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "offer_amount": { - "description": "The amount of offer assets returned by the reverse swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-converter/raw/response_to_share.json b/schemas/astroport-pair-converter/raw/response_to_share.json deleted file mode 100644 index 8285d4916..000000000 --- a/schemas/astroport-pair-converter/raw/response_to_share.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-converter/raw/response_to_simulation.json b/schemas/astroport-pair-converter/raw/response_to_simulation.json deleted file mode 100644 index 4bc828d4a..000000000 --- a/schemas/astroport-pair-converter/raw/response_to_simulation.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SimulationResponse", - "description": "This structure holds the parameters that are returned from a swap simulation response", - "type": "object", - "required": [ - "commission_amount", - "return_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "return_amount": { - "description": "The amount of ask assets returned by the swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-stable/astroport-pair-stable.json b/schemas/astroport-pair-stable/astroport-pair-stable.json deleted file mode 100644 index aad48a65e..000000000 --- a/schemas/astroport-pair-stable/astroport-pair-stable.json +++ /dev/null @@ -1,1710 +0,0 @@ -{ - "contract_name": "astroport-pair-stable", - "contract_version": "4.2.0", - "idl_version": "1.0.0", - "instantiate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "asset_infos", - "factory_addr", - "pair_type", - "token_code_id" - ], - "properties": { - "asset_infos": { - "description": "Information about assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "factory_addr": { - "description": "The factory contract address", - "type": "string" - }, - "init_params": { - "description": "Optional binary serialised parameters for custom pool types", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "pair_type": { - "description": "The pair type", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - }, - "token_code_id": { - "description": "The token contract code ID used for the tokens in the pool", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } - }, - "execute": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Receives a message of type [`Cw20ReceiveMsg`]", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "ProvideLiquidity allows someone to provide liquidity in the pool", - "type": "object", - "required": [ - "provide_liquidity" - ], - "properties": { - "provide_liquidity": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets available in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "auto_stake": { - "description": "Determines whether the LP tokens minted for the user is auto_staked in the Incentives contract", - "type": [ - "boolean", - "null" - ] - }, - "min_lp_to_receive": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "receiver": { - "description": "The receiver of LP tokens", - "type": [ - "string", - "null" - ] - }, - "slippage_tolerance": { - "description": "The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "WithdrawLiquidity allows someone to withdraw liquidity from the pool", - "type": "object", - "required": [ - "withdraw_liquidity" - ], - "properties": { - "withdraw_liquidity": { - "type": "object", - "properties": { - "assets": { - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "min_assets_to_receive": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Asset" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap performs a swap in the pool", - "type": "object", - "required": [ - "swap" - ], - "properties": { - "swap": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "belief_price": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - }, - "to": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Update the pair configuration", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "required": [ - "params" - ], - "properties": { - "params": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "ProposeNewOwner creates a proposal to change contract ownership. The validity period for the proposal is set in the `expires_in` variable.", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The date after which this proposal expires", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "Newly proposed contract owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "DropOwnershipProposal removes the existing offer to change contract ownership.", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Used to claim contract ownership.", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom execute endpoints for extended pool implementations", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "$ref": "#/definitions/Empty" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Empty": { - "description": "An empty struct that serves as a placeholder in different places, such as contracts that don't set a custom message.\n\nIt is designed to be expressable in correct JSON and JSON Schema but contains no meaningful data. Previously we used enums without cases, but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)", - "type": "object" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "query": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns information about a pair in an object of type [`super::asset::PairInfo`].", - "type": "object", - "required": [ - "pair" - ], - "properties": { - "pair": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a pool in an object of type [`PoolResponse`].", - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns contract configuration settings in a custom [`ConfigResponse`] structure.", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the share of the pool in a vector that contains objects of type [`Asset`].", - "type": "object", - "required": [ - "share" - ], - "properties": { - "share": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a swap simulation in a [`SimulationResponse`] object.", - "type": "object", - "required": [ - "simulation" - ], - "properties": { - "simulation": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about cumulative prices in a [`ReverseSimulationResponse`] object.", - "type": "object", - "required": [ - "reverse_simulation" - ], - "properties": { - "reverse_simulation": { - "type": "object", - "required": [ - "ask_asset" - ], - "properties": { - "ask_asset": { - "$ref": "#/definitions/Asset" - }, - "offer_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the cumulative prices in a [`CumulativePricesResponse`] object", - "type": "object", - "required": [ - "cumulative_prices" - ], - "properties": { - "cumulative_prices": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns current D invariant in as a [`u128`] value", - "type": "object", - "required": [ - "query_compute_d" - ], - "properties": { - "query_compute_d": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance of the specified asset that was in the pool just preceeding the moment of the specified block height creation.", - "type": "object", - "required": [ - "asset_balance_at" - ], - "properties": { - "asset_balance_at": { - "type": "object", - "required": [ - "asset_info", - "block_height" - ], - "properties": { - "asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "block_height": { - "$ref": "#/definitions/Uint64" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query price from observations", - "type": "object", - "required": [ - "observe" - ], - "properties": { - "observe": { - "type": "object", - "required": [ - "seconds_ago" - ], - "properties": { - "seconds_ago": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of assets received for the given amount of LP tokens", - "type": "object", - "required": [ - "simulate_withdraw" - ], - "properties": { - "simulate_withdraw": { - "type": "object", - "required": [ - "lp_amount" - ], - "properties": { - "lp_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of shares received for the given amount of assets", - "type": "object", - "required": [ - "simulate_provide" - ], - "properties": { - "simulate_provide": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "slippage_tolerance": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } - }, - "migrate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "description": "This structure describes a migration message. We currently take no arguments for migrations.", - "type": "object", - "additionalProperties": false - }, - "sudo": null, - "responses": { - "asset_balance_at": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_Uint128", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "config": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This struct is used to return a query result with the general contract configuration.", - "type": "object", - "required": [ - "block_time_last", - "factory_addr", - "owner" - ], - "properties": { - "block_time_last": { - "description": "Last timestamp when the cumulative prices in the pool were updated", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "factory_addr": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "owner": { - "description": "The contract owner", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "params": { - "description": "The pool's parameters", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "tracker_addr": { - "description": "Tracker contract address", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } - }, - "cumulative_prices": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CumulativePricesResponse", - "description": "This structure is used to return a cumulative prices query response.", - "type": "object", - "required": [ - "assets", - "cumulative_prices", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool to query", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "cumulative_prices": { - "description": "The vector contains cumulative prices for each pair of assets in the pool", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/Uint128" - } - ], - "maxItems": 3, - "minItems": 3 - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "observe": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OracleObservation", - "type": "object", - "required": [ - "price", - "timestamp" - ], - "properties": { - "price": { - "$ref": "#/definitions/Decimal" - }, - "timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - } - } - }, - "pair": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PairInfo", - "description": "This structure stores the main parameters for an Astroport pair", - "type": "object", - "required": [ - "asset_infos", - "contract_addr", - "liquidity_token", - "pair_type" - ], - "properties": { - "asset_infos": { - "description": "Asset information for the assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "contract_addr": { - "description": "Pair contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "liquidity_token": { - "description": "Pair LP token denom", - "type": "string" - }, - "pair_type": { - "description": "The pool type (xyk, stableswap etc) available in [`PairType`]", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } - }, - "pool": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PoolResponse", - "description": "This struct is used to return a query result with the total amount of LP tokens and assets in a specific pool.", - "type": "object", - "required": [ - "assets", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool together with asset amounts", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "query_compute_d": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "reverse_simulation": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReverseSimulationResponse", - "description": "This structure holds the parameters that are returned from a reverse swap simulation response.", - "type": "object", - "required": [ - "commission_amount", - "offer_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "offer_amount": { - "description": "The amount of offer assets returned by the reverse swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "share": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "simulate_provide": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "simulate_withdraw": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "simulation": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SimulationResponse", - "description": "This structure holds the parameters that are returned from a swap simulation response", - "type": "object", - "required": [ - "commission_amount", - "return_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "return_amount": { - "description": "The amount of ask assets returned by the swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - } - } -} diff --git a/schemas/astroport-pair-stable/raw/execute.json b/schemas/astroport-pair-stable/raw/execute.json deleted file mode 100644 index 3a6ac6f12..000000000 --- a/schemas/astroport-pair-stable/raw/execute.json +++ /dev/null @@ -1,383 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Receives a message of type [`Cw20ReceiveMsg`]", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "ProvideLiquidity allows someone to provide liquidity in the pool", - "type": "object", - "required": [ - "provide_liquidity" - ], - "properties": { - "provide_liquidity": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets available in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "auto_stake": { - "description": "Determines whether the LP tokens minted for the user is auto_staked in the Incentives contract", - "type": [ - "boolean", - "null" - ] - }, - "min_lp_to_receive": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "receiver": { - "description": "The receiver of LP tokens", - "type": [ - "string", - "null" - ] - }, - "slippage_tolerance": { - "description": "The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "WithdrawLiquidity allows someone to withdraw liquidity from the pool", - "type": "object", - "required": [ - "withdraw_liquidity" - ], - "properties": { - "withdraw_liquidity": { - "type": "object", - "properties": { - "assets": { - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "min_assets_to_receive": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Asset" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap performs a swap in the pool", - "type": "object", - "required": [ - "swap" - ], - "properties": { - "swap": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "belief_price": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - }, - "to": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Update the pair configuration", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "required": [ - "params" - ], - "properties": { - "params": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "ProposeNewOwner creates a proposal to change contract ownership. The validity period for the proposal is set in the `expires_in` variable.", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The date after which this proposal expires", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "Newly proposed contract owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "DropOwnershipProposal removes the existing offer to change contract ownership.", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Used to claim contract ownership.", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom execute endpoints for extended pool implementations", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "$ref": "#/definitions/Empty" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Empty": { - "description": "An empty struct that serves as a placeholder in different places, such as contracts that don't set a custom message.\n\nIt is designed to be expressable in correct JSON and JSON Schema but contains no meaningful data. Previously we used enums without cases, but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)", - "type": "object" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-stable/raw/instantiate.json b/schemas/astroport-pair-stable/raw/instantiate.json deleted file mode 100644 index 00ccada94..000000000 --- a/schemas/astroport-pair-stable/raw/instantiate.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "asset_infos", - "factory_addr", - "pair_type", - "token_code_id" - ], - "properties": { - "asset_infos": { - "description": "Information about assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "factory_addr": { - "description": "The factory contract address", - "type": "string" - }, - "init_params": { - "description": "Optional binary serialised parameters for custom pool types", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "pair_type": { - "description": "The pair type", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - }, - "token_code_id": { - "description": "The token contract code ID used for the tokens in the pool", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-pair-stable/raw/migrate.json b/schemas/astroport-pair-stable/raw/migrate.json deleted file mode 100644 index 1b9dcecf9..000000000 --- a/schemas/astroport-pair-stable/raw/migrate.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "description": "This structure describes a migration message. We currently take no arguments for migrations.", - "type": "object", - "additionalProperties": false -} diff --git a/schemas/astroport-pair-stable/raw/query.json b/schemas/astroport-pair-stable/raw/query.json deleted file mode 100644 index b7da792ec..000000000 --- a/schemas/astroport-pair-stable/raw/query.json +++ /dev/null @@ -1,364 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns information about a pair in an object of type [`super::asset::PairInfo`].", - "type": "object", - "required": [ - "pair" - ], - "properties": { - "pair": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a pool in an object of type [`PoolResponse`].", - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns contract configuration settings in a custom [`ConfigResponse`] structure.", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the share of the pool in a vector that contains objects of type [`Asset`].", - "type": "object", - "required": [ - "share" - ], - "properties": { - "share": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a swap simulation in a [`SimulationResponse`] object.", - "type": "object", - "required": [ - "simulation" - ], - "properties": { - "simulation": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about cumulative prices in a [`ReverseSimulationResponse`] object.", - "type": "object", - "required": [ - "reverse_simulation" - ], - "properties": { - "reverse_simulation": { - "type": "object", - "required": [ - "ask_asset" - ], - "properties": { - "ask_asset": { - "$ref": "#/definitions/Asset" - }, - "offer_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the cumulative prices in a [`CumulativePricesResponse`] object", - "type": "object", - "required": [ - "cumulative_prices" - ], - "properties": { - "cumulative_prices": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns current D invariant in as a [`u128`] value", - "type": "object", - "required": [ - "query_compute_d" - ], - "properties": { - "query_compute_d": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance of the specified asset that was in the pool just preceeding the moment of the specified block height creation.", - "type": "object", - "required": [ - "asset_balance_at" - ], - "properties": { - "asset_balance_at": { - "type": "object", - "required": [ - "asset_info", - "block_height" - ], - "properties": { - "asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "block_height": { - "$ref": "#/definitions/Uint64" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query price from observations", - "type": "object", - "required": [ - "observe" - ], - "properties": { - "observe": { - "type": "object", - "required": [ - "seconds_ago" - ], - "properties": { - "seconds_ago": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of assets received for the given amount of LP tokens", - "type": "object", - "required": [ - "simulate_withdraw" - ], - "properties": { - "simulate_withdraw": { - "type": "object", - "required": [ - "lp_amount" - ], - "properties": { - "lp_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of shares received for the given amount of assets", - "type": "object", - "required": [ - "simulate_provide" - ], - "properties": { - "simulate_provide": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "slippage_tolerance": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-stable/raw/response_to_asset_balance_at.json b/schemas/astroport-pair-stable/raw/response_to_asset_balance_at.json deleted file mode 100644 index 2eaf6e96f..000000000 --- a/schemas/astroport-pair-stable/raw/response_to_asset_balance_at.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_Uint128", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-stable/raw/response_to_config.json b/schemas/astroport-pair-stable/raw/response_to_config.json deleted file mode 100644 index 953b0adc7..000000000 --- a/schemas/astroport-pair-stable/raw/response_to_config.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This struct is used to return a query result with the general contract configuration.", - "type": "object", - "required": [ - "block_time_last", - "factory_addr", - "owner" - ], - "properties": { - "block_time_last": { - "description": "Last timestamp when the cumulative prices in the pool were updated", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "factory_addr": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "owner": { - "description": "The contract owner", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "params": { - "description": "The pool's parameters", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "tracker_addr": { - "description": "Tracker contract address", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-stable/raw/response_to_cumulative_prices.json b/schemas/astroport-pair-stable/raw/response_to_cumulative_prices.json deleted file mode 100644 index 695a3121f..000000000 --- a/schemas/astroport-pair-stable/raw/response_to_cumulative_prices.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CumulativePricesResponse", - "description": "This structure is used to return a cumulative prices query response.", - "type": "object", - "required": [ - "assets", - "cumulative_prices", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool to query", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "cumulative_prices": { - "description": "The vector contains cumulative prices for each pair of assets in the pool", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/Uint128" - } - ], - "maxItems": 3, - "minItems": 3 - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-stable/raw/response_to_observe.json b/schemas/astroport-pair-stable/raw/response_to_observe.json deleted file mode 100644 index a8c389cb0..000000000 --- a/schemas/astroport-pair-stable/raw/response_to_observe.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OracleObservation", - "type": "object", - "required": [ - "price", - "timestamp" - ], - "properties": { - "price": { - "$ref": "#/definitions/Decimal" - }, - "timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-stable/raw/response_to_pair.json b/schemas/astroport-pair-stable/raw/response_to_pair.json deleted file mode 100644 index 16721f81d..000000000 --- a/schemas/astroport-pair-stable/raw/response_to_pair.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PairInfo", - "description": "This structure stores the main parameters for an Astroport pair", - "type": "object", - "required": [ - "asset_infos", - "contract_addr", - "liquidity_token", - "pair_type" - ], - "properties": { - "asset_infos": { - "description": "Asset information for the assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "contract_addr": { - "description": "Pair contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "liquidity_token": { - "description": "Pair LP token denom", - "type": "string" - }, - "pair_type": { - "description": "The pool type (xyk, stableswap etc) available in [`PairType`]", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-pair-stable/raw/response_to_pool.json b/schemas/astroport-pair-stable/raw/response_to_pool.json deleted file mode 100644 index 693cad0e0..000000000 --- a/schemas/astroport-pair-stable/raw/response_to_pool.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PoolResponse", - "description": "This struct is used to return a query result with the total amount of LP tokens and assets in a specific pool.", - "type": "object", - "required": [ - "assets", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool together with asset amounts", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-stable/raw/response_to_query_compute_d.json b/schemas/astroport-pair-stable/raw/response_to_query_compute_d.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-pair-stable/raw/response_to_query_compute_d.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-pair-stable/raw/response_to_reverse_simulation.json b/schemas/astroport-pair-stable/raw/response_to_reverse_simulation.json deleted file mode 100644 index ca711e182..000000000 --- a/schemas/astroport-pair-stable/raw/response_to_reverse_simulation.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReverseSimulationResponse", - "description": "This structure holds the parameters that are returned from a reverse swap simulation response.", - "type": "object", - "required": [ - "commission_amount", - "offer_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "offer_amount": { - "description": "The amount of offer assets returned by the reverse swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-stable/raw/response_to_share.json b/schemas/astroport-pair-stable/raw/response_to_share.json deleted file mode 100644 index 8285d4916..000000000 --- a/schemas/astroport-pair-stable/raw/response_to_share.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-stable/raw/response_to_simulate_provide.json b/schemas/astroport-pair-stable/raw/response_to_simulate_provide.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-pair-stable/raw/response_to_simulate_provide.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-pair-stable/raw/response_to_simulate_withdraw.json b/schemas/astroport-pair-stable/raw/response_to_simulate_withdraw.json deleted file mode 100644 index 8285d4916..000000000 --- a/schemas/astroport-pair-stable/raw/response_to_simulate_withdraw.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-stable/raw/response_to_simulation.json b/schemas/astroport-pair-stable/raw/response_to_simulation.json deleted file mode 100644 index 4bc828d4a..000000000 --- a/schemas/astroport-pair-stable/raw/response_to_simulation.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SimulationResponse", - "description": "This structure holds the parameters that are returned from a swap simulation response", - "type": "object", - "required": [ - "commission_amount", - "return_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "return_amount": { - "description": "The amount of ask assets returned by the swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xastro/astroport-pair-xastro.json b/schemas/astroport-pair-xastro/astroport-pair-xastro.json deleted file mode 100644 index f025b92ac..000000000 --- a/schemas/astroport-pair-xastro/astroport-pair-xastro.json +++ /dev/null @@ -1,1704 +0,0 @@ -{ - "contract_name": "astroport-pair-xastro", - "contract_version": "1.0.0", - "idl_version": "1.0.0", - "instantiate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "asset_infos", - "factory_addr", - "pair_type", - "token_code_id" - ], - "properties": { - "asset_infos": { - "description": "Information about assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "factory_addr": { - "description": "The factory contract address", - "type": "string" - }, - "init_params": { - "description": "Optional binary serialised parameters for custom pool types", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "pair_type": { - "description": "The pair type", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - }, - "token_code_id": { - "description": "The token contract code ID used for the tokens in the pool", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } - }, - "execute": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Receives a message of type [`Cw20ReceiveMsg`]", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "ProvideLiquidity allows someone to provide liquidity in the pool", - "type": "object", - "required": [ - "provide_liquidity" - ], - "properties": { - "provide_liquidity": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets available in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "auto_stake": { - "description": "Determines whether the LP tokens minted for the user is auto_staked in the Incentives contract", - "type": [ - "boolean", - "null" - ] - }, - "min_lp_to_receive": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "receiver": { - "description": "The receiver of LP tokens", - "type": [ - "string", - "null" - ] - }, - "slippage_tolerance": { - "description": "The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "WithdrawLiquidity allows someone to withdraw liquidity from the pool", - "type": "object", - "required": [ - "withdraw_liquidity" - ], - "properties": { - "withdraw_liquidity": { - "type": "object", - "properties": { - "assets": { - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "min_assets_to_receive": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Asset" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap performs a swap in the pool", - "type": "object", - "required": [ - "swap" - ], - "properties": { - "swap": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "belief_price": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - }, - "to": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Update the pair configuration", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "required": [ - "params" - ], - "properties": { - "params": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "ProposeNewOwner creates a proposal to change contract ownership. The validity period for the proposal is set in the `expires_in` variable.", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The date after which this proposal expires", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "Newly proposed contract owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "DropOwnershipProposal removes the existing offer to change contract ownership.", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Used to claim contract ownership.", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom execute endpoints for extended pool implementations", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "$ref": "#/definitions/Empty" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Empty": { - "description": "An empty struct that serves as a placeholder in different places, such as contracts that don't set a custom message.\n\nIt is designed to be expressable in correct JSON and JSON Schema but contains no meaningful data. Previously we used enums without cases, but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)", - "type": "object" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "query": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns information about a pair in an object of type [`super::asset::PairInfo`].", - "type": "object", - "required": [ - "pair" - ], - "properties": { - "pair": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a pool in an object of type [`PoolResponse`].", - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns contract configuration settings in a custom [`ConfigResponse`] structure.", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the share of the pool in a vector that contains objects of type [`Asset`].", - "type": "object", - "required": [ - "share" - ], - "properties": { - "share": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a swap simulation in a [`SimulationResponse`] object.", - "type": "object", - "required": [ - "simulation" - ], - "properties": { - "simulation": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about cumulative prices in a [`ReverseSimulationResponse`] object.", - "type": "object", - "required": [ - "reverse_simulation" - ], - "properties": { - "reverse_simulation": { - "type": "object", - "required": [ - "ask_asset" - ], - "properties": { - "ask_asset": { - "$ref": "#/definitions/Asset" - }, - "offer_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the cumulative prices in a [`CumulativePricesResponse`] object", - "type": "object", - "required": [ - "cumulative_prices" - ], - "properties": { - "cumulative_prices": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns current D invariant in as a [`u128`] value", - "type": "object", - "required": [ - "query_compute_d" - ], - "properties": { - "query_compute_d": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance of the specified asset that was in the pool just preceeding the moment of the specified block height creation.", - "type": "object", - "required": [ - "asset_balance_at" - ], - "properties": { - "asset_balance_at": { - "type": "object", - "required": [ - "asset_info", - "block_height" - ], - "properties": { - "asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "block_height": { - "$ref": "#/definitions/Uint64" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query price from observations", - "type": "object", - "required": [ - "observe" - ], - "properties": { - "observe": { - "type": "object", - "required": [ - "seconds_ago" - ], - "properties": { - "seconds_ago": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of assets received for the given amount of LP tokens", - "type": "object", - "required": [ - "simulate_withdraw" - ], - "properties": { - "simulate_withdraw": { - "type": "object", - "required": [ - "lp_amount" - ], - "properties": { - "lp_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of shares received for the given amount of assets", - "type": "object", - "required": [ - "simulate_provide" - ], - "properties": { - "simulate_provide": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "slippage_tolerance": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } - }, - "migrate": null, - "sudo": null, - "responses": { - "asset_balance_at": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_Uint128", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "config": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This struct is used to return a query result with the general contract configuration.", - "type": "object", - "required": [ - "block_time_last", - "factory_addr", - "owner" - ], - "properties": { - "block_time_last": { - "description": "Last timestamp when the cumulative prices in the pool were updated", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "factory_addr": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "owner": { - "description": "The contract owner", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "params": { - "description": "The pool's parameters", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "tracker_addr": { - "description": "Tracker contract address", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } - }, - "cumulative_prices": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CumulativePricesResponse", - "description": "This structure is used to return a cumulative prices query response.", - "type": "object", - "required": [ - "assets", - "cumulative_prices", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool to query", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "cumulative_prices": { - "description": "The vector contains cumulative prices for each pair of assets in the pool", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/Uint128" - } - ], - "maxItems": 3, - "minItems": 3 - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "observe": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OracleObservation", - "type": "object", - "required": [ - "price", - "timestamp" - ], - "properties": { - "price": { - "$ref": "#/definitions/Decimal" - }, - "timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - } - } - }, - "pair": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PairInfo", - "description": "This structure stores the main parameters for an Astroport pair", - "type": "object", - "required": [ - "asset_infos", - "contract_addr", - "liquidity_token", - "pair_type" - ], - "properties": { - "asset_infos": { - "description": "Asset information for the assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "contract_addr": { - "description": "Pair contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "liquidity_token": { - "description": "Pair LP token denom", - "type": "string" - }, - "pair_type": { - "description": "The pool type (xyk, stableswap etc) available in [`PairType`]", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } - }, - "pool": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PoolResponse", - "description": "This struct is used to return a query result with the total amount of LP tokens and assets in a specific pool.", - "type": "object", - "required": [ - "assets", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool together with asset amounts", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "query_compute_d": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "reverse_simulation": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReverseSimulationResponse", - "description": "This structure holds the parameters that are returned from a reverse swap simulation response.", - "type": "object", - "required": [ - "commission_amount", - "offer_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "offer_amount": { - "description": "The amount of offer assets returned by the reverse swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "share": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "simulate_provide": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "simulate_withdraw": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "simulation": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SimulationResponse", - "description": "This structure holds the parameters that are returned from a swap simulation response", - "type": "object", - "required": [ - "commission_amount", - "return_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "return_amount": { - "description": "The amount of ask assets returned by the swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - } - } -} diff --git a/schemas/astroport-pair-xastro/raw/execute.json b/schemas/astroport-pair-xastro/raw/execute.json deleted file mode 100644 index 3a6ac6f12..000000000 --- a/schemas/astroport-pair-xastro/raw/execute.json +++ /dev/null @@ -1,383 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Receives a message of type [`Cw20ReceiveMsg`]", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "ProvideLiquidity allows someone to provide liquidity in the pool", - "type": "object", - "required": [ - "provide_liquidity" - ], - "properties": { - "provide_liquidity": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets available in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "auto_stake": { - "description": "Determines whether the LP tokens minted for the user is auto_staked in the Incentives contract", - "type": [ - "boolean", - "null" - ] - }, - "min_lp_to_receive": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "receiver": { - "description": "The receiver of LP tokens", - "type": [ - "string", - "null" - ] - }, - "slippage_tolerance": { - "description": "The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "WithdrawLiquidity allows someone to withdraw liquidity from the pool", - "type": "object", - "required": [ - "withdraw_liquidity" - ], - "properties": { - "withdraw_liquidity": { - "type": "object", - "properties": { - "assets": { - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "min_assets_to_receive": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Asset" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap performs a swap in the pool", - "type": "object", - "required": [ - "swap" - ], - "properties": { - "swap": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "belief_price": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - }, - "to": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Update the pair configuration", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "required": [ - "params" - ], - "properties": { - "params": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "ProposeNewOwner creates a proposal to change contract ownership. The validity period for the proposal is set in the `expires_in` variable.", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The date after which this proposal expires", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "Newly proposed contract owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "DropOwnershipProposal removes the existing offer to change contract ownership.", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Used to claim contract ownership.", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom execute endpoints for extended pool implementations", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "$ref": "#/definitions/Empty" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Empty": { - "description": "An empty struct that serves as a placeholder in different places, such as contracts that don't set a custom message.\n\nIt is designed to be expressable in correct JSON and JSON Schema but contains no meaningful data. Previously we used enums without cases, but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)", - "type": "object" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xastro/raw/instantiate.json b/schemas/astroport-pair-xastro/raw/instantiate.json deleted file mode 100644 index 00ccada94..000000000 --- a/schemas/astroport-pair-xastro/raw/instantiate.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "asset_infos", - "factory_addr", - "pair_type", - "token_code_id" - ], - "properties": { - "asset_infos": { - "description": "Information about assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "factory_addr": { - "description": "The factory contract address", - "type": "string" - }, - "init_params": { - "description": "Optional binary serialised parameters for custom pool types", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "pair_type": { - "description": "The pair type", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - }, - "token_code_id": { - "description": "The token contract code ID used for the tokens in the pool", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-pair-xastro/raw/query.json b/schemas/astroport-pair-xastro/raw/query.json deleted file mode 100644 index b7da792ec..000000000 --- a/schemas/astroport-pair-xastro/raw/query.json +++ /dev/null @@ -1,364 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns information about a pair in an object of type [`super::asset::PairInfo`].", - "type": "object", - "required": [ - "pair" - ], - "properties": { - "pair": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a pool in an object of type [`PoolResponse`].", - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns contract configuration settings in a custom [`ConfigResponse`] structure.", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the share of the pool in a vector that contains objects of type [`Asset`].", - "type": "object", - "required": [ - "share" - ], - "properties": { - "share": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a swap simulation in a [`SimulationResponse`] object.", - "type": "object", - "required": [ - "simulation" - ], - "properties": { - "simulation": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about cumulative prices in a [`ReverseSimulationResponse`] object.", - "type": "object", - "required": [ - "reverse_simulation" - ], - "properties": { - "reverse_simulation": { - "type": "object", - "required": [ - "ask_asset" - ], - "properties": { - "ask_asset": { - "$ref": "#/definitions/Asset" - }, - "offer_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the cumulative prices in a [`CumulativePricesResponse`] object", - "type": "object", - "required": [ - "cumulative_prices" - ], - "properties": { - "cumulative_prices": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns current D invariant in as a [`u128`] value", - "type": "object", - "required": [ - "query_compute_d" - ], - "properties": { - "query_compute_d": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance of the specified asset that was in the pool just preceeding the moment of the specified block height creation.", - "type": "object", - "required": [ - "asset_balance_at" - ], - "properties": { - "asset_balance_at": { - "type": "object", - "required": [ - "asset_info", - "block_height" - ], - "properties": { - "asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "block_height": { - "$ref": "#/definitions/Uint64" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query price from observations", - "type": "object", - "required": [ - "observe" - ], - "properties": { - "observe": { - "type": "object", - "required": [ - "seconds_ago" - ], - "properties": { - "seconds_ago": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of assets received for the given amount of LP tokens", - "type": "object", - "required": [ - "simulate_withdraw" - ], - "properties": { - "simulate_withdraw": { - "type": "object", - "required": [ - "lp_amount" - ], - "properties": { - "lp_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of shares received for the given amount of assets", - "type": "object", - "required": [ - "simulate_provide" - ], - "properties": { - "simulate_provide": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "slippage_tolerance": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xastro/raw/response_to_asset_balance_at.json b/schemas/astroport-pair-xastro/raw/response_to_asset_balance_at.json deleted file mode 100644 index 2eaf6e96f..000000000 --- a/schemas/astroport-pair-xastro/raw/response_to_asset_balance_at.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_Uint128", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xastro/raw/response_to_config.json b/schemas/astroport-pair-xastro/raw/response_to_config.json deleted file mode 100644 index 953b0adc7..000000000 --- a/schemas/astroport-pair-xastro/raw/response_to_config.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This struct is used to return a query result with the general contract configuration.", - "type": "object", - "required": [ - "block_time_last", - "factory_addr", - "owner" - ], - "properties": { - "block_time_last": { - "description": "Last timestamp when the cumulative prices in the pool were updated", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "factory_addr": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "owner": { - "description": "The contract owner", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "params": { - "description": "The pool's parameters", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "tracker_addr": { - "description": "Tracker contract address", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xastro/raw/response_to_cumulative_prices.json b/schemas/astroport-pair-xastro/raw/response_to_cumulative_prices.json deleted file mode 100644 index 695a3121f..000000000 --- a/schemas/astroport-pair-xastro/raw/response_to_cumulative_prices.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CumulativePricesResponse", - "description": "This structure is used to return a cumulative prices query response.", - "type": "object", - "required": [ - "assets", - "cumulative_prices", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool to query", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "cumulative_prices": { - "description": "The vector contains cumulative prices for each pair of assets in the pool", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/Uint128" - } - ], - "maxItems": 3, - "minItems": 3 - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xastro/raw/response_to_observe.json b/schemas/astroport-pair-xastro/raw/response_to_observe.json deleted file mode 100644 index a8c389cb0..000000000 --- a/schemas/astroport-pair-xastro/raw/response_to_observe.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OracleObservation", - "type": "object", - "required": [ - "price", - "timestamp" - ], - "properties": { - "price": { - "$ref": "#/definitions/Decimal" - }, - "timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xastro/raw/response_to_pair.json b/schemas/astroport-pair-xastro/raw/response_to_pair.json deleted file mode 100644 index 16721f81d..000000000 --- a/schemas/astroport-pair-xastro/raw/response_to_pair.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PairInfo", - "description": "This structure stores the main parameters for an Astroport pair", - "type": "object", - "required": [ - "asset_infos", - "contract_addr", - "liquidity_token", - "pair_type" - ], - "properties": { - "asset_infos": { - "description": "Asset information for the assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "contract_addr": { - "description": "Pair contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "liquidity_token": { - "description": "Pair LP token denom", - "type": "string" - }, - "pair_type": { - "description": "The pool type (xyk, stableswap etc) available in [`PairType`]", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-pair-xastro/raw/response_to_pool.json b/schemas/astroport-pair-xastro/raw/response_to_pool.json deleted file mode 100644 index 693cad0e0..000000000 --- a/schemas/astroport-pair-xastro/raw/response_to_pool.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PoolResponse", - "description": "This struct is used to return a query result with the total amount of LP tokens and assets in a specific pool.", - "type": "object", - "required": [ - "assets", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool together with asset amounts", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xastro/raw/response_to_query_compute_d.json b/schemas/astroport-pair-xastro/raw/response_to_query_compute_d.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-pair-xastro/raw/response_to_query_compute_d.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-pair-xastro/raw/response_to_reverse_simulation.json b/schemas/astroport-pair-xastro/raw/response_to_reverse_simulation.json deleted file mode 100644 index ca711e182..000000000 --- a/schemas/astroport-pair-xastro/raw/response_to_reverse_simulation.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReverseSimulationResponse", - "description": "This structure holds the parameters that are returned from a reverse swap simulation response.", - "type": "object", - "required": [ - "commission_amount", - "offer_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "offer_amount": { - "description": "The amount of offer assets returned by the reverse swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xastro/raw/response_to_share.json b/schemas/astroport-pair-xastro/raw/response_to_share.json deleted file mode 100644 index 8285d4916..000000000 --- a/schemas/astroport-pair-xastro/raw/response_to_share.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xastro/raw/response_to_simulate_provide.json b/schemas/astroport-pair-xastro/raw/response_to_simulate_provide.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-pair-xastro/raw/response_to_simulate_provide.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-pair-xastro/raw/response_to_simulate_withdraw.json b/schemas/astroport-pair-xastro/raw/response_to_simulate_withdraw.json deleted file mode 100644 index 8285d4916..000000000 --- a/schemas/astroport-pair-xastro/raw/response_to_simulate_withdraw.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xastro/raw/response_to_simulation.json b/schemas/astroport-pair-xastro/raw/response_to_simulation.json deleted file mode 100644 index 4bc828d4a..000000000 --- a/schemas/astroport-pair-xastro/raw/response_to_simulation.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SimulationResponse", - "description": "This structure holds the parameters that are returned from a swap simulation response", - "type": "object", - "required": [ - "commission_amount", - "return_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "return_amount": { - "description": "The amount of ask assets returned by the swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/astroport-pair-xyk-sale-tax.json b/schemas/astroport-pair-xyk-sale-tax/astroport-pair-xyk-sale-tax.json deleted file mode 100644 index a2583bb72..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/astroport-pair-xyk-sale-tax.json +++ /dev/null @@ -1,1763 +0,0 @@ -{ - "contract_name": "astroport-pair-xyk-sale-tax", - "contract_version": "2.2.0", - "idl_version": "1.0.0", - "instantiate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "asset_infos", - "factory_addr", - "pair_type", - "token_code_id" - ], - "properties": { - "asset_infos": { - "description": "Information about assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "factory_addr": { - "description": "The factory contract address", - "type": "string" - }, - "init_params": { - "description": "Optional binary serialised parameters for custom pool types", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "pair_type": { - "description": "The pair type", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - }, - "token_code_id": { - "description": "The token contract code ID used for the tokens in the pool", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } - }, - "execute": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Receives a message of type [`Cw20ReceiveMsg`]", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "ProvideLiquidity allows someone to provide liquidity in the pool", - "type": "object", - "required": [ - "provide_liquidity" - ], - "properties": { - "provide_liquidity": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets available in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "auto_stake": { - "description": "Determines whether the LP tokens minted for the user is auto_staked in the Incentives contract", - "type": [ - "boolean", - "null" - ] - }, - "min_lp_to_receive": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "receiver": { - "description": "The receiver of LP tokens", - "type": [ - "string", - "null" - ] - }, - "slippage_tolerance": { - "description": "The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "WithdrawLiquidity allows someone to withdraw liquidity from the pool", - "type": "object", - "required": [ - "withdraw_liquidity" - ], - "properties": { - "withdraw_liquidity": { - "type": "object", - "properties": { - "assets": { - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "min_assets_to_receive": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Asset" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap performs a swap in the pool", - "type": "object", - "required": [ - "swap" - ], - "properties": { - "swap": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "belief_price": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - }, - "to": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Update the pair configuration", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "required": [ - "params" - ], - "properties": { - "params": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "ProposeNewOwner creates a proposal to change contract ownership. The validity period for the proposal is set in the `expires_in` variable.", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The date after which this proposal expires", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "Newly proposed contract owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "DropOwnershipProposal removes the existing offer to change contract ownership.", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Used to claim contract ownership.", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom execute endpoints for extended pool implementations", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "$ref": "#/definitions/Empty" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Empty": { - "description": "An empty struct that serves as a placeholder in different places, such as contracts that don't set a custom message.\n\nIt is designed to be expressable in correct JSON and JSON Schema but contains no meaningful data. Previously we used enums without cases, but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)", - "type": "object" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "query": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns information about a pair in an object of type [`super::asset::PairInfo`].", - "type": "object", - "required": [ - "pair" - ], - "properties": { - "pair": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a pool in an object of type [`PoolResponse`].", - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns contract configuration settings in a custom [`ConfigResponse`] structure.", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the share of the pool in a vector that contains objects of type [`Asset`].", - "type": "object", - "required": [ - "share" - ], - "properties": { - "share": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a swap simulation in a [`SimulationResponse`] object.", - "type": "object", - "required": [ - "simulation" - ], - "properties": { - "simulation": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about cumulative prices in a [`ReverseSimulationResponse`] object.", - "type": "object", - "required": [ - "reverse_simulation" - ], - "properties": { - "reverse_simulation": { - "type": "object", - "required": [ - "ask_asset" - ], - "properties": { - "ask_asset": { - "$ref": "#/definitions/Asset" - }, - "offer_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the cumulative prices in a [`CumulativePricesResponse`] object", - "type": "object", - "required": [ - "cumulative_prices" - ], - "properties": { - "cumulative_prices": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns current D invariant in as a [`u128`] value", - "type": "object", - "required": [ - "query_compute_d" - ], - "properties": { - "query_compute_d": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance of the specified asset that was in the pool just preceeding the moment of the specified block height creation.", - "type": "object", - "required": [ - "asset_balance_at" - ], - "properties": { - "asset_balance_at": { - "type": "object", - "required": [ - "asset_info", - "block_height" - ], - "properties": { - "asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "block_height": { - "$ref": "#/definitions/Uint64" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query price from observations", - "type": "object", - "required": [ - "observe" - ], - "properties": { - "observe": { - "type": "object", - "required": [ - "seconds_ago" - ], - "properties": { - "seconds_ago": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of assets received for the given amount of LP tokens", - "type": "object", - "required": [ - "simulate_withdraw" - ], - "properties": { - "simulate_withdraw": { - "type": "object", - "required": [ - "lp_amount" - ], - "properties": { - "lp_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of shares received for the given amount of assets", - "type": "object", - "required": [ - "simulate_provide" - ], - "properties": { - "simulate_provide": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "slippage_tolerance": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } - }, - "migrate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "description": "Message used when migrating the contract from the standard XYK pair.", - "type": "object", - "required": [ - "tax_config_admin", - "tax_configs" - ], - "properties": { - "tax_config_admin": { - "description": "The address that is allowed to updated the tax configs.", - "type": "string" - }, - "tax_configs": { - "description": "The configs of the trade taxes for the pair.", - "allOf": [ - { - "$ref": "#/definitions/TaxConfigs_for_String" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "TaxConfig_for_String": { - "type": "object", - "required": [ - "tax_rate", - "tax_recipient" - ], - "properties": { - "tax_rate": { - "description": "The tax rate to apply to token sales of `tax_denom`.", - "allOf": [ - { - "$ref": "#/definitions/Decimal" - } - ] - }, - "tax_recipient": { - "description": "The address to send the tax to", - "type": "string" - } - }, - "additionalProperties": false - }, - "TaxConfigs_for_String": { - "description": "A map of tax configs, keyed by the denom of the asset to tax sales of. E.g. in the pair APOLLO-USDC, the can have one tax rate and recipient when swapping APOLLO for USDC, and another when swapping USDC for APOLLO.", - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/TaxConfig_for_String" - } - } - } - }, - "sudo": null, - "responses": { - "asset_balance_at": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_Uint128", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "config": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This struct is used to return a query result with the general contract configuration.", - "type": "object", - "required": [ - "block_time_last", - "factory_addr", - "owner" - ], - "properties": { - "block_time_last": { - "description": "Last timestamp when the cumulative prices in the pool were updated", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "factory_addr": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "owner": { - "description": "The contract owner", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "params": { - "description": "The pool's parameters", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "tracker_addr": { - "description": "Tracker contract address", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } - }, - "cumulative_prices": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CumulativePricesResponse", - "description": "This structure is used to return a cumulative prices query response.", - "type": "object", - "required": [ - "assets", - "cumulative_prices", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool to query", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "cumulative_prices": { - "description": "The vector contains cumulative prices for each pair of assets in the pool", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/Uint128" - } - ], - "maxItems": 3, - "minItems": 3 - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "observe": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OracleObservation", - "type": "object", - "required": [ - "price", - "timestamp" - ], - "properties": { - "price": { - "$ref": "#/definitions/Decimal" - }, - "timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - } - } - }, - "pair": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PairInfo", - "description": "This structure stores the main parameters for an Astroport pair", - "type": "object", - "required": [ - "asset_infos", - "contract_addr", - "liquidity_token", - "pair_type" - ], - "properties": { - "asset_infos": { - "description": "Asset information for the assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "contract_addr": { - "description": "Pair contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "liquidity_token": { - "description": "Pair LP token denom", - "type": "string" - }, - "pair_type": { - "description": "The pool type (xyk, stableswap etc) available in [`PairType`]", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } - }, - "pool": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PoolResponse", - "description": "This struct is used to return a query result with the total amount of LP tokens and assets in a specific pool.", - "type": "object", - "required": [ - "assets", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool together with asset amounts", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "query_compute_d": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "reverse_simulation": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReverseSimulationResponse", - "description": "This structure holds the parameters that are returned from a reverse swap simulation response.", - "type": "object", - "required": [ - "commission_amount", - "offer_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "offer_amount": { - "description": "The amount of offer assets returned by the reverse swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "share": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "simulate_provide": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "simulate_withdraw": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "simulation": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SimulationResponse", - "description": "This structure holds the parameters that are returned from a swap simulation response", - "type": "object", - "required": [ - "commission_amount", - "return_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "return_amount": { - "description": "The amount of ask assets returned by the swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/execute.json b/schemas/astroport-pair-xyk-sale-tax/raw/execute.json deleted file mode 100644 index 3a6ac6f12..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/execute.json +++ /dev/null @@ -1,383 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Receives a message of type [`Cw20ReceiveMsg`]", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "ProvideLiquidity allows someone to provide liquidity in the pool", - "type": "object", - "required": [ - "provide_liquidity" - ], - "properties": { - "provide_liquidity": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "description": "The assets available in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "auto_stake": { - "description": "Determines whether the LP tokens minted for the user is auto_staked in the Incentives contract", - "type": [ - "boolean", - "null" - ] - }, - "min_lp_to_receive": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "receiver": { - "description": "The receiver of LP tokens", - "type": [ - "string", - "null" - ] - }, - "slippage_tolerance": { - "description": "The slippage tolerance that allows liquidity provision only if the price in the pool doesn't move too much", - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "WithdrawLiquidity allows someone to withdraw liquidity from the pool", - "type": "object", - "required": [ - "withdraw_liquidity" - ], - "properties": { - "withdraw_liquidity": { - "type": "object", - "properties": { - "assets": { - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "min_assets_to_receive": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Asset" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Swap performs a swap in the pool", - "type": "object", - "required": [ - "swap" - ], - "properties": { - "swap": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "belief_price": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "max_spread": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - }, - "to": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Update the pair configuration", - "type": "object", - "required": [ - "update_config" - ], - "properties": { - "update_config": { - "type": "object", - "required": [ - "params" - ], - "properties": { - "params": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "ProposeNewOwner creates a proposal to change contract ownership. The validity period for the proposal is set in the `expires_in` variable.", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The date after which this proposal expires", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "Newly proposed contract owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "DropOwnershipProposal removes the existing offer to change contract ownership.", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Used to claim contract ownership.", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom execute endpoints for extended pool implementations", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "$ref": "#/definitions/Empty" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Empty": { - "description": "An empty struct that serves as a placeholder in different places, such as contracts that don't set a custom message.\n\nIt is designed to be expressable in correct JSON and JSON Schema but contains no meaningful data. Previously we used enums without cases, but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)", - "type": "object" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/instantiate.json b/schemas/astroport-pair-xyk-sale-tax/raw/instantiate.json deleted file mode 100644 index 00ccada94..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/instantiate.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "asset_infos", - "factory_addr", - "pair_type", - "token_code_id" - ], - "properties": { - "asset_infos": { - "description": "Information about assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "factory_addr": { - "description": "The factory contract address", - "type": "string" - }, - "init_params": { - "description": "Optional binary serialised parameters for custom pool types", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "pair_type": { - "description": "The pair type", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - }, - "token_code_id": { - "description": "The token contract code ID used for the tokens in the pool", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/migrate.json b/schemas/astroport-pair-xyk-sale-tax/raw/migrate.json deleted file mode 100644 index 10400ed19..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/migrate.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "description": "Message used when migrating the contract from the standard XYK pair.", - "type": "object", - "required": [ - "tax_config_admin", - "tax_configs" - ], - "properties": { - "tax_config_admin": { - "description": "The address that is allowed to updated the tax configs.", - "type": "string" - }, - "tax_configs": { - "description": "The configs of the trade taxes for the pair.", - "allOf": [ - { - "$ref": "#/definitions/TaxConfigs_for_String" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "TaxConfig_for_String": { - "type": "object", - "required": [ - "tax_rate", - "tax_recipient" - ], - "properties": { - "tax_rate": { - "description": "The tax rate to apply to token sales of `tax_denom`.", - "allOf": [ - { - "$ref": "#/definitions/Decimal" - } - ] - }, - "tax_recipient": { - "description": "The address to send the tax to", - "type": "string" - } - }, - "additionalProperties": false - }, - "TaxConfigs_for_String": { - "description": "A map of tax configs, keyed by the denom of the asset to tax sales of. E.g. in the pair APOLLO-USDC, the can have one tax rate and recipient when swapping APOLLO for USDC, and another when swapping USDC for APOLLO.", - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/TaxConfig_for_String" - } - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/query.json b/schemas/astroport-pair-xyk-sale-tax/raw/query.json deleted file mode 100644 index b7da792ec..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/query.json +++ /dev/null @@ -1,364 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns information about a pair in an object of type [`super::asset::PairInfo`].", - "type": "object", - "required": [ - "pair" - ], - "properties": { - "pair": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a pool in an object of type [`PoolResponse`].", - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns contract configuration settings in a custom [`ConfigResponse`] structure.", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the share of the pool in a vector that contains objects of type [`Asset`].", - "type": "object", - "required": [ - "share" - ], - "properties": { - "share": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about a swap simulation in a [`SimulationResponse`] object.", - "type": "object", - "required": [ - "simulation" - ], - "properties": { - "simulation": { - "type": "object", - "required": [ - "offer_asset" - ], - "properties": { - "ask_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - }, - "offer_asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about cumulative prices in a [`ReverseSimulationResponse`] object.", - "type": "object", - "required": [ - "reverse_simulation" - ], - "properties": { - "reverse_simulation": { - "type": "object", - "required": [ - "ask_asset" - ], - "properties": { - "ask_asset": { - "$ref": "#/definitions/Asset" - }, - "offer_asset_info": { - "anyOf": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about the cumulative prices in a [`CumulativePricesResponse`] object", - "type": "object", - "required": [ - "cumulative_prices" - ], - "properties": { - "cumulative_prices": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns current D invariant in as a [`u128`] value", - "type": "object", - "required": [ - "query_compute_d" - ], - "properties": { - "query_compute_d": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the balance of the specified asset that was in the pool just preceeding the moment of the specified block height creation.", - "type": "object", - "required": [ - "asset_balance_at" - ], - "properties": { - "asset_balance_at": { - "type": "object", - "required": [ - "asset_info", - "block_height" - ], - "properties": { - "asset_info": { - "$ref": "#/definitions/AssetInfo" - }, - "block_height": { - "$ref": "#/definitions/Uint64" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Query price from observations", - "type": "object", - "required": [ - "observe" - ], - "properties": { - "observe": { - "type": "object", - "required": [ - "seconds_ago" - ], - "properties": { - "seconds_ago": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of assets received for the given amount of LP tokens", - "type": "object", - "required": [ - "simulate_withdraw" - ], - "properties": { - "simulate_withdraw": { - "type": "object", - "required": [ - "lp_amount" - ], - "properties": { - "lp_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns an estimation of shares received for the given amount of assets", - "type": "object", - "required": [ - "simulate_provide" - ], - "properties": { - "simulate_provide": { - "type": "object", - "required": [ - "assets" - ], - "properties": { - "assets": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "slippage_tolerance": { - "anyOf": [ - { - "$ref": "#/definitions/Decimal" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_asset_balance_at.json b/schemas/astroport-pair-xyk-sale-tax/raw/response_to_asset_balance_at.json deleted file mode 100644 index 2eaf6e96f..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_asset_balance_at.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_Uint128", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_config.json b/schemas/astroport-pair-xyk-sale-tax/raw/response_to_config.json deleted file mode 100644 index 953b0adc7..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_config.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This struct is used to return a query result with the general contract configuration.", - "type": "object", - "required": [ - "block_time_last", - "factory_addr", - "owner" - ], - "properties": { - "block_time_last": { - "description": "Last timestamp when the cumulative prices in the pool were updated", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "factory_addr": { - "description": "The factory contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "owner": { - "description": "The contract owner", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "params": { - "description": "The pool's parameters", - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "tracker_addr": { - "description": "Tracker contract address", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_cumulative_prices.json b/schemas/astroport-pair-xyk-sale-tax/raw/response_to_cumulative_prices.json deleted file mode 100644 index 695a3121f..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_cumulative_prices.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CumulativePricesResponse", - "description": "This structure is used to return a cumulative prices query response.", - "type": "object", - "required": [ - "assets", - "cumulative_prices", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool to query", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "cumulative_prices": { - "description": "The vector contains cumulative prices for each pair of assets in the pool", - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/AssetInfo" - }, - { - "$ref": "#/definitions/Uint128" - } - ], - "maxItems": 3, - "minItems": 3 - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_observe.json b/schemas/astroport-pair-xyk-sale-tax/raw/response_to_observe.json deleted file mode 100644 index a8c389cb0..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_observe.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OracleObservation", - "type": "object", - "required": [ - "price", - "timestamp" - ], - "properties": { - "price": { - "$ref": "#/definitions/Decimal" - }, - "timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false, - "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_pair.json b/schemas/astroport-pair-xyk-sale-tax/raw/response_to_pair.json deleted file mode 100644 index 16721f81d..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_pair.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PairInfo", - "description": "This structure stores the main parameters for an Astroport pair", - "type": "object", - "required": [ - "asset_infos", - "contract_addr", - "liquidity_token", - "pair_type" - ], - "properties": { - "asset_infos": { - "description": "Asset information for the assets in the pool", - "type": "array", - "items": { - "$ref": "#/definitions/AssetInfo" - } - }, - "contract_addr": { - "description": "Pair contract address", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "liquidity_token": { - "description": "Pair LP token denom", - "type": "string" - }, - "pair_type": { - "description": "The pool type (xyk, stableswap etc) available in [`PairType`]", - "allOf": [ - { - "$ref": "#/definitions/PairType" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "PairType": { - "description": "This enum describes available pair types. ## Available pool types ``` # use astroport::factory::PairType::{Custom, Stable, Xyk}; Xyk {}; Stable {}; Custom(String::from(\"Custom\")); ```", - "oneOf": [ - { - "description": "XYK pair type", - "type": "object", - "required": [ - "xyk" - ], - "properties": { - "xyk": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Stable pair type", - "type": "object", - "required": [ - "stable" - ], - "properties": { - "stable": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Custom pair type", - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_pool.json b/schemas/astroport-pair-xyk-sale-tax/raw/response_to_pool.json deleted file mode 100644 index 693cad0e0..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_pool.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PoolResponse", - "description": "This struct is used to return a query result with the total amount of LP tokens and assets in a specific pool.", - "type": "object", - "required": [ - "assets", - "total_share" - ], - "properties": { - "assets": { - "description": "The assets in the pool together with asset amounts", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "total_share": { - "description": "The total amount of LP tokens currently issued", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_query_compute_d.json b/schemas/astroport-pair-xyk-sale-tax/raw/response_to_query_compute_d.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_query_compute_d.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_reverse_simulation.json b/schemas/astroport-pair-xyk-sale-tax/raw/response_to_reverse_simulation.json deleted file mode 100644 index ca711e182..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_reverse_simulation.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReverseSimulationResponse", - "description": "This structure holds the parameters that are returned from a reverse swap simulation response.", - "type": "object", - "required": [ - "commission_amount", - "offer_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "offer_amount": { - "description": "The amount of offer assets returned by the reverse swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_share.json b/schemas/astroport-pair-xyk-sale-tax/raw/response_to_share.json deleted file mode 100644 index 8285d4916..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_share.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_simulate_provide.json b/schemas/astroport-pair-xyk-sale-tax/raw/response_to_simulate_provide.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_simulate_provide.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_simulate_withdraw.json b/schemas/astroport-pair-xyk-sale-tax/raw/response_to_simulate_withdraw.json deleted file mode 100644 index 8285d4916..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_simulate_withdraw.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Array_of_Asset", - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Asset": { - "description": "This enum describes a Terra asset (native or CW20).", - "type": "object", - "required": [ - "amount", - "info" - ], - "properties": { - "amount": { - "description": "A token amount", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "info": { - "description": "Information about an asset stored in a [`AssetInfo`] struct", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_simulation.json b/schemas/astroport-pair-xyk-sale-tax/raw/response_to_simulation.json deleted file mode 100644 index 4bc828d4a..000000000 --- a/schemas/astroport-pair-xyk-sale-tax/raw/response_to_simulation.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SimulationResponse", - "description": "This structure holds the parameters that are returned from a swap simulation response", - "type": "object", - "required": [ - "commission_amount", - "return_amount", - "spread_amount" - ], - "properties": { - "commission_amount": { - "description": "The amount of fees charged by the transaction", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "return_amount": { - "description": "The amount of ask assets returned by the swap", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "spread_amount": { - "description": "The spread used in the swap operation", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-staking/astroport-staking.json b/schemas/astroport-staking/astroport-staking.json deleted file mode 100644 index 96a2cbbcb..000000000 --- a/schemas/astroport-staking/astroport-staking.json +++ /dev/null @@ -1,319 +0,0 @@ -{ - "contract_name": "astroport-staking", - "contract_version": "2.3.0", - "idl_version": "1.0.0", - "instantiate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "deposit_token_denom", - "token_factory_addr", - "tracking_admin", - "tracking_code_id" - ], - "properties": { - "deposit_token_denom": { - "description": "The ASTRO token contract address", - "type": "string" - }, - "token_factory_addr": { - "description": "Token factory module address. Contract creator must ensure that the address is exact token factory module address.", - "type": "string" - }, - "tracking_admin": { - "description": "Tracking contract admin", - "type": "string" - }, - "tracking_code_id": { - "description": "The Code ID of contract used to track the TokenFactory token balances", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - "execute": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Deposits ASTRO in exchange for xASTRO The receiver is optional. If not set, the sender will receive the xASTRO.", - "type": "object", - "required": [ - "enter" - ], - "properties": { - "enter": { - "type": "object", - "properties": { - "receiver": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Deposits ASTRO in exchange for xASTRO and passes **all resulting xASTRO** to defined contract along with an executable message.", - "type": "object", - "required": [ - "enter_with_hook" - ], - "properties": { - "enter_with_hook": { - "type": "object", - "required": [ - "contract_address", - "msg" - ], - "properties": { - "contract_address": { - "type": "string" - }, - "msg": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Burns xASTRO in exchange for ASTRO. The receiver is optional. If not set, the sender will receive the ASTRO.", - "type": "object", - "required": [ - "leave" - ], - "properties": { - "leave": { - "type": "object", - "properties": { - "receiver": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } - }, - "query": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Config returns the contract configuration specified in a custom [`Config`] structure", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns xASTRO total supply. Duplicates TotalSupplyAt { timestamp: None } logic but kept for backward compatibility.", - "type": "object", - "required": [ - "total_shares" - ], - "properties": { - "total_shares": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns total ASTRO staked in the contract", - "type": "object", - "required": [ - "total_deposit" - ], - "properties": { - "total_deposit": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "tracker_config" - ], - "properties": { - "tracker_config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "BalanceAt returns xASTRO balance of the given address at at the given timestamp. Returns current balance if timestamp unset.", - "type": "object", - "required": [ - "balance_at" - ], - "properties": { - "balance_at": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "timestamp": { - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "TotalSupplyAt returns xASTRO total token supply at the given timestamp. Returns current total supply if timestamp unset.", - "type": "object", - "required": [ - "total_supply_at" - ], - "properties": { - "total_supply_at": { - "type": "object", - "properties": { - "timestamp": { - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "migrate": null, - "sudo": null, - "responses": { - "balance_at": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "config": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Config", - "description": "This structure stores the main parameters for the staking contract.", - "type": "object", - "required": [ - "astro_denom", - "xastro_denom" - ], - "properties": { - "astro_denom": { - "description": "The ASTRO token denom", - "type": "string" - }, - "xastro_denom": { - "description": "The xASTRO token denom", - "type": "string" - } - }, - "additionalProperties": false - }, - "total_deposit": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "total_shares": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "total_supply_at": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "tracker_config": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "TrackerData", - "description": "This structure stores the tracking contract data.", - "type": "object", - "required": [ - "admin", - "code_id", - "token_factory_addr", - "tracker_addr" - ], - "properties": { - "admin": { - "description": "Tracking contract admin", - "type": "string" - }, - "code_id": { - "description": "Tracking contract code id", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "token_factory_addr": { - "description": "Token factory module address", - "type": "string" - }, - "tracker_addr": { - "description": "Tracker contract address", - "type": "string" - } - }, - "additionalProperties": false - } - } -} diff --git a/schemas/astroport-staking/raw/execute.json b/schemas/astroport-staking/raw/execute.json deleted file mode 100644 index 670519b62..000000000 --- a/schemas/astroport-staking/raw/execute.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Deposits ASTRO in exchange for xASTRO The receiver is optional. If not set, the sender will receive the xASTRO.", - "type": "object", - "required": [ - "enter" - ], - "properties": { - "enter": { - "type": "object", - "properties": { - "receiver": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Deposits ASTRO in exchange for xASTRO and passes **all resulting xASTRO** to defined contract along with an executable message.", - "type": "object", - "required": [ - "enter_with_hook" - ], - "properties": { - "enter_with_hook": { - "type": "object", - "required": [ - "contract_address", - "msg" - ], - "properties": { - "contract_address": { - "type": "string" - }, - "msg": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Burns xASTRO in exchange for ASTRO. The receiver is optional. If not set, the sender will receive the ASTRO.", - "type": "object", - "required": [ - "leave" - ], - "properties": { - "leave": { - "type": "object", - "properties": { - "receiver": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } -} diff --git a/schemas/astroport-staking/raw/instantiate.json b/schemas/astroport-staking/raw/instantiate.json deleted file mode 100644 index d97ea0a95..000000000 --- a/schemas/astroport-staking/raw/instantiate.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "deposit_token_denom", - "token_factory_addr", - "tracking_admin", - "tracking_code_id" - ], - "properties": { - "deposit_token_denom": { - "description": "The ASTRO token contract address", - "type": "string" - }, - "token_factory_addr": { - "description": "Token factory module address. Contract creator must ensure that the address is exact token factory module address.", - "type": "string" - }, - "tracking_admin": { - "description": "Tracking contract admin", - "type": "string" - }, - "tracking_code_id": { - "description": "The Code ID of contract used to track the TokenFactory token balances", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false -} diff --git a/schemas/astroport-staking/raw/query.json b/schemas/astroport-staking/raw/query.json deleted file mode 100644 index 0d85cb022..000000000 --- a/schemas/astroport-staking/raw/query.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Config returns the contract configuration specified in a custom [`Config`] structure", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns xASTRO total supply. Duplicates TotalSupplyAt { timestamp: None } logic but kept for backward compatibility.", - "type": "object", - "required": [ - "total_shares" - ], - "properties": { - "total_shares": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns total ASTRO staked in the contract", - "type": "object", - "required": [ - "total_deposit" - ], - "properties": { - "total_deposit": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "tracker_config" - ], - "properties": { - "tracker_config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "BalanceAt returns xASTRO balance of the given address at at the given timestamp. Returns current balance if timestamp unset.", - "type": "object", - "required": [ - "balance_at" - ], - "properties": { - "balance_at": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "timestamp": { - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "TotalSupplyAt returns xASTRO total token supply at the given timestamp. Returns current total supply if timestamp unset.", - "type": "object", - "required": [ - "total_supply_at" - ], - "properties": { - "total_supply_at": { - "type": "object", - "properties": { - "timestamp": { - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] -} diff --git a/schemas/astroport-staking/raw/response_to_balance_at.json b/schemas/astroport-staking/raw/response_to_balance_at.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-staking/raw/response_to_balance_at.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-staking/raw/response_to_config.json b/schemas/astroport-staking/raw/response_to_config.json deleted file mode 100644 index 26684cfb5..000000000 --- a/schemas/astroport-staking/raw/response_to_config.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Config", - "description": "This structure stores the main parameters for the staking contract.", - "type": "object", - "required": [ - "astro_denom", - "xastro_denom" - ], - "properties": { - "astro_denom": { - "description": "The ASTRO token denom", - "type": "string" - }, - "xastro_denom": { - "description": "The xASTRO token denom", - "type": "string" - } - }, - "additionalProperties": false -} diff --git a/schemas/astroport-staking/raw/response_to_total_deposit.json b/schemas/astroport-staking/raw/response_to_total_deposit.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-staking/raw/response_to_total_deposit.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-staking/raw/response_to_total_shares.json b/schemas/astroport-staking/raw/response_to_total_shares.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-staking/raw/response_to_total_shares.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-staking/raw/response_to_total_supply_at.json b/schemas/astroport-staking/raw/response_to_total_supply_at.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-staking/raw/response_to_total_supply_at.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-staking/raw/response_to_tracker_config.json b/schemas/astroport-staking/raw/response_to_tracker_config.json deleted file mode 100644 index 0824f5cbf..000000000 --- a/schemas/astroport-staking/raw/response_to_tracker_config.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "TrackerData", - "description": "This structure stores the tracking contract data.", - "type": "object", - "required": [ - "admin", - "code_id", - "token_factory_addr", - "tracker_addr" - ], - "properties": { - "admin": { - "description": "Tracking contract admin", - "type": "string" - }, - "code_id": { - "description": "Tracking contract code id", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "token_factory_addr": { - "description": "Token factory module address", - "type": "string" - }, - "tracker_addr": { - "description": "Tracker contract address", - "type": "string" - } - }, - "additionalProperties": false -} diff --git a/schemas/astroport-vesting/astroport-vesting.json b/schemas/astroport-vesting/astroport-vesting.json deleted file mode 100644 index 14372c857..000000000 --- a/schemas/astroport-vesting/astroport-vesting.json +++ /dev/null @@ -1,868 +0,0 @@ -{ - "contract_name": "astroport-vesting", - "contract_version": "1.4.0", - "idl_version": "1.0.0", - "instantiate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "owner", - "vesting_token" - ], - "properties": { - "owner": { - "description": "Address allowed to change contract parameters", - "type": "string" - }, - "vesting_token": { - "description": "[`AssetInfo`] of the token that's being vested", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } - }, - "execute": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Claim claims vested tokens and sends them to a recipient", - "type": "object", - "required": [ - "claim" - ], - "properties": { - "claim": { - "type": "object", - "properties": { - "amount": { - "description": "The amount of tokens to claim", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "recipient": { - "description": "The address that receives the vested tokens", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Receives a message of type [`Cw20ReceiveMsg`] and processes it depending on the received template", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "RegisterVestingAccounts registers vesting targets/accounts", - "type": "object", - "required": [ - "register_vesting_accounts" - ], - "properties": { - "register_vesting_accounts": { - "type": "object", - "required": [ - "vesting_accounts" - ], - "properties": { - "vesting_accounts": { - "type": "array", - "items": { - "$ref": "#/definitions/VestingAccount" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Withdraws from current active schedule. Setups a new schedule with the remaining amount.", - "type": "object", - "required": [ - "withdraw_from_active_schedule" - ], - "properties": { - "withdraw_from_active_schedule": { - "type": "object", - "required": [ - "account", - "withdraw_amount" - ], - "properties": { - "account": { - "description": "The account from which tokens will be withdrawn", - "type": "string" - }, - "recipient": { - "description": "The address that receives the vested tokens", - "type": [ - "string", - "null" - ] - }, - "withdraw_amount": { - "description": "The amount of tokens to withdraw", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Creates a request to change contract ownership ## Executor Only the current owner can execute this", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The validity period of the offer to change the owner", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "The newly proposed owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Removes a request to change contract ownership ## Executor Only the current owner can execute this", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Claims contract ownership ## Executor Only the newly proposed owner can execute this", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "VestingAccount": { - "description": "This structure stores vesting information for a specific address that is getting tokens.", - "type": "object", - "required": [ - "address", - "schedules" - ], - "properties": { - "address": { - "description": "The address that is getting tokens", - "type": "string" - }, - "schedules": { - "description": "The vesting schedules targeted at the `address`", - "type": "array", - "items": { - "$ref": "#/definitions/VestingSchedule" - } - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "description": "This structure stores parameters for a specific vesting schedule", - "type": "object", - "required": [ - "start_point" - ], - "properties": { - "end_point": { - "description": "The end point for the vesting schedule", - "anyOf": [ - { - "$ref": "#/definitions/VestingSchedulePoint" - }, - { - "type": "null" - } - ] - }, - "start_point": { - "description": "The start date for the vesting schedule", - "allOf": [ - { - "$ref": "#/definitions/VestingSchedulePoint" - } - ] - } - }, - "additionalProperties": false - }, - "VestingSchedulePoint": { - "description": "This structure stores the parameters used to create a vesting schedule.", - "type": "object", - "required": [ - "amount", - "time" - ], - "properties": { - "amount": { - "description": "The amount of tokens being vested", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "time": { - "description": "The start time for the vesting schedule", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - } - }, - "query": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns the configuration for the contract using a [`ConfigResponse`] object.", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about an address vesting tokens using a [`VestingAccountResponse`] object.", - "type": "object", - "required": [ - "vesting_account" - ], - "properties": { - "vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns a list of addresses that are vesting tokens using a [`VestingAccountsResponse`] object.", - "type": "object", - "required": [ - "vesting_accounts" - ], - "properties": { - "vesting_accounts": { - "type": "object", - "properties": { - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "order_by": { - "anyOf": [ - { - "$ref": "#/definitions/OrderBy" - }, - { - "type": "null" - } - ] - }, - "start_after": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the total unvested amount of tokens for a specific address.", - "type": "object", - "required": [ - "available_amount" - ], - "properties": { - "available_amount": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Timestamp returns the current timestamp", - "type": "object", - "required": [ - "timestamp" - ], - "properties": { - "timestamp": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "OrderBy": { - "description": "This enum describes the types of sorting that can be applied to some piece of data", - "type": "string", - "enum": [ - "asc", - "desc" - ] - } - } - }, - "migrate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "description": "This structure describes migration message.", - "type": "object", - "required": [ - "converter_contract" - ], - "properties": { - "converter_contract": { - "description": "Special migration message needed during the Hub move. Cw admin must be very cautious supplying correct converter contract.", - "type": "string" - } - }, - "additionalProperties": false - }, - "sudo": null, - "responses": { - "available_amount": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "config": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This structure describes a custom struct used to return the contract configuration.", - "type": "object", - "required": [ - "owner", - "vesting_token" - ], - "properties": { - "owner": { - "description": "Address allowed to set contract parameters", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "vesting_token": { - "description": "[`AssetInfo`] of the token being vested", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } - }, - "timestamp": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "uint64", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "vesting_account": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountResponse", - "description": "This structure describes a custom struct used to return vesting data about a specific vesting target.", - "type": "object", - "required": [ - "address", - "info" - ], - "properties": { - "address": { - "description": "The address that's vesting tokens", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "info": { - "description": "Vesting information", - "allOf": [ - { - "$ref": "#/definitions/VestingInfo" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "VestingInfo": { - "description": "This structure stores parameters for a batch of vesting schedules.", - "type": "object", - "required": [ - "released_amount", - "schedules" - ], - "properties": { - "released_amount": { - "description": "The total amount of ASTRO already claimed", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "schedules": { - "description": "The vesting schedules", - "type": "array", - "items": { - "$ref": "#/definitions/VestingSchedule" - } - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "description": "This structure stores parameters for a specific vesting schedule", - "type": "object", - "required": [ - "start_point" - ], - "properties": { - "end_point": { - "description": "The end point for the vesting schedule", - "anyOf": [ - { - "$ref": "#/definitions/VestingSchedulePoint" - }, - { - "type": "null" - } - ] - }, - "start_point": { - "description": "The start date for the vesting schedule", - "allOf": [ - { - "$ref": "#/definitions/VestingSchedulePoint" - } - ] - } - }, - "additionalProperties": false - }, - "VestingSchedulePoint": { - "description": "This structure stores the parameters used to create a vesting schedule.", - "type": "object", - "required": [ - "amount", - "time" - ], - "properties": { - "amount": { - "description": "The amount of tokens being vested", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "time": { - "description": "The start time for the vesting schedule", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - } - }, - "vesting_accounts": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountsResponse", - "description": "This structure describes a custom struct used to return vesting data for multiple vesting targets.", - "type": "object", - "required": [ - "vesting_accounts" - ], - "properties": { - "vesting_accounts": { - "description": "A list of accounts that are vesting tokens", - "type": "array", - "items": { - "$ref": "#/definitions/VestingAccountResponse" - } - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "VestingAccountResponse": { - "description": "This structure describes a custom struct used to return vesting data about a specific vesting target.", - "type": "object", - "required": [ - "address", - "info" - ], - "properties": { - "address": { - "description": "The address that's vesting tokens", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "info": { - "description": "Vesting information", - "allOf": [ - { - "$ref": "#/definitions/VestingInfo" - } - ] - } - }, - "additionalProperties": false - }, - "VestingInfo": { - "description": "This structure stores parameters for a batch of vesting schedules.", - "type": "object", - "required": [ - "released_amount", - "schedules" - ], - "properties": { - "released_amount": { - "description": "The total amount of ASTRO already claimed", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "schedules": { - "description": "The vesting schedules", - "type": "array", - "items": { - "$ref": "#/definitions/VestingSchedule" - } - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "description": "This structure stores parameters for a specific vesting schedule", - "type": "object", - "required": [ - "start_point" - ], - "properties": { - "end_point": { - "description": "The end point for the vesting schedule", - "anyOf": [ - { - "$ref": "#/definitions/VestingSchedulePoint" - }, - { - "type": "null" - } - ] - }, - "start_point": { - "description": "The start date for the vesting schedule", - "allOf": [ - { - "$ref": "#/definitions/VestingSchedulePoint" - } - ] - } - }, - "additionalProperties": false - }, - "VestingSchedulePoint": { - "description": "This structure stores the parameters used to create a vesting schedule.", - "type": "object", - "required": [ - "amount", - "time" - ], - "properties": { - "amount": { - "description": "The amount of tokens being vested", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "time": { - "description": "The start time for the vesting schedule", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - } - } - } -} diff --git a/schemas/astroport-vesting/raw/execute.json b/schemas/astroport-vesting/raw/execute.json deleted file mode 100644 index 129698a57..000000000 --- a/schemas/astroport-vesting/raw/execute.json +++ /dev/null @@ -1,283 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "This structure describes the execute messages available in the contract.", - "oneOf": [ - { - "description": "Claim claims vested tokens and sends them to a recipient", - "type": "object", - "required": [ - "claim" - ], - "properties": { - "claim": { - "type": "object", - "properties": { - "amount": { - "description": "The amount of tokens to claim", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "recipient": { - "description": "The address that receives the vested tokens", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Receives a message of type [`Cw20ReceiveMsg`] and processes it depending on the received template", - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "RegisterVestingAccounts registers vesting targets/accounts", - "type": "object", - "required": [ - "register_vesting_accounts" - ], - "properties": { - "register_vesting_accounts": { - "type": "object", - "required": [ - "vesting_accounts" - ], - "properties": { - "vesting_accounts": { - "type": "array", - "items": { - "$ref": "#/definitions/VestingAccount" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Withdraws from current active schedule. Setups a new schedule with the remaining amount.", - "type": "object", - "required": [ - "withdraw_from_active_schedule" - ], - "properties": { - "withdraw_from_active_schedule": { - "type": "object", - "required": [ - "account", - "withdraw_amount" - ], - "properties": { - "account": { - "description": "The account from which tokens will be withdrawn", - "type": "string" - }, - "recipient": { - "description": "The address that receives the vested tokens", - "type": [ - "string", - "null" - ] - }, - "withdraw_amount": { - "description": "The amount of tokens to withdraw", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Creates a request to change contract ownership ## Executor Only the current owner can execute this", - "type": "object", - "required": [ - "propose_new_owner" - ], - "properties": { - "propose_new_owner": { - "type": "object", - "required": [ - "expires_in", - "owner" - ], - "properties": { - "expires_in": { - "description": "The validity period of the offer to change the owner", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "owner": { - "description": "The newly proposed owner", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Removes a request to change contract ownership ## Executor Only the current owner can execute this", - "type": "object", - "required": [ - "drop_ownership_proposal" - ], - "properties": { - "drop_ownership_proposal": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Claims contract ownership ## Executor Only the newly proposed owner can execute this", - "type": "object", - "required": [ - "claim_ownership" - ], - "properties": { - "claim_ownership": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "VestingAccount": { - "description": "This structure stores vesting information for a specific address that is getting tokens.", - "type": "object", - "required": [ - "address", - "schedules" - ], - "properties": { - "address": { - "description": "The address that is getting tokens", - "type": "string" - }, - "schedules": { - "description": "The vesting schedules targeted at the `address`", - "type": "array", - "items": { - "$ref": "#/definitions/VestingSchedule" - } - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "description": "This structure stores parameters for a specific vesting schedule", - "type": "object", - "required": [ - "start_point" - ], - "properties": { - "end_point": { - "description": "The end point for the vesting schedule", - "anyOf": [ - { - "$ref": "#/definitions/VestingSchedulePoint" - }, - { - "type": "null" - } - ] - }, - "start_point": { - "description": "The start date for the vesting schedule", - "allOf": [ - { - "$ref": "#/definitions/VestingSchedulePoint" - } - ] - } - }, - "additionalProperties": false - }, - "VestingSchedulePoint": { - "description": "This structure stores the parameters used to create a vesting schedule.", - "type": "object", - "required": [ - "amount", - "time" - ], - "properties": { - "amount": { - "description": "The amount of tokens being vested", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "time": { - "description": "The start time for the vesting schedule", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - } -} diff --git a/schemas/astroport-vesting/raw/instantiate.json b/schemas/astroport-vesting/raw/instantiate.json deleted file mode 100644 index 094d61f3a..000000000 --- a/schemas/astroport-vesting/raw/instantiate.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a contract.", - "type": "object", - "required": [ - "owner", - "vesting_token" - ], - "properties": { - "owner": { - "description": "Address allowed to change contract parameters", - "type": "string" - }, - "vesting_token": { - "description": "[`AssetInfo`] of the token that's being vested", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-vesting/raw/migrate.json b/schemas/astroport-vesting/raw/migrate.json deleted file mode 100644 index 196967242..000000000 --- a/schemas/astroport-vesting/raw/migrate.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "description": "This structure describes migration message.", - "type": "object", - "required": [ - "converter_contract" - ], - "properties": { - "converter_contract": { - "description": "Special migration message needed during the Hub move. Cw admin must be very cautious supplying correct converter contract.", - "type": "string" - } - }, - "additionalProperties": false -} diff --git a/schemas/astroport-vesting/raw/query.json b/schemas/astroport-vesting/raw/query.json deleted file mode 100644 index c7c1852c7..000000000 --- a/schemas/astroport-vesting/raw/query.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This structure describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Returns the configuration for the contract using a [`ConfigResponse`] object.", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns information about an address vesting tokens using a [`VestingAccountResponse`] object.", - "type": "object", - "required": [ - "vesting_account" - ], - "properties": { - "vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns a list of addresses that are vesting tokens using a [`VestingAccountsResponse`] object.", - "type": "object", - "required": [ - "vesting_accounts" - ], - "properties": { - "vesting_accounts": { - "type": "object", - "properties": { - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "order_by": { - "anyOf": [ - { - "$ref": "#/definitions/OrderBy" - }, - { - "type": "null" - } - ] - }, - "start_after": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the total unvested amount of tokens for a specific address.", - "type": "object", - "required": [ - "available_amount" - ], - "properties": { - "available_amount": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Timestamp returns the current timestamp", - "type": "object", - "required": [ - "timestamp" - ], - "properties": { - "timestamp": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "OrderBy": { - "description": "This enum describes the types of sorting that can be applied to some piece of data", - "type": "string", - "enum": [ - "asc", - "desc" - ] - } - } -} diff --git a/schemas/astroport-vesting/raw/response_to_available_amount.json b/schemas/astroport-vesting/raw/response_to_available_amount.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-vesting/raw/response_to_available_amount.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/schemas/astroport-vesting/raw/response_to_config.json b/schemas/astroport-vesting/raw/response_to_config.json deleted file mode 100644 index 543fb35a8..000000000 --- a/schemas/astroport-vesting/raw/response_to_config.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigResponse", - "description": "This structure describes a custom struct used to return the contract configuration.", - "type": "object", - "required": [ - "owner", - "vesting_token" - ], - "properties": { - "owner": { - "description": "Address allowed to set contract parameters", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "vesting_token": { - "description": "[`AssetInfo`] of the token being vested", - "allOf": [ - { - "$ref": "#/definitions/AssetInfo" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "AssetInfo": { - "description": "This enum describes available Token types. ## Examples ``` # use cosmwasm_std::Addr; # use astroport::asset::AssetInfo::{NativeToken, Token}; Token { contract_addr: Addr::unchecked(\"stake...\") }; NativeToken { denom: String::from(\"uluna\") }; ```", - "oneOf": [ - { - "description": "Non-native Token", - "type": "object", - "required": [ - "token" - ], - "properties": { - "token": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Native token", - "type": "object", - "required": [ - "native_token" - ], - "properties": { - "native_token": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schemas/astroport-vesting/raw/response_to_timestamp.json b/schemas/astroport-vesting/raw/response_to_timestamp.json deleted file mode 100644 index 7b729a7b9..000000000 --- a/schemas/astroport-vesting/raw/response_to_timestamp.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "uint64", - "type": "integer", - "format": "uint64", - "minimum": 0.0 -} diff --git a/schemas/astroport-vesting/raw/response_to_vesting_account.json b/schemas/astroport-vesting/raw/response_to_vesting_account.json deleted file mode 100644 index d5bb1f361..000000000 --- a/schemas/astroport-vesting/raw/response_to_vesting_account.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountResponse", - "description": "This structure describes a custom struct used to return vesting data about a specific vesting target.", - "type": "object", - "required": [ - "address", - "info" - ], - "properties": { - "address": { - "description": "The address that's vesting tokens", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "info": { - "description": "Vesting information", - "allOf": [ - { - "$ref": "#/definitions/VestingInfo" - } - ] - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "VestingInfo": { - "description": "This structure stores parameters for a batch of vesting schedules.", - "type": "object", - "required": [ - "released_amount", - "schedules" - ], - "properties": { - "released_amount": { - "description": "The total amount of ASTRO already claimed", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "schedules": { - "description": "The vesting schedules", - "type": "array", - "items": { - "$ref": "#/definitions/VestingSchedule" - } - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "description": "This structure stores parameters for a specific vesting schedule", - "type": "object", - "required": [ - "start_point" - ], - "properties": { - "end_point": { - "description": "The end point for the vesting schedule", - "anyOf": [ - { - "$ref": "#/definitions/VestingSchedulePoint" - }, - { - "type": "null" - } - ] - }, - "start_point": { - "description": "The start date for the vesting schedule", - "allOf": [ - { - "$ref": "#/definitions/VestingSchedulePoint" - } - ] - } - }, - "additionalProperties": false - }, - "VestingSchedulePoint": { - "description": "This structure stores the parameters used to create a vesting schedule.", - "type": "object", - "required": [ - "amount", - "time" - ], - "properties": { - "amount": { - "description": "The amount of tokens being vested", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "time": { - "description": "The start time for the vesting schedule", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - } -} diff --git a/schemas/astroport-vesting/raw/response_to_vesting_accounts.json b/schemas/astroport-vesting/raw/response_to_vesting_accounts.json deleted file mode 100644 index 3eda33d18..000000000 --- a/schemas/astroport-vesting/raw/response_to_vesting_accounts.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountsResponse", - "description": "This structure describes a custom struct used to return vesting data for multiple vesting targets.", - "type": "object", - "required": [ - "vesting_accounts" - ], - "properties": { - "vesting_accounts": { - "description": "A list of accounts that are vesting tokens", - "type": "array", - "items": { - "$ref": "#/definitions/VestingAccountResponse" - } - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "VestingAccountResponse": { - "description": "This structure describes a custom struct used to return vesting data about a specific vesting target.", - "type": "object", - "required": [ - "address", - "info" - ], - "properties": { - "address": { - "description": "The address that's vesting tokens", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "info": { - "description": "Vesting information", - "allOf": [ - { - "$ref": "#/definitions/VestingInfo" - } - ] - } - }, - "additionalProperties": false - }, - "VestingInfo": { - "description": "This structure stores parameters for a batch of vesting schedules.", - "type": "object", - "required": [ - "released_amount", - "schedules" - ], - "properties": { - "released_amount": { - "description": "The total amount of ASTRO already claimed", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "schedules": { - "description": "The vesting schedules", - "type": "array", - "items": { - "$ref": "#/definitions/VestingSchedule" - } - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "description": "This structure stores parameters for a specific vesting schedule", - "type": "object", - "required": [ - "start_point" - ], - "properties": { - "end_point": { - "description": "The end point for the vesting schedule", - "anyOf": [ - { - "$ref": "#/definitions/VestingSchedulePoint" - }, - { - "type": "null" - } - ] - }, - "start_point": { - "description": "The start date for the vesting schedule", - "allOf": [ - { - "$ref": "#/definitions/VestingSchedulePoint" - } - ] - } - }, - "additionalProperties": false - }, - "VestingSchedulePoint": { - "description": "This structure stores the parameters used to create a vesting schedule.", - "type": "object", - "required": [ - "amount", - "time" - ], - "properties": { - "amount": { - "description": "The amount of tokens being vested", - "allOf": [ - { - "$ref": "#/definitions/Uint128" - } - ] - }, - "time": { - "description": "The start time for the vesting schedule", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - } -} diff --git a/schemas/astroport-whitelist/astroport-whitelist.json b/schemas/astroport-whitelist/astroport-whitelist.json index f16c11415..064e383af 100644 --- a/schemas/astroport-whitelist/astroport-whitelist.json +++ b/schemas/astroport-whitelist/astroport-whitelist.json @@ -43,7 +43,7 @@ "msgs": { "type": "array", "items": { - "$ref": "#/definitions/CosmosMsg_for_NeutronMsg" + "$ref": "#/definitions/CosmosMsg_for_Empty" } } }, @@ -93,161 +93,6 @@ } ], "definitions": { - "AdminProposal": { - "description": "AdminProposal defines the struct for various proposals which Neutron's Admin Module may accept.", - "oneOf": [ - { - "description": "Proposal to change params. Note that this works for old params. New params has their own `MsgUpdateParams` msgs that can be supplied to `ProposalExecuteMessage`", - "type": "object", - "required": [ - "param_change_proposal" - ], - "properties": { - "param_change_proposal": { - "$ref": "#/definitions/ParamChangeProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Proposal to upgrade IBC client", - "type": "object", - "required": [ - "upgrade_proposal" - ], - "properties": { - "upgrade_proposal": { - "$ref": "#/definitions/UpgradeProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Proposal to update IBC client", - "type": "object", - "required": [ - "client_update_proposal" - ], - "properties": { - "client_update_proposal": { - "$ref": "#/definitions/ClientUpdateProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Proposal to execute CosmosMsg.", - "type": "object", - "required": [ - "proposal_execute_message" - ], - "properties": { - "proposal_execute_message": { - "$ref": "#/definitions/ProposalExecuteMessage" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated. Proposal to upgrade network", - "deprecated": true, - "type": "object", - "required": [ - "software_upgrade_proposal" - ], - "properties": { - "software_upgrade_proposal": { - "$ref": "#/definitions/SoftwareUpgradeProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated. Proposal to cancel existing software upgrade", - "deprecated": true, - "type": "object", - "required": [ - "cancel_software_upgrade_proposal" - ], - "properties": { - "cancel_software_upgrade_proposal": { - "$ref": "#/definitions/CancelSoftwareUpgradeProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated. Will fail to execute if you use it. Deprecated. Proposal to pin wasm contract codes", - "deprecated": true, - "type": "object", - "required": [ - "pin_codes_proposal" - ], - "properties": { - "pin_codes_proposal": { - "$ref": "#/definitions/PinCodesProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated. Deprecated. Proposal to unpin wasm contract codes.", - "deprecated": true, - "type": "object", - "required": [ - "unpin_codes_proposal" - ], - "properties": { - "unpin_codes_proposal": { - "$ref": "#/definitions/UnpinCodesProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated. Proposal to call sudo on contract.", - "deprecated": true, - "type": "object", - "required": [ - "sudo_contract_proposal" - ], - "properties": { - "sudo_contract_proposal": { - "$ref": "#/definitions/SudoContractProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated. Proposal to update contract admin.", - "deprecated": true, - "type": "object", - "required": [ - "update_admin_proposal" - ], - "properties": { - "update_admin_proposal": { - "$ref": "#/definitions/UpdateAdminProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated. Proposal to clear contract admin.", - "deprecated": true, - "type": "object", - "required": [ - "clear_admin_proposal" - ], - "properties": { - "clear_admin_proposal": { - "$ref": "#/definitions/ClearAdminProposal" - } - }, - "additionalProperties": false - } - ] - }, "BankMsg": { "description": "The message types of the bank module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/bank/v1beta1/tx.proto", "oneOf": [ @@ -309,77 +154,6 @@ "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", "type": "string" }, - "CancelSoftwareUpgradeProposal": { - "description": "Deprecated. CancelSoftwareUpgradeProposal defines the struct for cancel software upgrade proposal.", - "deprecated": true, - "type": "object", - "required": [ - "description", - "title" - ], - "properties": { - "description": { - "description": "*description** is a text description of proposal. Non unique.", - "type": "string" - }, - "title": { - "description": "*title** is a text title of proposal. Non unique.", - "type": "string" - } - } - }, - "ClearAdminProposal": { - "description": "Deprecated. SudoContractProposal defines the struct for clear admin proposal.", - "deprecated": true, - "type": "object", - "required": [ - "contract", - "description", - "title" - ], - "properties": { - "contract": { - "description": "*contract** is an address of contract admin will be removed.", - "type": "string" - }, - "description": { - "description": "*description** is a text description of proposal.", - "type": "string" - }, - "title": { - "description": "*title** is a text title of proposal.", - "type": "string" - } - } - }, - "ClientUpdateProposal": { - "description": "ClientUpdateProposal defines the struct for client update proposal.", - "type": "object", - "required": [ - "description", - "subject_client_id", - "substitute_client_id", - "title" - ], - "properties": { - "description": { - "description": "*description** is a text description of proposal. Non unique.", - "type": "string" - }, - "subject_client_id": { - "description": "*subject_client_id** is a subject client id.", - "type": "string" - }, - "substitute_client_id": { - "description": "*substitute_client_id** is a substitute client id.", - "type": "string" - }, - "title": { - "description": "*title** is a text title of proposal.", - "type": "string" - } - } - }, "Coin": { "type": "object", "required": [ @@ -395,7 +169,7 @@ } } }, - "CosmosMsg_for_NeutronMsg": { + "CosmosMsg_for_Empty": { "oneOf": [ { "type": "object", @@ -416,7 +190,7 @@ ], "properties": { "custom": { - "$ref": "#/definitions/NeutronMsg" + "$ref": "#/definitions/Empty" } }, "additionalProperties": false @@ -508,31 +282,6 @@ } ] }, - "DenomUnit": { - "description": "Replicates the cosmos-sdk bank module DenomUnit type", - "type": "object", - "required": [ - "aliases", - "denom", - "exponent" - ], - "properties": { - "aliases": { - "type": "array", - "items": { - "type": "string" - } - }, - "denom": { - "type": "string" - }, - "exponent": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - } - }, "DistributionMsg": { "description": "The message types of the distribution module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto", "oneOf": [ @@ -582,6 +331,10 @@ } ] }, + "Empty": { + "description": "An empty struct that serves as a placeholder in different places, such as contracts that don't set a custom message.\n\nIt is designed to be expressable in correct JSON and JSON Schema but contains no meaningful data. Previously we used enums without cases, but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)", + "type": "object" + }, "GovMsg": { "description": "This message type allows the contract interact with the [x/gov] module in order to cast votes.\n\n[x/gov]: https://github.com/cosmos/cosmos-sdk/tree/v0.45.12/x/gov\n\n## Examples\n\nCast a simple vote:\n\n``` # use cosmwasm_std::{ # HexBinary, # Storage, Api, Querier, DepsMut, Deps, entry_point, Env, StdError, MessageInfo, # Response, QueryResponse, # }; # type ExecuteMsg = (); use cosmwasm_std::{GovMsg, VoteOption};\n\n#[entry_point] pub fn execute( deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg, ) -> Result { // ... Ok(Response::new().add_message(GovMsg::Vote { proposal_id: 4, vote: VoteOption::Yes, })) } ```\n\nCast a weighted vote:\n\n``` # use cosmwasm_std::{ # HexBinary, # Storage, Api, Querier, DepsMut, Deps, entry_point, Env, StdError, MessageInfo, # Response, QueryResponse, # }; # type ExecuteMsg = (); # #[cfg(feature = \"cosmwasm_1_2\")] use cosmwasm_std::{Decimal, GovMsg, VoteOption, WeightedVoteOption};\n\n# #[cfg(feature = \"cosmwasm_1_2\")] #[entry_point] pub fn execute( deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg, ) -> Result { // ... Ok(Response::new().add_message(GovMsg::VoteWeighted { proposal_id: 4, options: vec![ WeightedVoteOption { option: VoteOption::Yes, weight: Decimal::percent(65), }, WeightedVoteOption { option: VoteOption::Abstain, weight: Decimal::percent(35), }, ], })) } ```", "oneOf": [ @@ -619,38 +372,6 @@ } ] }, - "IbcFee": { - "description": "IbcFee defines struct for fees that refund the relayer for `SudoMsg` messages submission. Unused fee kind will be returned back to message sender. Please refer to these links for more information: IBC transaction structure - General mechanics of fee payments - ", - "type": "object", - "required": [ - "ack_fee", - "recv_fee", - "timeout_fee" - ], - "properties": { - "ack_fee": { - "description": "*ack_fee** is an amount of coins to refund relayer for submitting ack message for a particular IBC packet.", - "type": "array", - "items": { - "$ref": "#/definitions/Coin" - } - }, - "recv_fee": { - "description": "**recv_fee** currently is used for compatibility with ICS-29 interface only and must be set to zero (i.e. 0untrn), because Neutron's fee module can't refund relayer for submission of Recv IBC packets due to compatibility with target chains.", - "type": "array", - "items": { - "$ref": "#/definitions/Coin" - } - }, - "timeout_fee": { - "description": "*timeout_fee** amount of coins to refund relayer for submitting timeout message for a particular IBC packet.", - "type": "array", - "items": { - "$ref": "#/definitions/Coin" - } - } - } - }, "IbcMsg": { "description": "These are messages in the IBC lifecycle. Only usable by IBC-enabled contracts (contracts that directly speak the IBC protocol via 6 entry points)", "oneOf": [ @@ -804,80 +525,28 @@ } } }, - "KVKey": { - "description": "Describes a KV key for which you want to get value from the storage on remote chain", - "type": "object", - "required": [ - "key", - "path" - ], - "properties": { - "key": { - "description": "*key** is a key you want to read from the storage", - "allOf": [ - { - "$ref": "#/definitions/Binary" - } - ] - }, - "path": { - "description": "*path** is a path to the storage (storage prefix) where you want to read value by key (usually name of cosmos-packages module: 'staking', 'bank', etc.)", - "type": "string" - } - } - }, - "MsgExecuteContract": { - "description": "MsgExecuteContract defines a call to the contract execution", - "type": "object", - "required": [ - "contract", - "msg" - ], - "properties": { - "contract": { - "description": "*contract** is a contract address that will be called", - "type": "string" - }, - "msg": { - "description": "*msg** is a contract call message", - "type": "string" - } - } - }, - "NeutronMsg": { - "description": "A number of Custom messages that can call into the Neutron bindings.", + "StakingMsg": { + "description": "The message types of the staking module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto", "oneOf": [ { - "description": "RegisterInterchainAccount registers an interchain account on remote chain.", + "description": "This is translated to a [MsgDelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L81-L90). `delegator_address` is automatically filled with the current contract's address.", "type": "object", "required": [ - "register_interchain_account" + "delegate" ], "properties": { - "register_interchain_account": { + "delegate": { "type": "object", "required": [ - "connection_id", - "interchain_account_id" + "amount", + "validator" ], "properties": { - "connection_id": { - "description": "*connection_id** is an IBC connection identifier between Neutron and remote chain.", - "type": "string" + "amount": { + "$ref": "#/definitions/Coin" }, - "interchain_account_id": { - "description": "**interchain_account_id** is an identifier of your new interchain account. Can be any string. This identifier allows contracts to have multiple interchain accounts on remote chains.", + "validator": { "type": "string" - }, - "register_fee": { - "description": "*register_fee** is a fees required to be payed to register interchain account", - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Coin" - } } } } @@ -885,55 +554,24 @@ "additionalProperties": false }, { - "description": "SubmitTx starts the process of executing any Cosmos-SDK *msgs* on remote chain.", + "description": "This is translated to a [MsgUndelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L112-L121). `delegator_address` is automatically filled with the current contract's address.", "type": "object", "required": [ - "submit_tx" + "undelegate" ], "properties": { - "submit_tx": { + "undelegate": { "type": "object", "required": [ - "connection_id", - "fee", - "interchain_account_id", - "memo", - "msgs", - "timeout" + "amount", + "validator" ], "properties": { - "connection_id": { - "description": "*connection_id** is an IBC connection identifier between Neutron and remote chain.", - "type": "string" - }, - "fee": { - "description": "**fee** is an ibc fee for the transaction.", - "allOf": [ - { - "$ref": "#/definitions/IbcFee" - } - ] - }, - "interchain_account_id": { - "description": "*interchain_account_id** is an identifier of your interchain account from which you want to execute msgs.", - "type": "string" + "amount": { + "$ref": "#/definitions/Coin" }, - "memo": { - "description": "*memo** is a memo you want to attach to your interchain transaction.It behaves like a memo in usual Cosmos transaction.", + "validator": { "type": "string" - }, - "msgs": { - "description": "*msgs** is a list of protobuf encoded Cosmos-SDK messages you want to execute on remote chain.", - "type": "array", - "items": { - "$ref": "#/definitions/ProtobufAny" - } - }, - "timeout": { - "description": "*timeout** is a timeout in seconds after which the packet times out.", - "type": "integer", - "format": "uint64", - "minimum": 0.0 } } } @@ -941,769 +579,27 @@ "additionalProperties": false }, { - "description": "RegisterInterchainQuery registers an interchain query.", + "description": "This is translated to a [MsgBeginRedelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L95-L105). `delegator_address` is automatically filled with the current contract's address.", "type": "object", "required": [ - "register_interchain_query" + "redelegate" ], "properties": { - "register_interchain_query": { + "redelegate": { "type": "object", "required": [ - "connection_id", - "keys", - "query_type", - "transactions_filter", - "update_period" + "amount", + "dst_validator", + "src_validator" ], "properties": { - "connection_id": { - "description": "*connection_id** is an IBC connection identifier between Neutron and remote chain.", - "type": "string" - }, - "keys": { - "description": "*keys** is the KV-storage keys for which we want to get values from remote chain.", - "type": "array", - "items": { - "$ref": "#/definitions/KVKey" - } + "amount": { + "$ref": "#/definitions/Coin" }, - "query_type": { - "description": "*query_type** is a query type identifier ('tx' or 'kv' for now).", + "dst_validator": { "type": "string" }, - "transactions_filter": { - "description": "*transactions_filter** is the filter for transaction search ICQ.", - "type": "string" - }, - "update_period": { - "description": "*update_period** is used to say how often the query must be updated.", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - } - }, - "additionalProperties": false - }, - { - "description": "RegisterInterchainQuery updates an interchain query.", - "type": "object", - "required": [ - "update_interchain_query" - ], - "properties": { - "update_interchain_query": { - "type": "object", - "required": [ - "query_id" - ], - "properties": { - "new_keys": { - "description": "*new_keys** is the new query keys to retrive.", - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/KVKey" - } - }, - "new_transactions_filter": { - "description": "*new_transactions_filter** is a new transactions filter of the query.", - "type": [ - "string", - "null" - ] - }, - "new_update_period": { - "description": "*new_update_period** is a new update period of the query.", - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - }, - "query_id": { - "description": "*query_id** is the ID of the query we want to update.", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - } - }, - "additionalProperties": false - }, - { - "description": "RemoveInterchainQuery removes as interchain query.", - "type": "object", - "required": [ - "remove_interchain_query" - ], - "properties": { - "remove_interchain_query": { - "type": "object", - "required": [ - "query_id" - ], - "properties": { - "query_id": { - "description": "*query_id** is ID of the query we want to remove.", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - } - }, - "additionalProperties": false - }, - { - "description": "IbcTransfer sends a fungible token packet over IBC.", - "type": "object", - "required": [ - "ibc_transfer" - ], - "properties": { - "ibc_transfer": { - "type": "object", - "required": [ - "fee", - "memo", - "receiver", - "sender", - "source_channel", - "source_port", - "timeout_height", - "timeout_timestamp", - "token" - ], - "properties": { - "fee": { - "$ref": "#/definitions/IbcFee" - }, - "memo": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "sender": { - "type": "string" - }, - "source_channel": { - "type": "string" - }, - "source_port": { - "type": "string" - }, - "timeout_height": { - "$ref": "#/definitions/RequestPacketTimeoutHeight" - }, - "timeout_timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "token": { - "$ref": "#/definitions/Coin" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "SubmitAdminProposal sends a proposal to neutron's Admin module. This type of messages can be only executed by Neutron DAO.", - "type": "object", - "required": [ - "submit_admin_proposal" - ], - "properties": { - "submit_admin_proposal": { - "type": "object", - "required": [ - "admin_proposal" - ], - "properties": { - "admin_proposal": { - "$ref": "#/definitions/AdminProposal" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "TokenFactory message. Contracts can create denoms, namespaced under the contract's address. A contract may create any number of independent sub-denoms.", - "type": "object", - "required": [ - "create_denom" - ], - "properties": { - "create_denom": { - "type": "object", - "required": [ - "subdenom" - ], - "properties": { - "subdenom": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "TokenFactory message. Contracts can change the admin of a denom that they are the admin of.", - "type": "object", - "required": [ - "change_admin" - ], - "properties": { - "change_admin": { - "type": "object", - "required": [ - "denom", - "new_admin_address" - ], - "properties": { - "denom": { - "type": "string" - }, - "new_admin_address": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "TokenFactory message. Contracts can mint native tokens for an existing factory denom that they are the admin of.", - "type": "object", - "required": [ - "mint_tokens" - ], - "properties": { - "mint_tokens": { - "type": "object", - "required": [ - "amount", - "denom", - "mint_to_address" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "denom": { - "type": "string" - }, - "mint_to_address": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "TokenFactory message. Contracts can burn native tokens for an existing factory denom that they are the admin of. Currently, the burn from address must be the admin contract.", - "type": "object", - "required": [ - "burn_tokens" - ], - "properties": { - "burn_tokens": { - "type": "object", - "required": [ - "amount", - "burn_from_address", - "denom" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "burn_from_address": { - "description": "Must be set to `\"\"` for now", - "type": "string" - }, - "denom": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "TokenFactory message. Contracts can set before send hooks for denoms, namespaced under the contract's address.", - "type": "object", - "required": [ - "set_before_send_hook" - ], - "properties": { - "set_before_send_hook": { - "type": "object", - "required": [ - "contract_addr", - "denom" - ], - "properties": { - "contract_addr": { - "type": "string" - }, - "denom": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "TokenFactoryMessage Contracts can force specified `amount` of an existing factory denom that they are admin of to a `transfer_to_address` from a `transfer_from_address`.", - "type": "object", - "required": [ - "force_transfer" - ], - "properties": { - "force_transfer": { - "type": "object", - "required": [ - "amount", - "denom", - "transfer_from_address", - "transfer_to_address" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "denom": { - "type": "string" - }, - "transfer_from_address": { - "type": "string" - }, - "transfer_to_address": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "TokenFactoryMessage Contracts can set a metadata for of an existing factory denom that they are admin of.", - "type": "object", - "required": [ - "set_denom_metadata" - ], - "properties": { - "set_denom_metadata": { - "type": "object", - "required": [ - "base", - "denom_units", - "description", - "display", - "name", - "symbol", - "uri", - "uri_hash" - ], - "properties": { - "base": { - "description": "*base** represents the base denom (should be the DenomUnit with exponent = 0).", - "type": "string" - }, - "denom_units": { - "description": "*denom_units** represents the list of DenomUnit's for a given coin", - "type": "array", - "items": { - "$ref": "#/definitions/DenomUnit" - } - }, - "description": { - "description": "*description** description of a token", - "type": "string" - }, - "display": { - "description": "**display** indicates the suggested denom that should be displayed in clients.", - "type": "string" - }, - "name": { - "description": "*name** defines the name of the token (eg: Cosmos Atom)", - "type": "string" - }, - "symbol": { - "description": "**symbol** is the token symbol usually shown on exchanges (eg: ATOM). This can be the same as the display.", - "type": "string" - }, - "uri": { - "description": "*uri** to a document (on or off-chain) that contains additional information. Optional.", - "type": "string" - }, - "uri_hash": { - "description": "**uri_hash** is a sha256 hash of a document pointed by URI. It's used to verify that the document didn't change. Optional.", - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "AddSchedule adds new schedule with a given `name`. Until schedule is removed it will execute all `msgs` every `period` blocks. First execution is at least on `current_block + period` block. [Permissioned - DAO Only]", - "type": "object", - "required": [ - "add_schedule" - ], - "properties": { - "add_schedule": { - "type": "object", - "required": [ - "msgs", - "name", - "period" - ], - "properties": { - "msgs": { - "description": "list of cosmwasm messages to be executed", - "type": "array", - "items": { - "$ref": "#/definitions/MsgExecuteContract" - } - }, - "name": { - "description": "Name of a new schedule. Needed to be able to `RemoveSchedule` and to log information about it", - "type": "string" - }, - "period": { - "description": "period in blocks with which `msgs` will be executed", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - } - }, - "additionalProperties": false - }, - { - "description": "RemoveSchedule removes the schedule with a given `name`. [Permissioned - DAO or Security DAO only]", - "type": "object", - "required": [ - "remove_schedule" - ], - "properties": { - "remove_schedule": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "Contractmanager message Resubmits failed acknowledgement. Acknowledgement failure is created when contract returns error or acknowledgement is out of gas. [Permissioned - only from contract that is initial caller of IBC transaction]", - "type": "object", - "required": [ - "resubmit_failure" - ], - "properties": { - "resubmit_failure": { - "type": "object", - "required": [ - "failure_id" - ], - "properties": { - "failure_id": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - } - }, - "additionalProperties": false - } - ] - }, - "ParamChange": { - "description": "ParamChange defines the struct for parameter change request.", - "type": "object", - "required": [ - "key", - "subspace", - "value" - ], - "properties": { - "key": { - "description": "*key** is a name of parameter. Unique for subspace.", - "type": "string" - }, - "subspace": { - "description": "*subspace** is a key of module to which the parameter to change belongs. Unique for each module.", - "type": "string" - }, - "value": { - "description": "*value** is a new value for given parameter. Non unique.", - "type": "string" - } - } - }, - "ParamChangeProposal": { - "description": "ParamChangeProposal defines the struct for single parameter change proposal.", - "type": "object", - "required": [ - "description", - "param_changes", - "title" - ], - "properties": { - "description": { - "description": "*description** is a text description of proposal. Non unique.", - "type": "string" - }, - "param_changes": { - "description": "*param_changes** is a vector of params to be changed. Non unique.", - "type": "array", - "items": { - "$ref": "#/definitions/ParamChange" - } - }, - "title": { - "description": "*title** is a text title of proposal. Non unique.", - "type": "string" - } - } - }, - "PinCodesProposal": { - "description": "Deprecated. PinCodesProposal defines the struct for pin contract codes proposal.", - "deprecated": true, - "type": "object", - "required": [ - "code_ids", - "description", - "title" - ], - "properties": { - "code_ids": { - "description": "*code_ids** is an array of codes to be pined.", - "type": "array", - "items": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "description": { - "description": "*description** is a text description of proposal.", - "type": "string" - }, - "title": { - "description": "*title** is a text title of proposal.", - "type": "string" - } - } - }, - "Plan": { - "description": "Plan defines the struct for planned upgrade.", - "type": "object", - "required": [ - "height", - "info", - "name" - ], - "properties": { - "height": { - "description": "*height** is a height at which the upgrade must be performed", - "type": "integer", - "format": "int64" - }, - "info": { - "description": "*info** is any application specific upgrade info to be included on-chain", - "type": "string" - }, - "name": { - "description": "*name** is a name for the upgrade", - "type": "string" - } - } - }, - "ProposalExecuteMessage": { - "description": "ProposalExecuteMessage defines the struct for sdk47 compatible admin proposal.", - "type": "object", - "required": [ - "message" - ], - "properties": { - "message": { - "description": "*message** is a json representing an sdk message passed to admin module to execute.", - "type": "string" - } - } - }, - "ProtobufAny": { - "description": "Type for wrapping any protobuf message", - "type": "object", - "required": [ - "type_url", - "value" - ], - "properties": { - "type_url": { - "description": "*type_url** describes the type of the serialized message", - "type": "string" - }, - "value": { - "description": "*value** must be a valid serialized protocol buffer of the above specified type", - "allOf": [ - { - "$ref": "#/definitions/Binary" - } - ] - } - } - }, - "RequestPacketTimeoutHeight": { - "type": "object", - "properties": { - "revision_height": { - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - }, - "revision_number": { - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - } - } - }, - "SoftwareUpgradeProposal": { - "description": "Deprecated. SoftwareUpgradeProposal defines the struct for software upgrade proposal.", - "deprecated": true, - "type": "object", - "required": [ - "description", - "plan", - "title" - ], - "properties": { - "description": { - "description": "*description** is a text description of proposal. Non unique.", - "type": "string" - }, - "plan": { - "description": "*plan** is a plan of upgrade.", - "allOf": [ - { - "$ref": "#/definitions/Plan" - } - ] - }, - "title": { - "description": "*title** is a text title of proposal. Non unique.", - "type": "string" - } - } - }, - "StakingMsg": { - "description": "The message types of the staking module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto", - "oneOf": [ - { - "description": "This is translated to a [MsgDelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L81-L90). `delegator_address` is automatically filled with the current contract's address.", - "type": "object", - "required": [ - "delegate" - ], - "properties": { - "delegate": { - "type": "object", - "required": [ - "amount", - "validator" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Coin" - }, - "validator": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "This is translated to a [MsgUndelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L112-L121). `delegator_address` is automatically filled with the current contract's address.", - "type": "object", - "required": [ - "undelegate" - ], - "properties": { - "undelegate": { - "type": "object", - "required": [ - "amount", - "validator" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Coin" - }, - "validator": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "This is translated to a [MsgBeginRedelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L95-L105). `delegator_address` is automatically filled with the current contract's address.", - "type": "object", - "required": [ - "redelegate" - ], - "properties": { - "redelegate": { - "type": "object", - "required": [ - "amount", - "dst_validator", - "src_validator" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Coin" - }, - "dst_validator": { - "type": "string" - }, - "src_validator": { + "src_validator": { "type": "string" } } @@ -1713,39 +609,6 @@ } ] }, - "SudoContractProposal": { - "description": "Deprecated. SudoContractProposal defines the struct for sudo execution proposal.", - "deprecated": true, - "type": "object", - "required": [ - "contract", - "description", - "msg", - "title" - ], - "properties": { - "contract": { - "description": "*contract** is an address of contract to be executed.", - "type": "string" - }, - "description": { - "description": "*description** is a text description of proposal.", - "type": "string" - }, - "msg": { - "description": "**msg*** is a sudo message.", - "allOf": [ - { - "$ref": "#/definitions/Binary" - } - ] - }, - "title": { - "description": "*title** is a text title of proposal.", - "type": "string" - } - } - }, "Timestamp": { "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", "allOf": [ @@ -1762,100 +625,6 @@ "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", "type": "string" }, - "UnpinCodesProposal": { - "description": "Deprecated. UnpinCodesProposal defines the struct for unpin contract codes proposal.", - "deprecated": true, - "type": "object", - "required": [ - "code_ids", - "description", - "title" - ], - "properties": { - "code_ids": { - "description": "*code_ids** is an array of codes to be unpined.", - "type": "array", - "items": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "description": { - "description": "*description** is a text description of proposal.", - "type": "string" - }, - "title": { - "description": "*title** is a text title of proposal.", - "type": "string" - } - } - }, - "UpdateAdminProposal": { - "description": "Deprecated. UpdateAdminProposal defines the struct for update admin proposal.", - "deprecated": true, - "type": "object", - "required": [ - "contract", - "description", - "new_admin", - "title" - ], - "properties": { - "contract": { - "description": "*contract** is an address of contract to update admin.", - "type": "string" - }, - "description": { - "description": "*description** is a text description of proposal.", - "type": "string" - }, - "new_admin": { - "description": "**new_admin*** is an address of new admin", - "type": "string" - }, - "title": { - "description": "*title** is a text title of proposal.", - "type": "string" - } - } - }, - "UpgradeProposal": { - "description": "UpgradeProposal defines the struct for IBC upgrade proposal.", - "type": "object", - "required": [ - "description", - "plan", - "title", - "upgraded_client_state" - ], - "properties": { - "description": { - "description": "*description** is a text description of proposal.", - "type": "string" - }, - "plan": { - "description": "*plan** is a plan of upgrade.", - "allOf": [ - { - "$ref": "#/definitions/Plan" - } - ] - }, - "title": { - "description": "*title** is a text title of proposal.", - "type": "string" - }, - "upgraded_client_state": { - "description": "*upgraded_client_state** is an upgraded client state.", - "allOf": [ - { - "$ref": "#/definitions/ProtobufAny" - } - ] - } - } - }, "VoteOption": { "type": "string", "enum": [ diff --git a/schemas/astroport-whitelist/raw/execute.json b/schemas/astroport-whitelist/raw/execute.json index 922c7449d..6d204f2de 100644 --- a/schemas/astroport-whitelist/raw/execute.json +++ b/schemas/astroport-whitelist/raw/execute.json @@ -18,7 +18,7 @@ "msgs": { "type": "array", "items": { - "$ref": "#/definitions/CosmosMsg_for_NeutronMsg" + "$ref": "#/definitions/CosmosMsg_for_Empty" } } }, @@ -68,161 +68,6 @@ } ], "definitions": { - "AdminProposal": { - "description": "AdminProposal defines the struct for various proposals which Neutron's Admin Module may accept.", - "oneOf": [ - { - "description": "Proposal to change params. Note that this works for old params. New params has their own `MsgUpdateParams` msgs that can be supplied to `ProposalExecuteMessage`", - "type": "object", - "required": [ - "param_change_proposal" - ], - "properties": { - "param_change_proposal": { - "$ref": "#/definitions/ParamChangeProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Proposal to upgrade IBC client", - "type": "object", - "required": [ - "upgrade_proposal" - ], - "properties": { - "upgrade_proposal": { - "$ref": "#/definitions/UpgradeProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Proposal to update IBC client", - "type": "object", - "required": [ - "client_update_proposal" - ], - "properties": { - "client_update_proposal": { - "$ref": "#/definitions/ClientUpdateProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Proposal to execute CosmosMsg.", - "type": "object", - "required": [ - "proposal_execute_message" - ], - "properties": { - "proposal_execute_message": { - "$ref": "#/definitions/ProposalExecuteMessage" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated. Proposal to upgrade network", - "deprecated": true, - "type": "object", - "required": [ - "software_upgrade_proposal" - ], - "properties": { - "software_upgrade_proposal": { - "$ref": "#/definitions/SoftwareUpgradeProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated. Proposal to cancel existing software upgrade", - "deprecated": true, - "type": "object", - "required": [ - "cancel_software_upgrade_proposal" - ], - "properties": { - "cancel_software_upgrade_proposal": { - "$ref": "#/definitions/CancelSoftwareUpgradeProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated. Will fail to execute if you use it. Deprecated. Proposal to pin wasm contract codes", - "deprecated": true, - "type": "object", - "required": [ - "pin_codes_proposal" - ], - "properties": { - "pin_codes_proposal": { - "$ref": "#/definitions/PinCodesProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated. Deprecated. Proposal to unpin wasm contract codes.", - "deprecated": true, - "type": "object", - "required": [ - "unpin_codes_proposal" - ], - "properties": { - "unpin_codes_proposal": { - "$ref": "#/definitions/UnpinCodesProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated. Proposal to call sudo on contract.", - "deprecated": true, - "type": "object", - "required": [ - "sudo_contract_proposal" - ], - "properties": { - "sudo_contract_proposal": { - "$ref": "#/definitions/SudoContractProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated. Proposal to update contract admin.", - "deprecated": true, - "type": "object", - "required": [ - "update_admin_proposal" - ], - "properties": { - "update_admin_proposal": { - "$ref": "#/definitions/UpdateAdminProposal" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated. Proposal to clear contract admin.", - "deprecated": true, - "type": "object", - "required": [ - "clear_admin_proposal" - ], - "properties": { - "clear_admin_proposal": { - "$ref": "#/definitions/ClearAdminProposal" - } - }, - "additionalProperties": false - } - ] - }, "BankMsg": { "description": "The message types of the bank module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/bank/v1beta1/tx.proto", "oneOf": [ @@ -284,77 +129,6 @@ "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", "type": "string" }, - "CancelSoftwareUpgradeProposal": { - "description": "Deprecated. CancelSoftwareUpgradeProposal defines the struct for cancel software upgrade proposal.", - "deprecated": true, - "type": "object", - "required": [ - "description", - "title" - ], - "properties": { - "description": { - "description": "*description** is a text description of proposal. Non unique.", - "type": "string" - }, - "title": { - "description": "*title** is a text title of proposal. Non unique.", - "type": "string" - } - } - }, - "ClearAdminProposal": { - "description": "Deprecated. SudoContractProposal defines the struct for clear admin proposal.", - "deprecated": true, - "type": "object", - "required": [ - "contract", - "description", - "title" - ], - "properties": { - "contract": { - "description": "*contract** is an address of contract admin will be removed.", - "type": "string" - }, - "description": { - "description": "*description** is a text description of proposal.", - "type": "string" - }, - "title": { - "description": "*title** is a text title of proposal.", - "type": "string" - } - } - }, - "ClientUpdateProposal": { - "description": "ClientUpdateProposal defines the struct for client update proposal.", - "type": "object", - "required": [ - "description", - "subject_client_id", - "substitute_client_id", - "title" - ], - "properties": { - "description": { - "description": "*description** is a text description of proposal. Non unique.", - "type": "string" - }, - "subject_client_id": { - "description": "*subject_client_id** is a subject client id.", - "type": "string" - }, - "substitute_client_id": { - "description": "*substitute_client_id** is a substitute client id.", - "type": "string" - }, - "title": { - "description": "*title** is a text title of proposal.", - "type": "string" - } - } - }, "Coin": { "type": "object", "required": [ @@ -370,7 +144,7 @@ } } }, - "CosmosMsg_for_NeutronMsg": { + "CosmosMsg_for_Empty": { "oneOf": [ { "type": "object", @@ -391,7 +165,7 @@ ], "properties": { "custom": { - "$ref": "#/definitions/NeutronMsg" + "$ref": "#/definitions/Empty" } }, "additionalProperties": false @@ -483,31 +257,6 @@ } ] }, - "DenomUnit": { - "description": "Replicates the cosmos-sdk bank module DenomUnit type", - "type": "object", - "required": [ - "aliases", - "denom", - "exponent" - ], - "properties": { - "aliases": { - "type": "array", - "items": { - "type": "string" - } - }, - "denom": { - "type": "string" - }, - "exponent": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - } - }, "DistributionMsg": { "description": "The message types of the distribution module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto", "oneOf": [ @@ -557,6 +306,10 @@ } ] }, + "Empty": { + "description": "An empty struct that serves as a placeholder in different places, such as contracts that don't set a custom message.\n\nIt is designed to be expressable in correct JSON and JSON Schema but contains no meaningful data. Previously we used enums without cases, but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)", + "type": "object" + }, "GovMsg": { "description": "This message type allows the contract interact with the [x/gov] module in order to cast votes.\n\n[x/gov]: https://github.com/cosmos/cosmos-sdk/tree/v0.45.12/x/gov\n\n## Examples\n\nCast a simple vote:\n\n``` # use cosmwasm_std::{ # HexBinary, # Storage, Api, Querier, DepsMut, Deps, entry_point, Env, StdError, MessageInfo, # Response, QueryResponse, # }; # type ExecuteMsg = (); use cosmwasm_std::{GovMsg, VoteOption};\n\n#[entry_point] pub fn execute( deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg, ) -> Result { // ... Ok(Response::new().add_message(GovMsg::Vote { proposal_id: 4, vote: VoteOption::Yes, })) } ```\n\nCast a weighted vote:\n\n``` # use cosmwasm_std::{ # HexBinary, # Storage, Api, Querier, DepsMut, Deps, entry_point, Env, StdError, MessageInfo, # Response, QueryResponse, # }; # type ExecuteMsg = (); # #[cfg(feature = \"cosmwasm_1_2\")] use cosmwasm_std::{Decimal, GovMsg, VoteOption, WeightedVoteOption};\n\n# #[cfg(feature = \"cosmwasm_1_2\")] #[entry_point] pub fn execute( deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg, ) -> Result { // ... Ok(Response::new().add_message(GovMsg::VoteWeighted { proposal_id: 4, options: vec![ WeightedVoteOption { option: VoteOption::Yes, weight: Decimal::percent(65), }, WeightedVoteOption { option: VoteOption::Abstain, weight: Decimal::percent(35), }, ], })) } ```", "oneOf": [ @@ -594,38 +347,6 @@ } ] }, - "IbcFee": { - "description": "IbcFee defines struct for fees that refund the relayer for `SudoMsg` messages submission. Unused fee kind will be returned back to message sender. Please refer to these links for more information: IBC transaction structure - General mechanics of fee payments - ", - "type": "object", - "required": [ - "ack_fee", - "recv_fee", - "timeout_fee" - ], - "properties": { - "ack_fee": { - "description": "*ack_fee** is an amount of coins to refund relayer for submitting ack message for a particular IBC packet.", - "type": "array", - "items": { - "$ref": "#/definitions/Coin" - } - }, - "recv_fee": { - "description": "**recv_fee** currently is used for compatibility with ICS-29 interface only and must be set to zero (i.e. 0untrn), because Neutron's fee module can't refund relayer for submission of Recv IBC packets due to compatibility with target chains.", - "type": "array", - "items": { - "$ref": "#/definitions/Coin" - } - }, - "timeout_fee": { - "description": "*timeout_fee** amount of coins to refund relayer for submitting timeout message for a particular IBC packet.", - "type": "array", - "items": { - "$ref": "#/definitions/Coin" - } - } - } - }, "IbcMsg": { "description": "These are messages in the IBC lifecycle. Only usable by IBC-enabled contracts (contracts that directly speak the IBC protocol via 6 entry points)", "oneOf": [ @@ -779,80 +500,28 @@ } } }, - "KVKey": { - "description": "Describes a KV key for which you want to get value from the storage on remote chain", - "type": "object", - "required": [ - "key", - "path" - ], - "properties": { - "key": { - "description": "*key** is a key you want to read from the storage", - "allOf": [ - { - "$ref": "#/definitions/Binary" - } - ] - }, - "path": { - "description": "*path** is a path to the storage (storage prefix) where you want to read value by key (usually name of cosmos-packages module: 'staking', 'bank', etc.)", - "type": "string" - } - } - }, - "MsgExecuteContract": { - "description": "MsgExecuteContract defines a call to the contract execution", - "type": "object", - "required": [ - "contract", - "msg" - ], - "properties": { - "contract": { - "description": "*contract** is a contract address that will be called", - "type": "string" - }, - "msg": { - "description": "*msg** is a contract call message", - "type": "string" - } - } - }, - "NeutronMsg": { - "description": "A number of Custom messages that can call into the Neutron bindings.", + "StakingMsg": { + "description": "The message types of the staking module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto", "oneOf": [ { - "description": "RegisterInterchainAccount registers an interchain account on remote chain.", + "description": "This is translated to a [MsgDelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L81-L90). `delegator_address` is automatically filled with the current contract's address.", "type": "object", "required": [ - "register_interchain_account" + "delegate" ], "properties": { - "register_interchain_account": { + "delegate": { "type": "object", "required": [ - "connection_id", - "interchain_account_id" + "amount", + "validator" ], "properties": { - "connection_id": { - "description": "*connection_id** is an IBC connection identifier between Neutron and remote chain.", - "type": "string" + "amount": { + "$ref": "#/definitions/Coin" }, - "interchain_account_id": { - "description": "**interchain_account_id** is an identifier of your new interchain account. Can be any string. This identifier allows contracts to have multiple interchain accounts on remote chains.", + "validator": { "type": "string" - }, - "register_fee": { - "description": "*register_fee** is a fees required to be payed to register interchain account", - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Coin" - } } } } @@ -860,55 +529,24 @@ "additionalProperties": false }, { - "description": "SubmitTx starts the process of executing any Cosmos-SDK *msgs* on remote chain.", + "description": "This is translated to a [MsgUndelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L112-L121). `delegator_address` is automatically filled with the current contract's address.", "type": "object", "required": [ - "submit_tx" + "undelegate" ], "properties": { - "submit_tx": { + "undelegate": { "type": "object", "required": [ - "connection_id", - "fee", - "interchain_account_id", - "memo", - "msgs", - "timeout" + "amount", + "validator" ], "properties": { - "connection_id": { - "description": "*connection_id** is an IBC connection identifier between Neutron and remote chain.", - "type": "string" - }, - "fee": { - "description": "**fee** is an ibc fee for the transaction.", - "allOf": [ - { - "$ref": "#/definitions/IbcFee" - } - ] - }, - "interchain_account_id": { - "description": "*interchain_account_id** is an identifier of your interchain account from which you want to execute msgs.", - "type": "string" + "amount": { + "$ref": "#/definitions/Coin" }, - "memo": { - "description": "*memo** is a memo you want to attach to your interchain transaction.It behaves like a memo in usual Cosmos transaction.", + "validator": { "type": "string" - }, - "msgs": { - "description": "*msgs** is a list of protobuf encoded Cosmos-SDK messages you want to execute on remote chain.", - "type": "array", - "items": { - "$ref": "#/definitions/ProtobufAny" - } - }, - "timeout": { - "description": "*timeout** is a timeout in seconds after which the packet times out.", - "type": "integer", - "format": "uint64", - "minimum": 0.0 } } } @@ -916,814 +554,39 @@ "additionalProperties": false }, { - "description": "RegisterInterchainQuery registers an interchain query.", + "description": "This is translated to a [MsgBeginRedelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L95-L105). `delegator_address` is automatically filled with the current contract's address.", "type": "object", "required": [ - "register_interchain_query" + "redelegate" ], "properties": { - "register_interchain_query": { + "redelegate": { "type": "object", "required": [ - "connection_id", - "keys", - "query_type", - "transactions_filter", - "update_period" + "amount", + "dst_validator", + "src_validator" ], "properties": { - "connection_id": { - "description": "*connection_id** is an IBC connection identifier between Neutron and remote chain.", - "type": "string" - }, - "keys": { - "description": "*keys** is the KV-storage keys for which we want to get values from remote chain.", - "type": "array", - "items": { - "$ref": "#/definitions/KVKey" - } + "amount": { + "$ref": "#/definitions/Coin" }, - "query_type": { - "description": "*query_type** is a query type identifier ('tx' or 'kv' for now).", + "dst_validator": { "type": "string" }, - "transactions_filter": { - "description": "*transactions_filter** is the filter for transaction search ICQ.", + "src_validator": { "type": "string" - }, - "update_period": { - "description": "*update_period** is used to say how often the query must be updated.", - "type": "integer", - "format": "uint64", - "minimum": 0.0 } } } }, "additionalProperties": false - }, - { - "description": "RegisterInterchainQuery updates an interchain query.", - "type": "object", - "required": [ - "update_interchain_query" - ], - "properties": { - "update_interchain_query": { - "type": "object", - "required": [ - "query_id" - ], - "properties": { - "new_keys": { - "description": "*new_keys** is the new query keys to retrive.", - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/KVKey" - } - }, - "new_transactions_filter": { - "description": "*new_transactions_filter** is a new transactions filter of the query.", - "type": [ - "string", - "null" - ] - }, - "new_update_period": { - "description": "*new_update_period** is a new update period of the query.", - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - }, - "query_id": { - "description": "*query_id** is the ID of the query we want to update.", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - } - }, - "additionalProperties": false - }, - { - "description": "RemoveInterchainQuery removes as interchain query.", - "type": "object", - "required": [ - "remove_interchain_query" - ], - "properties": { - "remove_interchain_query": { - "type": "object", - "required": [ - "query_id" - ], - "properties": { - "query_id": { - "description": "*query_id** is ID of the query we want to remove.", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - } - }, - "additionalProperties": false - }, - { - "description": "IbcTransfer sends a fungible token packet over IBC.", - "type": "object", - "required": [ - "ibc_transfer" - ], - "properties": { - "ibc_transfer": { - "type": "object", - "required": [ - "fee", - "memo", - "receiver", - "sender", - "source_channel", - "source_port", - "timeout_height", - "timeout_timestamp", - "token" - ], - "properties": { - "fee": { - "$ref": "#/definitions/IbcFee" - }, - "memo": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "sender": { - "type": "string" - }, - "source_channel": { - "type": "string" - }, - "source_port": { - "type": "string" - }, - "timeout_height": { - "$ref": "#/definitions/RequestPacketTimeoutHeight" - }, - "timeout_timestamp": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "token": { - "$ref": "#/definitions/Coin" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "SubmitAdminProposal sends a proposal to neutron's Admin module. This type of messages can be only executed by Neutron DAO.", - "type": "object", - "required": [ - "submit_admin_proposal" - ], - "properties": { - "submit_admin_proposal": { - "type": "object", - "required": [ - "admin_proposal" - ], - "properties": { - "admin_proposal": { - "$ref": "#/definitions/AdminProposal" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "TokenFactory message. Contracts can create denoms, namespaced under the contract's address. A contract may create any number of independent sub-denoms.", - "type": "object", - "required": [ - "create_denom" - ], - "properties": { - "create_denom": { - "type": "object", - "required": [ - "subdenom" - ], - "properties": { - "subdenom": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "TokenFactory message. Contracts can change the admin of a denom that they are the admin of.", - "type": "object", - "required": [ - "change_admin" - ], - "properties": { - "change_admin": { - "type": "object", - "required": [ - "denom", - "new_admin_address" - ], - "properties": { - "denom": { - "type": "string" - }, - "new_admin_address": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "TokenFactory message. Contracts can mint native tokens for an existing factory denom that they are the admin of.", - "type": "object", - "required": [ - "mint_tokens" - ], - "properties": { - "mint_tokens": { - "type": "object", - "required": [ - "amount", - "denom", - "mint_to_address" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "denom": { - "type": "string" - }, - "mint_to_address": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "TokenFactory message. Contracts can burn native tokens for an existing factory denom that they are the admin of. Currently, the burn from address must be the admin contract.", - "type": "object", - "required": [ - "burn_tokens" - ], - "properties": { - "burn_tokens": { - "type": "object", - "required": [ - "amount", - "burn_from_address", - "denom" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "burn_from_address": { - "description": "Must be set to `\"\"` for now", - "type": "string" - }, - "denom": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "TokenFactory message. Contracts can set before send hooks for denoms, namespaced under the contract's address.", - "type": "object", - "required": [ - "set_before_send_hook" - ], - "properties": { - "set_before_send_hook": { - "type": "object", - "required": [ - "contract_addr", - "denom" - ], - "properties": { - "contract_addr": { - "type": "string" - }, - "denom": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "TokenFactoryMessage Contracts can force specified `amount` of an existing factory denom that they are admin of to a `transfer_to_address` from a `transfer_from_address`.", - "type": "object", - "required": [ - "force_transfer" - ], - "properties": { - "force_transfer": { - "type": "object", - "required": [ - "amount", - "denom", - "transfer_from_address", - "transfer_to_address" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "denom": { - "type": "string" - }, - "transfer_from_address": { - "type": "string" - }, - "transfer_to_address": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "TokenFactoryMessage Contracts can set a metadata for of an existing factory denom that they are admin of.", - "type": "object", - "required": [ - "set_denom_metadata" - ], - "properties": { - "set_denom_metadata": { - "type": "object", - "required": [ - "base", - "denom_units", - "description", - "display", - "name", - "symbol", - "uri", - "uri_hash" - ], - "properties": { - "base": { - "description": "*base** represents the base denom (should be the DenomUnit with exponent = 0).", - "type": "string" - }, - "denom_units": { - "description": "*denom_units** represents the list of DenomUnit's for a given coin", - "type": "array", - "items": { - "$ref": "#/definitions/DenomUnit" - } - }, - "description": { - "description": "*description** description of a token", - "type": "string" - }, - "display": { - "description": "**display** indicates the suggested denom that should be displayed in clients.", - "type": "string" - }, - "name": { - "description": "*name** defines the name of the token (eg: Cosmos Atom)", - "type": "string" - }, - "symbol": { - "description": "**symbol** is the token symbol usually shown on exchanges (eg: ATOM). This can be the same as the display.", - "type": "string" - }, - "uri": { - "description": "*uri** to a document (on or off-chain) that contains additional information. Optional.", - "type": "string" - }, - "uri_hash": { - "description": "**uri_hash** is a sha256 hash of a document pointed by URI. It's used to verify that the document didn't change. Optional.", - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "AddSchedule adds new schedule with a given `name`. Until schedule is removed it will execute all `msgs` every `period` blocks. First execution is at least on `current_block + period` block. [Permissioned - DAO Only]", - "type": "object", - "required": [ - "add_schedule" - ], - "properties": { - "add_schedule": { - "type": "object", - "required": [ - "msgs", - "name", - "period" - ], - "properties": { - "msgs": { - "description": "list of cosmwasm messages to be executed", - "type": "array", - "items": { - "$ref": "#/definitions/MsgExecuteContract" - } - }, - "name": { - "description": "Name of a new schedule. Needed to be able to `RemoveSchedule` and to log information about it", - "type": "string" - }, - "period": { - "description": "period in blocks with which `msgs` will be executed", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - } - }, - "additionalProperties": false - }, - { - "description": "RemoveSchedule removes the schedule with a given `name`. [Permissioned - DAO or Security DAO only]", - "type": "object", - "required": [ - "remove_schedule" - ], - "properties": { - "remove_schedule": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "Contractmanager message Resubmits failed acknowledgement. Acknowledgement failure is created when contract returns error or acknowledgement is out of gas. [Permissioned - only from contract that is initial caller of IBC transaction]", - "type": "object", - "required": [ - "resubmit_failure" - ], - "properties": { - "resubmit_failure": { - "type": "object", - "required": [ - "failure_id" - ], - "properties": { - "failure_id": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - } - }, - "additionalProperties": false - } - ] - }, - "ParamChange": { - "description": "ParamChange defines the struct for parameter change request.", - "type": "object", - "required": [ - "key", - "subspace", - "value" - ], - "properties": { - "key": { - "description": "*key** is a name of parameter. Unique for subspace.", - "type": "string" - }, - "subspace": { - "description": "*subspace** is a key of module to which the parameter to change belongs. Unique for each module.", - "type": "string" - }, - "value": { - "description": "*value** is a new value for given parameter. Non unique.", - "type": "string" - } - } - }, - "ParamChangeProposal": { - "description": "ParamChangeProposal defines the struct for single parameter change proposal.", - "type": "object", - "required": [ - "description", - "param_changes", - "title" - ], - "properties": { - "description": { - "description": "*description** is a text description of proposal. Non unique.", - "type": "string" - }, - "param_changes": { - "description": "*param_changes** is a vector of params to be changed. Non unique.", - "type": "array", - "items": { - "$ref": "#/definitions/ParamChange" - } - }, - "title": { - "description": "*title** is a text title of proposal. Non unique.", - "type": "string" - } - } - }, - "PinCodesProposal": { - "description": "Deprecated. PinCodesProposal defines the struct for pin contract codes proposal.", - "deprecated": true, - "type": "object", - "required": [ - "code_ids", - "description", - "title" - ], - "properties": { - "code_ids": { - "description": "*code_ids** is an array of codes to be pined.", - "type": "array", - "items": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "description": { - "description": "*description** is a text description of proposal.", - "type": "string" - }, - "title": { - "description": "*title** is a text title of proposal.", - "type": "string" - } - } - }, - "Plan": { - "description": "Plan defines the struct for planned upgrade.", - "type": "object", - "required": [ - "height", - "info", - "name" - ], - "properties": { - "height": { - "description": "*height** is a height at which the upgrade must be performed", - "type": "integer", - "format": "int64" - }, - "info": { - "description": "*info** is any application specific upgrade info to be included on-chain", - "type": "string" - }, - "name": { - "description": "*name** is a name for the upgrade", - "type": "string" - } - } - }, - "ProposalExecuteMessage": { - "description": "ProposalExecuteMessage defines the struct for sdk47 compatible admin proposal.", - "type": "object", - "required": [ - "message" - ], - "properties": { - "message": { - "description": "*message** is a json representing an sdk message passed to admin module to execute.", - "type": "string" - } - } - }, - "ProtobufAny": { - "description": "Type for wrapping any protobuf message", - "type": "object", - "required": [ - "type_url", - "value" - ], - "properties": { - "type_url": { - "description": "*type_url** describes the type of the serialized message", - "type": "string" - }, - "value": { - "description": "*value** must be a valid serialized protocol buffer of the above specified type", - "allOf": [ - { - "$ref": "#/definitions/Binary" - } - ] - } - } - }, - "RequestPacketTimeoutHeight": { - "type": "object", - "properties": { - "revision_height": { - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - }, - "revision_number": { - "type": [ - "integer", - "null" - ], - "format": "uint64", - "minimum": 0.0 - } - } - }, - "SoftwareUpgradeProposal": { - "description": "Deprecated. SoftwareUpgradeProposal defines the struct for software upgrade proposal.", - "deprecated": true, - "type": "object", - "required": [ - "description", - "plan", - "title" - ], - "properties": { - "description": { - "description": "*description** is a text description of proposal. Non unique.", - "type": "string" - }, - "plan": { - "description": "*plan** is a plan of upgrade.", - "allOf": [ - { - "$ref": "#/definitions/Plan" - } - ] - }, - "title": { - "description": "*title** is a text title of proposal. Non unique.", - "type": "string" - } - } - }, - "StakingMsg": { - "description": "The message types of the staking module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto", - "oneOf": [ - { - "description": "This is translated to a [MsgDelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L81-L90). `delegator_address` is automatically filled with the current contract's address.", - "type": "object", - "required": [ - "delegate" - ], - "properties": { - "delegate": { - "type": "object", - "required": [ - "amount", - "validator" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Coin" - }, - "validator": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "This is translated to a [MsgUndelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L112-L121). `delegator_address` is automatically filled with the current contract's address.", - "type": "object", - "required": [ - "undelegate" - ], - "properties": { - "undelegate": { - "type": "object", - "required": [ - "amount", - "validator" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Coin" - }, - "validator": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "This is translated to a [MsgBeginRedelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L95-L105). `delegator_address` is automatically filled with the current contract's address.", - "type": "object", - "required": [ - "redelegate" - ], - "properties": { - "redelegate": { - "type": "object", - "required": [ - "amount", - "dst_validator", - "src_validator" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Coin" - }, - "dst_validator": { - "type": "string" - }, - "src_validator": { - "type": "string" - } - } - } - }, - "additionalProperties": false - } - ] - }, - "SudoContractProposal": { - "description": "Deprecated. SudoContractProposal defines the struct for sudo execution proposal.", - "deprecated": true, - "type": "object", - "required": [ - "contract", - "description", - "msg", - "title" - ], - "properties": { - "contract": { - "description": "*contract** is an address of contract to be executed.", - "type": "string" - }, - "description": { - "description": "*description** is a text description of proposal.", - "type": "string" - }, - "msg": { - "description": "**msg*** is a sudo message.", - "allOf": [ - { - "$ref": "#/definitions/Binary" - } - ] - }, - "title": { - "description": "*title** is a text title of proposal.", - "type": "string" - } - } - }, - "Timestamp": { - "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", - "allOf": [ + } + ] + }, + "Timestamp": { + "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", + "allOf": [ { "$ref": "#/definitions/Uint64" } @@ -1737,100 +600,6 @@ "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", "type": "string" }, - "UnpinCodesProposal": { - "description": "Deprecated. UnpinCodesProposal defines the struct for unpin contract codes proposal.", - "deprecated": true, - "type": "object", - "required": [ - "code_ids", - "description", - "title" - ], - "properties": { - "code_ids": { - "description": "*code_ids** is an array of codes to be unpined.", - "type": "array", - "items": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "description": { - "description": "*description** is a text description of proposal.", - "type": "string" - }, - "title": { - "description": "*title** is a text title of proposal.", - "type": "string" - } - } - }, - "UpdateAdminProposal": { - "description": "Deprecated. UpdateAdminProposal defines the struct for update admin proposal.", - "deprecated": true, - "type": "object", - "required": [ - "contract", - "description", - "new_admin", - "title" - ], - "properties": { - "contract": { - "description": "*contract** is an address of contract to update admin.", - "type": "string" - }, - "description": { - "description": "*description** is a text description of proposal.", - "type": "string" - }, - "new_admin": { - "description": "**new_admin*** is an address of new admin", - "type": "string" - }, - "title": { - "description": "*title** is a text title of proposal.", - "type": "string" - } - } - }, - "UpgradeProposal": { - "description": "UpgradeProposal defines the struct for IBC upgrade proposal.", - "type": "object", - "required": [ - "description", - "plan", - "title", - "upgraded_client_state" - ], - "properties": { - "description": { - "description": "*description** is a text description of proposal.", - "type": "string" - }, - "plan": { - "description": "*plan** is a plan of upgrade.", - "allOf": [ - { - "$ref": "#/definitions/Plan" - } - ] - }, - "title": { - "description": "*title** is a text title of proposal.", - "type": "string" - }, - "upgraded_client_state": { - "description": "*upgraded_client_state** is an upgraded client state.", - "allOf": [ - { - "$ref": "#/definitions/ProtobufAny" - } - ] - } - } - }, "VoteOption": { "type": "string", "enum": [ diff --git a/schemas/astroport-xastro-token/astroport-xastro-token.json b/schemas/astroport-xastro-token/astroport-xastro-token.json deleted file mode 100644 index e4d53a771..000000000 --- a/schemas/astroport-xastro-token/astroport-xastro-token.json +++ /dev/null @@ -1,1340 +0,0 @@ -{ - "contract_name": "astroport-xastro-token", - "contract_version": "1.1.0", - "idl_version": "1.0.0", - "instantiate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a xASTRO token contract.", - "type": "object", - "required": [ - "decimals", - "initial_balances", - "name", - "symbol" - ], - "properties": { - "decimals": { - "description": "The number of decimals the token has", - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "initial_balances": { - "description": "Initial token balances", - "type": "array", - "items": { - "$ref": "#/definitions/Cw20Coin" - } - }, - "marketing": { - "description": "the marketing info of type [`InstantiateMarketingInfo`]", - "anyOf": [ - { - "$ref": "#/definitions/InstantiateMarketingInfo" - }, - { - "type": "null" - } - ] - }, - "mint": { - "description": "Token minting permissions", - "anyOf": [ - { - "$ref": "#/definitions/MinterResponse" - }, - { - "type": "null" - } - ] - }, - "name": { - "description": "Token name", - "type": "string" - }, - "symbol": { - "description": "Token symbol", - "type": "string" - } - }, - "additionalProperties": false, - "definitions": { - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20Coin": { - "type": "object", - "required": [ - "address", - "amount" - ], - "properties": { - "address": { - "type": "string" - }, - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - }, - "EmbeddedLogo": { - "description": "This is used to store the logo on the blockchain in an accepted format. Enforce maximum size of 5KB on all variants.", - "oneOf": [ - { - "description": "Store the Logo as an SVG file. The content must conform to the spec at https://en.wikipedia.org/wiki/Scalable_Vector_Graphics (The contract should do some light-weight sanity-check validation)", - "type": "object", - "required": [ - "svg" - ], - "properties": { - "svg": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - }, - { - "description": "Store the Logo as a PNG file. This will likely only support up to 64x64 or so within the 5KB limit.", - "type": "object", - "required": [ - "png" - ], - "properties": { - "png": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - ] - }, - "InstantiateMarketingInfo": { - "description": "This structure describes the marketing info settings such as project, description, and token logo.", - "type": "object", - "properties": { - "description": { - "description": "The project description", - "type": [ - "string", - "null" - ] - }, - "logo": { - "description": "The token logo", - "anyOf": [ - { - "$ref": "#/definitions/Logo" - }, - { - "type": "null" - } - ] - }, - "marketing": { - "description": "The address of an admin who is able to update marketing info", - "type": [ - "string", - "null" - ] - }, - "project": { - "description": "The project name", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "Logo": { - "description": "This is used for uploading logo data, or setting it in InstantiateData", - "oneOf": [ - { - "description": "A reference to an externally hosted logo. Must be a valid HTTP or HTTPS URL.", - "type": "object", - "required": [ - "url" - ], - "properties": { - "url": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "Logo content stored on the blockchain. Enforce maximum size of 5KB on all variants", - "type": "object", - "required": [ - "embedded" - ], - "properties": { - "embedded": { - "$ref": "#/definitions/EmbeddedLogo" - } - }, - "additionalProperties": false - } - ] - }, - "MinterResponse": { - "type": "object", - "required": [ - "minter" - ], - "properties": { - "cap": { - "description": "cap is a hard cap on total supply that can be achieved by minting. Note that this refers to total_supply. If None, there is unlimited cap.", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "minter": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "execute": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "oneOf": [ - { - "description": "Transfer is a base message to move tokens to another account without triggering actions", - "type": "object", - "required": [ - "transfer" - ], - "properties": { - "transfer": { - "type": "object", - "required": [ - "amount", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Burn is a base message to destroy tokens forever", - "type": "object", - "required": [ - "burn" - ], - "properties": { - "burn": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Send is a base message to transfer tokens to a contract and trigger an action on the receiving contract.", - "type": "object", - "required": [ - "send" - ], - "properties": { - "send": { - "type": "object", - "required": [ - "amount", - "contract", - "msg" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "contract": { - "type": "string" - }, - "msg": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with \"approval\" extension. Allows spender to access an additional amount tokens from the owner's (env.sender) account. If expires is Some(), overwrites current allowance expiration with this one.", - "type": "object", - "required": [ - "increase_allowance" - ], - "properties": { - "increase_allowance": { - "type": "object", - "required": [ - "amount", - "spender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "expires": { - "anyOf": [ - { - "$ref": "#/definitions/Expiration" - }, - { - "type": "null" - } - ] - }, - "spender": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with \"approval\" extension. Lowers the spender's access of tokens from the owner's (env.sender) account by amount. If expires is Some(), overwrites current allowance expiration with this one.", - "type": "object", - "required": [ - "decrease_allowance" - ], - "properties": { - "decrease_allowance": { - "type": "object", - "required": [ - "amount", - "spender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "expires": { - "anyOf": [ - { - "$ref": "#/definitions/Expiration" - }, - { - "type": "null" - } - ] - }, - "spender": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with \"approval\" extension. Transfers amount tokens from owner -> recipient if `env.sender` has sufficient pre-approval.", - "type": "object", - "required": [ - "transfer_from" - ], - "properties": { - "transfer_from": { - "type": "object", - "required": [ - "amount", - "owner", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "owner": { - "type": "string" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with \"approval\" extension. Sends amount tokens from owner -> contract if `env.sender` has sufficient pre-approval.", - "type": "object", - "required": [ - "send_from" - ], - "properties": { - "send_from": { - "type": "object", - "required": [ - "amount", - "contract", - "msg", - "owner" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "contract": { - "type": "string" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "owner": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with \"approval\" extension. Destroys tokens forever", - "type": "object", - "required": [ - "burn_from" - ], - "properties": { - "burn_from": { - "type": "object", - "required": [ - "amount", - "owner" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "owner": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with the \"mintable\" extension. If authorized, creates amount new tokens and adds to the recipient balance.", - "type": "object", - "required": [ - "mint" - ], - "properties": { - "mint": { - "type": "object", - "required": [ - "amount", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with the \"mintable\" extension. The current minter may set a new minter. Setting the minter to None will remove the token's minter forever.", - "type": "object", - "required": [ - "update_minter" - ], - "properties": { - "update_minter": { - "type": "object", - "properties": { - "new_minter": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with the \"marketing\" extension. If authorized, updates marketing metadata. Setting None/null for any of these will leave it unchanged. Setting Some(\"\") will clear this field on the contract storage", - "type": "object", - "required": [ - "update_marketing" - ], - "properties": { - "update_marketing": { - "type": "object", - "properties": { - "description": { - "description": "A longer description of the token and it's utility. Designed for tooltips or such", - "type": [ - "string", - "null" - ] - }, - "marketing": { - "description": "The address (if any) who can update this data structure", - "type": [ - "string", - "null" - ] - }, - "project": { - "description": "A URL pointing to the project behind this token.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "If set as the \"marketing\" role on the contract, upload a new URL, SVG, or PNG for the token", - "type": "object", - "required": [ - "upload_logo" - ], - "properties": { - "upload_logo": { - "$ref": "#/definitions/Logo" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "EmbeddedLogo": { - "description": "This is used to store the logo on the blockchain in an accepted format. Enforce maximum size of 5KB on all variants.", - "oneOf": [ - { - "description": "Store the Logo as an SVG file. The content must conform to the spec at https://en.wikipedia.org/wiki/Scalable_Vector_Graphics (The contract should do some light-weight sanity-check validation)", - "type": "object", - "required": [ - "svg" - ], - "properties": { - "svg": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - }, - { - "description": "Store the Logo as a PNG file. This will likely only support up to 64x64 or so within the 5KB limit.", - "type": "object", - "required": [ - "png" - ], - "properties": { - "png": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - ] - }, - "Expiration": { - "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", - "oneOf": [ - { - "description": "AtHeight will expire when `env.block.height` >= height", - "type": "object", - "required": [ - "at_height" - ], - "properties": { - "at_height": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "description": "AtTime will expire when `env.block.time` >= time", - "type": "object", - "required": [ - "at_time" - ], - "properties": { - "at_time": { - "$ref": "#/definitions/Timestamp" - } - }, - "additionalProperties": false - }, - { - "description": "Never will never expire. Used to express the empty variant", - "type": "object", - "required": [ - "never" - ], - "properties": { - "never": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Logo": { - "description": "This is used for uploading logo data, or setting it in InstantiateData", - "oneOf": [ - { - "description": "A reference to an externally hosted logo. Must be a valid HTTP or HTTPS URL.", - "type": "object", - "required": [ - "url" - ], - "properties": { - "url": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "Logo content stored on the blockchain. Enforce maximum size of 5KB on all variants", - "type": "object", - "required": [ - "embedded" - ], - "properties": { - "embedded": { - "$ref": "#/definitions/EmbeddedLogo" - } - }, - "additionalProperties": false - } - ] - }, - "Timestamp": { - "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } - }, - "query": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This enum describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Balance returns the current balance of a given address, 0 if unset.", - "type": "object", - "required": [ - "balance" - ], - "properties": { - "balance": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "BalanceAt returns balance of the given address at the given block, 0 if unset.", - "type": "object", - "required": [ - "balance_at" - ], - "properties": { - "balance_at": { - "type": "object", - "required": [ - "address", - "block" - ], - "properties": { - "address": { - "type": "string" - }, - "block": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "TotalSupplyAt returns the total token supply at the given block.", - "type": "object", - "required": [ - "total_supply_at" - ], - "properties": { - "total_supply_at": { - "type": "object", - "required": [ - "block" - ], - "properties": { - "block": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "TokenInfo returns the contract's metadata - name, decimals, supply, etc.", - "type": "object", - "required": [ - "token_info" - ], - "properties": { - "token_info": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns who can mint xASTRO and the hard cap on maximum tokens after minting.", - "type": "object", - "required": [ - "minter" - ], - "properties": { - "minter": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Allowance returns an amount of tokens the spender can spend from the owner account, 0 if unset.", - "type": "object", - "required": [ - "allowance" - ], - "properties": { - "allowance": { - "type": "object", - "required": [ - "owner", - "spender" - ], - "properties": { - "owner": { - "type": "string" - }, - "spender": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "AllAllowances returns all the allowances this token holder has approved. Supports pagination.", - "type": "object", - "required": [ - "all_allowances" - ], - "properties": { - "all_allowances": { - "type": "object", - "required": [ - "owner" - ], - "properties": { - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "owner": { - "type": "string" - }, - "start_after": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "AllAccounts returns all the accounts that have xASTRO balances. Supports pagination.", - "type": "object", - "required": [ - "all_accounts" - ], - "properties": { - "all_accounts": { - "type": "object", - "properties": { - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start_after": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns marketing related contract metadata: - description, logo, project url, etc.", - "type": "object", - "required": [ - "marketing_info" - ], - "properties": { - "marketing_info": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Downloads embeded logo data (if stored on chain). Errors if no logo data was stored for this contract.", - "type": "object", - "required": [ - "download_logo" - ], - "properties": { - "download_logo": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "migrate": null, - "sudo": null, - "responses": { - "all_accounts": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AllAccountsResponse", - "type": "object", - "required": [ - "accounts" - ], - "properties": { - "accounts": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "all_allowances": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AllAllowancesResponse", - "type": "object", - "required": [ - "allowances" - ], - "properties": { - "allowances": { - "type": "array", - "items": { - "$ref": "#/definitions/AllowanceInfo" - } - } - }, - "definitions": { - "AllowanceInfo": { - "type": "object", - "required": [ - "allowance", - "expires", - "spender" - ], - "properties": { - "allowance": { - "$ref": "#/definitions/Uint128" - }, - "expires": { - "$ref": "#/definitions/Expiration" - }, - "spender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Expiration": { - "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", - "oneOf": [ - { - "description": "AtHeight will expire when `env.block.height` >= height", - "type": "object", - "required": [ - "at_height" - ], - "properties": { - "at_height": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "description": "AtTime will expire when `env.block.time` >= time", - "type": "object", - "required": [ - "at_time" - ], - "properties": { - "at_time": { - "$ref": "#/definitions/Timestamp" - } - }, - "additionalProperties": false - }, - { - "description": "Never will never expire. Used to express the empty variant", - "type": "object", - "required": [ - "never" - ], - "properties": { - "never": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Timestamp": { - "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } - }, - "allowance": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AllowanceResponse", - "type": "object", - "required": [ - "allowance", - "expires" - ], - "properties": { - "allowance": { - "$ref": "#/definitions/Uint128" - }, - "expires": { - "$ref": "#/definitions/Expiration" - } - }, - "definitions": { - "Expiration": { - "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", - "oneOf": [ - { - "description": "AtHeight will expire when `env.block.height` >= height", - "type": "object", - "required": [ - "at_height" - ], - "properties": { - "at_height": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "description": "AtTime will expire when `env.block.time` >= time", - "type": "object", - "required": [ - "at_time" - ], - "properties": { - "at_time": { - "$ref": "#/definitions/Timestamp" - } - }, - "additionalProperties": false - }, - { - "description": "Never will never expire. Used to express the empty variant", - "type": "object", - "required": [ - "never" - ], - "properties": { - "never": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Timestamp": { - "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } - }, - "balance": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "BalanceResponse", - "type": "object", - "required": [ - "balance" - ], - "properties": { - "balance": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "balance_at": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "BalanceResponse", - "type": "object", - "required": [ - "balance" - ], - "properties": { - "balance": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "download_logo": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "DownloadLogoResponse", - "description": "When we download an embedded logo, we get this response type. We expect a SPA to be able to accept this info and display it.", - "type": "object", - "required": [ - "data", - "mime_type" - ], - "properties": { - "data": { - "$ref": "#/definitions/Binary" - }, - "mime_type": { - "type": "string" - } - }, - "additionalProperties": false, - "definitions": { - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } - }, - "marketing_info": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MarketingInfoResponse", - "type": "object", - "properties": { - "description": { - "description": "A longer description of the token and it's utility. Designed for tooltips or such", - "type": [ - "string", - "null" - ] - }, - "logo": { - "description": "A link to the logo, or a comment there is an on-chain logo stored", - "anyOf": [ - { - "$ref": "#/definitions/LogoInfo" - }, - { - "type": "null" - } - ] - }, - "marketing": { - "description": "The address (if any) who can update this data structure", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - }, - "project": { - "description": "A URL pointing to the project behind this token.", - "type": [ - "string", - "null" - ] - } - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "LogoInfo": { - "description": "This is used to display logo info, provide a link or inform there is one that can be downloaded from the blockchain itself", - "oneOf": [ - { - "description": "A reference to an externally hosted logo. Must be a valid HTTP or HTTPS URL.", - "type": "object", - "required": [ - "url" - ], - "properties": { - "url": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "There is an embedded logo on the chain, make another call to download it.", - "type": "string", - "enum": [ - "embedded" - ] - } - ] - } - } - }, - "minter": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_MinterResponse", - "anyOf": [ - { - "$ref": "#/definitions/MinterResponse" - }, - { - "type": "null" - } - ], - "definitions": { - "MinterResponse": { - "type": "object", - "required": [ - "minter" - ], - "properties": { - "cap": { - "description": "cap is a hard cap on total supply that can be achieved by minting. Note that this refers to total_supply. If None, there is unlimited cap.", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "minter": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "token_info": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "TokenInfoResponse", - "type": "object", - "required": [ - "decimals", - "name", - "symbol", - "total_supply" - ], - "properties": { - "decimals": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "symbol": { - "type": "string" - }, - "total_supply": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } - }, - "total_supply_at": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-xastro-token/raw/execute.json b/schemas/astroport-xastro-token/raw/execute.json deleted file mode 100644 index 9f0b97868..000000000 --- a/schemas/astroport-xastro-token/raw/execute.json +++ /dev/null @@ -1,475 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "oneOf": [ - { - "description": "Transfer is a base message to move tokens to another account without triggering actions", - "type": "object", - "required": [ - "transfer" - ], - "properties": { - "transfer": { - "type": "object", - "required": [ - "amount", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Burn is a base message to destroy tokens forever", - "type": "object", - "required": [ - "burn" - ], - "properties": { - "burn": { - "type": "object", - "required": [ - "amount" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Send is a base message to transfer tokens to a contract and trigger an action on the receiving contract.", - "type": "object", - "required": [ - "send" - ], - "properties": { - "send": { - "type": "object", - "required": [ - "amount", - "contract", - "msg" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "contract": { - "type": "string" - }, - "msg": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with \"approval\" extension. Allows spender to access an additional amount tokens from the owner's (env.sender) account. If expires is Some(), overwrites current allowance expiration with this one.", - "type": "object", - "required": [ - "increase_allowance" - ], - "properties": { - "increase_allowance": { - "type": "object", - "required": [ - "amount", - "spender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "expires": { - "anyOf": [ - { - "$ref": "#/definitions/Expiration" - }, - { - "type": "null" - } - ] - }, - "spender": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with \"approval\" extension. Lowers the spender's access of tokens from the owner's (env.sender) account by amount. If expires is Some(), overwrites current allowance expiration with this one.", - "type": "object", - "required": [ - "decrease_allowance" - ], - "properties": { - "decrease_allowance": { - "type": "object", - "required": [ - "amount", - "spender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "expires": { - "anyOf": [ - { - "$ref": "#/definitions/Expiration" - }, - { - "type": "null" - } - ] - }, - "spender": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with \"approval\" extension. Transfers amount tokens from owner -> recipient if `env.sender` has sufficient pre-approval.", - "type": "object", - "required": [ - "transfer_from" - ], - "properties": { - "transfer_from": { - "type": "object", - "required": [ - "amount", - "owner", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "owner": { - "type": "string" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with \"approval\" extension. Sends amount tokens from owner -> contract if `env.sender` has sufficient pre-approval.", - "type": "object", - "required": [ - "send_from" - ], - "properties": { - "send_from": { - "type": "object", - "required": [ - "amount", - "contract", - "msg", - "owner" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "contract": { - "type": "string" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "owner": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with \"approval\" extension. Destroys tokens forever", - "type": "object", - "required": [ - "burn_from" - ], - "properties": { - "burn_from": { - "type": "object", - "required": [ - "amount", - "owner" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "owner": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with the \"mintable\" extension. If authorized, creates amount new tokens and adds to the recipient balance.", - "type": "object", - "required": [ - "mint" - ], - "properties": { - "mint": { - "type": "object", - "required": [ - "amount", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with the \"mintable\" extension. The current minter may set a new minter. Setting the minter to None will remove the token's minter forever.", - "type": "object", - "required": [ - "update_minter" - ], - "properties": { - "update_minter": { - "type": "object", - "properties": { - "new_minter": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only with the \"marketing\" extension. If authorized, updates marketing metadata. Setting None/null for any of these will leave it unchanged. Setting Some(\"\") will clear this field on the contract storage", - "type": "object", - "required": [ - "update_marketing" - ], - "properties": { - "update_marketing": { - "type": "object", - "properties": { - "description": { - "description": "A longer description of the token and it's utility. Designed for tooltips or such", - "type": [ - "string", - "null" - ] - }, - "marketing": { - "description": "The address (if any) who can update this data structure", - "type": [ - "string", - "null" - ] - }, - "project": { - "description": "A URL pointing to the project behind this token.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "If set as the \"marketing\" role on the contract, upload a new URL, SVG, or PNG for the token", - "type": "object", - "required": [ - "upload_logo" - ], - "properties": { - "upload_logo": { - "$ref": "#/definitions/Logo" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "EmbeddedLogo": { - "description": "This is used to store the logo on the blockchain in an accepted format. Enforce maximum size of 5KB on all variants.", - "oneOf": [ - { - "description": "Store the Logo as an SVG file. The content must conform to the spec at https://en.wikipedia.org/wiki/Scalable_Vector_Graphics (The contract should do some light-weight sanity-check validation)", - "type": "object", - "required": [ - "svg" - ], - "properties": { - "svg": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - }, - { - "description": "Store the Logo as a PNG file. This will likely only support up to 64x64 or so within the 5KB limit.", - "type": "object", - "required": [ - "png" - ], - "properties": { - "png": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - ] - }, - "Expiration": { - "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", - "oneOf": [ - { - "description": "AtHeight will expire when `env.block.height` >= height", - "type": "object", - "required": [ - "at_height" - ], - "properties": { - "at_height": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "description": "AtTime will expire when `env.block.time` >= time", - "type": "object", - "required": [ - "at_time" - ], - "properties": { - "at_time": { - "$ref": "#/definitions/Timestamp" - } - }, - "additionalProperties": false - }, - { - "description": "Never will never expire. Used to express the empty variant", - "type": "object", - "required": [ - "never" - ], - "properties": { - "never": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Logo": { - "description": "This is used for uploading logo data, or setting it in InstantiateData", - "oneOf": [ - { - "description": "A reference to an externally hosted logo. Must be a valid HTTP or HTTPS URL.", - "type": "object", - "required": [ - "url" - ], - "properties": { - "url": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "Logo content stored on the blockchain. Enforce maximum size of 5KB on all variants", - "type": "object", - "required": [ - "embedded" - ], - "properties": { - "embedded": { - "$ref": "#/definitions/EmbeddedLogo" - } - }, - "additionalProperties": false - } - ] - }, - "Timestamp": { - "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-xastro-token/raw/instantiate.json b/schemas/astroport-xastro-token/raw/instantiate.json deleted file mode 100644 index 7a62784e0..000000000 --- a/schemas/astroport-xastro-token/raw/instantiate.json +++ /dev/null @@ -1,208 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "This structure describes the parameters used for creating a xASTRO token contract.", - "type": "object", - "required": [ - "decimals", - "initial_balances", - "name", - "symbol" - ], - "properties": { - "decimals": { - "description": "The number of decimals the token has", - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "initial_balances": { - "description": "Initial token balances", - "type": "array", - "items": { - "$ref": "#/definitions/Cw20Coin" - } - }, - "marketing": { - "description": "the marketing info of type [`InstantiateMarketingInfo`]", - "anyOf": [ - { - "$ref": "#/definitions/InstantiateMarketingInfo" - }, - { - "type": "null" - } - ] - }, - "mint": { - "description": "Token minting permissions", - "anyOf": [ - { - "$ref": "#/definitions/MinterResponse" - }, - { - "type": "null" - } - ] - }, - "name": { - "description": "Token name", - "type": "string" - }, - "symbol": { - "description": "Token symbol", - "type": "string" - } - }, - "additionalProperties": false, - "definitions": { - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20Coin": { - "type": "object", - "required": [ - "address", - "amount" - ], - "properties": { - "address": { - "type": "string" - }, - "amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - }, - "EmbeddedLogo": { - "description": "This is used to store the logo on the blockchain in an accepted format. Enforce maximum size of 5KB on all variants.", - "oneOf": [ - { - "description": "Store the Logo as an SVG file. The content must conform to the spec at https://en.wikipedia.org/wiki/Scalable_Vector_Graphics (The contract should do some light-weight sanity-check validation)", - "type": "object", - "required": [ - "svg" - ], - "properties": { - "svg": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - }, - { - "description": "Store the Logo as a PNG file. This will likely only support up to 64x64 or so within the 5KB limit.", - "type": "object", - "required": [ - "png" - ], - "properties": { - "png": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - } - ] - }, - "InstantiateMarketingInfo": { - "description": "This structure describes the marketing info settings such as project, description, and token logo.", - "type": "object", - "properties": { - "description": { - "description": "The project description", - "type": [ - "string", - "null" - ] - }, - "logo": { - "description": "The token logo", - "anyOf": [ - { - "$ref": "#/definitions/Logo" - }, - { - "type": "null" - } - ] - }, - "marketing": { - "description": "The address of an admin who is able to update marketing info", - "type": [ - "string", - "null" - ] - }, - "project": { - "description": "The project name", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "Logo": { - "description": "This is used for uploading logo data, or setting it in InstantiateData", - "oneOf": [ - { - "description": "A reference to an externally hosted logo. Must be a valid HTTP or HTTPS URL.", - "type": "object", - "required": [ - "url" - ], - "properties": { - "url": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "Logo content stored on the blockchain. Enforce maximum size of 5KB on all variants", - "type": "object", - "required": [ - "embedded" - ], - "properties": { - "embedded": { - "$ref": "#/definitions/EmbeddedLogo" - } - }, - "additionalProperties": false - } - ] - }, - "MinterResponse": { - "type": "object", - "required": [ - "minter" - ], - "properties": { - "cap": { - "description": "cap is a hard cap on total supply that can be achieved by minting. Note that this refers to total_supply. If None, there is unlimited cap.", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "minter": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-xastro-token/raw/query.json b/schemas/astroport-xastro-token/raw/query.json deleted file mode 100644 index 92634f70d..000000000 --- a/schemas/astroport-xastro-token/raw/query.json +++ /dev/null @@ -1,229 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "This enum describes the query messages available in the contract.", - "oneOf": [ - { - "description": "Balance returns the current balance of a given address, 0 if unset.", - "type": "object", - "required": [ - "balance" - ], - "properties": { - "balance": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "BalanceAt returns balance of the given address at the given block, 0 if unset.", - "type": "object", - "required": [ - "balance_at" - ], - "properties": { - "balance_at": { - "type": "object", - "required": [ - "address", - "block" - ], - "properties": { - "address": { - "type": "string" - }, - "block": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "TotalSupplyAt returns the total token supply at the given block.", - "type": "object", - "required": [ - "total_supply_at" - ], - "properties": { - "total_supply_at": { - "type": "object", - "required": [ - "block" - ], - "properties": { - "block": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "TokenInfo returns the contract's metadata - name, decimals, supply, etc.", - "type": "object", - "required": [ - "token_info" - ], - "properties": { - "token_info": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns who can mint xASTRO and the hard cap on maximum tokens after minting.", - "type": "object", - "required": [ - "minter" - ], - "properties": { - "minter": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Allowance returns an amount of tokens the spender can spend from the owner account, 0 if unset.", - "type": "object", - "required": [ - "allowance" - ], - "properties": { - "allowance": { - "type": "object", - "required": [ - "owner", - "spender" - ], - "properties": { - "owner": { - "type": "string" - }, - "spender": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "AllAllowances returns all the allowances this token holder has approved. Supports pagination.", - "type": "object", - "required": [ - "all_allowances" - ], - "properties": { - "all_allowances": { - "type": "object", - "required": [ - "owner" - ], - "properties": { - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "owner": { - "type": "string" - }, - "start_after": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "AllAccounts returns all the accounts that have xASTRO balances. Supports pagination.", - "type": "object", - "required": [ - "all_accounts" - ], - "properties": { - "all_accounts": { - "type": "object", - "properties": { - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start_after": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns marketing related contract metadata: - description, logo, project url, etc.", - "type": "object", - "required": [ - "marketing_info" - ], - "properties": { - "marketing_info": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Downloads embeded logo data (if stored on chain). Errors if no logo data was stored for this contract.", - "type": "object", - "required": [ - "download_logo" - ], - "properties": { - "download_logo": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] -} diff --git a/schemas/astroport-xastro-token/raw/response_to_all_accounts.json b/schemas/astroport-xastro-token/raw/response_to_all_accounts.json deleted file mode 100644 index cea50fba4..000000000 --- a/schemas/astroport-xastro-token/raw/response_to_all_accounts.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AllAccountsResponse", - "type": "object", - "required": [ - "accounts" - ], - "properties": { - "accounts": { - "type": "array", - "items": { - "type": "string" - } - } - } -} diff --git a/schemas/astroport-xastro-token/raw/response_to_all_allowances.json b/schemas/astroport-xastro-token/raw/response_to_all_allowances.json deleted file mode 100644 index 012872250..000000000 --- a/schemas/astroport-xastro-token/raw/response_to_all_allowances.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AllAllowancesResponse", - "type": "object", - "required": [ - "allowances" - ], - "properties": { - "allowances": { - "type": "array", - "items": { - "$ref": "#/definitions/AllowanceInfo" - } - } - }, - "definitions": { - "AllowanceInfo": { - "type": "object", - "required": [ - "allowance", - "expires", - "spender" - ], - "properties": { - "allowance": { - "$ref": "#/definitions/Uint128" - }, - "expires": { - "$ref": "#/definitions/Expiration" - }, - "spender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Expiration": { - "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", - "oneOf": [ - { - "description": "AtHeight will expire when `env.block.height` >= height", - "type": "object", - "required": [ - "at_height" - ], - "properties": { - "at_height": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "description": "AtTime will expire when `env.block.time` >= time", - "type": "object", - "required": [ - "at_time" - ], - "properties": { - "at_time": { - "$ref": "#/definitions/Timestamp" - } - }, - "additionalProperties": false - }, - { - "description": "Never will never expire. Used to express the empty variant", - "type": "object", - "required": [ - "never" - ], - "properties": { - "never": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Timestamp": { - "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-xastro-token/raw/response_to_allowance.json b/schemas/astroport-xastro-token/raw/response_to_allowance.json deleted file mode 100644 index dbaf97db7..000000000 --- a/schemas/astroport-xastro-token/raw/response_to_allowance.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AllowanceResponse", - "type": "object", - "required": [ - "allowance", - "expires" - ], - "properties": { - "allowance": { - "$ref": "#/definitions/Uint128" - }, - "expires": { - "$ref": "#/definitions/Expiration" - } - }, - "definitions": { - "Expiration": { - "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", - "oneOf": [ - { - "description": "AtHeight will expire when `env.block.height` >= height", - "type": "object", - "required": [ - "at_height" - ], - "properties": { - "at_height": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "description": "AtTime will expire when `env.block.time` >= time", - "type": "object", - "required": [ - "at_time" - ], - "properties": { - "at_time": { - "$ref": "#/definitions/Timestamp" - } - }, - "additionalProperties": false - }, - { - "description": "Never will never expire. Used to express the empty variant", - "type": "object", - "required": [ - "never" - ], - "properties": { - "never": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Timestamp": { - "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-xastro-token/raw/response_to_balance.json b/schemas/astroport-xastro-token/raw/response_to_balance.json deleted file mode 100644 index 7dcf4d4a5..000000000 --- a/schemas/astroport-xastro-token/raw/response_to_balance.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "BalanceResponse", - "type": "object", - "required": [ - "balance" - ], - "properties": { - "balance": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-xastro-token/raw/response_to_balance_at.json b/schemas/astroport-xastro-token/raw/response_to_balance_at.json deleted file mode 100644 index 7dcf4d4a5..000000000 --- a/schemas/astroport-xastro-token/raw/response_to_balance_at.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "BalanceResponse", - "type": "object", - "required": [ - "balance" - ], - "properties": { - "balance": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-xastro-token/raw/response_to_download_logo.json b/schemas/astroport-xastro-token/raw/response_to_download_logo.json deleted file mode 100644 index c5aa32b92..000000000 --- a/schemas/astroport-xastro-token/raw/response_to_download_logo.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "DownloadLogoResponse", - "description": "When we download an embedded logo, we get this response type. We expect a SPA to be able to accept this info and display it.", - "type": "object", - "required": [ - "data", - "mime_type" - ], - "properties": { - "data": { - "$ref": "#/definitions/Binary" - }, - "mime_type": { - "type": "string" - } - }, - "additionalProperties": false, - "definitions": { - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - } - } -} diff --git a/schemas/astroport-xastro-token/raw/response_to_marketing_info.json b/schemas/astroport-xastro-token/raw/response_to_marketing_info.json deleted file mode 100644 index c36ee5f9c..000000000 --- a/schemas/astroport-xastro-token/raw/response_to_marketing_info.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MarketingInfoResponse", - "type": "object", - "properties": { - "description": { - "description": "A longer description of the token and it's utility. Designed for tooltips or such", - "type": [ - "string", - "null" - ] - }, - "logo": { - "description": "A link to the logo, or a comment there is an on-chain logo stored", - "anyOf": [ - { - "$ref": "#/definitions/LogoInfo" - }, - { - "type": "null" - } - ] - }, - "marketing": { - "description": "The address (if any) who can update this data structure", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - }, - "project": { - "description": "A URL pointing to the project behind this token.", - "type": [ - "string", - "null" - ] - } - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "LogoInfo": { - "description": "This is used to display logo info, provide a link or inform there is one that can be downloaded from the blockchain itself", - "oneOf": [ - { - "description": "A reference to an externally hosted logo. Must be a valid HTTP or HTTPS URL.", - "type": "object", - "required": [ - "url" - ], - "properties": { - "url": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "There is an embedded logo on the chain, make another call to download it.", - "type": "string", - "enum": [ - "embedded" - ] - } - ] - } - } -} diff --git a/schemas/astroport-xastro-token/raw/response_to_minter.json b/schemas/astroport-xastro-token/raw/response_to_minter.json deleted file mode 100644 index 1294efd78..000000000 --- a/schemas/astroport-xastro-token/raw/response_to_minter.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Nullable_MinterResponse", - "anyOf": [ - { - "$ref": "#/definitions/MinterResponse" - }, - { - "type": "null" - } - ], - "definitions": { - "MinterResponse": { - "type": "object", - "required": [ - "minter" - ], - "properties": { - "cap": { - "description": "cap is a hard cap on total supply that can be achieved by minting. Note that this refers to total_supply. If None, there is unlimited cap.", - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "minter": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-xastro-token/raw/response_to_token_info.json b/schemas/astroport-xastro-token/raw/response_to_token_info.json deleted file mode 100644 index 0e84d125f..000000000 --- a/schemas/astroport-xastro-token/raw/response_to_token_info.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "TokenInfoResponse", - "type": "object", - "required": [ - "decimals", - "name", - "symbol", - "total_supply" - ], - "properties": { - "decimals": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "symbol": { - "type": "string" - }, - "total_supply": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - } - } -} diff --git a/schemas/astroport-xastro-token/raw/response_to_total_supply_at.json b/schemas/astroport-xastro-token/raw/response_to_total_supply_at.json deleted file mode 100644 index 25b73e8f2..000000000 --- a/schemas/astroport-xastro-token/raw/response_to_total_supply_at.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Uint128", - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" -} diff --git a/scripts/build_juno_v1_deployment_command.py b/scripts/build_juno_v1_deployment_command.py new file mode 100644 index 000000000..504dfe707 --- /dev/null +++ b/scripts/build_juno_v1_deployment_command.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python3 +"""Build/render the final Astroport-Juno v1 deployment fill command. + +This glues together the two handoff streams: + +1. `scripts/extract_juno_v1_tx_sets.py` output from real `junod -o json` + store/instantiate transactions. +2. Manual operator values that do not appear in tx logs: owner/guardian/treasury, + tokenfactory module account, and the first counterparty denom for the sample + XYK pair create message. + +By default it prints a copy/paste-safe command for +`scripts/fill_juno_v1_deployment_config.py`. With `--render`, it also executes +that command and validates the rendered config with the deployment-template +schema/scope guard. +""" +from __future__ import annotations + +import argparse +import pathlib +import shlex +import subprocess +import sys +from typing import NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +FILL = ROOT / "scripts" / "fill_juno_v1_deployment_config.py" +CHECK_TEMPLATE = ROOT / "scripts" / "check_juno_v1_deployment_template.py" + +REQUIRED_TX_SET_PATHS = { + "code_ids.astroport-factory", + "code_ids.astroport-incentives", + "code_ids.astroport-native-coin-registry", + "code_ids.astroport-oracle", + "code_ids.astroport-pair", + "code_ids.astroport-router", + "code_ids.astroport-tokenfactory-tracker", + "code_ids.astroport-whitelist", + "code_ids.cw20-base", + "addresses.astroport-factory", + "addresses.astroport-incentives", + "addresses.astroport-native-coin-registry", + "addresses.astroport-oracle", + "addresses.astroport-router", + "addresses.astroport-tokenfactory-tracker", + "addresses.astroport-whitelist", +} + +MANUAL_SET_PATHS = { + "accounts.owner", + "accounts.guardian", + "accounts.treasury", + "accounts.tokenfactory_module", + "pair_create_msg_template.asset_infos.1.native_token.denom", +} + + +def fail(message: str) -> NoReturn: + print(f"FAIL: {message}", file=sys.stderr) + sys.exit(1) + + +def parse_set_assignment(raw: str) -> tuple[str, str]: + if "=" not in raw: + fail(f"--set assignment must be dotted.path=value, got {raw!r}") + path, value = raw.split("=", 1) + if not path or not value: + fail(f"--set assignment must include non-empty path and value, got {raw!r}") + return path, value + + +def parse_extractor_sets(path: pathlib.Path) -> list[str]: + try: + lines = path.read_text().splitlines() + except FileNotFoundError: + fail(f"missing tx sets file: {path}") + + assignments: list[str] = [] + for line_no, line in enumerate(lines, start=1): + stripped = line.strip() + if not stripped or stripped.startswith("#"): + continue + parts = shlex.split(stripped) + if len(parts) != 2 or parts[0] != "--set": + fail(f"{path}:{line_no} expected extractor line like `--set path=value`, got {line!r}") + assignments.append(parts[1]) + if not assignments: + fail(f"no --set assignments found in {path}") + return assignments + + +def add_assignment(assignments: dict[str, str], assignment: str, source: str) -> None: + path, value = parse_set_assignment(assignment) + previous = assignments.get(path) + if previous is not None and previous != value: + fail(f"conflicting values for {path}: {previous!r} vs {value!r} from {source}") + assignments[path] = value + + +def shell_command(assignments: dict[str, str], output: pathlib.Path) -> str: + args = [ + "python3", + "scripts/fill_juno_v1_deployment_config.py", + "--output", + str(output), + "--require-complete", + ] + for path in sorted(assignments): + args.extend(["--set", f"{path}={assignments[path]}"]) + return " \\\n ".join(shlex.quote(arg) for arg in args) + + +def render(assignments: dict[str, str], output: pathlib.Path) -> None: + args = [sys.executable, str(FILL), "--output", str(output), "--require-complete"] + for path in sorted(assignments): + args.extend(["--set", f"{path}={assignments[path]}"]) + fill_proc = subprocess.run(args, cwd=ROOT, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=False) + if fill_proc.returncode != 0: + fail(f"fill command failed:\nstdout={fill_proc.stdout}\nstderr={fill_proc.stderr}") + print(fill_proc.stdout, end="") + + check_proc = subprocess.run( + [sys.executable, str(CHECK_TEMPLATE), str(output)], + cwd=ROOT, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + check=False, + ) + if check_proc.returncode != 0: + fail(f"rendered config failed template guard:\nstdout={check_proc.stdout}\nstderr={check_proc.stderr}") + print(check_proc.stdout, end="") + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--tx-sets", type=pathlib.Path, required=True, help="file containing extractor `--set ...` lines") + parser.add_argument("--owner", required=True) + parser.add_argument("--guardian", required=True) + parser.add_argument("--treasury", required=True) + parser.add_argument("--tokenfactory-module", required=True) + parser.add_argument("--counterparty-denom", required=True, help="ibc/... denom for the sample JUNO/counterparty XYK pair-create template") + parser.add_argument("--output", type=pathlib.Path, default=pathlib.Path("deployment/juno-v1-testnet.filled.json")) + parser.add_argument("--render", action="store_true", help="execute the fill command and validate the rendered config") + return parser.parse_args() + + +def main() -> None: + args = parse_args() + assignments: dict[str, str] = {} + + for assignment in parse_extractor_sets(args.tx_sets): + add_assignment(assignments, assignment, str(args.tx_sets)) + + manual = { + "accounts.owner": args.owner, + "accounts.guardian": args.guardian, + "accounts.treasury": args.treasury, + "accounts.tokenfactory_module": args.tokenfactory_module, + "pair_create_msg_template.asset_infos.1.native_token.denom": args.counterparty_denom, + } + for path, value in manual.items(): + add_assignment(assignments, f"{path}={value}", "manual arg") + + missing_tx = sorted(REQUIRED_TX_SET_PATHS - assignments.keys()) + if missing_tx: + fail("tx sets missing required deployment values: " + ", ".join(missing_tx)) + extra_tx = sorted(path for path in assignments if path not in REQUIRED_TX_SET_PATHS | MANUAL_SET_PATHS) + if extra_tx: + fail("unexpected deployment set paths: " + ", ".join(extra_tx)) + + command = shell_command(assignments, args.output) + print(command) + print(f"sets={len(assignments)} tx_sets={len(REQUIRED_TX_SET_PATHS)} manual_sets={len(MANUAL_SET_PATHS)} render={args.render}") + + if args.render: + render(assignments, args.output) + + +if __name__ == "__main__": + main() diff --git a/scripts/build_juno_v1_frontend_release_bundle.py b/scripts/build_juno_v1_frontend_release_bundle.py new file mode 100644 index 000000000..826654e17 --- /dev/null +++ b/scripts/build_juno_v1_frontend_release_bundle.py @@ -0,0 +1,197 @@ +#!/usr/bin/env python3 +"""Package the verified Astroport-Juno v1 frontend handoff files. + +The bundle is intentionally narrow: a rendered uni-7 deployment config, the +Juno v1 TypeScript declaration, the optional example fixture, and a manifest +with sha256/size metadata. It does not include the placeholder template, tx +logs, wasm artifacts, or any deferred DEX surfaces. +""" +from __future__ import annotations + +import argparse +import hashlib +import json +import pathlib +import subprocess +import sys +import zipfile +from typing import Any, NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +DEFAULT_CONFIG = ROOT / "deployment" / "juno-v1-testnet.json" +DEFAULT_TYPES = ROOT / "deployment" / "juno-v1-frontend-config.d.ts" +DEFAULT_EXAMPLE = ROOT / "deployment" / "juno-v1-frontend-config.example.ts" +DEFAULT_OUTPUT = ROOT / "deployment" / "juno-v1-frontend-release.zip" +CHECK_TEMPLATE = ROOT / "scripts" / "check_juno_v1_deployment_template.py" +CHECK_FRONTEND = ROOT / "scripts" / "check_juno_v1_frontend_config.py" +GENERATE_TYPES = ROOT / "scripts" / "generate_juno_v1_frontend_types.py" +CHECK_EXAMPLE = ROOT / "scripts" / "check_juno_v1_frontend_example.py" +CHECK_SYNC = ROOT / "scripts" / "check_juno_v1_frontend_handoff_sync.py" + +BUNDLE_CONFIG_NAME = "juno-v1-testnet.json" +BUNDLE_TYPES_NAME = "juno-v1-frontend-config.d.ts" +BUNDLE_EXAMPLE_NAME = "juno-v1-frontend-config.example.ts" +BUNDLE_MANIFEST_NAME = "MANIFEST.json" +FORBIDDEN_NAMES = { + "juno-v1-testnet.template.json", + "tx-sets.txt", +} +FORBIDDEN_SUBSTRINGS = ( + "stable", + "concentrated", + "pcl", + "xastro", + "vesting", + "maker", + "perps", + "lst", +) +FORBIDDEN_CONTENT_SUBSTRINGS = tuple( + fragment for fragment in FORBIDDEN_SUBSTRINGS if fragment not in {"maker", "vesting"} +) + + +def fail(message: str) -> NoReturn: + print(f"FAIL: {message}", file=sys.stderr) + sys.exit(1) + + +def repo_relative(path: pathlib.Path) -> str: + try: + return str(path.resolve().relative_to(ROOT)) + except ValueError: + return str(path) + + +def run(args: list[str]) -> str: + proc = subprocess.run(args, cwd=ROOT, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=False) + if proc.returncode != 0: + fail(f"command failed: {' '.join(args)}\nstdout={proc.stdout}\nstderr={proc.stderr}") + return proc.stdout + + +def read_bytes(path: pathlib.Path) -> bytes: + try: + return path.read_bytes() + except FileNotFoundError: + fail(f"missing release input: {repo_relative(path)}") + + +def load_config(path: pathlib.Path) -> dict[str, Any]: + try: + data = json.loads(path.read_text()) + except FileNotFoundError: + fail(f"missing release config: {repo_relative(path)}") + except json.JSONDecodeError as exc: + fail(f"invalid release config JSON: {exc}") + if not isinstance(data, dict): + fail("release config must be a JSON object") + return data + + +def sha256(data: bytes) -> str: + return hashlib.sha256(data).hexdigest() + + +def assert_not_template(config: dict[str, Any]) -> None: + text = json.dumps(config, sort_keys=True).lower() + for marker in ("todo", "placeholder", "replace-me"): + if marker in text: + fail(f"release config still contains placeholder marker: {marker}") + + +def assert_bundle_scope(entries: dict[str, bytes]) -> None: + for name, data in entries.items(): + lower_name = name.lower() + if name in FORBIDDEN_NAMES or lower_name.startswith("tx/") or lower_name.endswith(".wasm"): + fail(f"forbidden file in frontend bundle: {name}") + if any(fragment in lower_name for fragment in FORBIDDEN_SUBSTRINGS): + fail(f"forbidden deferred-scope filename in frontend bundle: {name}") + if name.endswith((".json", ".ts")): + text = data.decode("utf-8", errors="ignore").lower() + bad = [fragment for fragment in FORBIDDEN_CONTENT_SUBSTRINGS if fragment in text] + # The v1 config still carries schema-required maker_fee_bps and + # incentives vesting_contract fields, but should not mention any + # deferred pool/DEX-token surfaces in release bundle contents. + if bad: + fail(f"forbidden deferred-scope text in {name}: {', '.join(sorted(set(bad)))}") + + +def build_manifest(entries: dict[str, bytes], config: dict[str, Any]) -> dict[str, Any]: + frontend = config.get("frontend", {}) + network = config.get("network", {}) + addresses = config.get("addresses", {}) + return { + "bundle": "astroport-juno-v1-frontend-release", + "network": network.get("chain_id"), + "native_asset_denom": network.get("native_asset_denom"), + "scope": "xyk-only, permissionless, no DEX token", + "pair_discovery": frontend.get("pair_discovery"), + "required_frontend_addresses": frontend.get("required_addresses", []), + "optional_frontend_addresses": frontend.get("optional_addresses", []), + "address_count": len(addresses) if isinstance(addresses, dict) else None, + "files": [ + { + "path": name, + "bytes": len(data), + "sha256": sha256(data), + } + for name, data in entries.items() + ], + } + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--config", type=pathlib.Path, default=DEFAULT_CONFIG, help="rendered deployment config JSON") + parser.add_argument("--types", type=pathlib.Path, default=DEFAULT_TYPES, help="generated TypeScript declaration") + parser.add_argument("--example", type=pathlib.Path, default=DEFAULT_EXAMPLE, help="optional frontend example fixture") + parser.add_argument("--output", type=pathlib.Path, default=DEFAULT_OUTPUT, help="zip bundle to write") + parser.add_argument("--skip-example", action="store_true", help="omit the optional example fixture") + return parser.parse_args() + + +def main() -> None: + args = parse_args() + config_path = args.config.resolve() + output_path = args.output.resolve() + + if config_path.name == "juno-v1-testnet.template.json": + fail("refusing to package the placeholder deployment template as a frontend release") + + config = load_config(config_path) + assert_not_template(config) + + run([sys.executable, str(CHECK_TEMPLATE), str(config_path)]) + run([sys.executable, str(CHECK_FRONTEND), str(config_path)]) + run([sys.executable, str(GENERATE_TYPES), "--check"]) + if not args.skip_example: + run([sys.executable, str(CHECK_EXAMPLE)]) + run([sys.executable, str(CHECK_SYNC)]) + + entries = { + BUNDLE_CONFIG_NAME: json.dumps(config, indent=2, sort_keys=True).encode("utf-8") + b"\n", + BUNDLE_TYPES_NAME: read_bytes(args.types.resolve()), + } + if not args.skip_example: + entries[BUNDLE_EXAMPLE_NAME] = read_bytes(args.example.resolve()) + assert_bundle_scope(entries) + + manifest = build_manifest(entries, config) + manifest_bytes = json.dumps(manifest, indent=2, sort_keys=True).encode("utf-8") + b"\n" + + output_path.parent.mkdir(parents=True, exist_ok=True) + with zipfile.ZipFile(output_path, "w", compression=zipfile.ZIP_DEFLATED) as archive: + for name, data in entries.items(): + archive.writestr(name, data) + archive.writestr(BUNDLE_MANIFEST_NAME, manifest_bytes) + + print(f"OK: wrote Astroport-Juno v1 frontend release bundle to {output_path}") + print( + f"bundle_files={len(entries)} manifest={BUNDLE_MANIFEST_NAME} " + f"required_addresses={len(manifest['required_frontend_addresses'])} optional_addresses={len(manifest['optional_frontend_addresses'])}" + ) + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_artifacts.py b/scripts/check_juno_v1_artifacts.py new file mode 100755 index 000000000..dab7083e0 --- /dev/null +++ b/scripts/check_juno_v1_artifacts.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python3 +"""Check optimized wasm artifacts against the Astroport-Juno v1 contract set. + +This guard is intentionally dependency-free so CI can run it immediately after +rust-optimizer. It catches the release-risk class where the workspace or build +container emits a deferred contract wasm even though docs/schemas describe the +smaller Juno v1 surface. +""" +from __future__ import annotations + +import argparse +import pathlib +import sys + +ROOT = pathlib.Path(__file__).resolve().parents[1] + +EXPECTED_ARTIFACTS = { + "astroport_factory.wasm", + "astroport_incentives.wasm", + "astroport_native_coin_registry.wasm", + "astroport_oracle.wasm", + "astroport_pair.wasm", + "astroport_router.wasm", + "astroport_tokenfactory_tracker.wasm", + "astroport_whitelist.wasm", +} + +FORBIDDEN_ARTIFACT_FRAGMENTS = ( + "converter", + "maker", + "pair_concentrated", + "pair_stable", + "pair_xastro", + "sale_tax", + "staking", + "vesting", + "xastro_token", +) + + +def fail(msg: str) -> None: + print(f"FAIL: {msg}") + sys.exit(1) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + "artifacts_dir", + nargs="?", + default=str(ROOT / "artifacts"), + help="Directory containing optimized .wasm artifacts (default: ./artifacts)", + ) + return parser.parse_args() + + +def main() -> None: + args = parse_args() + artifacts_dir = pathlib.Path(args.artifacts_dir) + if not artifacts_dir.exists(): + fail(f"artifacts directory is missing: {artifacts_dir}") + if not artifacts_dir.is_dir(): + fail(f"artifacts path is not a directory: {artifacts_dir}") + + actual = {p.name for p in artifacts_dir.glob("*.wasm") if p.is_file()} + missing = EXPECTED_ARTIFACTS - actual + extra = actual - EXPECTED_ARTIFACTS + forbidden = sorted( + name + for name in actual + if any(fragment in name for fragment in FORBIDDEN_ARTIFACT_FRAGMENTS) + ) + + if missing: + fail(f"missing v1 artifact(s): {sorted(missing)}") + if forbidden: + fail(f"forbidden deferred artifact(s): {forbidden}") + if extra: + fail(f"unexpected artifact(s): {sorted(extra)}") + + print("OK: optimized artifacts match Astroport-Juno v1 contract set") + print(f"artifact_count={len(actual)} expected={len(EXPECTED_ARTIFACTS)}") + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_ci_wiring.py b/scripts/check_juno_v1_ci_wiring.py new file mode 100644 index 000000000..4b0e445e4 --- /dev/null +++ b/scripts/check_juno_v1_ci_wiring.py @@ -0,0 +1,136 @@ +#!/usr/bin/env python3 +"""Validate CI wiring for Astroport-Juno v1 launch guards. + +This is intentionally dependency-free: it scans the GitHub Actions workflow text +for the no-network guard commands and their ordering relative to expensive Rust +/ optimizer work. It catches accidental workflow edits that would leave the Juno +v1 scope/template/artifact guards documented but not actually enforced in CI. +""" +from __future__ import annotations + +import pathlib +import sys +from typing import NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +WORKFLOWS = ROOT / ".github" / "workflows" +TESTS = WORKFLOWS / "tests_and_checks.yml" +ARTIFACTS = WORKFLOWS / "check_artifacts.yml" + + +class WorkflowText: + def __init__(self, path: pathlib.Path) -> None: + self.path = path + try: + self.lines = path.read_text().splitlines() + except FileNotFoundError: + fail(f"missing workflow: {path.relative_to(ROOT)}") + + def first(self, needle: str) -> int: + for idx, line in enumerate(self.lines, start=1): + if needle in line: + return idx + fail(f"{self.path.relative_to(ROOT)} missing: {needle}") + + def all(self, needle: str) -> list[int]: + hits = [idx for idx, line in enumerate(self.lines, start=1) if needle in line] + if not hits: + fail(f"{self.path.relative_to(ROOT)} missing: {needle}") + return hits + + +def fail(msg: str) -> NoReturn: + print(f"FAIL: {msg}") + sys.exit(1) + + +def assert_before(name: str, left_line: int, right_line: int) -> None: + if left_line >= right_line: + fail(f"expected {name} before line {right_line}, got line {left_line}") + + +def main() -> None: + tests = WorkflowText(TESTS) + artifacts = WorkflowText(ARTIFACTS) + + scope_line = tests.first("scripts/check_juno_v1_scope.py") + schema_lines = tests.all("scripts/check_juno_v1_schemas.py") + template_line = tests.first("scripts/check_juno_v1_deployment_template.py") + tx_extractor_line = tests.first("scripts/check_juno_v1_tx_extractor.py") + deployment_command_line = tests.first("scripts/check_juno_v1_deployment_command.py") + operator_checklist_line = tests.first("scripts/check_juno_v1_operator_checklist.py") + dry_run_txs_line = tests.first("scripts/check_juno_v1_dry_run_txs.py") + deployment_gitignore_line = tests.first("scripts/check_juno_v1_deployment_gitignore.py") + deployment_readme_line = tests.first("scripts/check_juno_v1_deployment_readme.py") + frontend_config_line = tests.first("scripts/check_juno_v1_frontend_config.py") + frontend_types_line = tests.first("scripts/generate_juno_v1_frontend_types.py --check") + frontend_example_line = tests.first("scripts/check_juno_v1_frontend_example.py") + frontend_handoff_sync_line = tests.first("scripts/check_juno_v1_frontend_handoff_sync.py") + frontend_release_checklist_line = tests.first("scripts/check_juno_v1_frontend_release_checklist.py") + ci_wiring_line = tests.first("scripts/check_juno_v1_ci_wiring.py") + rust_line = tests.first("dtolnay/rust-toolchain@stable") + build_schemas_line = tests.first("scripts/build_schemas.sh") + diff_index_line = tests.first("git diff-index --cached HEAD --exit-code") + + for label, line in ( + ("scope guard", scope_line), + ("schema guard", schema_lines[0]), + ("deployment template guard", template_line), + ("tx extractor fixture guard", tx_extractor_line), + ("deployment command guard", deployment_command_line), + ("operator checklist guard", operator_checklist_line), + ("dry-run tx rehearsal guard", dry_run_txs_line), + ("deployment gitignore guard", deployment_gitignore_line), + ("deployment README guard", deployment_readme_line), + ("frontend config guard", frontend_config_line), + ("frontend TypeScript handoff guard", frontend_types_line), + ("frontend TypeScript example guard", frontend_example_line), + ("frontend handoff sync guard", frontend_handoff_sync_line), + ("frontend release checklist guard", frontend_release_checklist_line), + ("CI wiring guard", ci_wiring_line), + ): + assert_before(label, line, rust_line) + + if not ( + scope_line + < schema_lines[0] + < template_line + < tx_extractor_line + < deployment_command_line + < operator_checklist_line + < dry_run_txs_line + < deployment_gitignore_line + < deployment_readme_line + < frontend_config_line + < frontend_types_line + < frontend_example_line + < frontend_handoff_sync_line + < frontend_release_checklist_line + < ci_wiring_line + ): + fail("tests workflow must run launch guards in scope/schema/template/tx-extractor/deployment-command/operator-checklist/dry-run-txs/deployment-gitignore/deployment-readme/frontend-config/frontend-types/frontend-example/frontend-handoff-sync/frontend-release-checklist/ci-wiring order") + + if len(schema_lines) < 2: + fail("tests workflow must run schema guard both before Rust work and after schema generation") + if not (build_schemas_line < schema_lines[-1] < diff_index_line): + fail( + "post-generation schema guard must run after build_schemas.sh and before git diff-index" + ) + + build_artifacts_line = artifacts.first("name: Build Artifacts") + size_line = artifacts.first("scripts/check_artifacts_size.sh") + artifact_guard_line = artifacts.first("scripts/check_juno_v1_artifacts.py") + cosmwasm_check_line = artifacts.first("Cosmwasm check") + + if not (build_artifacts_line < size_line < artifact_guard_line < cosmwasm_check_line): + fail("artifact workflow must build, size-check, v1 artifact-check, then cosmwasm-check") + + print("OK: GitHub Actions wiring enforces Astroport-Juno v1 guards") + print( + "tests_guards=scope/schema/template/tx-extractor/deployment-command/operator-checklist pre_rust=true " + "dry_run_txs=true deployment_gitignore=true deployment_readme=true frontend_config=true frontend_types=true frontend_example=true frontend_handoff_sync=true frontend_release_checklist=true schema_post_generation=true artifact_guard_after_size=true" + ) + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_deployment_command.py b/scripts/check_juno_v1_deployment_command.py new file mode 100644 index 000000000..1d83751c6 --- /dev/null +++ b/scripts/check_juno_v1_deployment_command.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 +"""Self-test final Astroport-Juno v1 deployment command bundling.""" +from __future__ import annotations + +import pathlib +import subprocess +import sys +import tempfile +from typing import NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +BUILDER = ROOT / "scripts" / "build_juno_v1_deployment_command.py" + +TX_SET_LINES = [ + "--set code_ids.astroport-factory='101'", + "--set code_ids.astroport-incentives='102'", + "--set code_ids.astroport-native-coin-registry='103'", + "--set code_ids.astroport-oracle='104'", + "--set code_ids.astroport-pair='105'", + "--set code_ids.astroport-router='106'", + "--set code_ids.astroport-tokenfactory-tracker='107'", + "--set code_ids.astroport-whitelist='108'", + "--set code_ids.cw20-base='109'", + "--set addresses.astroport-factory='juno1factory000000000000000000000000000000000'", + "--set addresses.astroport-incentives='juno1incentives00000000000000000000000000000'", + "--set addresses.astroport-native-coin-registry='juno1registry0000000000000000000000000000000'", + "--set addresses.astroport-oracle='juno1oracle0000000000000000000000000000000000'", + "--set addresses.astroport-router='juno1router0000000000000000000000000000000000'", + "--set addresses.astroport-tokenfactory-tracker='juno1tracker00000000000000000000000000000000'", + "--set addresses.astroport-whitelist='juno1whitelist000000000000000000000000000000'", +] + + +def fail(message: str) -> NoReturn: + print(f"FAIL: {message}", file=sys.stderr) + sys.exit(1) + + +def run(args: list[str], *, expect_ok: bool = True) -> subprocess.CompletedProcess[str]: + proc = subprocess.run( + [sys.executable, str(BUILDER), *args], + cwd=ROOT, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + check=False, + ) + if expect_ok and proc.returncode != 0: + fail(f"builder failed for {args!r}: stdout={proc.stdout!r} stderr={proc.stderr!r}") + if not expect_ok and proc.returncode == 0: + fail(f"builder unexpectedly succeeded for {args!r}: stdout={proc.stdout!r}") + return proc + + +def main() -> None: + with tempfile.TemporaryDirectory(prefix="juno-v1-deployment-command-") as raw_tmp: + tmp = pathlib.Path(raw_tmp) + tx_sets = tmp / "tx-sets.txt" + rendered = tmp / "juno-v1-filled.json" + tx_sets.write_text("\n".join(TX_SET_LINES) + "\n") + + common_args = [ + "--tx-sets", + str(tx_sets), + "--owner", + "juno1owner0000000000000000000000000000000000", + "--guardian", + "juno1guardian00000000000000000000000000000000", + "--treasury", + "juno1treasury00000000000000000000000000000000", + "--tokenfactory-module", + "juno1factorymodule0000000000000000000000000000", + "--counterparty-denom", + "ibc/0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF", + "--output", + str(rendered), + ] + + dry = run(common_args).stdout + for needle in ( + "scripts/fill_juno_v1_deployment_config.py", + "--require-complete", + "--set", + "sets=21 tx_sets=16 manual_sets=5 render=False", + ): + if needle not in dry: + fail(f"dry command output missing {needle!r}: {dry!r}") + + rendered_proc = run([*common_args, "--render"]).stdout + for needle in ( + "sets=21 tx_sets=16 manual_sets=5 render=True", + "OK: wrote rendered Juno v1 deployment config", + "OK: Juno v1 deployment template matches instantiate schema requirements", + "pair_type=xyk", + ): + if needle not in rendered_proc: + fail(f"render output missing {needle!r}: {rendered_proc!r}") + if not rendered.exists(): + fail("render mode did not create output config") + + incomplete = tmp / "incomplete-tx-sets.txt" + incomplete.write_text("\n".join(TX_SET_LINES[:-1]) + "\n") + bad = run([*common_args[:1], str(incomplete), *common_args[2:]], expect_ok=False) + if "tx sets missing required deployment values" not in bad.stderr: + fail(f"incomplete tx-set failure was not explicit: {bad.stderr!r}") + + print("OK: Juno v1 deployment command builder combines tx sets and manual values") + print("sets=21 tx_sets=16 manual_sets=5 render_guard=true failure_cases=1") + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_deployment_gitignore.py b/scripts/check_juno_v1_deployment_gitignore.py new file mode 100644 index 000000000..1a8fe5d1a --- /dev/null +++ b/scripts/check_juno_v1_deployment_gitignore.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 +"""Validate gitignore safety rails for Astroport-Juno v1 deployment output. + +Real uni-7 tx JSON and rendered deployment configs are operator/local artifacts. +This guard keeps those paths out of git so rehearsals and real deployment output +cannot be accidentally committed as source-of-truth contract changes. +""" +from __future__ import annotations + +import pathlib +import subprocess +import sys +from typing import NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +GITIGNORE = ROOT / ".gitignore" +GENERATOR = ROOT / "scripts" / "generate_juno_v1_dry_run_txs.py" +README = ROOT / "deployment" / "README.md" + +REQUIRED_GITIGNORE_LINES = ( + "/deployment/tx/", + "/deployment/juno-v1-testnet.json", +) + +SHOULD_BE_IGNORED = ( + "deployment/tx/uni-7/store-astroport-factory.json", + "deployment/tx/uni-7/instantiate-astroport-factory.json", + "deployment/tx/uni-7/tx-sets.txt", + "deployment/tx/uni-7-dry-run/store-astroport-factory.json", + "deployment/juno-v1-testnet.json", +) + +FORBIDDEN_TRACKED_PREFIXES = ( + "deployment/tx/", +) + +FORBIDDEN_TRACKED_FILES = ( + "deployment/juno-v1-testnet.json", +) + + +def fail(message: str) -> NoReturn: + print(f"FAIL: {message}", file=sys.stderr) + sys.exit(1) + + +def run_git(args: list[str]) -> subprocess.CompletedProcess[str]: + return subprocess.run( + ["git", *args], + cwd=ROOT, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + check=False, + ) + + +def require_ignored(path: str) -> None: + proc = run_git(["check-ignore", "--no-index", path]) + if proc.returncode != 0: + fail(f"expected git to ignore {path}; stderr={proc.stderr.strip()!r}") + + +def main() -> None: + gitignore = GITIGNORE.read_text() + for line in REQUIRED_GITIGNORE_LINES: + if line not in gitignore.splitlines(): + fail(f".gitignore missing required deployment artifact ignore: {line}") + + for path in SHOULD_BE_IGNORED: + require_ignored(path) + + tracked = run_git(["ls-files", "--", "deployment/tx", "deployment/juno-v1-testnet.json"]) + if tracked.returncode != 0: + fail(f"git ls-files failed: {tracked.stderr.strip()}") + tracked_paths = [line.strip() for line in tracked.stdout.splitlines() if line.strip()] + forbidden = [ + path + for path in tracked_paths + if path in FORBIDDEN_TRACKED_FILES or any(path.startswith(prefix) for prefix in FORBIDDEN_TRACKED_PREFIXES) + ] + if forbidden: + fail("deployment local artifacts are tracked: " + ", ".join(forbidden)) + + generator = GENERATOR.read_text() + if 'default=pathlib.Path("deployment/tx/uni-7-dry-run")' not in generator: + fail("dry-run tx generator default output must stay under ignored deployment/tx/") + + readme = README.read_text() + for needle in ( + "ignored directory", + "deployment/tx/uni-7-dry-run", + "juno-v1-testnet.json` — suggested rendered output path; do not commit real values", + ): + if needle not in readme: + fail(f"deployment README missing gitignore safety text: {needle}") + + print("OK: Juno v1 deployment tx/output paths stay gitignored") + print(f"ignored_paths={len(SHOULD_BE_IGNORED)} tracked_artifacts=0 generator_default=deployment/tx/uni-7-dry-run") + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_deployment_readme.py b/scripts/check_juno_v1_deployment_readme.py new file mode 100644 index 000000000..a54d6940c --- /dev/null +++ b/scripts/check_juno_v1_deployment_readme.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python3 +"""Validate the Astroport-Juno v1 deployment README handoff. + +The README is the operator/frontend bridge for uni-7. This guard keeps its +manual value checklist, render command, dry-run rehearsal, and frontend +consumption snippet aligned with the dependency-free deployment helpers. +""" +from __future__ import annotations + +import pathlib +import re +import sys +from typing import NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +README = ROOT / "deployment" / "README.md" +TYPES = ROOT / "deployment" / "juno-v1-frontend-config.d.ts" +EXAMPLE = ROOT / "deployment" / "juno-v1-frontend-config.example.ts" +TEMPLATE = ROOT / "deployment" / "juno-v1-testnet.template.json" + +ACCOUNT_SETS = ( + "accounts.owner", + "accounts.guardian", + "accounts.treasury", + "accounts.tokenfactory_module", +) +CODE_ID_SETS = ( + "code_ids.astroport-factory", + "code_ids.astroport-incentives", + "code_ids.astroport-native-coin-registry", + "code_ids.astroport-oracle", + "code_ids.astroport-pair", + "code_ids.astroport-router", + "code_ids.astroport-tokenfactory-tracker", + "code_ids.astroport-whitelist", + "code_ids.cw20-base", +) +ADDRESS_SETS = ( + "addresses.astroport-factory", + "addresses.astroport-incentives", + "addresses.astroport-native-coin-registry", + "addresses.astroport-oracle", + "addresses.astroport-router", + "addresses.astroport-tokenfactory-tracker", + "addresses.astroport-whitelist", +) +PAIR_SET = "pair_create_msg_template.asset_infos.1.native_token.denom" +REQUIRED_SECTIONS = ( + "## Required values after upload / instantiate", + "## Extract values from tx JSON", + "## Render command shape", + "## Frontend consumption", + "## Scope guardrails", +) +REQUIRED_COMMANDS = ( + "python3 scripts/generate_juno_v1_dry_run_txs.py --output-dir deployment/tx/uni-7-dry-run", + "python3 scripts/check_juno_v1_dry_run_txs.py", + "python3 scripts/extract_juno_v1_tx_sets.py", + "python3 scripts/fill_juno_v1_deployment_config.py", + "python3 scripts/check_juno_v1_deployment_template.py deployment/juno-v1-testnet.json", +) +FRONTEND_SNIPPET = ( + 'import deployment from "./juno-v1-testnet.json";', + 'import type { JunoV1FrontendDeploymentConfig } from "./juno-v1-frontend-config";', + "const config = deployment satisfies JunoV1FrontendDeploymentConfig;", +) +SCOPE_GUARDRAILS = ( + "v1 is XYK-only and permissionless.", + "No new DEX token is introduced; incentives use the configured native denom.", + "Do not add stable pairs, LSTs, perps, or yield surfaces to this config.", + "discover pools through factory queries", +) + + +def fail(message: str) -> NoReturn: + print(f"FAIL: {message}", file=sys.stderr) + sys.exit(1) + + +def require_once(text: str, needle: str, label: str | None = None) -> None: + count = text.count(needle) + if count != 1: + fail(f"expected exactly one {label or needle!r}, found {count}") + + +def main() -> None: + try: + text = README.read_text() + except FileNotFoundError: + fail("missing deployment/README.md") + + for path in (TYPES, EXAMPLE, TEMPLATE): + if not path.exists(): + fail(f"README references handoff file that is missing: {path.relative_to(ROOT)}") + + for section in REQUIRED_SECTIONS: + require_once(text, section, f"README section {section}") + + for needle in REQUIRED_COMMANDS + FRONTEND_SNIPPET + SCOPE_GUARDRAILS: + if needle not in text: + fail(f"README missing required handoff text: {needle}") + + for key in ACCOUNT_SETS + CODE_ID_SETS + ADDRESS_SETS + (PAIR_SET,): + # Each required value should appear once in the checklist and once in the + # render command, preventing one side of the handoff from drifting. + if text.count(key) < 2: + fail(f"README must mention {key} in both checklist and render command") + require_once(text, f"--set {key}=", f"render --set for {key}") + + if "operator-tx-checklist.md" not in text: + fail("README must link the operator tx checklist") + if "juno-v1-frontend-config.example.ts" not in text: + fail("README must link the frontend TypeScript example") + if not re.search(r"first pool form can start from `config\.pair_create_msg_template`", text): + fail("README must keep first-pool template as a form seed, not a hardcoded pool") + if re.search(r"stable|PCL|LST|perps|yield", text, flags=re.IGNORECASE) and "Do not add stable pairs, LSTs, perps, or yield surfaces" not in text: + fail("README has deferred-scope words without the explicit v1 guardrail") + + print("OK: Juno v1 deployment README matches operator/frontend handoff helpers") + print( + f"account_sets={len(ACCOUNT_SETS)} code_id_sets={len(CODE_ID_SETS)} " + f"address_sets={len(ADDRESS_SETS)} frontend_snippet=true scope_guardrails=true" + ) + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_deployment_template.py b/scripts/check_juno_v1_deployment_template.py new file mode 100644 index 000000000..d99c364ad --- /dev/null +++ b/scripts/check_juno_v1_deployment_template.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python3 +"""Validate the Astroport-Juno v1 deployment config template. + +This deliberately avoids jsonschema dependencies. It checks the parts that reduce +launch risk here: every v1 instantiate message exists, all schema-required fields +are present, code IDs/addresses are wired for the exact v1 contract set, and the +factory/pair templates stay XYK-only and permissionless. +""" +from __future__ import annotations + +import argparse +import json +import pathlib +import sys +from typing import NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +TEMPLATE = ROOT / "deployment" / "juno-v1-testnet.template.json" +SCHEMAS = ROOT / "schemas" + +EXPECTED_CONTRACTS = ( + "astroport-factory", + "astroport-incentives", + "astroport-native-coin-registry", + "astroport-oracle", + "astroport-router", + "astroport-tokenfactory-tracker", + "astroport-whitelist", +) +EXPECTED_CODE_IDS = EXPECTED_CONTRACTS + ("astroport-pair", "cw20-base") +EXPECTED_ADDRESSES = EXPECTED_CONTRACTS +FORBIDDEN_PAIR_TYPES = {"stable", "custom", "concentrated"} + + +def fail(msg: str) -> NoReturn: + print(f"FAIL: {msg}") + sys.exit(1) + + +def load_json(path: pathlib.Path) -> dict: + try: + return json.loads(path.read_text()) + except FileNotFoundError: + fail(f"missing {path.relative_to(ROOT)}") + except json.JSONDecodeError as exc: + fail(f"invalid JSON in {path.relative_to(ROOT)}: {exc}") + + +def required_fields(contract: str) -> set[str]: + schema = load_json(SCHEMAS / contract / "raw" / "instantiate.json") + return set(schema.get("required", [])) + + +def assert_exact_keys(name: str, actual: dict, expected: tuple[str, ...]) -> None: + actual_keys = set(actual) + expected_keys = set(expected) + missing = sorted(expected_keys - actual_keys) + extra = sorted(actual_keys - expected_keys) + if missing or extra: + fail(f"{name} key mismatch: missing={missing} extra={extra}") + + +def pair_type_keys(pair_type: object) -> set[str]: + if not isinstance(pair_type, dict): + fail(f"pair_type must be an object, got {type(pair_type).__name__}") + return set(pair_type) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + "config", + nargs="?", + type=pathlib.Path, + default=TEMPLATE, + help="deployment config JSON to validate (default: deployment/juno-v1-testnet.template.json)", + ) + return parser.parse_args() + + +def main() -> None: + args = parse_args() + cfg = load_json(args.config) + + for top in ("network", "accounts", "code_ids", "addresses", "instantiate_msgs", "pair_create_msg_template", "frontend"): + if top not in cfg: + fail(f"missing top-level section: {top}") + + assert_exact_keys("code_ids", cfg["code_ids"], EXPECTED_CODE_IDS) + assert_exact_keys("addresses", cfg["addresses"], EXPECTED_ADDRESSES) + assert_exact_keys("instantiate_msgs", cfg["instantiate_msgs"], EXPECTED_CONTRACTS) + + for contract in EXPECTED_CONTRACTS: + msg = cfg["instantiate_msgs"].get(contract) + if not isinstance(msg, dict): + fail(f"instantiate_msgs.{contract} must be an object") + missing = sorted(required_fields(contract) - set(msg)) + if missing: + fail(f"instantiate_msgs.{contract} missing required field(s): {missing}") + + factory_msg = cfg["instantiate_msgs"]["astroport-factory"] + pair_configs = factory_msg.get("pair_configs") + if not isinstance(pair_configs, list) or len(pair_configs) != 1: + fail("factory pair_configs must contain exactly one v1 XYK config") + pair_config = pair_configs[0] + keys = pair_type_keys(pair_config.get("pair_type")) + if keys != {"xyk"}: + fail(f"factory pair_type must be XYK-only, got {sorted(keys)}") + if pair_config.get("permissioned") is not False: + fail("factory XYK pair config must remain permissionless") + if pair_config.get("is_disabled") is True: + fail("factory XYK pair config must not be disabled") + if keys & FORBIDDEN_PAIR_TYPES: + fail(f"factory contains forbidden pair type(s): {sorted(keys & FORBIDDEN_PAIR_TYPES)}") + + create_template = cfg["pair_create_msg_template"] + create_keys = pair_type_keys(create_template.get("pair_type")) + if create_keys != {"xyk"}: + fail(f"pair_create_msg_template pair_type must be XYK-only, got {sorted(create_keys)}") + if "asset_infos" not in create_template: + fail("pair_create_msg_template missing asset_infos") + if "init_params" not in create_template: + fail("pair_create_msg_template missing init_params") + + required_frontend = set(cfg["frontend"].get("required_addresses", [])) + missing_frontend = required_frontend - set(cfg["addresses"]) + if missing_frontend: + fail(f"frontend.required_addresses missing from addresses: {sorted(missing_frontend)}") + + print("OK: Juno v1 deployment template matches instantiate schema requirements") + print(f"instantiate_msgs={len(EXPECTED_CONTRACTS)} code_ids={len(EXPECTED_CODE_IDS)} addresses={len(EXPECTED_ADDRESSES)} pair_type=xyk") + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_dry_run_txs.py b/scripts/check_juno_v1_dry_run_txs.py new file mode 100755 index 000000000..881f36efc --- /dev/null +++ b/scripts/check_juno_v1_dry_run_txs.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 +"""Smoke-test the Astroport-Juno v1 dry-run tx fixture generator.""" +from __future__ import annotations + +import pathlib +import subprocess +import sys +import tempfile + +ROOT = pathlib.Path(__file__).resolve().parents[1] +GENERATOR = ROOT / "scripts" / "generate_juno_v1_dry_run_txs.py" +EXTRACTOR = ROOT / "scripts" / "extract_juno_v1_tx_sets.py" +BUILDER = ROOT / "scripts" / "build_juno_v1_deployment_command.py" +CHECK_FRONTEND = ROOT / "scripts" / "check_juno_v1_frontend_config.py" + +STORE_KEYS = ( + "astroport-factory", + "astroport-incentives", + "astroport-native-coin-registry", + "astroport-oracle", + "astroport-pair", + "astroport-router", + "astroport-tokenfactory-tracker", + "astroport-whitelist", + "cw20-base", +) + +ADDRESS_KEYS = ( + "astroport-factory", + "astroport-incentives", + "astroport-native-coin-registry", + "astroport-oracle", + "astroport-router", + "astroport-tokenfactory-tracker", + "astroport-whitelist", +) + + +def run(args: list[str], cwd: pathlib.Path = ROOT) -> subprocess.CompletedProcess[str]: + proc = subprocess.run(args, cwd=cwd, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=False) + if proc.returncode != 0: + raise SystemExit( + f"FAIL: command failed: {' '.join(args)}\nstdout={proc.stdout}\nstderr={proc.stderr}" + ) + return proc + + +def main() -> None: + with tempfile.TemporaryDirectory(prefix="juno-v1-dry-run-") as tmp: + tx_dir = pathlib.Path(tmp) / "tx" + out_cfg = pathlib.Path(tmp) / "juno-v1-testnet.json" + tx_sets = pathlib.Path(tmp) / "tx-sets.txt" + + gen = run([sys.executable, str(GENERATOR), "--output-dir", str(tx_dir)]) + expected_files = [tx_dir / f"store-{key}.json" for key in STORE_KEYS] + [ + tx_dir / f"instantiate-{key}.json" for key in ADDRESS_KEYS + ] + missing = [str(path) for path in expected_files if not path.exists()] + if missing: + raise SystemExit("FAIL: generator missed files: " + ", ".join(missing)) + + extractor_args = [sys.executable, str(EXTRACTOR)] + for key in STORE_KEYS: + extractor_args.extend(["--code-id", f"{key}={tx_dir / f'store-{key}.json'}"]) + for key in ADDRESS_KEYS: + extractor_args.extend(["--address", f"{key}={tx_dir / f'instantiate-{key}.json'}"]) + extracted = run(extractor_args) + tx_sets.write_text(extracted.stdout) + tx_set_lines = [line for line in extracted.stdout.splitlines() if line.strip()] + if len(tx_set_lines) != 16: + raise SystemExit(f"FAIL: expected 16 tx set lines, got {len(tx_set_lines)}") + + rendered = run( + [ + sys.executable, + str(BUILDER), + "--tx-sets", + str(tx_sets), + "--owner", + "juno1dryrunowner000000000000000000000000000", + "--guardian", + "juno1dryrunguardian000000000000000000000000", + "--treasury", + "juno1dryruntreasury000000000000000000000000", + "--tokenfactory-module", + "juno1dryruntokenfactory000000000000000000000", + "--counterparty-denom", + "ibc/DRYRUNCOUNTERPARTYDENOM0000000000000000000000000000000000000000000000000000", + "--output", + str(out_cfg), + "--render", + ] + ) + if "OK: Juno v1 deployment template matches instantiate schema requirements" not in rendered.stdout: + raise SystemExit("FAIL: rendered dry-run config did not pass template guard") + + frontend = run([sys.executable, str(CHECK_FRONTEND), str(out_cfg)]) + if "OK: Juno v1 frontend config handoff is internally consistent" not in frontend.stdout: + raise SystemExit("FAIL: rendered dry-run config did not pass frontend guard") + + print( + "OK: Juno v1 dry-run tx fixtures exercise " + "generator -> extractor -> builder -> template guard -> frontend guard" + ) + print("fixture_files=16 tx_sets=16 render_guard=true frontend_guard=true") + print(gen.stdout.splitlines()[-1]) + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_frontend_config.py b/scripts/check_juno_v1_frontend_config.py new file mode 100644 index 000000000..56de7595a --- /dev/null +++ b/scripts/check_juno_v1_frontend_config.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python3 +"""Validate frontend-facing Astroport-Juno v1 deployment config invariants. + +This guard is intentionally offline and dependency-free. It checks the handoff +surface a frontend consumes after a uni-7 render: canonical addresses are present, +instantiate messages are wired back to those addresses, and the first pool create +template stays a simple native JUNO XYK pair without hardcoded launch pools. +""" +from __future__ import annotations + +import argparse +import json +import pathlib +import sys +from typing import Any, NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +DEFAULT_CONFIG = ROOT / "deployment" / "juno-v1-testnet.template.json" + +REQUIRED_FRONTEND_ADDRESSES = { + "astroport-factory", + "astroport-router", + "astroport-native-coin-registry", + "astroport-incentives", +} +OPTIONAL_FRONTEND_ADDRESSES = {"astroport-oracle"} + + +def fail(msg: str) -> NoReturn: + print(f"FAIL: {msg}") + sys.exit(1) + + +def load_json(path: pathlib.Path) -> dict[str, Any]: + try: + data = json.loads(path.read_text()) + except FileNotFoundError: + fail(f"missing config: {path}") + except json.JSONDecodeError as exc: + fail(f"invalid JSON in {path}: {exc}") + if not isinstance(data, dict): + fail("top-level config must be a JSON object") + return data + + +def require_dict(cfg: dict[str, Any], key: str) -> dict[str, Any]: + value = cfg.get(key) + if not isinstance(value, dict): + fail(f"{key} must be an object") + return value + + +def native_denom(asset_info: Any, path: str) -> str: + if not isinstance(asset_info, dict): + fail(f"{path} must be an object") + native = asset_info.get("native_token") + if not isinstance(native, dict) or not isinstance(native.get("denom"), str): + fail(f"{path} must be a native_token denom") + return native["denom"] + + +def assert_eq(path: str, actual: Any, expected: Any) -> None: + if actual != expected: + fail(f"{path} mismatch: expected {expected!r}, got {actual!r}") + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + "config", + nargs="?", + type=pathlib.Path, + default=DEFAULT_CONFIG, + help="deployment config JSON to validate (default: deployment/juno-v1-testnet.template.json)", + ) + return parser.parse_args() + + +def main() -> None: + args = parse_args() + cfg = load_json(args.config) + + network = require_dict(cfg, "network") + addresses = require_dict(cfg, "addresses") + msgs = require_dict(cfg, "instantiate_msgs") + frontend = require_dict(cfg, "frontend") + pair_template = require_dict(cfg, "pair_create_msg_template") + + native = network.get("native_asset_denom") + if not isinstance(native, str) or not native: + fail("network.native_asset_denom must be a non-empty string") + + required = frontend.get("required_addresses") + optional = frontend.get("optional_addresses", []) + if not isinstance(required, list) or not all(isinstance(item, str) for item in required): + fail("frontend.required_addresses must be a string list") + if not isinstance(optional, list) or not all(isinstance(item, str) for item in optional): + fail("frontend.optional_addresses must be a string list") + + required_set = set(required) + optional_set = set(optional) + if required_set != REQUIRED_FRONTEND_ADDRESSES: + fail(f"frontend.required_addresses drifted: {sorted(required_set)}") + if optional_set != OPTIONAL_FRONTEND_ADDRESSES: + fail(f"frontend.optional_addresses drifted: {sorted(optional_set)}") + + missing = sorted((required_set | optional_set) - set(addresses)) + if missing: + fail(f"frontend address keys missing from addresses: {missing}") + + if "pools" in frontend or "pairs" in frontend: + fail("frontend config must not hardcode pools/pairs before launch; discover via factory") + discovery = frontend.get("pair_discovery") + if not isinstance(discovery, str) or "factory" not in discovery.lower() or "hardcode" not in discovery.lower(): + fail("frontend.pair_discovery must direct clients to factory discovery and avoid hardcoded pools") + + factory_addr = addresses["astroport-factory"] + incentives_addr = addresses["astroport-incentives"] + coin_registry_addr = addresses["astroport-native-coin-registry"] + router_addr = addresses["astroport-router"] + + factory_msg = require_dict(msgs, "astroport-factory") + router_msg = require_dict(msgs, "astroport-router") + incentives_msg = require_dict(msgs, "astroport-incentives") + oracle_msg = require_dict(msgs, "astroport-oracle") + + assert_eq("instantiate_msgs.astroport-factory.coin_registry_address", factory_msg.get("coin_registry_address"), coin_registry_addr) + assert_eq("instantiate_msgs.astroport-factory.generator_address", factory_msg.get("generator_address"), incentives_addr) + assert_eq("instantiate_msgs.astroport-router.astroport_factory", router_msg.get("astroport_factory"), factory_addr) + assert_eq("instantiate_msgs.astroport-incentives.factory", incentives_msg.get("factory"), factory_addr) + assert_eq("instantiate_msgs.astroport-oracle.factory_contract", oracle_msg.get("factory_contract"), factory_addr) + + if router_addr == factory_addr: + fail("frontend router and factory addresses must be distinct keys/values") + + pair_type = pair_template.get("pair_type") + if not isinstance(pair_type, dict) or set(pair_type) != {"xyk"}: + fail("pair_create_msg_template.pair_type must stay XYK-only") + assets = pair_template.get("asset_infos") + if not isinstance(assets, list) or len(assets) != 2: + fail("pair_create_msg_template.asset_infos must contain exactly two assets") + if native_denom(assets[0], "pair_create_msg_template.asset_infos[0]") != native: + fail("first pair asset must be network.native_asset_denom") + counterparty = native_denom(assets[1], "pair_create_msg_template.asset_infos[1]") + if counterparty == native: + fail("first pool counterparty denom must differ from native_asset_denom") + if pair_template.get("init_params") is not None: + fail("XYK pair_create_msg_template.init_params must remain null") + + print("OK: Juno v1 frontend config handoff is internally consistent") + print( + f"required_addresses={len(required_set)} optional_addresses={len(optional_set)} " + f"native={native} pair_type=xyk factory_ref={factory_addr}" + ) + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_frontend_example.py b/scripts/check_juno_v1_frontend_example.py new file mode 100644 index 000000000..b270832af --- /dev/null +++ b/scripts/check_juno_v1_frontend_example.py @@ -0,0 +1,138 @@ +#!/usr/bin/env python3 +"""Validate the Astroport-Juno v1 frontend TypeScript consumer example. + +This is an offline, dependency-free guard. It does not try to replace a real +TypeScript compiler; it catches the launch-risk mistakes that matter for this +handoff fixture: importing the generated v1 type, using `satisfies`, keeping the +frontend address surface exact, preserving an XYK-only pair template, and not +teaching frontends to hardcode launch pools/pairs. +""" +from __future__ import annotations + +import json +import pathlib +import re +import sys +from typing import Any, NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +TEMPLATE = ROOT / "deployment" / "juno-v1-testnet.template.json" +TYPES = ROOT / "deployment" / "juno-v1-frontend-config.d.ts" +EXAMPLE = ROOT / "deployment" / "juno-v1-frontend-config.example.ts" + +FORBIDDEN_SCOPE = ( + "pair_stable", + "pair_concentrated", + "xastro", + "astro-token", + "maker", + "vesting", + "perp", + "lst", + "vault", +) + + +def fail(msg: str) -> NoReturn: + print(f"FAIL: {msg}") + sys.exit(1) + + +def load_json(path: pathlib.Path) -> dict[str, Any]: + try: + data = json.loads(path.read_text()) + except FileNotFoundError: + fail(f"missing {path.relative_to(ROOT)}") + except json.JSONDecodeError as exc: + fail(f"invalid JSON in {path.relative_to(ROOT)}: {exc}") + if not isinstance(data, dict): + fail(f"{path.relative_to(ROOT)} must contain a JSON object") + return data + + +def read(path: pathlib.Path) -> str: + try: + return path.read_text() + except FileNotFoundError: + fail(f"missing {path.relative_to(ROOT)}") + + +def quoted_keys_from_record(text: str, record_name: str) -> set[str]: + match = re.search(rf"{record_name}:\s*{{(?P.*?)^ }},", text, re.S | re.M) + if not match: + fail(f"example missing {record_name} object") + return set(re.findall(r'"([a-z0-9-]+)"\s*:', match.group("body"))) + + +def quoted_values_from_array(text: str, name: str) -> list[str]: + match = re.search(rf"{name}:\s*\[(?P.*?)\]", text, re.S) + if not match: + fail(f"example missing {name} array") + return re.findall(r'"([a-z0-9-]+)"', match.group("body")) + + +def main() -> None: + template = load_json(TEMPLATE) + types = read(TYPES) + example = read(EXAMPLE) + + required_snippets = ( + "import type {", + "JunoV1FrontendDeploymentConfig", + "JunoV1FrontendAddressKey", + 'from "./juno-v1-frontend-config"', + "satisfies JunoV1FrontendDeploymentConfig", + "frontendAddressMap(", + "firstXykPairCreateMsg(", + "pair_type: { xyk: {} }", + "init_params: null", + ) + for snippet in required_snippets: + if snippet not in example: + fail(f"example missing required snippet: {snippet}") + + lowered = example.lower() + forbidden_hits = [term for term in FORBIDDEN_SCOPE if term in lowered] + if forbidden_hits: + fail(f"example includes deferred/non-v1 scope terms: {forbidden_hits}") + + if re.search(r"\b(pools|pairs):\s*\[", example): + fail("example must not include hardcoded pools/pairs arrays") + if "factory contract, not hardcoded" not in lowered: + fail("example must explicitly direct pair discovery through factory, not hardcoded pools") + + expected_code_ids = set(template.get("code_ids", {})) + expected_addresses = set(template.get("addresses", {})) + expected_required = list(template["frontend"]["required_addresses"]) + expected_optional = list(template["frontend"]["optional_addresses"]) + + code_keys = quoted_keys_from_record(example, "code_ids") + address_keys = quoted_keys_from_record(example, "addresses") + required = quoted_values_from_array(example, "required_addresses") + optional = quoted_values_from_array(example, "optional_addresses") + + if code_keys != expected_code_ids: + fail(f"example code_ids keys drifted: {sorted(code_keys)}") + if address_keys != expected_addresses: + fail(f"example addresses keys drifted: {sorted(address_keys)}") + if required != expected_required: + fail(f"example required_addresses drifted: {required}") + if optional != expected_optional: + fail(f"example optional_addresses drifted: {optional}") + + type_address_union = re.search(r"export type JunoV1AddressKey = (?P.*?);", types) + if not type_address_union: + fail("generated type file missing JunoV1AddressKey union") + type_address_keys = set(re.findall(r'"([a-z0-9-]+)"', type_address_union.group("body"))) + if address_keys != type_address_keys: + fail("example address keys do not match generated type union") + + print("OK: Juno v1 frontend TypeScript example consumes the generated handoff type") + print( + f"code_ids={len(code_keys)} addresses={len(address_keys)} " + f"required={len(required)} optional={len(optional)} pair_type=xyk" + ) + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_frontend_handoff_sync.py b/scripts/check_juno_v1_frontend_handoff_sync.py new file mode 100644 index 000000000..98f63df18 --- /dev/null +++ b/scripts/check_juno_v1_frontend_handoff_sync.py @@ -0,0 +1,136 @@ +#!/usr/bin/env python3 +"""Keep the Juno v1 frontend handoff address surface synchronized. + +The deployment template is the source of truth for which contract addresses the +frontend must consume at launch. This guard checks that the generated TypeScript +unions, consumer example, and deployment README all present the same required +and optional frontend address keys. It is intentionally dependency-free so it can +run before Rust/toolchain setup in CI. +""" +from __future__ import annotations + +import json +import pathlib +import re +import sys +from typing import Any, NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +TEMPLATE = ROOT / "deployment" / "juno-v1-testnet.template.json" +TYPES = ROOT / "deployment" / "juno-v1-frontend-config.d.ts" +EXAMPLE = ROOT / "deployment" / "juno-v1-frontend-config.example.ts" +README = ROOT / "deployment" / "README.md" + + +def fail(message: str) -> NoReturn: + print(f"FAIL: {message}") + sys.exit(1) + + +def read(path: pathlib.Path) -> str: + try: + return path.read_text() + except FileNotFoundError: + fail(f"missing {path.relative_to(ROOT)}") + + +def load_template() -> dict[str, Any]: + try: + data = json.loads(TEMPLATE.read_text()) + except FileNotFoundError: + fail("missing deployment/juno-v1-testnet.template.json") + except json.JSONDecodeError as exc: + fail(f"invalid deployment template JSON: {exc}") + if not isinstance(data, dict): + fail("deployment template must be a JSON object") + return data + + +def ts_union_values(text: str, type_name: str) -> list[str]: + match = re.search(rf"export type {re.escape(type_name)} = (?P.*?);", text, re.S) + if not match: + fail(f"generated types missing {type_name}") + return re.findall(r'"([a-z0-9-]+)"', match.group("body")) + + +def example_array_values(text: str, name: str) -> list[str]: + match = re.search(rf"{re.escape(name)}:\s*\[(?P.*?)\]", text, re.S) + if not match: + fail(f"frontend example missing {name} array") + return re.findall(r'"([a-z0-9-]+)"', match.group("body")) + + +def frontend_address_map_keys(text: str) -> list[str]: + match = re.search( + r"return\s*{(?P.*?)^\s*};\s*\n}\s*\n\s*export function firstXykPairCreateMsg", + text, + re.S | re.M, + ) + if not match: + fail("frontend example missing frontendAddressMap return object") + return re.findall(r'"([a-z0-9-]+)"\s*:', match.group("body")) + + +def backticked_list(values: list[str]) -> str: + return ", ".join(f"`{value}`" for value in values) + + +def main() -> None: + template = load_template() + types = read(TYPES) + example = read(EXAMPLE) + readme = read(README) + + frontend = template.get("frontend") + if not isinstance(frontend, dict): + fail("deployment template missing frontend object") + + expected_required = frontend.get("required_addresses") + expected_optional = frontend.get("optional_addresses") + if not isinstance(expected_required, list) or not all(isinstance(v, str) for v in expected_required): + fail("deployment template frontend.required_addresses must be a string array") + if not isinstance(expected_optional, list) or not all(isinstance(v, str) for v in expected_optional): + fail("deployment template frontend.optional_addresses must be a string array") + + expected_all = expected_required + expected_optional + if len(expected_all) != len(set(expected_all)): + fail("frontend required/optional address keys overlap") + + address_keys = set(template.get("addresses", {})) + missing = [key for key in expected_all if key not in address_keys] + if missing: + fail(f"frontend address keys are not present in deployment addresses: {missing}") + + type_required = ts_union_values(types, "JunoV1RequiredFrontendAddressKey") + type_optional = ts_union_values(types, "JunoV1OptionalFrontendAddressKey") + if type_required != expected_required: + fail(f"required frontend type union drifted: {type_required}") + if type_optional != expected_optional: + fail(f"optional frontend type union drifted: {type_optional}") + + example_required = example_array_values(example, "required_addresses") + example_optional = example_array_values(example, "optional_addresses") + example_map = frontend_address_map_keys(example) + if example_required != expected_required: + fail(f"example required_addresses drifted: {example_required}") + if example_optional != expected_optional: + fail(f"example optional_addresses drifted: {example_optional}") + if example_map != expected_all: + fail(f"frontendAddressMap keys must be required+optional order, got {example_map}") + + required_line = f"Required frontend addresses: {backticked_list(expected_required)}." + optional_line = f"Optional frontend addresses: {backticked_list(expected_optional)}." + if required_line not in readme: + fail(f"README missing synchronized required-address line: {required_line}") + if optional_line not in readme: + fail(f"README missing synchronized optional-address line: {optional_line}") + + print("OK: Juno v1 frontend handoff address keys are synchronized") + print( + f"required={len(expected_required)} optional={len(expected_optional)} " + f"map_keys={len(example_map)} source=deployment-template" + ) + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_frontend_release_bundle.py b/scripts/check_juno_v1_frontend_release_bundle.py new file mode 100644 index 000000000..fc76a5d68 --- /dev/null +++ b/scripts/check_juno_v1_frontend_release_bundle.py @@ -0,0 +1,149 @@ +#!/usr/bin/env python3 +"""Smoke-test the Astroport-Juno v1 frontend release bundle helper.""" +from __future__ import annotations + +import hashlib +import json +import pathlib +import subprocess +import sys +import tempfile +import zipfile +from typing import Any + +ROOT = pathlib.Path(__file__).resolve().parents[1] +FILL = ROOT / "scripts" / "fill_juno_v1_deployment_config.py" +BUNDLE = ROOT / "scripts" / "build_juno_v1_frontend_release_bundle.py" + +SET_VALUES = { + "accounts.owner": "juno1bundleowner00000000000000000000000000", + "accounts.guardian": "juno1bundleguardian0000000000000000000000", + "accounts.treasury": "juno1bundletreasury0000000000000000000000", + "accounts.tokenfactory_module": "juno1bundletokenfactory000000000000000000", + "code_ids.astroport-factory": "101", + "code_ids.astroport-incentives": "102", + "code_ids.astroport-native-coin-registry": "103", + "code_ids.astroport-oracle": "104", + "code_ids.astroport-pair": "105", + "code_ids.astroport-router": "106", + "code_ids.astroport-tokenfactory-tracker": "107", + "code_ids.astroport-whitelist": "108", + "code_ids.cw20-base": "109", + "addresses.astroport-factory": "juno1bundlefactory0000000000000000000000", + "addresses.astroport-incentives": "juno1bundleincentives000000000000000000", + "addresses.astroport-native-coin-registry": "juno1bundleregistry00000000000000000000", + "addresses.astroport-oracle": "juno1bundleoracle00000000000000000000000", + "addresses.astroport-router": "juno1bundlerouter00000000000000000000000", + "addresses.astroport-tokenfactory-tracker": "juno1bundletracker000000000000000000000", + "addresses.astroport-whitelist": "juno1bundlewhitelist00000000000000000000", + "pair_create_msg_template.asset_infos.1.native_token.denom": "ibc/BUNDLECOUNTERPARTYDENOM0000000000000000000000000000000000000000000000000000", +} + +EXPECTED_FILES = { + "juno-v1-testnet.json", + "juno-v1-frontend-config.d.ts", + "juno-v1-frontend-config.example.ts", + "MANIFEST.json", +} +FORBIDDEN_FILES = { + "juno-v1-testnet.template.json", + "tx-sets.txt", +} + + +def run(args: list[str]) -> subprocess.CompletedProcess[str]: + proc = subprocess.run(args, cwd=ROOT, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=False) + if proc.returncode != 0: + raise SystemExit( + f"FAIL: command failed: {' '.join(args)}\nstdout={proc.stdout}\nstderr={proc.stderr}" + ) + return proc + + +def sha256(data: bytes) -> str: + return hashlib.sha256(data).hexdigest() + + +def manifest_files(manifest: dict[str, Any]) -> dict[str, dict[str, Any]]: + files = manifest.get("files") + if not isinstance(files, list): + raise SystemExit("FAIL: manifest.files must be a list") + mapped: dict[str, dict[str, Any]] = {} + for item in files: + if not isinstance(item, dict) or not isinstance(item.get("path"), str): + raise SystemExit("FAIL: manifest file entries must be objects with path") + mapped[item["path"]] = item + return mapped + + +def main() -> None: + with tempfile.TemporaryDirectory(prefix="juno-v1-frontend-bundle-") as tmp: + tmp_path = pathlib.Path(tmp) + config = tmp_path / "juno-v1-testnet.json" + bundle = tmp_path / "juno-v1-frontend-release.zip" + + fill_args = [sys.executable, str(FILL), "--output", str(config), "--require-complete"] + for key, value in sorted(SET_VALUES.items()): + fill_args.extend(["--set", f"{key}={value}"]) + fill = run(fill_args) + if "OK: wrote rendered Juno v1 deployment config" not in fill.stdout: + raise SystemExit("FAIL: fill helper did not render a complete config") + + built = run([sys.executable, str(BUNDLE), "--config", str(config), "--output", str(bundle)]) + if "OK: wrote Astroport-Juno v1 frontend release bundle" not in built.stdout: + raise SystemExit("FAIL: bundle helper did not report success") + if not bundle.exists(): + raise SystemExit("FAIL: bundle zip was not written") + + with zipfile.ZipFile(bundle, "r") as archive: + names = set(archive.namelist()) + if names != EXPECTED_FILES: + raise SystemExit(f"FAIL: unexpected bundle file set: {sorted(names)}") + forbidden = sorted(names & FORBIDDEN_FILES) + if forbidden: + raise SystemExit("FAIL: bundle includes forbidden files: " + ", ".join(forbidden)) + manifest = json.loads(archive.read("MANIFEST.json")) + file_meta = manifest_files(manifest) + for name in EXPECTED_FILES - {"MANIFEST.json"}: + data = archive.read(name) + meta = file_meta.get(name) + if not meta: + raise SystemExit(f"FAIL: manifest missing {name}") + if meta.get("bytes") != len(data): + raise SystemExit(f"FAIL: manifest byte count mismatch for {name}") + if meta.get("sha256") != sha256(data): + raise SystemExit(f"FAIL: manifest sha256 mismatch for {name}") + if manifest.get("scope") != "xyk-only, permissionless, no DEX token": + raise SystemExit("FAIL: manifest scope guardrail drifted") + if manifest.get("required_frontend_addresses") != [ + "astroport-factory", + "astroport-router", + "astroport-native-coin-registry", + "astroport-incentives", + ]: + raise SystemExit("FAIL: manifest required frontend addresses drifted") + + rejected = subprocess.run( + [ + sys.executable, + str(BUNDLE), + "--config", + str(ROOT / "deployment" / "juno-v1-testnet.template.json"), + "--output", + str(tmp_path / "bad.zip"), + ], + cwd=ROOT, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + check=False, + ) + if rejected.returncode == 0 or "refusing to package the placeholder" not in rejected.stderr: + raise SystemExit("FAIL: bundle helper must reject the placeholder template") + + print("OK: Juno v1 frontend release bundle packages only verified handoff files") + print("bundle_entries=4 manifest_hashes=3 rejects_template=true") + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_frontend_release_checklist.py b/scripts/check_juno_v1_frontend_release_checklist.py new file mode 100644 index 000000000..0dbc80d98 --- /dev/null +++ b/scripts/check_juno_v1_frontend_release_checklist.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python3 +"""Validate the Astroport-Juno v1 frontend release checklist. + +The checklist is the final bridge from a rendered uni-7 deployment config into a +UI repository. This guard keeps the copied file list, verification commands, +frontend address surface, and v1 scope limits aligned with the machine-checked +handoff artifacts. +""" +from __future__ import annotations + +import json +import pathlib +import re +import sys +from typing import Any, NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +CHECKLIST = ROOT / "deployment" / "frontend-release-checklist.md" +TEMPLATE = ROOT / "deployment" / "juno-v1-testnet.template.json" +TYPES = ROOT / "deployment" / "juno-v1-frontend-config.d.ts" +EXAMPLE = ROOT / "deployment" / "juno-v1-frontend-config.example.ts" + +RELEASE_FILES = ( + "juno-v1-testnet.json", + "juno-v1-frontend-config.d.ts", + "juno-v1-frontend-config.example.ts", +) +REQUIRED_COMMANDS = ( + "python3 scripts/check_juno_v1_deployment_template.py deployment/juno-v1-testnet.json", + "python3 scripts/check_juno_v1_frontend_config.py deployment/juno-v1-testnet.json", + "python3 scripts/generate_juno_v1_frontend_types.py --check", + "python3 scripts/check_juno_v1_frontend_example.py", + "python3 scripts/check_juno_v1_frontend_handoff_sync.py", +) +SCOPE_GUARDRAILS = ( + "v1 is XYK-only and permissionless.", + "No new DEX token is introduced; incentives use the configured native denom.", + "Do not add stable pairs, PCL, LSTs, perps, or yield surfaces to this handoff.", + "discover existing pools by querying the factory contract", + "Do not hardcode pools or pair addresses in the UI repo.", +) + + +def fail(message: str) -> NoReturn: + print(f"FAIL: {message}") + sys.exit(1) + + +def read(path: pathlib.Path) -> str: + try: + return path.read_text() + except FileNotFoundError: + fail(f"missing {path.relative_to(ROOT)}") + + +def load_template() -> dict[str, Any]: + try: + data = json.loads(TEMPLATE.read_text()) + except FileNotFoundError: + fail("missing deployment/juno-v1-testnet.template.json") + except json.JSONDecodeError as exc: + fail(f"invalid deployment template JSON: {exc}") + if not isinstance(data, dict): + fail("deployment template must be a JSON object") + return data + + +def backticked_list(values: list[str]) -> str: + return ", ".join(f"`{value}`" for value in values) + + +def main() -> None: + text = read(CHECKLIST) + template = load_template() + + for path in (TYPES, EXAMPLE): + if not path.exists(): + fail(f"checklist references handoff file that is missing: {path.relative_to(ROOT)}") + + for section in ( + "## Release files to hand to the UI repo", + "## Pre-copy verification", + "## Frontend address surface", + "## Scope guardrails", + ): + if text.count(section) != 1: + fail(f"expected exactly one checklist section: {section}") + + for filename in RELEASE_FILES: + if text.count(f"`{filename}`") < 1: + fail(f"checklist missing release file `{filename}`") + if "Do not copy `juno-v1-testnet.template.json` as the live config." not in text: + fail("checklist must warn against publishing the placeholder template as live config") + + for command in REQUIRED_COMMANDS: + if text.count(command) != 1: + fail(f"checklist must contain verification command exactly once: {command}") + if "python3 scripts/check_juno_v1_dry_run_txs.py" not in text: + fail("checklist must mention the dry-run rehearsal for no-chain-output testing") + + frontend = template.get("frontend") + if not isinstance(frontend, dict): + fail("deployment template missing frontend object") + required = frontend.get("required_addresses") + optional = frontend.get("optional_addresses") + if not isinstance(required, list) or not all(isinstance(v, str) for v in required): + fail("deployment template frontend.required_addresses must be a string array") + if not isinstance(optional, list) or not all(isinstance(v, str) for v in optional): + fail("deployment template frontend.optional_addresses must be a string array") + + required_line = f"Required frontend addresses: {backticked_list(required)}." + optional_line = f"Optional frontend addresses: {backticked_list(optional)}." + if required_line not in text: + fail(f"checklist missing synchronized required-address line: {required_line}") + if optional_line not in text: + fail(f"checklist missing synchronized optional-address line: {optional_line}") + + for guardrail in SCOPE_GUARDRAILS: + if guardrail not in text: + fail(f"checklist missing v1 guardrail: {guardrail}") + if re.search(r"stable|PCL|LST|perps|yield", text, flags=re.IGNORECASE) and SCOPE_GUARDRAILS[2] not in text: + fail("checklist has deferred-scope words without the explicit v1 guardrail") + + print("OK: Juno v1 frontend release checklist matches the deployment handoff") + print( + f"release_files={len(RELEASE_FILES)} commands={len(REQUIRED_COMMANDS)} " + f"required={len(required)} optional={len(optional)} pair_discovery=factory" + ) + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_operator_checklist.py b/scripts/check_juno_v1_operator_checklist.py new file mode 100644 index 000000000..542674b89 --- /dev/null +++ b/scripts/check_juno_v1_operator_checklist.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python3 +"""Validate the Astroport-Juno v1 operator tx checklist. + +The checklist is the last human-facing handoff before a uni-7 deployment config +is rendered. This guard keeps its 16 expected tx filenames, config keys, and +command wiring aligned with the extractor/bundler scripts. +""" +from __future__ import annotations + +import pathlib +import re +import sys +from typing import NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +CHECKLIST = ROOT / "deployment" / "operator-tx-checklist.md" +README = ROOT / "deployment" / "README.md" + +STORE_KEYS = ( + "astroport-factory", + "astroport-incentives", + "astroport-native-coin-registry", + "astroport-oracle", + "astroport-pair", + "astroport-router", + "astroport-tokenfactory-tracker", + "astroport-whitelist", + "cw20-base", +) + +ADDRESS_KEYS = ( + "astroport-factory", + "astroport-incentives", + "astroport-native-coin-registry", + "astroport-oracle", + "astroport-router", + "astroport-tokenfactory-tracker", + "astroport-whitelist", +) + +REQUIRED_MANUAL_ENV = ( + "JUNO_OWNER", + "JUNO_GUARDIAN", + "JUNO_TREASURY", + "JUNO_TOKENFACTORY_MODULE", + "FIRST_COUNTERPARTY_DENOM", +) + +SCOPE_GUARDRAIL = "No stable pools, LSTs, perps, yield theater, or new token scope." + + +def fail(message: str) -> NoReturn: + print(f"FAIL: {message}", file=sys.stderr) + sys.exit(1) + + +def require_once(text: str, needle: str, label: str | None = None) -> None: + count = text.count(needle) + if count != 1: + fail(f"expected exactly one {label or needle!r}, found {count}") + + +def main() -> None: + try: + text = CHECKLIST.read_text() + except FileNotFoundError: + fail("missing deployment/operator-tx-checklist.md") + + readme = README.read_text() if README.exists() else "" + if "operator-tx-checklist.md" not in readme: + fail("deployment/README.md must link the operator tx checklist") + + for key in STORE_KEYS: + table_row = f"| `deployment/tx/uni-7/store-{key}.json` | `code_ids.{key}` |" + if table_row not in text: + fail(f"store tx table row missing for {key}") + require_once(text, f"--code-id {key}=deployment/tx/uni-7/store-{key}.json", f"extractor store arg for {key}") + + for key in ADDRESS_KEYS: + table_row = f"| `deployment/tx/uni-7/instantiate-{key}.json` | `addresses.{key}` |" + if table_row not in text: + fail(f"instantiate tx table row missing for {key}") + require_once(text, f"--address {key}=deployment/tx/uni-7/instantiate-{key}.json", f"extractor address arg for {key}") + + for env_name in REQUIRED_MANUAL_ENV: + if env_name not in text: + fail(f"manual environment variable missing from checklist: {env_name}") + + for needle in ( + "python3 scripts/extract_juno_v1_tx_sets.py", + "> deployment/tx/uni-7/tx-sets.txt", + "python3 scripts/build_juno_v1_deployment_command.py", + "--tx-sets deployment/tx/uni-7/tx-sets.txt", + "--output deployment/juno-v1-testnet.json", + "--render", + "OK: Juno v1 deployment template matches instantiate schema requirements", + "instantiate_msgs=7 code_ids=9 addresses=7 pair_type=xyk", + ): + if needle not in text: + fail(f"checklist missing required handoff text: {needle}") + + if not re.search(r"tx-sets\.txt` has 16 non-empty `--set \.\.\.` lines", text): + fail("checklist must state the expected 16 non-empty tx-set lines") + + if SCOPE_GUARDRAIL not in text: + fail("checklist missing explicit v1 scope guardrail") + + print("OK: Juno v1 operator tx checklist matches deployment helpers") + print(f"store_txs={len(STORE_KEYS)} instantiate_txs={len(ADDRESS_KEYS)} manual_values={len(REQUIRED_MANUAL_ENV)}") + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_schemas.py b/scripts/check_juno_v1_schemas.py new file mode 100755 index 000000000..6b9a0443f --- /dev/null +++ b/scripts/check_juno_v1_schemas.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +"""Check that committed JSON schemas match the Astroport-Juno v1 contract set. + +Stale schemas are launch risk: they make stripped contracts look shippable to +frontend/integration work. This guard intentionally checks only directory names, +so it can run without cargo, jq, or network access. +""" +from __future__ import annotations + +import pathlib +import sys + +ROOT = pathlib.Path(__file__).resolve().parents[1] +SCHEMAS = ROOT / "schemas" + +EXPECTED_SCHEMA_DIRS = { + "astroport-factory", + "astroport-incentives", + "astroport-native-coin-registry", + "astroport-oracle", + "astroport-pair", + "astroport-router", + "astroport-tokenfactory-tracker", + "astroport-whitelist", +} + +FORBIDDEN_SCHEMA_DIRS = { + "astro-token-converter", + "astroport-maker", + "astroport-pair-concentrated", + "astroport-pair-concentrated-duality", + "astroport-pair-concentrated-sale-tax", + "astroport-pair-converter", + "astroport-pair-stable", + "astroport-pair-xastro", + "astroport-pair-xyk-sale-tax", + "astroport-staking", + "astroport-vesting", + "astroport-xastro-token", +} + + +def fail(msg: str) -> None: + print(f"FAIL: {msg}") + sys.exit(1) + + +def main() -> None: + if not SCHEMAS.exists(): + fail("schemas/ directory is missing; run scripts/build_schemas.sh before release") + + actual = {p.name for p in SCHEMAS.iterdir() if p.is_dir()} + missing = EXPECTED_SCHEMA_DIRS - actual + extra = actual - EXPECTED_SCHEMA_DIRS + forbidden = actual & FORBIDDEN_SCHEMA_DIRS + + if missing: + fail(f"missing v1 schema dir(s): {sorted(missing)}") + if forbidden: + fail(f"forbidden stale schema dir(s): {sorted(forbidden)}") + if extra: + fail(f"unexpected schema dir(s): {sorted(extra)}") + + print("OK: committed schemas match Astroport-Juno v1 contract set") + print(f"schema_dirs={len(actual)} expected={len(EXPECTED_SCHEMA_DIRS)}") + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_scope.py b/scripts/check_juno_v1_scope.py new file mode 100755 index 000000000..495277872 --- /dev/null +++ b/scripts/check_juno_v1_scope.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +"""Check the Astroport-Juno v1 contract scope against the planning manifest. + +This is intentionally lightweight: no network, no cargo invocation, no third-party +packages. It catches the launch-risk class where docs say one contract set while +Cargo.toml builds another. +""" +from __future__ import annotations + +import pathlib +import sys +import tomllib + +ROOT = pathlib.Path(__file__).resolve().parents[1] + +EXPECTED_WORKSPACE_MEMBERS = { + "packages/astroport", + "packages/astroport_juno_types", + "packages/astroport_test", + "packages/circular_buffer", + "contracts/factory", + "contracts/pair", + "contracts/router", + "contracts/whitelist", + "contracts/periphery/native_coin_registry", + "contracts/periphery/oracle", + "contracts/periphery/tokenfactory_tracker", + "contracts/tokenomics/incentives", + "integration-tests", +} + +EXPECTED_EXCLUDES = { + "contracts/pair_stable", + "contracts/pair_concentrated", + "packages/astroport_pcl_common", +} + +EXPECTED_WASMS = { + "astroport_factory.wasm", + "astroport_pair.wasm", + "astroport_router.wasm", + "astroport_native_coin_registry.wasm", + "astroport_oracle.wasm", + "astroport_tokenfactory_tracker.wasm", + "astroport_whitelist.wasm", + "astroport_incentives.wasm", +} + +FORBIDDEN_WORKSPACE_FRAGMENTS = ( + "pair_xastro", + "pair_astro_converter", + "pair_transmuter", + "sale_tax", + "maker", + "staking", + "vesting", + "xastro_token", +) + + +def fail(msg: str) -> None: + print(f"FAIL: {msg}") + sys.exit(1) + + +def main() -> None: + cargo_toml = ROOT / "Cargo.toml" + data = tomllib.loads(cargo_toml.read_text()) + workspace = data.get("workspace", {}) + members = set(workspace.get("members", [])) + excludes = set(workspace.get("exclude", [])) + + missing = EXPECTED_WORKSPACE_MEMBERS - members + extra = members - EXPECTED_WORKSPACE_MEMBERS + if missing or extra: + fail(f"workspace members drifted; missing={sorted(missing)} extra={sorted(extra)}") + + missing_excludes = EXPECTED_EXCLUDES - excludes + if missing_excludes: + fail(f"workspace excludes missing deferred contracts: {sorted(missing_excludes)}") + + forbidden = [m for m in members if any(fragment in m for fragment in FORBIDDEN_WORKSPACE_FRAGMENTS)] + if forbidden: + fail(f"forbidden v1 scope member(s): {forbidden}") + + strip_list = (ROOT / "planning" / "01-strip-list.md").read_text() + missing_wasm_mentions = sorted(w for w in EXPECTED_WASMS if w not in strip_list) + if missing_wasm_mentions: + fail(f"planning/01-strip-list.md missing wasm artifact(s): {missing_wasm_mentions}") + + print("OK: Astroport-Juno v1 scope matches Cargo.toml and planning/01-strip-list.md") + print(f"workspace_members={len(members)} expected_wasms={len(EXPECTED_WASMS)}") + + +if __name__ == "__main__": + main() diff --git a/scripts/check_juno_v1_tx_extractor.py b/scripts/check_juno_v1_tx_extractor.py new file mode 100644 index 000000000..0f9e60d39 --- /dev/null +++ b/scripts/check_juno_v1_tx_extractor.py @@ -0,0 +1,162 @@ +#!/usr/bin/env python3 +"""Self-test the Astroport-Juno tx JSON extraction helper. + +The extractor sits on the deployment critical path: operators paste its output +into fill_juno_v1_deployment_config.py after uni-7 uploads/instantiates. This +check uses fixture tx response shapes instead of live chain data so CI can catch +regressions before the bakeoff. +""" +from __future__ import annotations + +import json +import pathlib +import subprocess +import sys +import tempfile +from typing import NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +EXTRACTOR = ROOT / "scripts" / "extract_juno_v1_tx_sets.py" + + +def fail(message: str) -> NoReturn: + print(f"FAIL: {message}", file=sys.stderr) + sys.exit(1) + + +def run(args: list[str], *, expect_ok: bool = True) -> subprocess.CompletedProcess[str]: + proc = subprocess.run( + [sys.executable, str(EXTRACTOR), *args], + cwd=ROOT, + check=False, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + if expect_ok and proc.returncode != 0: + fail(f"extractor failed for {args!r}: stdout={proc.stdout!r} stderr={proc.stderr!r}") + if not expect_ok and proc.returncode == 0: + fail(f"extractor unexpectedly succeeded for {args!r}: stdout={proc.stdout!r}") + return proc + + +def write_json(path: pathlib.Path, value: object) -> None: + path.write_text(json.dumps(value, indent=2) + "\n") + + +def main() -> None: + with tempfile.TemporaryDirectory(prefix="juno-v1-tx-extractor-") as raw_tmp: + tmp = pathlib.Path(raw_tmp) + store_tx = tmp / "store-factory.json" + instantiate_tx = tmp / "instantiate-factory.json" + raw_log_tx = tmp / "raw-log-router.json" + multi_code_tx = tmp / "multi-code.json" + + write_json( + store_tx, + { + "tx_response": { + "events": [ + { + "type": "store_code", + "attributes": [ + {"key": "code_id", "value": "77"}, + ], + } + ] + } + }, + ) + write_json( + instantiate_tx, + { + "logs": [ + { + "events": [ + { + "type": "instantiate", + "attributes": [ + { + "key": "_contract_address", + "value": "juno1factory000000000000000000000000000000000", + } + ], + } + ] + } + ] + }, + ) + write_json( + raw_log_tx, + { + "raw_log": json.dumps( + [ + { + "events": [ + { + "type": "instantiate", + "attributes": [ + { + "key": "contract_address", + "value": "juno1router0000000000000000000000000000000000", + } + ], + } + ] + } + ] + ) + }, + ) + write_json( + multi_code_tx, + { + "events": [ + {"type": "store_code", "attributes": [{"key": "code_id", "value": "77"}]}, + {"type": "store_code", "attributes": [{"key": "code_id", "value": "78"}]}, + ] + }, + ) + + mapped = run( + [ + "--code-id", + f"astroport-factory={store_tx}", + "--address", + f"astroport-factory={instantiate_tx}", + "--address", + f"astroport-router={raw_log_tx}", + ] + ).stdout.splitlines() + expected = [ + "--set code_ids.astroport-factory='77'", + "--set addresses.astroport-factory='juno1factory000000000000000000000000000000000'", + "--set addresses.astroport-router='juno1router0000000000000000000000000000000000'", + ] + if mapped != expected: + fail(f"mapped output mismatch:\nexpected={expected!r}\nactual={mapped!r}") + + scan = run(["--scan", str(store_tx), str(instantiate_tx), str(raw_log_tx)]).stdout + for needle in ( + "code_ids=77", + "addresses=juno1factory000000000000000000000000000000000", + "addresses=juno1router0000000000000000000000000000000000", + ): + if needle not in scan: + fail(f"scan output missing {needle!r}: {scan!r}") + + bad_key = run(["--code-id", f"not-a-contract={store_tx}"], expect_ok=False) + if "unknown code-id key" not in bad_key.stderr: + fail(f"bad-key failure did not explain key error: {bad_key.stderr!r}") + + multi = run(["--code-id", f"astroport-factory={multi_code_tx}"], expect_ok=False) + if "multiple code_ids" not in multi.stderr: + fail(f"multi-code failure did not explain ambiguity: {multi.stderr!r}") + + print("OK: Juno v1 tx extractor handles mapped, scan, raw_log, and failure cases") + print("fixtures=4 mapped_sets=3 failure_cases=2") + + +if __name__ == "__main__": + main() diff --git a/scripts/extract_juno_v1_tx_sets.py b/scripts/extract_juno_v1_tx_sets.py new file mode 100644 index 000000000..334b77129 --- /dev/null +++ b/scripts/extract_juno_v1_tx_sets.py @@ -0,0 +1,178 @@ +#!/usr/bin/env python3 +"""Extract Astroport-Juno v1 deployment --set values from junod tx JSON. + +Use this after `junod tx wasm store ... -o json` or `junod tx wasm instantiate ... -o json` +outputs are available. Map each tx JSON file to the deployment config key it +should populate, and the script prints copy/paste flags for +`scripts/fill_juno_v1_deployment_config.py`. + +Examples: + python3 scripts/extract_juno_v1_tx_sets.py \ + --code-id astroport-factory=store-factory.json \ + --address astroport-factory=instantiate-factory.json + + python3 scripts/extract_juno_v1_tx_sets.py --scan store-factory.json instantiate-factory.json +""" +from __future__ import annotations + +import argparse +import json +import pathlib +import sys +from collections.abc import Iterable +from typing import Any, NoReturn + +CODE_ID_KEYS = { + "astroport-factory", + "astroport-incentives", + "astroport-native-coin-registry", + "astroport-oracle", + "astroport-pair", + "astroport-router", + "astroport-tokenfactory-tracker", + "astroport-whitelist", + "cw20-base", +} + +ADDRESS_KEYS = { + "astroport-factory", + "astroport-incentives", + "astroport-native-coin-registry", + "astroport-oracle", + "astroport-router", + "astroport-tokenfactory-tracker", + "astroport-whitelist", +} + +CODE_ATTRS = {"code_id", "codeID", "code-id"} +ADDRESS_ATTRS = {"_contract_address", "contract_address", "contract-address"} + + +def fail(message: str) -> NoReturn: + print(f"FAIL: {message}", file=sys.stderr) + sys.exit(1) + + +def load_json(path: pathlib.Path) -> Any: + try: + return json.loads(path.read_text()) + except FileNotFoundError: + fail(f"missing tx JSON: {path}") + except json.JSONDecodeError as exc: + fail(f"invalid JSON in {path}: {exc}") + + +def iter_events(value: Any) -> Iterable[dict[str, Any]]: + """Yield Cosmos SDK event objects from common tx response shapes.""" + if isinstance(value, dict): + events = value.get("events") + if isinstance(events, list): + for event in events: + if isinstance(event, dict): + yield event + + tx_response = value.get("tx_response") + if isinstance(tx_response, dict): + yield from iter_events(tx_response) + + logs = value.get("logs") + if isinstance(logs, list): + for log in logs: + if isinstance(log, dict): + yield from iter_events(log) + + raw_log = value.get("raw_log") + if isinstance(raw_log, str) and raw_log.startswith("["): + try: + yield from iter_events({"logs": json.loads(raw_log)}) + except json.JSONDecodeError: + pass + + +def iter_attributes(event: dict[str, Any]) -> Iterable[tuple[str, str]]: + attrs = event.get("attributes") + if not isinstance(attrs, list): + return + for attr in attrs: + if not isinstance(attr, dict): + continue + key = attr.get("key") + value = attr.get("value") + if isinstance(key, str) and isinstance(value, str): + yield key, value + + +def extract_values(path: pathlib.Path, wanted_attrs: set[str]) -> list[str]: + data = load_json(path) + values: list[str] = [] + for event in iter_events(data): + for key, value in iter_attributes(event): + if key in wanted_attrs: + values.append(value) + return values + + +def parse_mapping(raw: str, allowed_keys: set[str], kind: str) -> tuple[str, pathlib.Path]: + if "=" not in raw: + fail(f"--{kind} must be NAME=PATH, got {raw!r}") + key, path = raw.split("=", 1) + if key not in allowed_keys: + fail(f"unknown {kind} key {key!r}; expected one of: {', '.join(sorted(allowed_keys))}") + if not path: + fail(f"--{kind} path is empty for {key}") + return key, pathlib.Path(path) + + +def unique_single(values: list[str], path: pathlib.Path, kind: str) -> str: + unique = sorted(set(values)) + if not unique: + fail(f"no {kind} found in {path}") + if len(unique) > 1: + fail(f"multiple {kind}s found in {path}: {', '.join(unique)}; split tx files or use --scan") + return unique[0] + + +def shell_quote(value: str) -> str: + return "'" + value.replace("'", "'\\''") + "'" + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--code-id", action="append", default=[], metavar="NAME=PATH", help="map first unique store code_id in PATH to code_ids.NAME") + parser.add_argument("--address", action="append", default=[], metavar="NAME=PATH", help="map first unique instantiate contract address in PATH to addresses.NAME") + parser.add_argument("--scan", nargs="*", type=pathlib.Path, default=[], help="print discovered code IDs and contract addresses without mapping") + return parser.parse_args() + + +def main() -> None: + args = parse_args() + emitted = 0 + + for raw in args.code_id: + key, path = parse_mapping(raw, CODE_ID_KEYS, "code-id") + value = unique_single(extract_values(path, CODE_ATTRS), path, "code_id") + if not value.isdigit(): + fail(f"code_id for {key} in {path} is not numeric: {value!r}") + print(f"--set code_ids.{key}={shell_quote(value)}") + emitted += 1 + + for raw in args.address: + key, path = parse_mapping(raw, ADDRESS_KEYS, "address") + value = unique_single(extract_values(path, ADDRESS_ATTRS), path, "contract address") + print(f"--set addresses.{key}={shell_quote(value)}") + emitted += 1 + + for path in args.scan: + code_ids = sorted(set(extract_values(path, CODE_ATTRS))) + addresses = sorted(set(extract_values(path, ADDRESS_ATTRS))) + print(f"# {path}") + print(f"code_ids={','.join(code_ids) if code_ids else '-'}") + print(f"addresses={','.join(addresses) if addresses else '-'}") + emitted += 1 + + if emitted == 0: + fail("provide at least one --code-id, --address, or --scan input") + + +if __name__ == "__main__": + main() diff --git a/scripts/fill_juno_v1_deployment_config.py b/scripts/fill_juno_v1_deployment_config.py new file mode 100644 index 000000000..5a80d2516 --- /dev/null +++ b/scripts/fill_juno_v1_deployment_config.py @@ -0,0 +1,210 @@ +#!/usr/bin/env python3 +"""Render a concrete Astroport-Juno v1 deployment config from the template. + +The template intentionally carries placeholders and zero code IDs. This script is +for the handoff point after uni-7 uploads/instantiates: provide the real values +with repeated --set dotted.path=value flags, and it rewires dependent instantiate +fields so the frontend/deployment config stays internally consistent. +""" +from __future__ import annotations + +import argparse +import copy +import json +import pathlib +import re +import sys +from typing import Any, NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +DEFAULT_INPUT = ROOT / "deployment" / "juno-v1-testnet.template.json" + +INT_PATHS = { + "code_ids.astroport-factory", + "code_ids.astroport-incentives", + "code_ids.astroport-native-coin-registry", + "code_ids.astroport-oracle", + "code_ids.astroport-pair", + "code_ids.astroport-router", + "code_ids.astroport-tokenfactory-tracker", + "code_ids.astroport-whitelist", + "code_ids.cw20-base", +} + +ADDRESS_KEYS = ( + "astroport-factory", + "astroport-incentives", + "astroport-native-coin-registry", + "astroport-oracle", + "astroport-router", + "astroport-tokenfactory-tracker", + "astroport-whitelist", +) + +PLACEHOLDER_RE = re.compile(r"replace|REPLACE", re.IGNORECASE) + + +def fail(msg: str) -> NoReturn: + print(f"FAIL: {msg}", file=sys.stderr) + sys.exit(1) + + +def load_json(path: pathlib.Path) -> dict[str, Any]: + try: + data = json.loads(path.read_text()) + except FileNotFoundError: + fail(f"missing input: {path}") + except json.JSONDecodeError as exc: + fail(f"invalid JSON in {path}: {exc}") + if not isinstance(data, dict): + fail("top-level config must be a JSON object") + return data + + +def parse_value(path: str, value: str) -> Any: + if path in INT_PATHS: + try: + parsed = int(value) + except ValueError: + fail(f"{path} must be an integer code ID, got {value!r}") + if parsed < 0: + fail(f"{path} must be non-negative") + return parsed + if value in {"true", "false"}: + return value == "true" + if value == "null": + return None + return value + + +def set_path(cfg: dict[str, Any], assignment: str) -> None: + if "=" not in assignment: + fail(f"--set must be dotted.path=value, got {assignment!r}") + path, raw_value = assignment.split("=", 1) + parts = path.split(".") + if not parts or any(part == "" for part in parts): + fail(f"invalid dotted path: {path!r}") + cursor: Any = cfg + for part in parts[:-1]: + if isinstance(cursor, dict) and part in cursor: + cursor = cursor[part] + elif isinstance(cursor, list) and part.isdigit() and int(part) < len(cursor): + cursor = cursor[int(part)] + else: + fail(f"unknown config path: {path!r}") + leaf = parts[-1] + if isinstance(cursor, dict) and leaf in cursor: + cursor[leaf] = parse_value(path, raw_value) + elif isinstance(cursor, list) and leaf.isdigit() and int(leaf) < len(cursor): + cursor[int(leaf)] = parse_value(path, raw_value) + else: + fail(f"unknown config path: {path!r}") + + +def require(cfg: dict[str, Any], *parts: str) -> Any: + cursor: Any = cfg + for part in parts: + if not isinstance(cursor, dict) or part not in cursor: + fail(f"missing expected config path: {'.'.join(parts)}") + cursor = cursor[part] + return cursor + + +def rewire(cfg: dict[str, Any]) -> None: + """Propagate top-level accounts/code IDs/addresses into instantiate messages.""" + accounts = require(cfg, "accounts") + code_ids = require(cfg, "code_ids") + addresses = require(cfg, "addresses") + network = require(cfg, "network") + msgs = require(cfg, "instantiate_msgs") + + owner = accounts["owner"] + guardian = accounts["guardian"] + treasury = accounts["treasury"] + tokenfactory_module = accounts["tokenfactory_module"] + native_denom = network["native_asset_denom"] + + msgs["astroport-native-coin-registry"]["owner"] = owner + msgs["astroport-whitelist"]["admins"] = [owner] + + tracker = msgs["astroport-tokenfactory-tracker"] + tracker["tokenfactory_module_address"] = tokenfactory_module + tracker["tracked_denom"] = f"factory/{addresses['astroport-factory']}/astroport/share" + + factory = msgs["astroport-factory"] + factory["coin_registry_address"] = addresses["astroport-native-coin-registry"] + factory["fee_address"] = treasury + factory["generator_address"] = addresses["astroport-incentives"] + factory["owner"] = owner + factory["token_code_id"] = code_ids["cw20-base"] + factory["tracker_config"]["code_id"] = code_ids["astroport-tokenfactory-tracker"] + factory["tracker_config"]["token_factory_addr"] = tokenfactory_module + factory["whitelist_code_id"] = code_ids["astroport-whitelist"] + if len(factory["pair_configs"]) != 1: + fail("factory pair_configs must contain exactly one XYK config before rendering") + factory["pair_configs"][0]["code_id"] = code_ids["astroport-pair"] + + msgs["astroport-router"]["astroport_factory"] = addresses["astroport-factory"] + + incentives = msgs["astroport-incentives"] + incentives["reward_token"] = {"native_token": {"denom": native_denom}} + incentives["factory"] = addresses["astroport-factory"] + incentives["guardian"] = guardian + incentives["owner"] = owner + + oracle = msgs["astroport-oracle"] + oracle["asset_infos"] = [{"native_token": {"denom": native_denom}}] + oracle["factory_contract"] = addresses["astroport-factory"] + + pair_create = cfg["pair_create_msg_template"] + pair_create["asset_infos"][0] = {"native_token": {"denom": native_denom}} + + +def walk_strings(value: Any, path: str = "") -> list[tuple[str, str]]: + found: list[tuple[str, str]] = [] + if isinstance(value, str): + found.append((path, value)) + elif isinstance(value, dict): + for key, item in value.items(): + found.extend(walk_strings(item, f"{path}.{key}" if path else str(key))) + elif isinstance(value, list): + for idx, item in enumerate(value): + found.extend(walk_strings(item, f"{path}[{idx}]")) + return found + + +def assert_complete(cfg: dict[str, Any]) -> None: + zero_ids = [key for key, value in cfg["code_ids"].items() if value == 0] + if zero_ids: + fail(f"code IDs still zero: {', '.join(sorted(zero_ids))}") + placeholders = [(path, value) for path, value in walk_strings(cfg) if PLACEHOLDER_RE.search(value)] + if placeholders: + sample = ", ".join(f"{path}={value!r}" for path, value in placeholders[:5]) + fail(f"placeholder values remain: {sample}") + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--input", type=pathlib.Path, default=DEFAULT_INPUT) + parser.add_argument("--output", type=pathlib.Path, required=True) + parser.add_argument("--set", dest="sets", action="append", default=[], help="dotted.path=value override; repeatable") + parser.add_argument("--require-complete", action="store_true", help="fail if any code ID is 0 or placeholder string remains") + return parser.parse_args() + + +def main() -> None: + args = parse_args() + cfg = copy.deepcopy(load_json(args.input)) + for assignment in args.sets: + set_path(cfg, assignment) + rewire(cfg) + if args.require_complete: + assert_complete(cfg) + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(cfg, indent=2, sort_keys=False) + "\n") + print(f"OK: wrote rendered Juno v1 deployment config to {args.output}") + print(f"sets={len(args.sets)} require_complete={args.require_complete}") + + +if __name__ == "__main__": + main() diff --git a/scripts/generate_juno_v1_dry_run_txs.py b/scripts/generate_juno_v1_dry_run_txs.py new file mode 100755 index 000000000..4268acf9e --- /dev/null +++ b/scripts/generate_juno_v1_dry_run_txs.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 +"""Generate fake uni-7 tx JSON files for the Astroport-Juno v1 handoff. + +This is for operator rehearsal only. It creates the same 16 filenames named by +`deployment/operator-tx-checklist.md`, with harmless synthetic `code_id` and +`_contract_address` events that `scripts/extract_juno_v1_tx_sets.py` can parse. +It never touches real chain state and should not be used as deployment evidence. +""" +from __future__ import annotations + +import argparse +import json +import pathlib +from typing import Any + +STORE_KEYS = ( + "astroport-factory", + "astroport-incentives", + "astroport-native-coin-registry", + "astroport-oracle", + "astroport-pair", + "astroport-router", + "astroport-tokenfactory-tracker", + "astroport-whitelist", + "cw20-base", +) + +ADDRESS_KEYS = ( + "astroport-factory", + "astroport-incentives", + "astroport-native-coin-registry", + "astroport-oracle", + "astroport-router", + "astroport-tokenfactory-tracker", + "astroport-whitelist", +) + + +def event_tx(event_type: str, attrs: dict[str, str], memo: str) -> dict[str, Any]: + """Return a minimal Cosmos SDK tx-response-shaped JSON object.""" + return { + "height": "0", + "txhash": f"DRYRUN_{memo.upper().replace('-', '_')}", + "code": 0, + "raw_log": "[]", + "tx_response": { + "code": 0, + "events": [ + { + "type": event_type, + "attributes": [{"key": key, "value": value} for key, value in attrs.items()], + } + ], + }, + } + + +def synthetic_address(index: int, key: str) -> str: + # Deliberately not a real address; enough shape for config plumbing tests. + stem = key.replace("astroport-", "").replace("-", "")[:18] + return f"juno1dryrun{index:02d}{stem}000000000000000000" + + +def write_json(path: pathlib.Path, data: dict[str, Any]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(data, indent=2, sort_keys=False) + "\n") + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + "--output-dir", + type=pathlib.Path, + default=pathlib.Path("deployment/tx/uni-7-dry-run"), + help="directory to write synthetic tx JSON files into", + ) + return parser.parse_args() + + +def main() -> None: + args = parse_args() + output_dir: pathlib.Path = args.output_dir + + written: list[pathlib.Path] = [] + for offset, key in enumerate(STORE_KEYS, start=1): + path = output_dir / f"store-{key}.json" + write_json(path, event_tx("store_code", {"code_id": str(7000 + offset)}, f"store-{key}")) + written.append(path) + + for offset, key in enumerate(ADDRESS_KEYS, start=1): + path = output_dir / f"instantiate-{key}.json" + write_json( + path, + event_tx("instantiate", {"_contract_address": synthetic_address(offset, key)}, f"instantiate-{key}"), + ) + written.append(path) + + print(f"OK: wrote synthetic Astroport-Juno v1 tx JSON files to {output_dir}") + print(f"store_txs={len(STORE_KEYS)} instantiate_txs={len(ADDRESS_KEYS)} total={len(written)}") + + +if __name__ == "__main__": + main() diff --git a/scripts/generate_juno_v1_frontend_types.py b/scripts/generate_juno_v1_frontend_types.py new file mode 100644 index 000000000..c7e16337a --- /dev/null +++ b/scripts/generate_juno_v1_frontend_types.py @@ -0,0 +1,165 @@ +#!/usr/bin/env python3 +"""Generate the TypeScript handoff type for Astroport-Juno v1 frontend config. + +The committed deployment template is the source of truth for frontend-facing keys. +This generator emits a narrow declaration file that frontend code can import or +copy without learning every deployment-only field. It intentionally models only +v1 XYK launch scope: factory/router/registry/incentives plus optional oracle; +no prelaunch hardcoded pools, no DEX token, no stable/PCL surfaces. +""" +from __future__ import annotations + +import argparse +import json +import pathlib +import sys +from typing import Any, NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +DEFAULT_TEMPLATE = ROOT / "deployment" / "juno-v1-testnet.template.json" +DEFAULT_OUTPUT = ROOT / "deployment" / "juno-v1-frontend-config.d.ts" + + +def fail(msg: str) -> NoReturn: + print(f"FAIL: {msg}") + sys.exit(1) + + +def load_template(path: pathlib.Path) -> dict[str, Any]: + try: + data = json.loads(path.read_text()) + except FileNotFoundError: + fail(f"missing deployment template: {path}") + except json.JSONDecodeError as exc: + fail(f"invalid deployment template JSON: {exc}") + if not isinstance(data, dict): + fail("deployment template must be a JSON object") + return data + + +def require_string_list(cfg: dict[str, Any], path: str) -> list[str]: + cur: Any = cfg + for part in path.split("."): + if not isinstance(cur, dict) or part not in cur: + fail(f"missing {path}") + cur = cur[part] + if not isinstance(cur, list) or not all(isinstance(item, str) for item in cur): + fail(f"{path} must be a string list") + return cur + + +def require_dict(cfg: dict[str, Any], key: str) -> dict[str, Any]: + value = cfg.get(key) + if not isinstance(value, dict): + fail(f"{key} must be an object") + return value + + +def ts_union(values: list[str]) -> str: + return " | ".join(json.dumps(value) for value in values) + + +def render(cfg: dict[str, Any]) -> str: + network = require_dict(cfg, "network") + addresses = require_dict(cfg, "addresses") + code_ids = require_dict(cfg, "code_ids") + required = require_string_list(cfg, "frontend.required_addresses") + optional = require_string_list(cfg, "frontend.optional_addresses") + + all_frontend = required + optional + missing = [key for key in all_frontend if key not in addresses] + if missing: + fail(f"frontend keys missing from addresses: {missing}") + + if "pools" in require_dict(cfg, "frontend") or "pairs" in require_dict(cfg, "frontend"): + fail("frontend template must not hardcode pools/pairs") + + pair_template = require_dict(cfg, "pair_create_msg_template") + pair_type = pair_template.get("pair_type") + if not isinstance(pair_type, dict) or set(pair_type) != {"xyk"}: + fail("pair_create_msg_template must stay XYK-only") + + code_keys = sorted(str(key) for key in code_ids) + address_keys = sorted(str(key) for key in addresses) + + native = network.get("native_asset_denom") + if not isinstance(native, str) or not native: + fail("network.native_asset_denom must be a non-empty string") + + return f'''// AUTO-GENERATED by scripts/generate_juno_v1_frontend_types.py; do not edit by hand. +// Source: deployment/juno-v1-testnet.template.json + +export type JunoV1CodeIdKey = {ts_union(code_keys)}; + +export type JunoV1AddressKey = {ts_union(address_keys)}; + +export type JunoV1RequiredFrontendAddressKey = {ts_union(required)}; + +export type JunoV1OptionalFrontendAddressKey = {ts_union(optional)}; + +export type JunoV1FrontendAddressKey = + | JunoV1RequiredFrontendAddressKey + | JunoV1OptionalFrontendAddressKey; + +export type NativeAssetInfo = {{ native_token: {{ denom: string }} }}; +export type XykPairType = {{ xyk: Record }}; + +export interface JunoV1DeploymentNetwork {{ + chain_id: "uni-7" | "juno-1" | string; + bech32_prefix: "juno"; + fee_denom: string; + native_asset_denom: "{native}" | string; +}} + +export interface JunoV1FrontendConfig {{ + required_addresses: JunoV1RequiredFrontendAddressKey[]; + optional_addresses: JunoV1OptionalFrontendAddressKey[]; + pair_discovery: string; +}} + +export interface JunoV1PairCreateMsgTemplate {{ + pair_type: XykPairType; + asset_infos: [NativeAssetInfo, NativeAssetInfo]; + init_params: null; +}} + +export interface JunoV1FrontendDeploymentConfig {{ + network: JunoV1DeploymentNetwork; + code_ids: Record; + addresses: Record; + pair_create_msg_template: JunoV1PairCreateMsgTemplate; + frontend: JunoV1FrontendConfig; +}} +''' + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--template", type=pathlib.Path, default=DEFAULT_TEMPLATE) + parser.add_argument("--output", type=pathlib.Path, default=DEFAULT_OUTPUT) + parser.add_argument("--check", action="store_true", help="fail if output is stale instead of writing it") + return parser.parse_args() + + +def main() -> None: + args = parse_args() + rendered = render(load_template(args.template)) + if args.check: + try: + current = args.output.read_text() + except FileNotFoundError: + fail(f"missing generated frontend type file: {args.output.relative_to(ROOT)}") + if current != rendered: + fail(f"stale generated frontend type file: {args.output.relative_to(ROOT)}") + print("OK: Juno v1 frontend TypeScript handoff matches deployment template") + print(f"output={args.output.relative_to(ROOT)} bytes={len(rendered)}") + return + + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(rendered) + print(f"OK: wrote {args.output.relative_to(ROOT)}") + print(f"bytes={len(rendered)}") + + +if __name__ == "__main__": + main() diff --git a/scripts/summarize_juno_v1_schema_surface.py b/scripts/summarize_juno_v1_schema_surface.py new file mode 100755 index 000000000..79e1e3c72 --- /dev/null +++ b/scripts/summarize_juno_v1_schema_surface.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 +"""Summarize the committed Astroport-Juno v1 schema surface for frontend work. + +This is intentionally dependency-free. It reads the generated JSON schemas and +prints the top-level instantiate/execute/query/migrate/sudo message variants plus +response schema files per contract. The output is a quick integration map for UI +and deployment wiring without pretending deferred contracts exist. +""" +from __future__ import annotations + +import json +import pathlib +import sys +from collections.abc import Iterable +from typing import NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] +SCHEMAS = ROOT / "schemas" +MESSAGE_FILES = ("instantiate", "execute", "query", "migrate", "sudo") +EXPECTED_CONTRACTS = ( + "astroport-factory", + "astroport-incentives", + "astroport-native-coin-registry", + "astroport-oracle", + "astroport-pair", + "astroport-router", + "astroport-tokenfactory-tracker", + "astroport-whitelist", +) + + +def fail(msg: str) -> NoReturn: + print(f"FAIL: {msg}", file=sys.stderr) + sys.exit(1) + + +def load_json(path: pathlib.Path) -> dict: + try: + return json.loads(path.read_text()) + except json.JSONDecodeError as exc: + fail(f"invalid JSON in {path.relative_to(ROOT)}: {exc}") + + +def top_level_variants(schema: dict) -> list[str]: + """Return snake_case top-level message variants from a cosmwasm schema.""" + variants: list[str] = [] + for branch in schema.get("oneOf", []): + required = branch.get("required") or [] + if required: + variants.append(str(required[0])) + if variants: + return variants + # Instantiate schemas are often a single object rather than oneOf. + props = schema.get("properties") or {} + return sorted(str(k) for k in props) + + +def bullet_list(items: Iterable[str]) -> str: + values = list(items) + if not values: + return "—" + return ", ".join(f"`{item}`" for item in values) + + +def main() -> None: + if not SCHEMAS.exists(): + fail("schemas/ directory is missing") + + actual_contracts = sorted(p.name for p in SCHEMAS.iterdir() if p.is_dir()) + missing = sorted(set(EXPECTED_CONTRACTS) - set(actual_contracts)) + extra = sorted(set(actual_contracts) - set(EXPECTED_CONTRACTS)) + if missing or extra: + fail(f"schema contract set mismatch: missing={missing} extra={extra}") + + print("# Astroport-Juno v1 frontend schema surface") + print() + print("Generated from committed `schemas/*/raw/*.json`. Keep this surface boring: XYK swap/liquidity, pair discovery, registry/oracle reads, and external incentives only.") + print() + print("| Contract | Instantiate fields | Execute variants | Query variants | Other messages | Response schemas |") + print("|---|---|---|---|---|---|") + + for contract in EXPECTED_CONTRACTS: + raw = SCHEMAS / contract / "raw" + if not raw.exists(): + fail(f"missing raw schema dir for {contract}") + + columns: dict[str, list[str]] = {} + other: list[str] = [] + for message in MESSAGE_FILES: + path = raw / f"{message}.json" + if not path.exists(): + columns[message] = [] + continue + variants = top_level_variants(load_json(path)) + if message in ("instantiate", "execute", "query"): + columns[message] = variants + else: + other.extend(f"{message}:{variant}" for variant in variants) + + responses = sorted(p.stem.removeprefix("response_to_") for p in raw.glob("response_to_*.json")) + print( + f"| `{contract}` | {bullet_list(columns.get('instantiate', []))} | " + f"{bullet_list(columns.get('execute', []))} | {bullet_list(columns.get('query', []))} | " + f"{bullet_list(other)} | {bullet_list(responses)} |" + ) + + print() + print(f"contracts={len(EXPECTED_CONTRACTS)}") + + +if __name__ == "__main__": + main() From ed0a51fc161b7840cd7fb47bc6102afe63efe7a2 Mon Sep 17 00:00:00 2001 From: Jake Hartnell Date: Tue, 30 Jun 2026 20:05:02 -0700 Subject: [PATCH 02/84] fix(juno): harden audit launch guards (#8) Merge audited Astroport-Juno launch guard fixes after green CI and review recommendation. --- .github/workflows/check_artifacts.yml | 21 +- .github/workflows/release_artifacts.yml | 6 - .github/workflows/tests_and_checks.yml | 1 + .gitignore | 1 + audit/diff-a-keep-set-changes.patch | 10 +- contracts/tokenomics/incentives/src/state.rs | 87 ++++- contracts/tokenomics/incentives/src/utils.rs | 3 +- deployment/MAINNET_DEPLOYMENT.md | 27 +- deployment/juno-v1-readiness-plan.md | 24 +- deployment/juno-v1-testnet.template.json | 24 +- .../tests/incentives_zero_stake_orphans.rs | 351 ++++++++++++++++++ scripts/build_juno_v1_deployment_command.py | 27 +- .../build_juno_v1_frontend_release_bundle.py | 6 +- scripts/check_juno_v1_ci_wiring.py | 31 +- scripts/check_juno_v1_deployment_command.py | 56 ++- scripts/check_juno_v1_deployment_gitignore.py | 6 +- scripts/check_juno_v1_deployment_template.py | 50 ++- scripts/check_juno_v1_frontend_config.py | 10 +- scripts/check_juno_v1_secret_scan.py | 127 +++++++ scripts/fill_juno_v1_deployment_config.py | 16 +- 20 files changed, 821 insertions(+), 63 deletions(-) create mode 100644 integration-tests/tests/incentives_zero_stake_orphans.rs create mode 100644 scripts/check_juno_v1_secret_scan.py diff --git a/.github/workflows/check_artifacts.yml b/.github/workflows/check_artifacts.yml index 3565c8898..50ddae4a5 100644 --- a/.github/workflows/check_artifacts.yml +++ b/.github/workflows/check_artifacts.yml @@ -35,12 +35,6 @@ jobs: restore-keys: | ${{ runner.os }}-cargo- - - name: Restore cached artifacts - uses: actions/cache@v4 - with: - path: artifacts - key: ${{ runner.os }}-artifacts-${{ hashFiles('**/Cargo.lock') }} - - name: Build Artifacts run: | docker run \ @@ -59,6 +53,13 @@ jobs: run: | python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_artifacts.py + - name: Upload checked artifacts + uses: actions/upload-artifact@v4 + with: + name: cosmwasm-artifacts-${{ github.sha }} + path: artifacts + if-no-files-found: error + cosmwasm-check: @@ -76,12 +77,12 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Restore cached artifacts - uses: actions/cache/restore@v4 + + - name: Download checked artifacts + uses: actions/download-artifact@v4 with: + name: cosmwasm-artifacts-${{ github.sha }} path: artifacts - key: ${{ runner.os }}-artifacts-${{ hashFiles('**/Cargo.lock') }} - fail-on-cache-miss: true - name: Cosmwasm check run: | diff --git a/.github/workflows/release_artifacts.yml b/.github/workflows/release_artifacts.yml index 189b92635..cfb61e879 100644 --- a/.github/workflows/release_artifacts.yml +++ b/.github/workflows/release_artifacts.yml @@ -26,12 +26,6 @@ jobs: restore-keys: | ${{ runner.os }}-cargo- - - name: Restore cached artifacts - uses: actions/cache@v4 - with: - path: artifacts - key: ${{ runner.os }}-artifacts-${{ hashFiles('**/Cargo.lock') }} - - name: Build Artifacts run: | $GITHUB_WORKSPACE/scripts/build_release.sh diff --git a/.github/workflows/tests_and_checks.yml b/.github/workflows/tests_and_checks.yml index 12a961ed8..8c4d3f971 100644 --- a/.github/workflows/tests_and_checks.yml +++ b/.github/workflows/tests_and_checks.yml @@ -30,6 +30,7 @@ jobs: python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_deployment_template.py python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_tx_extractor.py python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_deployment_command.py + python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_secret_scan.py python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_operator_checklist.py python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_dry_run_txs.py python3 $GITHUB_WORKSPACE/scripts/check_juno_v1_deployment_gitignore.py diff --git a/.gitignore b/.gitignore index 19e5db4e9..f083ffbe1 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ target/ /e2e/config.json /deployment/tx/ /deployment/juno-v1-testnet.json +/deployment/juno-v1-mainnet.json diff --git a/audit/diff-a-keep-set-changes.patch b/audit/diff-a-keep-set-changes.patch index 7b2b8173c..97331f4e7 100644 --- a/audit/diff-a-keep-set-changes.patch +++ b/audit/diff-a-keep-set-changes.patch @@ -3212,7 +3212,7 @@ index 1d8a1e9f..00000000 +++ /dev/null @@ -1,28 +0,0 @@ -{ -- "private_key": "8482bce4e5f250bb775f788ce89abc4717980e97c618a1f26278b195b3b6b05f", +- "private_key": "", - "public_key": "0229fc5e5a420a15020e62cde603b5285f4908918f27632daf85435f3ab9d293d5", - "address": [ - 14, @@ -3247,7 +3247,7 @@ index e43dfc9e..00000000 +++ /dev/null @@ -1,28 +0,0 @@ -{ -- "private_key": "f5cbe80991c82afe42d51e2dc9946332c4322aff69cbc23fc25a4f05a73eb419", +- "private_key": "", - "public_key": "0316b8bfc0d651848fdab2dd4befdd86bbf89bf37251ee2f68789586284e53c993", - "address": [ - 176, @@ -10366,15 +10366,15 @@ index 7c6aa0f5..00000000 - -export const LCD = extendLCD(new LCDClient(CHAINS)) - --export const USER_MNEMONIC = "journey proud segment gorilla pencil common phone cloth undo walk civil add gate six measure often addict turn because wet bachelor mechanic ozone early" +REDACTED_WALLET_SECRET_PLACEHOLDER= - -export type Signer = { signer: Wallet, address: string, chain_id: string } - -export const get_signers = (): Record => { -- const terra_signer = LCD.wallet(new MnemonicKey({mnemonic: USER_MNEMONIC, coinType: 330})); +REDACTED_WALLET_SECRET_PLACEHOLDER= - const terra_signer_addr = terra_signer.key.accAddress("terra") - -- const neutron_signer = LCD.wallet(new MnemonicKey({mnemonic: USER_MNEMONIC, coinType: 118})); +REDACTED_WALLET_SECRET_PLACEHOLDER= - const neutron_signer_addr = neutron_signer.key.accAddress("neutron") - - return { diff --git a/contracts/tokenomics/incentives/src/state.rs b/contracts/tokenomics/incentives/src/state.rs index 98075777a..18869dc10 100644 --- a/contracts/tokenomics/incentives/src/state.rs +++ b/contracts/tokenomics/incentives/src/state.rs @@ -89,6 +89,11 @@ pub struct PoolInfo { /// NOTE: this is not part of serialized structure in state! #[serde(skip)] pub rewards_to_remove: HashMap, + /// Active rewards accrued while no LP tokens were staked and later made + /// recoverable through [`ORPHANED_REWARDS`]. This is in-memory only and is + /// flushed by [`PoolInfo::save`]. + #[serde(skip)] + pub orphaned_rewards_to_claim: HashMap, } impl PoolInfo { @@ -169,10 +174,15 @@ impl PoolInfo { if self.total_lp.is_zero() { reward_info.orphaned += collected_rewards; } else { - // Allowing the first depositor to claim orphaned rewards - reward_info.index += (reward_info.orphaned + collected_rewards) - / Decimal256::from_ratio(self.total_lp, 1u8); - reward_info.orphaned = Decimal256::zero(); + if !reward_info.orphaned.is_zero() { + self.orphaned_rewards_to_claim + .entry(reward_info.reward.asset_info().clone()) + .and_modify(|amount| *amount += reward_info.orphaned) + .or_insert(reward_info.orphaned); + reward_info.orphaned = Decimal256::zero(); + } + + reward_info.index += collected_rewards / Decimal256::from_ratio(self.total_lp, 1u8); } if need_remove { @@ -445,6 +455,19 @@ impl PoolInfo { /// If reward schedule has orphaned rewards accumulate them in ORPHANED_REWARDS. /// This function consumes self just to make sure it becomes unusable after calling save(). pub fn save(self, storage: &mut dyn Storage, lp_token: &AssetInfo) -> StdResult<()> { + for (reward, orphaned_amount) in &self.orphaned_rewards_to_claim { + if !orphaned_amount.is_zero() { + ORPHANED_REWARDS.update::<_, StdError>( + storage, + &asset_info_key(reward), + |amount| { + Ok(amount.unwrap_or_default() + + Uint128::try_from(orphaned_amount.to_uint_floor())?) + }, + )?; + } + } + if !self.rewards_to_remove.is_empty() { self.rewards_to_remove .iter() @@ -499,7 +522,10 @@ pub fn list_pool_stakers( limit: Option, ) -> StdResult> { let start = start_after.as_ref().map(Bound::exclusive); - let limit = limit.unwrap_or(MAX_PAGE_LIMIT).max(MAX_PAGE_LIMIT); + let limit = limit.unwrap_or(MAX_PAGE_LIMIT).min(MAX_PAGE_LIMIT); + if limit == 0 { + return Err(StdError::generic_err("limit must be > 0")); + } USER_INFO .prefix(lp_token) .range(storage, start, None, Order::Ascending) @@ -714,3 +740,54 @@ impl UserInfo { USER_INFO.remove(storage, (lp_token, user)) } } + +#[cfg(test)] +mod tests { + use astroport::asset::AssetInfo; + use astroport::incentives::MAX_PAGE_LIMIT; + use cosmwasm_std::testing::mock_dependencies; + use cosmwasm_std::Uint128; + + use super::{list_pool_stakers, UserInfo, USER_INFO}; + + #[test] + fn list_pool_stakers_caps_requested_limit_to_max_page_limit() { + let mut deps = mock_dependencies(); + let lp_token = AssetInfo::native("factory/juno1pool/ulp"); + + for index in 0..(MAX_PAGE_LIMIT + 5) { + let user = deps.api.addr_make(&format!("staker{index:02}")); + USER_INFO + .save( + deps.as_mut().storage, + (&lp_token, &user), + &UserInfo { + amount: Uint128::new(index as u128 + 1), + last_rewards_index: vec![], + last_claim_time: 0, + }, + ) + .unwrap(); + } + + let stakers = list_pool_stakers( + deps.as_ref().storage, + &lp_token, + None, + Some(MAX_PAGE_LIMIT + 5), + ) + .unwrap(); + + assert_eq!(stakers.len(), MAX_PAGE_LIMIT as usize); + } + + #[test] + fn list_pool_stakers_rejects_zero_limit() { + let deps = mock_dependencies(); + let lp_token = AssetInfo::native("factory/juno1pool/ulp"); + + let err = list_pool_stakers(deps.as_ref().storage, &lp_token, None, Some(0)).unwrap_err(); + + assert_eq!(err.to_string(), "Generic error: limit must be > 0"); + } +} diff --git a/contracts/tokenomics/incentives/src/utils.rs b/contracts/tokenomics/incentives/src/utils.rs index 2721f7e1d..8a41e7439 100644 --- a/contracts/tokenomics/incentives/src/utils.rs +++ b/contracts/tokenomics/incentives/src/utils.rs @@ -903,7 +903,7 @@ mod unit_tests { // Seed an "active" PoolInfo — non-zero internal rps so // `is_active_pool()` returns true and the deactivate_pool match // arm enters the `Some(_) if pool_info.is_active_pool()` branch. - let mut pool_info = PoolInfo { + let pool_info = PoolInfo { total_lp: Uint128::zero(), rewards: vec![RewardInfo { reward: RewardType::Int(reward_token.clone()), @@ -913,6 +913,7 @@ mod unit_tests { }], last_update_ts: env.block.time.seconds(), rewards_to_remove: Default::default(), + orphaned_rewards_to_claim: Default::default(), }; pool_info.save(deps.as_mut().storage, &lp_asset).unwrap(); diff --git a/deployment/MAINNET_DEPLOYMENT.md b/deployment/MAINNET_DEPLOYMENT.md index 964b353bb..55da32fb8 100644 --- a/deployment/MAINNET_DEPLOYMENT.md +++ b/deployment/MAINNET_DEPLOYMENT.md @@ -158,14 +158,17 @@ Use the update-after-incentives path unless the team explicitly chooses Instanti 1. Instantiate native coin registry. 2. Register `ujuno` and the verified first counterparty denom + decimals. 3. Instantiate whitelist. -4. Instantiate factory with one permissionless XYK pair config and `generator_address=null`. +4. Instantiate factory with one XYK pair config, `permissioned=true`, and `generator_address=null`. Keep XYK pair creation permissioned until the official first pair exists and seed liquidity is confirmed. 5. Instantiate incentives with factory address, owner, guardian, and `reward_token={"native_token":{"denom":"ujuno"}}`. 6. Execute factory `update_config` to set `generator_address` to incentives. 7. Instantiate router with factory address. 8. Instantiate oracle only after a real pair asset vector exists, or keep oracle dormant/out of the frontend launch-critical path. 9. Instantiate standalone tokenfactory tracker only if the operator still needs it; factory-created pair trackers are the critical path. -10. Create first XYK pair through factory. -11. Seed liquidity. +10. Verify the official first pair does not already exist by querying factory `pair`/`pairs` for the launch asset infos. If it exists unexpectedly, stop and reconcile before continuing. +11. Create the official first XYK pair through factory from the approved owner/operator wallet. +12. Immediately seed official liquidity from the approved seed wallet. +13. Query factory pair registry and pool balances; require the official pair address to be registered and pool liquidity to be non-zero. +14. Run the smoke checks in section 8, then execute factory `update_pair_config` for XYK with the same fees/code ID and `permissioned=false` to open public pair creation. Save every tx response under `deployment/tx/juno-1/` with explicit names, for example: @@ -182,6 +185,7 @@ instantiate-astroport-oracle.json instantiate-astroport-tokenfactory-tracker.json execute-factory-create-pair.json execute-pair-provide-liquidity.json +execute-factory-open-public-pair-creation.json ``` ## 7. Render deployment config from tx output @@ -228,21 +232,34 @@ python3 scripts/check_juno_v1_frontend_config.py deployment/juno-v1-mainnet.json python3 -m json.tool deployment/juno-v1-mainnet.json >/tmp/juno-v1-mainnet.pretty.json ``` -## 8. Post-deploy verification queries +## 8. First-pool gate and post-deploy verification queries + +Keep XYK pair creation permissioned until all first-pool gate evidence below is captured. Do not open `permissioned=false` while the factory has no official seeded pair. ```sh $JUNOD query wasm contract-state smart "$ADDR_FACTORY" '{"config":{}}' --node "$RPC" -o json | jq $JUNOD query wasm contract-state smart "$ADDR_NATIVE_COIN_REGISTRY" '{"native_tokens":{"limit":30}}' --node "$RPC" -o json | jq +$JUNOD query wasm contract-state smart "$ADDR_FACTORY" '{"pair":{"asset_infos":[{"native_token":{"denom":"ujuno"}},{"native_token":{"denom":"'$FIRST_COUNTERPARTY_DENOM'"}}]}}' --node "$RPC" -o json | jq $JUNOD query wasm contract-state smart "$ADDR_FACTORY" '{"pairs":{"limit":30}}' --node "$RPC" -o json | jq $JUNOD query wasm contract-state smart "$PAIR_ADDR" '{"pool":{}}' --node "$RPC" -o json | jq $JUNOD query wasm contract-state smart "$PAIR_ADDR" '{"simulation":{"offer_asset":{"info":{"native_token":{"denom":"ujuno"}},"amount":"1000000"}}}' --node "$RPC" -o json | jq $JUNOD query wasm contract-state smart "$ADDR_ROUTER" '{"config":{}}' --node "$RPC" -o json | jq ``` +Only after the official pair query resolves to the expected `$PAIR_ADDR`, pool balances are non-zero, and smoke checks pass, open public creation: + +```sh +jq '.post_update_state["astroport-factory"].pair_configs[0] | {update_pair_config:{config:.}}' deployment/juno-v1-mainnet.json > /tmp/open-public-pair-creation-msg.json +$JUNOD tx wasm execute "$ADDR_FACTORY" "$(cat /tmp/open-public-pair-creation-msg.json)" \ + --from "$KEY_NAME" --chain-id "$CHAIN_ID" --node "$RPC" \ + --gas auto --gas-adjustment 1.4 --gas-prices "$GAS_PRICES" \ + --keyring-backend "$KEYRING_BACKEND" --keyring-dir "$KEYRING_DIR" +``` + Expected launch state: - Factory owner is the approved DAO/steward owner. -- Factory has exactly one active pair config: permissionless XYK. +- Factory has exactly one active XYK pair config. It remains `permissioned=true` until the official pair is seeded and verified, then becomes `permissioned=false` only after the open-public-creation transaction. - Native registry returns correct decimals for `ujuno` and first counterparty denom. - Factory `pairs` includes the first seeded pair. - Pair `pool` returns non-zero liquidity. diff --git a/deployment/juno-v1-readiness-plan.md b/deployment/juno-v1-readiness-plan.md index a1f887d63..007e9071e 100644 --- a/deployment/juno-v1-readiness-plan.md +++ b/deployment/juno-v1-readiness-plan.md @@ -92,7 +92,7 @@ Use this order to avoid circular dependencies. The rendered config represents th - `owner` = DAO/steward owner, - `fee_address` = treasury, - `generator_address` = `null` for the initial instantiate unless the incentives address is safely precomputed, - - one XYK pair config only: pair code ID, `total_fee_bps=30`, `maker_fee_bps=0`, `permissioned=false`, not disabled, + - one XYK pair config only: pair code ID, `total_fee_bps=30`, `maker_fee_bps=0`, `permissioned=true`, not disabled. Keep it permissioned until the official first pair is created and seeded. - `token_code_id` = cw20-base code ID, - `whitelist_code_id` = whitelist code ID, - `tracker_config.code_id` = tokenfactory tracker code ID, @@ -102,9 +102,12 @@ Use this order to avoid circular dependencies. The rendered config represents th 9. Instantiate `astroport-router` with factory address. 10. Instantiate `astroport-oracle` only for a real pair asset vector when a pool exists; otherwise leave it out of launch-critical UI and do not pretend it proves readiness. 11. Instantiate standalone `astroport-tokenfactory-tracker` only if an operator-facing tracker address is still desired; factory-created pair trackers are the launch-critical path. -12. Create first XYK pool through factory `create_pair`; wait for pair address and LP denom. -13. Provide seed liquidity. -14. Query factory/pair/router/config state and produce `deployment/juno-v1-testnet.json` or mainnet equivalent from tx output. +12. Verify the official first pair does not already exist by querying factory `pair`/`pairs` for the launch asset infos; stop if any unexpected pair exists. +13. Create the official first XYK pool through factory `create_pair`; wait for pair address and LP denom. +14. Immediately provide official seed liquidity. +15. Query factory pair registry and pool balances; require the official pair address and non-zero liquidity. +16. After smoke checks pass, execute factory `update_pair_config` for XYK with the same fees/code ID and `permissioned=false` to open public pair creation. +17. Query factory/pair/router/config state and produce `deployment/juno-v1-testnet.json` or mainnet equivalent from tx output. If the team chooses Instantiate2/address precomputation, document the salt, code checksum, creator, predicted addresses, and verification query before deviating from the update-after-incentives path. @@ -117,7 +120,7 @@ Factory `Config {}` must show: - pair type = `{ "xyk": {} }`. - pair code ID = uploaded `astroport_pair.wasm` code ID. - `is_disabled=false` and `is_generator_disabled=false` unless intentionally freezing launch. -- `permissioned=false` for v1 public pool creation, unless governance explicitly chooses a permissioned launch. +- `permissioned=true` during the first-pool gate. It may become `permissioned=false` for public pool creation only after the official first pair is registered, seeded, and smoke-checked. - `total_fee_bps=30`, `maker_fee_bps=0` unless governance explicitly changes fees. - `coin_registry_address` = deployed native coin registry. - `whitelist_code_id` = deployed whitelist code ID. @@ -211,6 +214,17 @@ jq '.pair_create_msg_template | {create_pair: .}' deployment/juno-v1-testnet.jso --generate-only > /tmp/create-pair.unsigned.json ``` +Open public pair creation only after the first-pool gate passes: + +```sh +jq '.post_update_state["astroport-factory"].pair_configs[0] | {update_pair_config:{config:.}}' deployment/juno-v1-testnet.json > /tmp/open-public-pair-creation-msg.json +/opt/data/bin/junod tx wasm execute "$ADDR_FACTORY" "$(cat /tmp/open-public-pair-creation-msg.json)" \ + --from "$KEY_NAME" --chain-id "$CHAIN_ID" --node "$RPC" \ + --gas auto --gas-adjustment 1.4 --gas-prices "$GAS_PRICES" \ + --keyring-backend "$KEYRING_BACKEND" --keyring-dir "$KEYRING_DIR" \ + --generate-only > /tmp/open-public-pair-creation.unsigned.json +``` + Do not add `--yes`; do not broadcast from this plan. ## 6. Readiness verification queries diff --git a/deployment/juno-v1-testnet.template.json b/deployment/juno-v1-testnet.template.json index 0c5719371..1d37b8153 100644 --- a/deployment/juno-v1-testnet.template.json +++ b/deployment/juno-v1-testnet.template.json @@ -49,7 +49,7 @@ "astroport-factory": { "coin_registry_address": "juno1replacecoinregistry00000000000000000000000", "fee_address": "juno1replacetreasury0000000000000000000000000000", - "generator_address": "juno1replaceincentives00000000000000000000000000", + "generator_address": null, "owner": "juno1replaceowner000000000000000000000000000000000", "pair_configs": [ { @@ -60,7 +60,7 @@ "pair_type": { "xyk": {} }, - "permissioned": false, + "permissioned": true, "total_fee_bps": 30, "whitelist": null } @@ -97,6 +97,26 @@ "factory_contract": "juno1replacefactory000000000000000000000000000000" } }, + "post_update_state": { + "astroport-factory": { + "generator_address": "juno1replaceincentives00000000000000000000000000", + "pair_configs": [ + { + "code_id": 0, + "is_disabled": false, + "is_generator_disabled": false, + "maker_fee_bps": 0, + "pair_type": { + "xyk": {} + }, + "permissioned": false, + "total_fee_bps": 30, + "whitelist": null + } + ], + "first_pool_launch_gate": "Keep factory XYK pair creation permissioned until the official pair exists, seed liquidity is confirmed non-zero, and smoke checks pass. Only then execute update_pair_config to set permissioned=false." + } + }, "pair_create_msg_template": { "pair_type": { "xyk": {} diff --git a/integration-tests/tests/incentives_zero_stake_orphans.rs b/integration-tests/tests/incentives_zero_stake_orphans.rs new file mode 100644 index 000000000..9d6bc0b06 --- /dev/null +++ b/integration-tests/tests/incentives_zero_stake_orphans.rs @@ -0,0 +1,351 @@ +//! Regression tests for zero-stake incentives accrual. +//! +//! Rewards emitted while no LP is staked must not be assigned to the first +//! depositor. They are protocol orphans recoverable by the DAO, not user yield. + +use cosmwasm_std::{coin, Addr, Timestamp, Uint128}; + +use astroport::asset::{Asset, AssetInfo, PairInfo}; +use astroport::factory::{ExecuteMsg as FactoryExecuteMsg, PairType, QueryMsg as FactoryQueryMsg}; +use astroport::incentives::{ExecuteMsg as IncentivesExecuteMsg, InputSchedule, EPOCHS_START}; +use astroport::pair::ExecuteMsg as PairExecuteMsg; +use astroport_test::cw_multi_test::{BankSudo, Executor, SudoMsg}; + +use astroport_juno_integration_tests::{ + balance_of, deploy_incentives_addon, deploy_keep_set, fund, mock_app, KeepSetHandles, TestApp, + MOCK_USDC, UJUNO, +}; + +const ALICE: &str = "alice"; +const FUNDER: &str = "funder"; +const LP_SEED: u128 = 100_000_000_000; +const INTERNAL_REWARD_FUND_AMOUNT: u128 = 10_000_000; +const TOKENS_PER_SECOND: u128 = 100; +const EMPTY_SECONDS: u64 = 10; +const STAKED_SECONDS: u64 = 1; +const PROJECT_REWARD: &str = "factory/juno1projectaddr/ZERO"; +const EXTERNAL_REWARD_AMOUNT: u128 = 100_000_000; + +#[test] +fn internal_emissions_before_first_stake_are_orphaned_not_paid_to_first_depositor() { + let mut app = mock_app(); + app.update_block(|b| { + b.time = Timestamp::from_seconds(EPOCHS_START + 86400); + b.height += 1; + }); + + let handles = deploy_keep_set(&mut app).unwrap(); + let inc = deploy_incentives_addon( + &mut app, + &handles, + AssetInfo::NativeToken { + denom: UJUNO.to_string(), + }, + None, + ) + .unwrap(); + + let pair = create_pair(&mut app, &handles, UJUNO, MOCK_USDC); + let lp_denom = lp_denom_of(&mut app, &handles, UJUNO, MOCK_USDC); + + let alice = app.api().addr_make(ALICE); + fund( + &mut app, + &alice, + vec![coin(LP_SEED, UJUNO), coin(LP_SEED, MOCK_USDC)], + ) + .unwrap(); + provide_liquidity(&mut app, &pair, &alice, LP_SEED, LP_SEED); + let alice_lp = balance_of(&app, &alice, &lp_denom); + assert!(alice_lp > Uint128::zero(), "Alice received LP tokens"); + + app.execute_contract( + handles.deployer.clone(), + inc.incentives.clone(), + &IncentivesExecuteMsg::SetupPools { + pools: vec![(lp_denom.clone(), Uint128::new(1))], + }, + &[], + ) + .unwrap(); + app.execute_contract( + handles.deployer.clone(), + inc.incentives.clone(), + &IncentivesExecuteMsg::SetTokensPerSecond { + amount: Uint128::new(TOKENS_PER_SECOND), + }, + &[], + ) + .unwrap(); + fund( + &mut app, + &inc.incentives, + vec![coin(INTERNAL_REWARD_FUND_AMOUNT, UJUNO)], + ) + .unwrap(); + + // Emissions run while nobody is staked. + app.update_block(|b| { + b.time = b.time.plus_seconds(EMPTY_SECONDS); + b.height += 1; + }); + + app.execute_contract( + alice.clone(), + inc.incentives.clone(), + &IncentivesExecuteMsg::Deposit { recipient: None }, + &[coin(alice_lp.u128(), lp_denom.clone())], + ) + .unwrap(); + + // Let one second accrue with Alice actually staked. She may receive this + // second, but not the EMPTY_SECONDS that elapsed before any stake existed. + app.update_block(|b| { + b.time = b.time.plus_seconds(STAKED_SECONDS); + b.height += 1; + }); + + let alice_ujuno_before = balance_of(&app, &alice, UJUNO); + app.execute_contract( + alice.clone(), + inc.incentives.clone(), + &IncentivesExecuteMsg::ClaimRewards { + lp_tokens: vec![lp_denom.clone()], + }, + &[], + ) + .unwrap(); + let alice_ujuno_after = balance_of(&app, &alice, UJUNO); + let received = alice_ujuno_after - alice_ujuno_before; + let max_staked_period_reward = Uint128::new(STAKED_SECONDS as u128 * TOKENS_PER_SECOND + 1); + assert!( + received <= max_staked_period_reward, + "first depositor received empty-period emissions: got {received}, expected at most {max_staked_period_reward}" + ); + + let dao_before = balance_of(&app, &handles.deployer, UJUNO); + app.execute_contract( + handles.deployer.clone(), + inc.incentives.clone(), + &IncentivesExecuteMsg::ClaimOrphanedRewards { + limit: None, + receiver: handles.deployer.to_string(), + }, + &[], + ) + .expect("DAO can recover zero-stake internal emissions as orphaned rewards"); + let dao_after = balance_of(&app, &handles.deployer, UJUNO); + assert!( + dao_after > dao_before, + "zero-stake internal emissions should be recoverable by the DAO" + ); +} + +#[test] +fn external_incentives_before_first_stake_are_orphaned_not_paid_to_first_depositor() { + let mut app = mock_app(); + app.update_block(|b| { + b.time = Timestamp::from_seconds(EPOCHS_START + 86400); + b.height += 1; + }); + + let handles = deploy_keep_set(&mut app).unwrap(); + let inc = deploy_incentives_addon( + &mut app, + &handles, + AssetInfo::NativeToken { + denom: UJUNO.to_string(), + }, + None, + ) + .unwrap(); + + let pair = create_pair(&mut app, &handles, UJUNO, MOCK_USDC); + let lp_denom = lp_denom_of(&mut app, &handles, UJUNO, MOCK_USDC); + + let alice = app.api().addr_make(ALICE); + fund( + &mut app, + &alice, + vec![coin(LP_SEED, UJUNO), coin(LP_SEED, MOCK_USDC)], + ) + .unwrap(); + provide_liquidity(&mut app, &pair, &alice, LP_SEED, LP_SEED); + let alice_lp = balance_of(&app, &alice, &lp_denom); + + let funder = app.api().addr_make(FUNDER); + app.sudo(SudoMsg::Bank(BankSudo::Mint { + to_address: funder.to_string(), + amount: vec![coin(EXTERNAL_REWARD_AMOUNT, PROJECT_REWARD)], + })) + .unwrap(); + + app.execute_contract( + funder.clone(), + inc.incentives.clone(), + &IncentivesExecuteMsg::Incentivize { + lp_token: lp_denom.clone(), + schedule: InputSchedule { + reward: Asset { + info: AssetInfo::NativeToken { + denom: PROJECT_REWARD.to_string(), + }, + amount: Uint128::new(EXTERNAL_REWARD_AMOUNT), + }, + duration_periods: 1, + }, + }, + &[coin(EXTERNAL_REWARD_AMOUNT, PROJECT_REWARD)], + ) + .expect("Incentivize succeeds while no LP is staked"); + + // Advance into the active external schedule while nobody is staked. + app.update_block(|b| { + b.time = b.time.plus_seconds(7 * 86400); + b.height += 1; + }); + + app.execute_contract( + alice.clone(), + inc.incentives.clone(), + &IncentivesExecuteMsg::Deposit { recipient: None }, + &[coin(alice_lp.u128(), lp_denom.clone())], + ) + .unwrap(); + + app.update_block(|b| { + b.time = b.time.plus_seconds(STAKED_SECONDS); + b.height += 1; + }); + + let alice_reward_before = balance_of(&app, &alice, PROJECT_REWARD); + app.execute_contract( + alice.clone(), + inc.incentives.clone(), + &IncentivesExecuteMsg::ClaimRewards { + lp_tokens: vec![lp_denom.clone()], + }, + &[], + ) + .unwrap(); + let alice_reward_after = balance_of(&app, &alice, PROJECT_REWARD); + let received = alice_reward_after - alice_reward_before; + assert!( + received <= Uint128::new(100), + "first depositor received zero-stake external emissions: got {received}" + ); + + let dao_before = balance_of(&app, &handles.deployer, PROJECT_REWARD); + app.execute_contract( + handles.deployer.clone(), + inc.incentives.clone(), + &IncentivesExecuteMsg::ClaimOrphanedRewards { + limit: None, + receiver: handles.deployer.to_string(), + }, + &[], + ) + .expect("DAO can recover zero-stake external emissions as orphaned rewards"); + let dao_after = balance_of(&app, &handles.deployer, PROJECT_REWARD); + assert!( + dao_after > dao_before, + "zero-stake external emissions should be recoverable by the DAO" + ); +} + +// ===================================================================== +// helpers (local to this test target) +// ===================================================================== + +fn create_pair(app: &mut TestApp, handles: &KeepSetHandles, denom_a: &str, denom_b: &str) -> Addr { + let asset_infos = vec![ + AssetInfo::NativeToken { + denom: denom_a.to_string(), + }, + AssetInfo::NativeToken { + denom: denom_b.to_string(), + }, + ]; + app.execute_contract( + handles.deployer.clone(), + handles.factory.clone(), + &FactoryExecuteMsg::CreatePair { + pair_type: PairType::Xyk {}, + asset_infos: asset_infos.clone(), + init_params: None, + }, + &[], + ) + .unwrap(); + let info: PairInfo = app + .wrap() + .query_wasm_smart( + handles.factory.clone(), + &FactoryQueryMsg::Pair { asset_infos }, + ) + .unwrap(); + info.contract_addr +} + +fn lp_denom_of( + app: &mut TestApp, + handles: &KeepSetHandles, + denom_a: &str, + denom_b: &str, +) -> String { + let info: PairInfo = app + .wrap() + .query_wasm_smart( + handles.factory.clone(), + &FactoryQueryMsg::Pair { + asset_infos: vec![ + AssetInfo::NativeToken { + denom: denom_a.to_string(), + }, + AssetInfo::NativeToken { + denom: denom_b.to_string(), + }, + ], + }, + ) + .unwrap(); + info.liquidity_token +} + +fn provide_liquidity( + app: &mut TestApp, + pair: &Addr, + sender: &Addr, + a_amount: u128, + b_amount: u128, +) { + let assets = vec![ + Asset { + info: AssetInfo::NativeToken { + denom: UJUNO.to_string(), + }, + amount: Uint128::new(a_amount), + }, + Asset { + info: AssetInfo::NativeToken { + denom: MOCK_USDC.to_string(), + }, + amount: Uint128::new(b_amount), + }, + ]; + let mut funds = vec![coin(a_amount, UJUNO), coin(b_amount, MOCK_USDC)]; + funds.sort_by(|a, b| a.denom.cmp(&b.denom)); + app.execute_contract( + sender.clone(), + pair.clone(), + &PairExecuteMsg::ProvideLiquidity { + assets, + slippage_tolerance: None, + auto_stake: None, + receiver: None, + min_lp_to_receive: None, + }, + &funds, + ) + .unwrap(); +} diff --git a/scripts/build_juno_v1_deployment_command.py b/scripts/build_juno_v1_deployment_command.py index 504dfe707..95342a3d0 100644 --- a/scripts/build_juno_v1_deployment_command.py +++ b/scripts/build_juno_v1_deployment_command.py @@ -54,6 +54,20 @@ "pair_create_msg_template.asset_infos.1.native_token.denom", } +NETWORKS = { + "uni-7": { + "network.chain_id": "uni-7", + "network.fee_denom": "ujunox", + "network.native_asset_denom": "ujunox", + }, + "juno-1": { + "network.chain_id": "juno-1", + "network.fee_denom": "ujuno", + "network.native_asset_denom": "ujuno", + }, +} +NETWORK_SET_PATHS = set(next(iter(NETWORKS.values()))) + def fail(message: str) -> NoReturn: print(f"FAIL: {message}", file=sys.stderr) @@ -132,6 +146,11 @@ def render(assignments: dict[str, str], output: pathlib.Path) -> None: print(check_proc.stdout, end="") +def reject_unsafe_mainnet_output(network: str, output: pathlib.Path) -> None: + if "mainnet" in output.name and network != "juno-1": + fail("mainnet deployment output requires --network juno-1") + + def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--tx-sets", type=pathlib.Path, required=True, help="file containing extractor `--set ...` lines") @@ -141,6 +160,7 @@ def parse_args() -> argparse.Namespace: parser.add_argument("--tokenfactory-module", required=True) parser.add_argument("--counterparty-denom", required=True, help="ibc/... denom for the sample JUNO/counterparty XYK pair-create template") parser.add_argument("--output", type=pathlib.Path, default=pathlib.Path("deployment/juno-v1-testnet.filled.json")) + parser.add_argument("--network", choices=sorted(NETWORKS), default="uni-7", help="deployment network values to render into the config") parser.add_argument("--render", action="store_true", help="execute the fill command and validate the rendered config") return parser.parse_args() @@ -148,6 +168,7 @@ def parse_args() -> argparse.Namespace: def main() -> None: args = parse_args() assignments: dict[str, str] = {} + reject_unsafe_mainnet_output(args.network, args.output) for assignment in parse_extractor_sets(args.tx_sets): add_assignment(assignments, assignment, str(args.tx_sets)) @@ -161,17 +182,19 @@ def main() -> None: } for path, value in manual.items(): add_assignment(assignments, f"{path}={value}", "manual arg") + for path, value in NETWORKS[args.network].items(): + add_assignment(assignments, f"{path}={value}", f"network {args.network}") missing_tx = sorted(REQUIRED_TX_SET_PATHS - assignments.keys()) if missing_tx: fail("tx sets missing required deployment values: " + ", ".join(missing_tx)) - extra_tx = sorted(path for path in assignments if path not in REQUIRED_TX_SET_PATHS | MANUAL_SET_PATHS) + extra_tx = sorted(path for path in assignments if path not in REQUIRED_TX_SET_PATHS | MANUAL_SET_PATHS | NETWORK_SET_PATHS) if extra_tx: fail("unexpected deployment set paths: " + ", ".join(extra_tx)) command = shell_command(assignments, args.output) print(command) - print(f"sets={len(assignments)} tx_sets={len(REQUIRED_TX_SET_PATHS)} manual_sets={len(MANUAL_SET_PATHS)} render={args.render}") + print(f"sets={len(assignments)} tx_sets={len(REQUIRED_TX_SET_PATHS)} manual_sets={len(MANUAL_SET_PATHS)} network={args.network} render={args.render}") if args.render: render(assignments, args.output) diff --git a/scripts/build_juno_v1_frontend_release_bundle.py b/scripts/build_juno_v1_frontend_release_bundle.py index 826654e17..572e3d238 100644 --- a/scripts/build_juno_v1_frontend_release_bundle.py +++ b/scripts/build_juno_v1_frontend_release_bundle.py @@ -110,9 +110,9 @@ def assert_bundle_scope(entries: dict[str, bytes]) -> None: if name.endswith((".json", ".ts")): text = data.decode("utf-8", errors="ignore").lower() bad = [fragment for fragment in FORBIDDEN_CONTENT_SUBSTRINGS if fragment in text] - # The v1 config still carries schema-required maker_fee_bps and - # incentives vesting_contract fields, but should not mention any - # deferred pool/DEX-token surfaces in release bundle contents. + # The v1 config still carries schema-required maker_fee_bps, but + # should not mention any deferred pool/DEX-token surfaces in + # release bundle contents. if bad: fail(f"forbidden deferred-scope text in {name}: {', '.join(sorted(set(bad)))}") diff --git a/scripts/check_juno_v1_ci_wiring.py b/scripts/check_juno_v1_ci_wiring.py index 4b0e445e4..bb58145c8 100644 --- a/scripts/check_juno_v1_ci_wiring.py +++ b/scripts/check_juno_v1_ci_wiring.py @@ -16,6 +16,7 @@ WORKFLOWS = ROOT / ".github" / "workflows" TESTS = WORKFLOWS / "tests_and_checks.yml" ARTIFACTS = WORKFLOWS / "check_artifacts.yml" +RELEASE_ARTIFACTS = WORKFLOWS / "release_artifacts.yml" class WorkflowText: @@ -52,12 +53,14 @@ def assert_before(name: str, left_line: int, right_line: int) -> None: def main() -> None: tests = WorkflowText(TESTS) artifacts = WorkflowText(ARTIFACTS) + release_artifacts = WorkflowText(RELEASE_ARTIFACTS) scope_line = tests.first("scripts/check_juno_v1_scope.py") schema_lines = tests.all("scripts/check_juno_v1_schemas.py") template_line = tests.first("scripts/check_juno_v1_deployment_template.py") tx_extractor_line = tests.first("scripts/check_juno_v1_tx_extractor.py") deployment_command_line = tests.first("scripts/check_juno_v1_deployment_command.py") + secret_scan_line = tests.first("scripts/check_juno_v1_secret_scan.py") operator_checklist_line = tests.first("scripts/check_juno_v1_operator_checklist.py") dry_run_txs_line = tests.first("scripts/check_juno_v1_dry_run_txs.py") deployment_gitignore_line = tests.first("scripts/check_juno_v1_deployment_gitignore.py") @@ -78,6 +81,7 @@ def main() -> None: ("deployment template guard", template_line), ("tx extractor fixture guard", tx_extractor_line), ("deployment command guard", deployment_command_line), + ("secret scan guard", secret_scan_line), ("operator checklist guard", operator_checklist_line), ("dry-run tx rehearsal guard", dry_run_txs_line), ("deployment gitignore guard", deployment_gitignore_line), @@ -97,6 +101,7 @@ def main() -> None: < template_line < tx_extractor_line < deployment_command_line + < secret_scan_line < operator_checklist_line < dry_run_txs_line < deployment_gitignore_line @@ -108,7 +113,7 @@ def main() -> None: < frontend_release_checklist_line < ci_wiring_line ): - fail("tests workflow must run launch guards in scope/schema/template/tx-extractor/deployment-command/operator-checklist/dry-run-txs/deployment-gitignore/deployment-readme/frontend-config/frontend-types/frontend-example/frontend-handoff-sync/frontend-release-checklist/ci-wiring order") + fail("tests workflow must run launch guards in scope/schema/template/tx-extractor/deployment-command/secret-scan/operator-checklist/dry-run-txs/deployment-gitignore/deployment-readme/frontend-config/frontend-types/frontend-example/frontend-handoff-sync/frontend-release-checklist/ci-wiring order") if len(schema_lines) < 2: fail("tests workflow must run schema guard both before Rust work and after schema generation") @@ -120,15 +125,27 @@ def main() -> None: build_artifacts_line = artifacts.first("name: Build Artifacts") size_line = artifacts.first("scripts/check_artifacts_size.sh") artifact_guard_line = artifacts.first("scripts/check_juno_v1_artifacts.py") - cosmwasm_check_line = artifacts.first("Cosmwasm check") - - if not (build_artifacts_line < size_line < artifact_guard_line < cosmwasm_check_line): - fail("artifact workflow must build, size-check, v1 artifact-check, then cosmwasm-check") + upload_line = artifacts.first("actions/upload-artifact") + download_line = artifacts.first("actions/download-artifact") + cosmwasm_check_line = artifacts.all("cosmwasm-check $GITHUB_WORKSPACE/artifacts/*.wasm")[-1] + + if not (build_artifacts_line < size_line < artifact_guard_line < upload_line < download_line < cosmwasm_check_line): + fail("artifact workflow must build, size-check, v1 artifact-check, upload per-run artifacts, download them, then cosmwasm-check") + for idx, line in enumerate(artifacts.lines, start=1): + if "path: artifacts" in line: + before = "\n".join(artifacts.lines[max(0, idx - 5) : idx]) + if "actions/upload-artifact" not in before and "actions/download-artifact" not in before: + fail("artifact workflow must only pass artifacts via upload/download-artifact") + for idx, line in enumerate(release_artifacts.lines, start=1): + if "path: artifacts" in line: + before = "\n".join(release_artifacts.lines[max(0, idx - 5) : idx]) + if "actions/cache" in before: + fail("release_artifacts.yml must not restore cached artifacts before packaging a release") print("OK: GitHub Actions wiring enforces Astroport-Juno v1 guards") print( - "tests_guards=scope/schema/template/tx-extractor/deployment-command/operator-checklist pre_rust=true " - "dry_run_txs=true deployment_gitignore=true deployment_readme=true frontend_config=true frontend_types=true frontend_example=true frontend_handoff_sync=true frontend_release_checklist=true schema_post_generation=true artifact_guard_after_size=true" + "tests_guards=scope/schema/template/tx-extractor/deployment-command/secret-scan/operator-checklist pre_rust=true " + "dry_run_txs=true deployment_gitignore=true deployment_readme=true frontend_config=true frontend_types=true frontend_example=true frontend_handoff_sync=true frontend_release_checklist=true schema_post_generation=true artifact_guard_after_size=true artifact_handoff=upload-download release_artifacts_no_cache=true" ) diff --git a/scripts/check_juno_v1_deployment_command.py b/scripts/check_juno_v1_deployment_command.py index 1d83751c6..6932fe313 100644 --- a/scripts/check_juno_v1_deployment_command.py +++ b/scripts/check_juno_v1_deployment_command.py @@ -3,6 +3,7 @@ from __future__ import annotations import pathlib +import json import subprocess import sys import tempfile @@ -10,6 +11,8 @@ ROOT = pathlib.Path(__file__).resolve().parents[1] BUILDER = ROOT / "scripts" / "build_juno_v1_deployment_command.py" +MAINNET_GUIDE = ROOT / "deployment" / "MAINNET_DEPLOYMENT.md" +READINESS_PLAN = ROOT / "deployment" / "juno-v1-readiness-plan.md" TX_SET_LINES = [ "--set code_ids.astroport-factory='101'", @@ -81,31 +84,76 @@ def main() -> None: "scripts/fill_juno_v1_deployment_config.py", "--require-complete", "--set", - "sets=21 tx_sets=16 manual_sets=5 render=False", + "sets=24 tx_sets=16 manual_sets=5 network=uni-7 render=False", ): if needle not in dry: fail(f"dry command output missing {needle!r}: {dry!r}") rendered_proc = run([*common_args, "--render"]).stdout for needle in ( - "sets=21 tx_sets=16 manual_sets=5 render=True", + "sets=24 tx_sets=16 manual_sets=5 network=uni-7 render=True", "OK: wrote rendered Juno v1 deployment config", "OK: Juno v1 deployment template matches instantiate schema requirements", - "pair_type=xyk", + "first_pool_gate=permissioned", ): if needle not in rendered_proc: fail(f"render output missing {needle!r}: {rendered_proc!r}") if not rendered.exists(): fail("render mode did not create output config") + mainnet_rendered = tmp / "juno-v1-mainnet.json" + mainnet_proc = run([*common_args[:-2], "--output", str(mainnet_rendered), "--network", "juno-1", "--render"]).stdout + if "network=juno-1" not in mainnet_proc: + fail(f"mainnet render did not report juno-1 network: {mainnet_proc!r}") + mainnet = json.loads(mainnet_rendered.read_text()) + expected_mainnet_network = { + "chain_id": "juno-1", + "bech32_prefix": "juno", + "fee_denom": "ujuno", + "native_asset_denom": "ujuno", + } + if mainnet.get("network") != expected_mainnet_network: + fail(f"mainnet render inherited wrong network: {mainnet.get('network')!r}") + factory_pair_config = mainnet["instantiate_msgs"]["astroport-factory"]["pair_configs"][0] + if factory_pair_config.get("permissioned") is not True: + fail("mainnet factory instantiate must keep XYK permissioned before the first-pool gate") + final_pair_config = mainnet["post_update_state"]["astroport-factory"]["pair_configs"][0] + if final_pair_config.get("permissioned") is not False: + fail("mainnet post-update state must document permissionless opening after the first-pool gate") + + unsafe_mainnet = run([*common_args[:-2], "--output", str(mainnet_rendered), "--render"], expect_ok=False) + if "--network juno-1" not in unsafe_mainnet.stderr: + fail(f"mainnet output without network override was not rejected: {unsafe_mainnet.stderr!r}") + incomplete = tmp / "incomplete-tx-sets.txt" incomplete.write_text("\n".join(TX_SET_LINES[:-1]) + "\n") bad = run([*common_args[:1], str(incomplete), *common_args[2:]], expect_ok=False) if "tx sets missing required deployment values" not in bad.stderr: fail(f"incomplete tx-set failure was not explicit: {bad.stderr!r}") + mainnet_guide = MAINNET_GUIDE.read_text() + for needle in ( + "--network juno-1", + "deployment/juno-v1-mainnet.json", + "junod query tx", + "save the included tx response", + "Keep XYK pair creation permissioned", + "Query factory pair registry and pool balances", + ): + if needle not in mainnet_guide: + fail(f"mainnet deployment guide missing required text: {needle}") + + readiness_plan = READINESS_PLAN.read_text() + for needle in ( + "`permissioned=true` during the first-pool gate", + "official first pair is registered, seeded, and smoke-checked", + "Open public pair creation only after the first-pool gate passes", + ): + if needle not in readiness_plan: + fail(f"readiness plan missing first-pool gate text: {needle}") + print("OK: Juno v1 deployment command builder combines tx sets and manual values") - print("sets=21 tx_sets=16 manual_sets=5 render_guard=true failure_cases=1") + print("sets=24 tx_sets=16 manual_sets=5 network_sets=3 render_guard=true failure_cases=2 mainnet_network=juno-1") if __name__ == "__main__": diff --git a/scripts/check_juno_v1_deployment_gitignore.py b/scripts/check_juno_v1_deployment_gitignore.py index 1a8fe5d1a..927c80b21 100644 --- a/scripts/check_juno_v1_deployment_gitignore.py +++ b/scripts/check_juno_v1_deployment_gitignore.py @@ -20,6 +20,7 @@ REQUIRED_GITIGNORE_LINES = ( "/deployment/tx/", "/deployment/juno-v1-testnet.json", + "/deployment/juno-v1-mainnet.json", ) SHOULD_BE_IGNORED = ( @@ -28,6 +29,7 @@ "deployment/tx/uni-7/tx-sets.txt", "deployment/tx/uni-7-dry-run/store-astroport-factory.json", "deployment/juno-v1-testnet.json", + "deployment/juno-v1-mainnet.json", ) FORBIDDEN_TRACKED_PREFIXES = ( @@ -36,6 +38,7 @@ FORBIDDEN_TRACKED_FILES = ( "deployment/juno-v1-testnet.json", + "deployment/juno-v1-mainnet.json", ) @@ -70,7 +73,7 @@ def main() -> None: for path in SHOULD_BE_IGNORED: require_ignored(path) - tracked = run_git(["ls-files", "--", "deployment/tx", "deployment/juno-v1-testnet.json"]) + tracked = run_git(["ls-files", "--", "deployment/tx", "deployment/juno-v1-testnet.json", "deployment/juno-v1-mainnet.json"]) if tracked.returncode != 0: fail(f"git ls-files failed: {tracked.stderr.strip()}") tracked_paths = [line.strip() for line in tracked.stdout.splitlines() if line.strip()] @@ -91,6 +94,7 @@ def main() -> None: "ignored directory", "deployment/tx/uni-7-dry-run", "juno-v1-testnet.json` — suggested rendered output path; do not commit real values", + "juno-v1-mainnet.json` — rendered mainnet output path; do not commit real values", ): if needle not in readme: fail(f"deployment README missing gitignore safety text: {needle}") diff --git a/scripts/check_juno_v1_deployment_template.py b/scripts/check_juno_v1_deployment_template.py index d99c364ad..7cc83e2df 100644 --- a/scripts/check_juno_v1_deployment_template.py +++ b/scripts/check_juno_v1_deployment_template.py @@ -4,7 +4,7 @@ This deliberately avoids jsonschema dependencies. It checks the parts that reduce launch risk here: every v1 instantiate message exists, all schema-required fields are present, code IDs/addresses are wired for the exact v1 contract set, and the -factory/pair templates stay XYK-only and permissionless. +factory/pair templates stay XYK-only with a permissioned first-pool launch gate. """ from __future__ import annotations @@ -30,6 +30,7 @@ EXPECTED_CODE_IDS = EXPECTED_CONTRACTS + ("astroport-pair", "cw20-base") EXPECTED_ADDRESSES = EXPECTED_CONTRACTS FORBIDDEN_PAIR_TYPES = {"stable", "custom", "concentrated"} +LEGACY_INCENTIVES_KEYS = {"astro_token", "vesting_contract"} def fail(msg: str) -> NoReturn: @@ -94,11 +95,34 @@ def main() -> None: msg = cfg["instantiate_msgs"].get(contract) if not isinstance(msg, dict): fail(f"instantiate_msgs.{contract} must be an object") + if contract == "astroport-incentives": + legacy = sorted(LEGACY_INCENTIVES_KEYS & set(msg)) + if legacy: + fail("instantiate_msgs.astroport-incentives uses legacy key(s): " + ", ".join(legacy)) missing = sorted(required_fields(contract) - set(msg)) if missing: fail(f"instantiate_msgs.{contract} missing required field(s): {missing}") + incentives_msg = cfg["instantiate_msgs"]["astroport-incentives"] + incentives_required = required_fields("astroport-incentives") + if "reward_token" not in incentives_required or incentives_required & LEGACY_INCENTIVES_KEYS: + fail( + "schemas/astroport-incentives/raw/instantiate.json is stale; " + "expected reward_token and no astro_token/vesting_contract" + ) + factory_msg = cfg["instantiate_msgs"]["astroport-factory"] + if factory_msg.get("generator_address") is not None: + fail("factory instantiate generator_address must be null; set it via post-update update_config") + post_update_state = cfg.get("post_update_state") + if not isinstance(post_update_state, dict): + fail("missing post_update_state section") + factory_final = post_update_state.get("astroport-factory") + if not isinstance(factory_final, dict): + fail("post_update_state.astroport-factory must be an object") + expected_generator = cfg["addresses"]["astroport-incentives"] + if factory_final.get("generator_address") != expected_generator: + fail("post_update_state.astroport-factory.generator_address must equal addresses.astroport-incentives") pair_configs = factory_msg.get("pair_configs") if not isinstance(pair_configs, list) or len(pair_configs) != 1: fail("factory pair_configs must contain exactly one v1 XYK config") @@ -106,13 +130,28 @@ def main() -> None: keys = pair_type_keys(pair_config.get("pair_type")) if keys != {"xyk"}: fail(f"factory pair_type must be XYK-only, got {sorted(keys)}") - if pair_config.get("permissioned") is not False: - fail("factory XYK pair config must remain permissionless") + if pair_config.get("permissioned") is not True: + fail("factory instantiate XYK pair config must stay permissioned until the official first pool is seeded") if pair_config.get("is_disabled") is True: fail("factory XYK pair config must not be disabled") if keys & FORBIDDEN_PAIR_TYPES: fail(f"factory contains forbidden pair type(s): {sorted(keys & FORBIDDEN_PAIR_TYPES)}") + final_pair_configs = factory_final.get("pair_configs") + if not isinstance(final_pair_configs, list) or len(final_pair_configs) != 1: + fail("post_update_state.astroport-factory.pair_configs must contain exactly one v1 XYK config") + final_pair_config = final_pair_configs[0] + final_keys = pair_type_keys(final_pair_config.get("pair_type")) + if final_keys != {"xyk"}: + fail(f"post-update factory pair_type must be XYK-only, got {sorted(final_keys)}") + if final_pair_config.get("permissioned") is not False: + fail("post-update factory XYK pair config must open permissionless creation only after the first-pool gate") + if final_pair_config.get("code_id") != pair_config.get("code_id"): + fail("post-update factory XYK pair code_id must match instantiate pair config") + launch_gate = factory_final.get("first_pool_launch_gate") + if not isinstance(launch_gate, str) or "seed" not in launch_gate or "permissioned=false" not in launch_gate: + fail("post_update_state.astroport-factory.first_pool_launch_gate must document the seed-liquidity gate before permissioned=false") + create_template = cfg["pair_create_msg_template"] create_keys = pair_type_keys(create_template.get("pair_type")) if create_keys != {"xyk"}: @@ -128,7 +167,10 @@ def main() -> None: fail(f"frontend.required_addresses missing from addresses: {sorted(missing_frontend)}") print("OK: Juno v1 deployment template matches instantiate schema requirements") - print(f"instantiate_msgs={len(EXPECTED_CONTRACTS)} code_ids={len(EXPECTED_CODE_IDS)} addresses={len(EXPECTED_ADDRESSES)} pair_type=xyk") + print( + f"instantiate_msgs={len(EXPECTED_CONTRACTS)} code_ids={len(EXPECTED_CODE_IDS)} " + f"addresses={len(EXPECTED_ADDRESSES)} pair_type=xyk first_pool_gate=permissioned" + ) if __name__ == "__main__": diff --git a/scripts/check_juno_v1_frontend_config.py b/scripts/check_juno_v1_frontend_config.py index 56de7595a..e90ec39c6 100644 --- a/scripts/check_juno_v1_frontend_config.py +++ b/scripts/check_juno_v1_frontend_config.py @@ -125,9 +125,17 @@ def main() -> None: oracle_msg = require_dict(msgs, "astroport-oracle") assert_eq("instantiate_msgs.astroport-factory.coin_registry_address", factory_msg.get("coin_registry_address"), coin_registry_addr) - assert_eq("instantiate_msgs.astroport-factory.generator_address", factory_msg.get("generator_address"), incentives_addr) + assert_eq("instantiate_msgs.astroport-factory.generator_address", factory_msg.get("generator_address"), None) assert_eq("instantiate_msgs.astroport-router.astroport_factory", router_msg.get("astroport_factory"), factory_addr) assert_eq("instantiate_msgs.astroport-incentives.factory", incentives_msg.get("factory"), factory_addr) + if "reward_token" not in incentives_msg: + fail("instantiate_msgs.astroport-incentives missing reward_token") + legacy_incentives = sorted({"astro_token", "vesting_contract"} & set(incentives_msg)) + if legacy_incentives: + fail("instantiate_msgs.astroport-incentives uses legacy key(s): " + ", ".join(legacy_incentives)) + post_update_state = require_dict(cfg, "post_update_state") + factory_final = require_dict(post_update_state, "astroport-factory") + assert_eq("post_update_state.astroport-factory.generator_address", factory_final.get("generator_address"), incentives_addr) assert_eq("instantiate_msgs.astroport-oracle.factory_contract", oracle_msg.get("factory_contract"), factory_addr) if router_addr == factory_addr: diff --git a/scripts/check_juno_v1_secret_scan.py b/scripts/check_juno_v1_secret_scan.py new file mode 100644 index 000000000..f54d48a0f --- /dev/null +++ b/scripts/check_juno_v1_secret_scan.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python3 +"""Reject tracked secret-like material in text files. + +The scan intentionally reports only path, line, and rule name. It never echoes the +matched secret-like value back to logs. +""" +from __future__ import annotations + +import pathlib +import re +import subprocess +import sys +from typing import NoReturn + +ROOT = pathlib.Path(__file__).resolve().parents[1] + +RULES: tuple[tuple[str, re.Pattern[str]], ...] = ( + ("explicit mnemonic variable", re.compile(r"(?i)\b(USER_)?MNEMONIC\b\s*[:=]")), + ( + "private key variable", + re.compile( + r"(?i)(?:^|[\s{,\[])[\"']?(private[_ -]?key|secret[_ -]?key)[\"']?\s*[:=]" + ), + ), + ( + "seed phrase text", + re.compile(r"(?i)\b(seed phrase|mnemonic phrase|wallet mnemonic)\b"), + ), +) +REDACTED_SECRET_VALUE = re.compile( + r"(?i)(?:^|[\s{,\[])[\"']?(?:private[_ -]?key|secret[_ -]?key)[\"']?\s*[:=]\s*[\"']?[\"']?" +) +ALLOWLIST = { + "scripts/check_juno_v1_secret_scan.py", +} + + +SELF_TEST_CASES: tuple[tuple[str, str], ...] = ( + ("private key variable", '"private_key": "fixture-not-redacted"'), + ("private key variable", "private-key = 'fixture-not-redacted'"), + ("private key variable", "secret key: fixture-not-redacted"), +) +SELF_TEST_NEGATIVE_CASES = ( + '"public_key": ""', + '"private_key": ""', +) + + +def fail(message: str) -> NoReturn: + print(f"FAIL: {message}", file=sys.stderr) + sys.exit(1) + + +def git_ls_files() -> list[str]: + proc = subprocess.run( + ["git", "ls-files"], + cwd=ROOT, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + check=False, + ) + if proc.returncode != 0: + fail(f"git ls-files failed: {proc.stderr.strip()}") + return [line for line in proc.stdout.splitlines() if line] + + +def read_text(path: pathlib.Path) -> str | None: + data = path.read_bytes() + if b"\0" in data: + return None + try: + return data.decode("utf-8") + except UnicodeDecodeError: + return None + + +def matching_rule(line: str) -> str | None: + if REDACTED_SECRET_VALUE.search(line): + return None + for rule_name, pattern in RULES: + if pattern.search(line): + return rule_name + return None + + +def run_self_tests() -> None: + rules_by_name = {name: pattern for name, pattern in RULES} + for rule_name, fixture_line in SELF_TEST_CASES: + pattern = rules_by_name.get(rule_name) + if pattern is None: + fail(f"missing self-test rule: {rule_name}") + if not pattern.search(fixture_line): + fail(f"secret scan self-test failed: {rule_name}") + + for fixture_line in SELF_TEST_NEGATIVE_CASES: + if matching_rule(fixture_line) is not None: + fail("secret scan self-test failed: benign key matched") + + +def main() -> None: + run_self_tests() + findings: list[str] = [] + for rel in git_ls_files(): + if rel in ALLOWLIST: + continue + text = read_text(ROOT / rel) + if text is None: + continue + for line_no, line in enumerate(text.splitlines(), start=1): + rule_name = matching_rule(line) + if rule_name is not None: + findings.append(f"{rel}:{line_no}: {rule_name}") + + if findings: + for finding in findings[:20]: + print(f"FAIL: secret-like tracked text: {finding}", file=sys.stderr) + if len(findings) > 20: + print(f"FAIL: ... {len(findings) - 20} additional finding(s) omitted", file=sys.stderr) + sys.exit(1) + + print("OK: tracked text passed Juno v1 secret scan") + print(f"files_scanned={len(git_ls_files())} rules={len(RULES)} findings=0") + + +if __name__ == "__main__": + main() diff --git a/scripts/fill_juno_v1_deployment_config.py b/scripts/fill_juno_v1_deployment_config.py index 5a80d2516..8b3918822 100644 --- a/scripts/fill_juno_v1_deployment_config.py +++ b/scripts/fill_juno_v1_deployment_config.py @@ -4,7 +4,9 @@ The template intentionally carries placeholders and zero code IDs. This script is for the handoff point after uni-7 uploads/instantiates: provide the real values with repeated --set dotted.path=value flags, and it rewires dependent instantiate -fields so the frontend/deployment config stays internally consistent. +fields so the frontend/deployment config stays internally consistent. Factory +instantiate messages intentionally keep generator_address=null; post_update_state +records the expected factory config after update_config points at incentives. """ from __future__ import annotations @@ -42,6 +44,7 @@ ) PLACEHOLDER_RE = re.compile(r"replace|REPLACE", re.IGNORECASE) +LEGACY_INCENTIVES_KEYS = {"astro_token", "vesting_contract"} def fail(msg: str) -> NoReturn: @@ -117,6 +120,7 @@ def rewire(cfg: dict[str, Any]) -> None: addresses = require(cfg, "addresses") network = require(cfg, "network") msgs = require(cfg, "instantiate_msgs") + post_update_state = require(cfg, "post_update_state") owner = accounts["owner"] guardian = accounts["guardian"] @@ -134,7 +138,7 @@ def rewire(cfg: dict[str, Any]) -> None: factory = msgs["astroport-factory"] factory["coin_registry_address"] = addresses["astroport-native-coin-registry"] factory["fee_address"] = treasury - factory["generator_address"] = addresses["astroport-incentives"] + factory["generator_address"] = None factory["owner"] = owner factory["token_code_id"] = code_ids["cw20-base"] factory["tracker_config"]["code_id"] = code_ids["astroport-tokenfactory-tracker"] @@ -147,11 +151,19 @@ def rewire(cfg: dict[str, Any]) -> None: msgs["astroport-router"]["astroport_factory"] = addresses["astroport-factory"] incentives = msgs["astroport-incentives"] + legacy = sorted(LEGACY_INCENTIVES_KEYS & incentives.keys()) + if legacy: + fail("instantiate_msgs.astroport-incentives uses legacy key(s): " + ", ".join(legacy)) incentives["reward_token"] = {"native_token": {"denom": native_denom}} incentives["factory"] = addresses["astroport-factory"] incentives["guardian"] = guardian incentives["owner"] = owner + factory_final = post_update_state["astroport-factory"] + factory_final["generator_address"] = addresses["astroport-incentives"] + factory_final["pair_configs"] = copy.deepcopy(factory["pair_configs"]) + factory_final["pair_configs"][0]["permissioned"] = False + oracle = msgs["astroport-oracle"] oracle["asset_infos"] = [{"native_token": {"denom": native_denom}}] oracle["factory_contract"] = addresses["astroport-factory"] From 1973da652c15c53e3b6d49d51942376998258bc2 Mon Sep 17 00:00:00 2001 From: Jake Hartnell Date: Wed, 1 Jul 2026 02:35:33 -0700 Subject: [PATCH 03/84] feat(frontend): scaffold Juno DEX app (#10) Co-authored-by: Hermes Agent --- frontend/.gitignore | 3 + frontend/README.md | 21 + frontend/index.html | 12 + frontend/package-lock.json | 3565 +++++++++++++++++ frontend/package.json | 33 + frontend/src/app/App.tsx | 29 + .../src/components/common/ExplorerLink.tsx | 5 + frontend/src/components/common/RiskNotice.tsx | 7 + frontend/src/components/layout/DexShell.tsx | 23 + .../components/liquidity/AddLiquidityForm.tsx | 17 + .../components/liquidity/LiquidityPage.tsx | 15 + .../liquidity/RemoveLiquidityForm.tsx | 16 + .../src/components/pools/PoolDetailPage.tsx | 41 + frontend/src/components/pools/PoolTable.tsx | 20 + frontend/src/components/pools/PoolsPage.tsx | 14 + frontend/src/components/swap/QuoteCard.tsx | 20 + frontend/src/components/swap/SwapForm.tsx | 35 + frontend/src/components/swap/SwapPage.tsx | 27 + frontend/src/components/swap/TokenSelect.tsx | 12 + frontend/src/components/tx/TxStatusDialog.tsx | 14 + .../components/wallet/ChainStatusBadge.tsx | 21 + .../components/wallet/WalletConnectButton.tsx | 26 + frontend/src/config/chains.ts | 39 + frontend/src/config/deployment.ts | 15 + frontend/src/config/registry.test.ts | 23 + frontend/src/config/registry.ts | 131 + frontend/src/data/registry.juno-1.json | 42 + frontend/src/lib/astroport/assetInfo.ts | 27 + frontend/src/lib/astroport/messages.ts | 33 + frontend/src/lib/astroport/queries.ts | 49 + frontend/src/lib/cosmjs/clients.ts | 12 + frontend/src/lib/format/addresses.ts | 4 + frontend/src/lib/format/amounts.ts | 13 + frontend/src/main.tsx | 26 + .../src/mutations/useProvideLiquidityTx.ts | 16 + frontend/src/mutations/useSwapTx.ts | 16 + .../src/mutations/useWithdrawLiquidityTx.ts | 17 + frontend/src/queries/useDexRegistry.ts | 6 + frontend/src/queries/usePools.ts | 14 + frontend/src/queries/useSwapQuote.ts | 14 + frontend/src/queries/useWalletBalances.ts | 15 + frontend/src/styles/theme.css | 70 + frontend/src/wallet/keplr.ts | 22 + frontend/src/wallet/types.ts | 24 + frontend/tsconfig.json | 22 + frontend/vite.config.ts | 10 + ...nd-from-scratch-architecture-2026-07-01.md | 332 ++ 47 files changed, 4968 insertions(+) create mode 100644 frontend/.gitignore create mode 100644 frontend/README.md create mode 100644 frontend/index.html create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100644 frontend/src/app/App.tsx create mode 100644 frontend/src/components/common/ExplorerLink.tsx create mode 100644 frontend/src/components/common/RiskNotice.tsx create mode 100644 frontend/src/components/layout/DexShell.tsx create mode 100644 frontend/src/components/liquidity/AddLiquidityForm.tsx create mode 100644 frontend/src/components/liquidity/LiquidityPage.tsx create mode 100644 frontend/src/components/liquidity/RemoveLiquidityForm.tsx create mode 100644 frontend/src/components/pools/PoolDetailPage.tsx create mode 100644 frontend/src/components/pools/PoolTable.tsx create mode 100644 frontend/src/components/pools/PoolsPage.tsx create mode 100644 frontend/src/components/swap/QuoteCard.tsx create mode 100644 frontend/src/components/swap/SwapForm.tsx create mode 100644 frontend/src/components/swap/SwapPage.tsx create mode 100644 frontend/src/components/swap/TokenSelect.tsx create mode 100644 frontend/src/components/tx/TxStatusDialog.tsx create mode 100644 frontend/src/components/wallet/ChainStatusBadge.tsx create mode 100644 frontend/src/components/wallet/WalletConnectButton.tsx create mode 100644 frontend/src/config/chains.ts create mode 100644 frontend/src/config/deployment.ts create mode 100644 frontend/src/config/registry.test.ts create mode 100644 frontend/src/config/registry.ts create mode 100644 frontend/src/data/registry.juno-1.json create mode 100644 frontend/src/lib/astroport/assetInfo.ts create mode 100644 frontend/src/lib/astroport/messages.ts create mode 100644 frontend/src/lib/astroport/queries.ts create mode 100644 frontend/src/lib/cosmjs/clients.ts create mode 100644 frontend/src/lib/format/addresses.ts create mode 100644 frontend/src/lib/format/amounts.ts create mode 100644 frontend/src/main.tsx create mode 100644 frontend/src/mutations/useProvideLiquidityTx.ts create mode 100644 frontend/src/mutations/useSwapTx.ts create mode 100644 frontend/src/mutations/useWithdrawLiquidityTx.ts create mode 100644 frontend/src/queries/useDexRegistry.ts create mode 100644 frontend/src/queries/usePools.ts create mode 100644 frontend/src/queries/useSwapQuote.ts create mode 100644 frontend/src/queries/useWalletBalances.ts create mode 100644 frontend/src/styles/theme.css create mode 100644 frontend/src/wallet/keplr.ts create mode 100644 frontend/src/wallet/types.ts create mode 100644 frontend/tsconfig.json create mode 100644 frontend/vite.config.ts create mode 100644 planning/38-dex-frontend-from-scratch-architecture-2026-07-01.md diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 000000000..ce41650c5 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,3 @@ +dist/ +tsconfig.tsbuildinfo +node_modules/ diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 000000000..02727320f --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,21 @@ +# Astroport Core Juno DEX Frontend + +From-scratch Vite/React/TypeScript frontend for the in-repo Astroport-Juno deployment lane. + +## Commands + +```sh +npm install +npm run typecheck +npm test +npm run build +npm run dev +``` + +## Scope + +V1 is intentionally narrow: a Juno-native read-only DEX surface with Keplr connection, one strict preview pool registry, pool reserve queries, direct pair quote queries, and transaction hooks for direct swap/provide/withdraw flows. The first TokenFactory counterparty is marked preview/test and thin-liquidity until launch assets and ownership posture are confirmed. + +## Registry rules + +`src/data/registry.juno-1.json` is the source for the app shell. `src/config/registry.ts` validates that it is `juno-1`, contains only enabled XYK pools, has real-looking Juno addresses, has explorer links, and does not contain placeholder strings. diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 000000000..5063b7d2b --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,12 @@ + + + + + + Astroport Core · Juno DEX + + +
+ + + diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 000000000..89aebe913 --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,3565 @@ +{ + "name": "astroport-juno-dex-frontend", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "astroport-juno-dex-frontend", + "version": "0.1.0", + "dependencies": { + "@cosmjs/cosmwasm-stargate": "^0.34.0", + "@cosmjs/proto-signing": "^0.34.0", + "@cosmjs/stargate": "^0.34.0", + "@tanstack/react-query": "^5.81.5", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "react-router-dom": "^7.6.3" + }, + "devDependencies": { + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.3.0", + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "@vitejs/plugin-react": "^4.6.0", + "jsdom": "^26.1.0", + "typescript": "^5.8.3", + "vite": "^7.0.0", + "vitest": "^3.2.4" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.5.0.tgz", + "integrity": "sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@asamuzakjp/css-color": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", + "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.3", + "@csstools/css-color-parser": "^3.0.9", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", + "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", + "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cosmjs/amino": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.34.1.tgz", + "integrity": "sha512-9kfGtJf/skhS5O/xKkCtSJgLHcFK1VoEEzCFJsMV4YLvlMIZznVmzwqlOwMtI/dYaVQpyzfHedLwxph2bfIIQA==", + "license": "Apache-2.0", + "dependencies": { + "@cosmjs/crypto": "^0.34.1", + "@cosmjs/encoding": "^0.34.1", + "@cosmjs/math": "^0.34.1", + "@cosmjs/utils": "^0.34.1" + } + }, + "node_modules/@cosmjs/cosmwasm-stargate": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.34.1.tgz", + "integrity": "sha512-PrDjIPomU9gcfhKnDPAcsGEHQ6ZKYrbQZfBAPs3gvsiier4Cb7j8ZP79gQKI8VoJF/PDOoIfPCieIHQi6LwVlA==", + "license": "Apache-2.0", + "dependencies": { + "@cosmjs/amino": "^0.34.1", + "@cosmjs/crypto": "^0.34.1", + "@cosmjs/encoding": "^0.34.1", + "@cosmjs/math": "^0.34.1", + "@cosmjs/proto-signing": "^0.34.1", + "@cosmjs/stargate": "^0.34.1", + "@cosmjs/tendermint-rpc": "^0.34.1", + "@cosmjs/utils": "^0.34.1", + "cosmjs-types": "^0.9.0", + "pako": "^2.0.2" + } + }, + "node_modules/@cosmjs/crypto": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.34.1.tgz", + "integrity": "sha512-fouXCXB4vNKLi9hyhdLL1elJ12reZH1UxJK4JPEkMOSaLAPClIHEu8NZ8cXYNlu2yTi86NX+I0TE4cEPsvSpWA==", + "license": "Apache-2.0", + "dependencies": { + "@cosmjs/encoding": "^0.34.1", + "@cosmjs/math": "^0.34.1", + "@cosmjs/utils": "^0.34.1", + "@noble/curves": "^1.9.2", + "@noble/hashes": "^1", + "bn.js": "^5.2.0", + "libsodium-wrappers-sumo": "^0.7.11" + } + }, + "node_modules/@cosmjs/encoding": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.34.1.tgz", + "integrity": "sha512-5+Ta7v05UxAqicKgk16c4rg0vsHPbzJOp5rfOxbiiJOfu3fVJkmmQgz5VuTrsvl5AZf9pulen7b8SK/rQYzKDg==", + "license": "Apache-2.0", + "dependencies": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + } + }, + "node_modules/@cosmjs/json-rpc": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.34.1.tgz", + "integrity": "sha512-hSq4eEQ2cc7YVvvJER0Fr+Y02ZzKNz02+wHTetVh0JcniEP71ZDQC00E+/je817V+vt7mN1dxoeeC5IY9kKtRw==", + "license": "Apache-2.0", + "dependencies": { + "@cosmjs/stream": "^0.34.1", + "xstream": "^11.14.0" + } + }, + "node_modules/@cosmjs/math": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.34.1.tgz", + "integrity": "sha512-QRFMcxCZ5JMQr6ANU7+5mrPdx3XTT0/6jGHY1wP4q4T3IfgHJItu5HqOi22VbSNb/IWpDWwTS46eqvbXyRMeqg==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.2.0" + } + }, + "node_modules/@cosmjs/proto-signing": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.34.1.tgz", + "integrity": "sha512-7oeU2QyVwAWoeGXtsrQ8e6eCjWR4essYDegFA4a/1eXFnIvAb8oPMxoVshZfUmDhhhtmyHQvuqxFm3zMO0R6aA==", + "license": "Apache-2.0", + "dependencies": { + "@cosmjs/amino": "^0.34.1", + "@cosmjs/crypto": "^0.34.1", + "@cosmjs/encoding": "^0.34.1", + "@cosmjs/math": "^0.34.1", + "@cosmjs/utils": "^0.34.1", + "cosmjs-types": "^0.9.0" + } + }, + "node_modules/@cosmjs/socket": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.34.1.tgz", + "integrity": "sha512-+MiuC+WDzaA8cU635JEK8tY/ImrRRcPzE+0ExoL4ZzqgzIcXf1hbgmqgKF85yyhGnk/nMTLsEteyoJIaWxsTtA==", + "license": "Apache-2.0", + "dependencies": { + "@cosmjs/stream": "^0.34.1", + "isomorphic-ws": "^4.0.1", + "ws": "^7", + "xstream": "^11.14.0" + } + }, + "node_modules/@cosmjs/stargate": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.34.1.tgz", + "integrity": "sha512-BOaSEmHnThtpKft7jFwFKOKptRoVNq01vmaDKoTISgmS5qi9JgVwiogjL679Aclmmy/xO+GoRfQvWsFrR7f1KA==", + "license": "Apache-2.0", + "dependencies": { + "@cosmjs/amino": "^0.34.1", + "@cosmjs/encoding": "^0.34.1", + "@cosmjs/math": "^0.34.1", + "@cosmjs/proto-signing": "^0.34.1", + "@cosmjs/stream": "^0.34.1", + "@cosmjs/tendermint-rpc": "^0.34.1", + "@cosmjs/utils": "^0.34.1", + "cosmjs-types": "^0.9.0" + } + }, + "node_modules/@cosmjs/stream": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.34.1.tgz", + "integrity": "sha512-EVbSFUnBMHkRX7Oy+JrGe3i8TjxnRs5BKJa8CZnn4ZHSWf6Krw+nWlaJ7FixFttd+PX8c+Agzw+Qhv3pm9HPVg==", + "license": "Apache-2.0", + "dependencies": { + "xstream": "^11.14.0" + } + }, + "node_modules/@cosmjs/tendermint-rpc": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.34.1.tgz", + "integrity": "sha512-cYiyln2wmYvY4/n4ehfAjoFf3SoO8P8mgioqdDb6QItTeQmwX4lDU+YOv3b2KzoA6ufH6SX1nJyPJ3X0YJhfwA==", + "license": "Apache-2.0", + "dependencies": { + "@cosmjs/crypto": "^0.34.1", + "@cosmjs/encoding": "^0.34.1", + "@cosmjs/json-rpc": "^0.34.1", + "@cosmjs/math": "^0.34.1", + "@cosmjs/socket": "^0.34.1", + "@cosmjs/stream": "^0.34.1", + "@cosmjs/utils": "^0.34.1", + "cross-fetch": "^4.1.0", + "readonly-date": "^1.0.0", + "xstream": "^11.14.0" + } + }, + "node_modules/@cosmjs/utils": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.34.1.tgz", + "integrity": "sha512-OjevgFwbVN7t8afmFF8A3rj80jQnOXqwdGEzfv7jbYxTvhUGPa8SvpeaulhWQYQ49K3zlIuB9a2PJWdf1H9Udw==", + "license": "Apache-2.0" + }, + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz", + "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz", + "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz", + "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz", + "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz", + "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz", + "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz", + "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz", + "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz", + "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz", + "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz", + "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz", + "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz", + "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz", + "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz", + "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz", + "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz", + "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz", + "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz", + "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz", + "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz", + "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz", + "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz", + "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz", + "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz", + "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tanstack/query-core": { + "version": "5.101.2", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.101.2.tgz", + "integrity": "sha512-hH5MLoJhF7KaIGd7q3xTXGXvslI+GYlM1Z/35aSHHWaCJWB7XvTSHYuV3eM7tw+aE0mT/xMro4M4Q9rCGHT0lw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.101.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.101.2.tgz", + "integrity": "sha512-seDkr6kzGzX1okaaTtZPtgA688CDPlXUz1C6xSg0ESqn04Vuc8tlrYms1s3de+znBqhPVxFRfpAfUf+6XvfPWg==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.101.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/react": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", + "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", + "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/@vitest/expect": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.6.tgz", + "integrity": "sha512-1+7q9BtaKzEmO+fmNT3kYvoNn5Y71XWAx2Q5HRim4tTVRQVRv4uJFAQ5FbK0OPUeNP/WmVCpxYxoJdvuHVjzBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.6", + "@vitest/utils": "3.2.6", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.6.tgz", + "integrity": "sha512-EZOrpDbkKotFAP7wPAQV1UIyoGOk4oX7ynWhBhLB7v+meMHbQhU16oPpIYGTTe4oFlhpryGpgpcZP/sin3hYuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.6", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.6.tgz", + "integrity": "sha512-lb7XXXzmm2h2ASzFnRvQpDo6onT1NmMJA3tkGTWiBFtRJ9lxGY3d3mm/Apt36gej2bkkOVLL/yTOtufDaFa/jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.6.tgz", + "integrity": "sha512-HYcoSj1w5tcgUnzoF0HcyaAQjpA1gj9ftUJ7iSJSuipc02jW9gKkigwZbjFldAfYHA1fa8UZVRftdMY5msWM9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.6", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.6.tgz", + "integrity": "sha512-H+ZjNTWGpObenh0YnlBctAPnJSI20P81PL8BPzWpx54YXLLTm8hEsWawtcYLMrwvpK48hGxLLbCS+1KRXhsKhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.6", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.6.tgz", + "integrity": "sha512-oq6BbH68WzcWmwtBrU9nqLeaXTR4XwJF7FSLkKEZo4i6eoXcrxjcwSuTvWBIRUTC6VC72nXYunzqgZA+IKdtxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.6.tgz", + "integrity": "sha512-lI23nIs4bnT3T8NIoh+vFaz5s2/DdP0Jgt2jxwgWljvwn82cLJtyi/If+fjFyoLMGIOz0U/fKvWE0d4jsNQEfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.6", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.40", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.40.tgz", + "integrity": "sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.4.tgz", + "integrity": "sha512-QL7sb18rJ1PbdsKsqPA0guxL563vIMwRHgzNrW/uzQuRGN1Cjqd/wonUBAVqHox9KwzHA6vCbM0lXx3k4iQMow==", + "license": "MIT" + }, + "node_modules/browserslist": { + "version": "4.28.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.4.tgz", + "integrity": "sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.38", + "caniuse-lite": "^1.0.30001799", + "electron-to-chromium": "^1.5.376", + "node-releases": "^2.0.48", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001800", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001800.tgz", + "integrity": "sha512-MMHtuAz9Ys840zAY5F4k6fV5GaivZ9sPk+nz0mY+GYVzRBnYkN0mpqkSR92oWRQ19yQWo4HvBV/FnC16AJX8MA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chai": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/check-error": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==", + "license": "Apache-2.0" + }, + "node_modules/cross-fetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", + "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^3.2.0", + "rrweb-cssom": "^0.8.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/electron-to-chromium": { + "version": "1.5.383", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.383.tgz", + "integrity": "sha512-I2484/KkAvl8lm9VyjH2JnbOIV0d/UCqT7gbzs6l+o6Vmn9wgB66uVcKX+Vk6HrXtY6fbWTOEXuv8waDTuFNCw==", + "dev": true, + "license": "ISC" + }, + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/expect-type": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", + "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsdom": { + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", + "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.5.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.1.1", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.1", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/ws": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", + "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/libsodium-sumo": { + "version": "0.7.16", + "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.16.tgz", + "integrity": "sha512-x6atrz2AdXCJg6G709x9W9TTJRI6/0NcL5dD0l5GGVqNE48UJmDsjO4RUWYTeyXXUpg+NXZ2SHECaZnFRYzwGA==", + "license": "ISC" + }, + "node_modules/libsodium-wrappers-sumo": { + "version": "0.7.16", + "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.16.tgz", + "integrity": "sha512-gR0JEFPeN3831lB9+ogooQk0KH4K5LSMIO5Prd5Q5XYR2wHFtZfPg0eP7t1oJIWq+UIzlU4WVeBxZ97mt28tXw==", + "license": "ISC", + "dependencies": { + "libsodium-sumo": "^0.7.16" + } + }, + "node_modules/loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.15", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", + "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.50", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.50.tgz", + "integrity": "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/nwsapi": { + "version": "2.2.24", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.24.tgz", + "integrity": "sha512-7YRhZ3jS45LwmSCT4b2sVFHt/WuovaktDU07QrtOBY2PXskss5a9jfmR9jptyumwXST+rFjrmppMY1KT/yn35A==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/pako": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.2.0.tgz", + "integrity": "sha512-zJq6RP/5q+TO2OpFV3FHzlPnFjmkb7Nc99a5SNjJE+uu/PkpChs+NIZSSzbBoD+6kjiISXjfYdwj1ZRQ81dz/w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "(MIT AND Zlib)" + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz", + "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.12", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz", + "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", + "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.7" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.18.1.tgz", + "integrity": "sha512-GDLgg3i3uM0aeJO3Fm+TCS+sDQ7gu12T6x0qdTEzcwqEfleci7JwugVNIF3U//0FWKnJT7ptG+20B2jfDqnZAg==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.18.1.tgz", + "integrity": "sha512-KaZh+X/6UtEp28x51AUYZDMg9NGoz2ja3dNHa+ta/tk40vCzKhQ/RypCWBMLbmDr6//E24Vv5uPsrqXFozdkAg==", + "license": "MIT", + "dependencies": { + "react-router": "7.18.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/readonly-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/readonly-date/-/readonly-date-1.0.0.tgz", + "integrity": "sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==", + "license": "Apache-2.0" + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.2.tgz", + "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.62.2", + "@rollup/rollup-android-arm64": "4.62.2", + "@rollup/rollup-darwin-arm64": "4.62.2", + "@rollup/rollup-darwin-x64": "4.62.2", + "@rollup/rollup-freebsd-arm64": "4.62.2", + "@rollup/rollup-freebsd-x64": "4.62.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.2", + "@rollup/rollup-linux-arm-musleabihf": "4.62.2", + "@rollup/rollup-linux-arm64-gnu": "4.62.2", + "@rollup/rollup-linux-arm64-musl": "4.62.2", + "@rollup/rollup-linux-loong64-gnu": "4.62.2", + "@rollup/rollup-linux-loong64-musl": "4.62.2", + "@rollup/rollup-linux-ppc64-gnu": "4.62.2", + "@rollup/rollup-linux-ppc64-musl": "4.62.2", + "@rollup/rollup-linux-riscv64-gnu": "4.62.2", + "@rollup/rollup-linux-riscv64-musl": "4.62.2", + "@rollup/rollup-linux-s390x-gnu": "4.62.2", + "@rollup/rollup-linux-x64-gnu": "4.62.2", + "@rollup/rollup-linux-x64-musl": "4.62.2", + "@rollup/rollup-openbsd-x64": "4.62.2", + "@rollup/rollup-openharmony-arm64": "4.62.2", + "@rollup/rollup-win32-arm64-msvc": "4.62.2", + "@rollup/rollup-win32-ia32-msvc": "4.62.2", + "@rollup/rollup-win32-x64-gnu": "4.62.2", + "@rollup/rollup-win32-x64-msvc": "4.62.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-literal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/symbol-observable": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", + "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", + "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tldts": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", + "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.86" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tough-cookie": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tr46": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz", + "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0 || ^0.28.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.6.tgz", + "integrity": "sha512-xejya+bT/j/+R/AGa1XOfRxLmNUlLtlwjRsFUILF+xHfzElmGcmFydy2gqqIrd62ptIEfwVMofd19uNWD9L7Nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.6", + "@vitest/mocker": "3.2.6", + "@vitest/pretty-format": "^3.2.6", + "@vitest/runner": "3.2.6", + "@vitest/snapshot": "3.2.6", + "@vitest/spy": "3.2.6", + "@vitest/utils": "3.2.6", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.6", + "@vitest/ui": "3.2.6", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ws": { + "version": "7.5.11", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.11.tgz", + "integrity": "sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==", + "license": "MIT", + "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 + } + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/xstream": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/xstream/-/xstream-11.14.0.tgz", + "integrity": "sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==", + "license": "MIT", + "dependencies": { + "globalthis": "^1.0.1", + "symbol-observable": "^2.0.3" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 000000000..8b3e443a2 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,33 @@ +{ + "name": "astroport-juno-dex-frontend", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite --host 0.0.0.0", + "build": "tsc -b && vite build", + "typecheck": "tsc -b --pretty false", + "test": "vitest run", + "lint": "npm run typecheck" + }, + "dependencies": { + "@cosmjs/cosmwasm-stargate": "^0.34.0", + "@cosmjs/proto-signing": "^0.34.0", + "@cosmjs/stargate": "^0.34.0", + "@tanstack/react-query": "^5.81.5", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "react-router-dom": "^7.6.3" + }, + "devDependencies": { + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.3.0", + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "@vitejs/plugin-react": "^4.6.0", + "jsdom": "^26.1.0", + "typescript": "^5.8.3", + "vite": "^7.0.0", + "vitest": "^3.2.4" + } +} diff --git a/frontend/src/app/App.tsx b/frontend/src/app/App.tsx new file mode 100644 index 000000000..7b9eac1b5 --- /dev/null +++ b/frontend/src/app/App.tsx @@ -0,0 +1,29 @@ +import { Navigate, NavLink, Route, Routes } from "react-router-dom"; +import { DexShell } from "../components/layout/DexShell"; +import { LiquidityPage } from "../components/liquidity/LiquidityPage"; +import { PoolDetailPage } from "../components/pools/PoolDetailPage"; +import { PoolsPage } from "../components/pools/PoolsPage"; +import { SwapPage } from "../components/swap/SwapPage"; + +export function App() { + return ( + + Swap + Pools + Liquidity + + } + > + + } /> + } /> + } /> + } /> + } /> + } /> + + + ); +} diff --git a/frontend/src/components/common/ExplorerLink.tsx b/frontend/src/components/common/ExplorerLink.tsx new file mode 100644 index 000000000..94b1b6454 --- /dev/null +++ b/frontend/src/components/common/ExplorerLink.tsx @@ -0,0 +1,5 @@ +import type { ReactNode } from "react"; + +export function ExplorerLink({ href, children }: { href: string; children: ReactNode }) { + return {children}; +} diff --git a/frontend/src/components/common/RiskNotice.tsx b/frontend/src/components/common/RiskNotice.tsx new file mode 100644 index 000000000..d4dee2629 --- /dev/null +++ b/frontend/src/components/common/RiskNotice.tsx @@ -0,0 +1,7 @@ +export function RiskNotice() { + return ( + + ); +} diff --git a/frontend/src/components/layout/DexShell.tsx b/frontend/src/components/layout/DexShell.tsx new file mode 100644 index 000000000..d4e69f9a0 --- /dev/null +++ b/frontend/src/components/layout/DexShell.tsx @@ -0,0 +1,23 @@ +import type { ReactNode } from "react"; +import { dexRegistry } from "../../config/registry"; +import { ChainStatusBadge } from "../wallet/ChainStatusBadge"; +import { WalletConnectButton } from "../wallet/WalletConnectButton"; + +export function DexShell({ children, navigation }: { children: ReactNode; navigation: ReactNode }) { + return ( +
+
+
+

Astroport Core · Juno mainnet

+

Juno DEX

+
+
+ + +
+
+ +
{children}
+
+ ); +} diff --git a/frontend/src/components/liquidity/AddLiquidityForm.tsx b/frontend/src/components/liquidity/AddLiquidityForm.tsx new file mode 100644 index 000000000..1ffe1195b --- /dev/null +++ b/frontend/src/components/liquidity/AddLiquidityForm.tsx @@ -0,0 +1,17 @@ +import type { RegistryPool } from "../../config/registry"; + +export function AddLiquidityForm({ pool }: { pool: RegistryPool }) { + return ( +
+

Add liquidity

+

Broadcast hook is scaffolded for direct `provide_liquidity`; enable after smoke wallet testing.

+ {pool.assets.map((asset) => ( + + ))} + +
+ ); +} diff --git a/frontend/src/components/liquidity/LiquidityPage.tsx b/frontend/src/components/liquidity/LiquidityPage.tsx new file mode 100644 index 000000000..4178885d7 --- /dev/null +++ b/frontend/src/components/liquidity/LiquidityPage.tsx @@ -0,0 +1,15 @@ +import { Link } from "react-router-dom"; +import { enabledPools } from "../../config/registry"; + +export function LiquidityPage() { + return ( +
+

Liquidity

+

Wallet LP overview

+

V1 does not assume an indexer. Pick a verified pool to inspect reserves and use the add/remove liquidity skeleton.

+
+ {enabledPools.map((pool) => {pool.label}{pool.lpToken})} +
+
+ ); +} diff --git a/frontend/src/components/liquidity/RemoveLiquidityForm.tsx b/frontend/src/components/liquidity/RemoveLiquidityForm.tsx new file mode 100644 index 000000000..b04c93781 --- /dev/null +++ b/frontend/src/components/liquidity/RemoveLiquidityForm.tsx @@ -0,0 +1,16 @@ +import type { RegistryPool } from "../../config/registry"; + +export function RemoveLiquidityForm({ pool }: { pool: RegistryPool }) { + return ( +
+

Remove liquidity

+

Uses TokenFactory LP denom funds when wallet execution is enabled.

+ + {pool.lpToken} + +
+ ); +} diff --git a/frontend/src/components/pools/PoolDetailPage.tsx b/frontend/src/components/pools/PoolDetailPage.tsx new file mode 100644 index 000000000..634d1cbb8 --- /dev/null +++ b/frontend/src/components/pools/PoolDetailPage.tsx @@ -0,0 +1,41 @@ +import { Link, useParams } from "react-router-dom"; +import { enabledPools } from "../../config/registry"; +import { formatAmount } from "../../lib/format/amounts"; +import { usePoolReserves } from "../../queries/usePools"; +import { ExplorerLink } from "../common/ExplorerLink"; +import { AddLiquidityForm } from "../liquidity/AddLiquidityForm"; +import { RemoveLiquidityForm } from "../liquidity/RemoveLiquidityForm"; + +export function PoolDetailPage() { + const { pairAddress } = useParams(); + const pool = enabledPools.find((candidate) => candidate.pair === pairAddress); + const reserves = usePoolReserves(pool); + + if (!pool) { + return

Pool not found

Back to pools
; + } + + return ( +
+

Pool detail

+

{pool.label}

+
Pair{pool.pair}Mintscan
+
LP denom{pool.lpToken}
+ {reserves.isError ?

Live reserve query failed: {reserves.error instanceof Error ? reserves.error.message : String(reserves.error)}

: null} +
+ {pool.assets.map((asset, index) => ( +
+ {asset.symbol} reserve + {reserves.data ? formatAmount(reserves.data.assets[index]?.amount, asset.decimals) : "—"} + {asset.id} +
+ ))} +
Total share{reserves.data ? formatAmount(reserves.data.total_share, 6) : "—"}{pool.lpToken}
+
+
+ + +
+
+ ); +} diff --git a/frontend/src/components/pools/PoolTable.tsx b/frontend/src/components/pools/PoolTable.tsx new file mode 100644 index 000000000..377eba4bc --- /dev/null +++ b/frontend/src/components/pools/PoolTable.tsx @@ -0,0 +1,20 @@ +import { Link } from "react-router-dom"; +import type { RegistryPool } from "../../config/registry"; +import { truncateAddress } from "../../lib/format/addresses"; + +export function PoolTable({ pools }: { pools: RegistryPool[] }) { + return ( +
+ {pools.map((pool) => ( + +
+ {pool.label} +

{pool.notes}

+
+ {pool.type.toUpperCase()} + {truncateAddress(pool.pair)} + + ))} +
+ ); +} diff --git a/frontend/src/components/pools/PoolsPage.tsx b/frontend/src/components/pools/PoolsPage.tsx new file mode 100644 index 000000000..7ceff82ee --- /dev/null +++ b/frontend/src/components/pools/PoolsPage.tsx @@ -0,0 +1,14 @@ +import { useDexRegistry } from "../../queries/useDexRegistry"; +import { PoolTable } from "./PoolTable"; + +export function PoolsPage() { + const { pools } = useDexRegistry(); + return ( +
+

Registry pools

+

Verified Astroport-Juno pools

+

Only enabled XYK pools from the strict local registry are rendered. Placeholder pools fail tests and app startup.

+ +
+ ); +} diff --git a/frontend/src/components/swap/QuoteCard.tsx b/frontend/src/components/swap/QuoteCard.tsx new file mode 100644 index 000000000..f2faeabb5 --- /dev/null +++ b/frontend/src/components/swap/QuoteCard.tsx @@ -0,0 +1,20 @@ +import type { SimulationResponse } from "../../lib/astroport/queries"; +import type { RegistryAsset } from "../../config/registry"; +import { formatAmount } from "../../lib/format/amounts"; + +export function QuoteCard({ quote, askAsset, isLoading, error }: { quote?: SimulationResponse; askAsset?: RegistryAsset; isLoading: boolean; error?: unknown }) { + return ( +
+ Read-only pair simulation + {isLoading ? Querying pair… : null} + {error ?

Quote unavailable: {error instanceof Error ? error.message : String(error)}

: null} + {quote && askAsset ? ( +
+
Return
{formatAmount(quote.return_amount, askAsset.decimals)} {askAsset.symbol}
+
Spread
{formatAmount(quote.spread_amount, askAsset.decimals)} {askAsset.symbol}
+
Commission
{formatAmount(quote.commission_amount, askAsset.decimals)} {askAsset.symbol}
+
+ ) :

Enter an amount to quote the direct XYK pair.

} +
+ ); +} diff --git a/frontend/src/components/swap/SwapForm.tsx b/frontend/src/components/swap/SwapForm.tsx new file mode 100644 index 000000000..95cff1650 --- /dev/null +++ b/frontend/src/components/swap/SwapForm.tsx @@ -0,0 +1,35 @@ +import { useMemo, useState } from "react"; +import type { RegistryPool } from "../../config/registry"; +import { toBaseAmount } from "../../lib/format/amounts"; +import { useSwapQuote } from "../../queries/useSwapQuote"; +import { QuoteCard } from "./QuoteCard"; +import { TokenSelect } from "./TokenSelect"; + +export function SwapForm({ pool }: { pool: RegistryPool }) { + const [offerId, setOfferId] = useState(pool.assets[0].id); + const [amount, setAmount] = useState("1"); + const offerAsset = pool.assets.find((asset) => asset.id === offerId) ?? pool.assets[0]; + const askAsset = useMemo(() => pool.assets.find((asset) => asset.id !== offerAsset.id) ?? pool.assets[1], [offerAsset.id, pool.assets]); + const baseAmount = toBaseAmount(amount, offerAsset.decimals); + const quote = useSwapQuote(pool, offerAsset, askAsset, baseAmount); + + return ( +
+
+ + +
+
+
+ Ask asset + {askAsset.symbol} + {askAsset.id} +
+ + +
+ ); +} diff --git a/frontend/src/components/swap/SwapPage.tsx b/frontend/src/components/swap/SwapPage.tsx new file mode 100644 index 000000000..bac5dd4c6 --- /dev/null +++ b/frontend/src/components/swap/SwapPage.tsx @@ -0,0 +1,27 @@ +import { useDexRegistry } from "../../queries/useDexRegistry"; +import { ExplorerLink } from "../common/ExplorerLink"; +import { RiskNotice } from "../common/RiskNotice"; +import { SwapForm } from "./SwapForm"; + +export function SwapPage() { + const { pools, registry } = useDexRegistry(); + const pool = pools[0]; + + return ( +
+
+

Juno utility terminal

+

Swap verified Astroport-Juno XYK pools.

+

Strict registry, live pair simulation, visible denoms, visible contracts. No charts, no yield cosplay, no hidden launch assumptions.

+
+ Factory{registry.factory} + Mintscan +
+
+
+ + {pool ? :

No enabled pools in registry.

} +
+
+ ); +} diff --git a/frontend/src/components/swap/TokenSelect.tsx b/frontend/src/components/swap/TokenSelect.tsx new file mode 100644 index 000000000..e2f81126c --- /dev/null +++ b/frontend/src/components/swap/TokenSelect.tsx @@ -0,0 +1,12 @@ +import type { RegistryAsset } from "../../config/registry"; + +export function TokenSelect({ assets, value, onChange, label }: { assets: RegistryAsset[]; value: string; onChange: (value: string) => void; label: string }) { + return ( + + ); +} diff --git a/frontend/src/components/tx/TxStatusDialog.tsx b/frontend/src/components/tx/TxStatusDialog.tsx new file mode 100644 index 000000000..1222a4e7a --- /dev/null +++ b/frontend/src/components/tx/TxStatusDialog.tsx @@ -0,0 +1,14 @@ +import type { DeliverTxResponse } from "@cosmjs/stargate"; +import { dexRegistry } from "../../config/registry"; + +export function TxStatusDialog({ status, result, error }: { status: string; result?: DeliverTxResponse; error?: unknown }) { + if (status === "idle") return null; + return ( +
+ Transaction +

{status}

+ {result ? View on Mintscan : null} + {error ?

{error instanceof Error ? error.message : String(error)}

: null} +
+ ); +} diff --git a/frontend/src/components/wallet/ChainStatusBadge.tsx b/frontend/src/components/wallet/ChainStatusBadge.tsx new file mode 100644 index 000000000..7765c49e0 --- /dev/null +++ b/frontend/src/components/wallet/ChainStatusBadge.tsx @@ -0,0 +1,21 @@ +import { useQuery } from "@tanstack/react-query"; + +export function ChainStatusBadge({ rpcEndpoint }: { rpcEndpoint: string }) { + const status = useQuery({ + queryKey: ["rpc-status", rpcEndpoint], + queryFn: async () => { + const response = await fetch(`${rpcEndpoint}/status`); + if (!response.ok) throw new Error(`RPC status ${response.status}`); + const json = await response.json() as { result?: { sync_info?: { latest_block_height?: string } } }; + return json.result?.sync_info?.latest_block_height ?? "unknown"; + }, + retry: 1, + staleTime: 30_000, + }); + + return ( + + {status.isLoading ? "Juno RPC…" : status.isError ? "RPC degraded" : `Block ${status.data}`} + + ); +} diff --git a/frontend/src/components/wallet/WalletConnectButton.tsx b/frontend/src/components/wallet/WalletConnectButton.tsx new file mode 100644 index 000000000..540abdb7b --- /dev/null +++ b/frontend/src/components/wallet/WalletConnectButton.tsx @@ -0,0 +1,26 @@ +import { useState } from "react"; +import { connectKeplr } from "../../wallet/keplr"; +import type { WalletState } from "../../wallet/types"; +import { truncateAddress } from "../../lib/format/addresses"; + +export function WalletConnectButton() { + const [wallet, setWallet] = useState({ status: "idle" }); + + async function onConnect() { + setWallet({ status: "connecting" }); + setWallet(await connectKeplr()); + } + + if (wallet.status === "connected" && wallet.address) { + return ; + } + + return ( +
+ + {wallet.status === "error" ? {wallet.error} : null} +
+ ); +} diff --git a/frontend/src/config/chains.ts b/frontend/src/config/chains.ts new file mode 100644 index 000000000..f275b5946 --- /dev/null +++ b/frontend/src/config/chains.ts @@ -0,0 +1,39 @@ +export const JUNO_CHAIN_INFO = { + chainId: "juno-1", + chainName: "Juno", + rpc: "https://rpc-juno.itastakers.com", + rest: "https://lcd-juno.itastakers.com", + bip44: { coinType: 118 }, + bech32Config: { + bech32PrefixAccAddr: "juno", + bech32PrefixAccPub: "junopub", + bech32PrefixValAddr: "junovaloper", + bech32PrefixValPub: "junovaloperpub", + bech32PrefixConsAddr: "junovalcons", + bech32PrefixConsPub: "junovalconspub", + }, + currencies: [ + { + coinDenom: "JUNO", + coinMinimalDenom: "ujuno", + coinDecimals: 6, + coinGeckoId: "juno-network", + }, + ], + feeCurrencies: [ + { + coinDenom: "JUNO", + coinMinimalDenom: "ujuno", + coinDecimals: 6, + coinGeckoId: "juno-network", + gasPriceStep: { low: 0.075, average: 0.075, high: 0.1 }, + }, + ], + stakeCurrency: { + coinDenom: "JUNO", + coinMinimalDenom: "ujuno", + coinDecimals: 6, + coinGeckoId: "juno-network", + }, + features: ["cosmwasm", "ibc-transfer"], +} as const; diff --git a/frontend/src/config/deployment.ts b/frontend/src/config/deployment.ts new file mode 100644 index 000000000..1855f48e4 --- /dev/null +++ b/frontend/src/config/deployment.ts @@ -0,0 +1,15 @@ +import { dexRegistry } from "./registry"; + +export const junoDeployment = { + chainId: dexRegistry.chainId, + rpcEndpoint: dexRegistry.rpcEndpoint, + restEndpoint: dexRegistry.restEndpoint, + explorerBaseUrl: dexRegistry.explorerBaseUrl, + contracts: { + factory: dexRegistry.factory, + nativeCoinRegistry: dexRegistry.nativeCoinRegistry, + router: dexRegistry.router, + incentives: dexRegistry.incentives, + oracle: dexRegistry.oracle, + }, +} as const; diff --git a/frontend/src/config/registry.test.ts b/frontend/src/config/registry.test.ts new file mode 100644 index 000000000..7ee87eed8 --- /dev/null +++ b/frontend/src/config/registry.test.ts @@ -0,0 +1,23 @@ +import { describe, expect, it } from "vitest"; +import { dexRegistry, parseDexRegistry } from "./registry"; + +describe("dex registry", () => { + it("loads the committed juno-1 registry", () => { + expect(dexRegistry.chainId).toBe("juno-1"); + expect(dexRegistry.pools).toHaveLength(1); + expect(dexRegistry.pools[0].type).toBe("xyk"); + }); + + it("rejects placeholder contract addresses", () => { + const invalid = { + ...dexRegistry, + factory: "juno1replacefactory000000000000000000000000000000", + }; + + expect(() => parseDexRegistry(invalid)).toThrow(/placeholder/i); + }); + + it("rejects non-juno chain registries", () => { + expect(() => parseDexRegistry({ ...dexRegistry, chainId: "uni-7" })).toThrow(/juno-1/); + }); +}); diff --git a/frontend/src/config/registry.ts b/frontend/src/config/registry.ts new file mode 100644 index 000000000..950e9e87a --- /dev/null +++ b/frontend/src/config/registry.ts @@ -0,0 +1,131 @@ +import registryJson from "../data/registry.juno-1.json"; + +export type RegistryAsset = { + kind: "native" | "ibc" | "cw20"; + id: string; + symbol: string; + decimals: number; + denomTrace?: string; + logoURI?: string; +}; + +export type RegistryPool = { + id: string; + label: string; + pair: string; + lpToken: string; + type: "xyk"; + feeBps: number; + assets: [RegistryAsset, RegistryAsset]; + explorer: string; + enabled: boolean; + featured?: boolean; + notes?: string; +}; + +export type DexRegistry = { + chainId: "juno-1"; + chainName: string; + rpcEndpoint: string; + restEndpoint: string; + explorerBaseUrl: string; + factory: string; + nativeCoinRegistry: string; + router?: string; + incentives?: string; + oracle?: string; + updatedAt: string; + pools: RegistryPool[]; +}; + +const PLACEHOLDER_PATTERN = /replace|placeholder|todo|example|changeme|xxx|000000000000/i; +const JUNO_ADDRESS_PATTERN = /^juno1[ac-hj-np-z02-9]{38,58}$/; + +function assertRecord(value: unknown, label: string): asserts value is Record { + if (!value || typeof value !== "object" || Array.isArray(value)) { + throw new Error(`${label} must be an object`); + } +} + +function assertString(value: unknown, label: string): asserts value is string { + if (typeof value !== "string" || value.trim() === "") { + throw new Error(`${label} must be a non-empty string`); + } + if (PLACEHOLDER_PATTERN.test(value)) { + throw new Error(`${label} contains a placeholder value`); + } +} + +function assertJunoAddress(value: unknown, label: string): asserts value is string { + assertString(value, label); + if (!JUNO_ADDRESS_PATTERN.test(value)) { + throw new Error(`${label} must be a juno bech32 address`); + } +} + +function parseAsset(value: unknown, label: string): RegistryAsset { + assertRecord(value, label); + if (value.kind !== "native" && value.kind !== "ibc" && value.kind !== "cw20") { + throw new Error(`${label}.kind must be native, ibc, or cw20`); + } + assertString(value.id, `${label}.id`); + assertString(value.symbol, `${label}.symbol`); + if (typeof value.decimals !== "number" || !Number.isInteger(value.decimals) || value.decimals < 0) { + throw new Error(`${label}.decimals must be a non-negative integer`); + } + if (value.kind === "cw20") { + assertJunoAddress(value.id, `${label}.id`); + } + if (typeof value.logoURI !== "undefined") assertString(value.logoURI, `${label}.logoURI`); + if (typeof value.denomTrace !== "undefined") assertString(value.denomTrace, `${label}.denomTrace`); + return value as RegistryAsset; +} + +function parsePool(value: unknown, index: number): RegistryPool { + const label = `pools[${index}]`; + assertRecord(value, label); + assertString(value.id, `${label}.id`); + assertString(value.label, `${label}.label`); + assertJunoAddress(value.pair, `${label}.pair`); + assertString(value.lpToken, `${label}.lpToken`); + if (value.type !== "xyk") throw new Error(`${label}.type must be xyk for v1`); + if (typeof value.feeBps !== "number" || value.feeBps < 0 || value.feeBps > 10_000) { + throw new Error(`${label}.feeBps must be between 0 and 10000`); + } + if (!Array.isArray(value.assets) || value.assets.length !== 2) { + throw new Error(`${label}.assets must contain exactly two assets`); + } + assertString(value.explorer, `${label}.explorer`); + if (!value.explorer.startsWith("https://")) throw new Error(`${label}.explorer must be https`); + if (typeof value.enabled !== "boolean") throw new Error(`${label}.enabled must be boolean`); + return { + ...value, + assets: [parseAsset(value.assets[0], `${label}.assets[0]`), parseAsset(value.assets[1], `${label}.assets[1]`)], + } as RegistryPool; +} + +export function parseDexRegistry(value: unknown): DexRegistry { + assertRecord(value, "registry"); + if (value.chainId !== "juno-1") throw new Error("registry.chainId must be juno-1"); + assertString(value.chainName, "registry.chainName"); + assertString(value.rpcEndpoint, "registry.rpcEndpoint"); + assertString(value.restEndpoint, "registry.restEndpoint"); + assertString(value.explorerBaseUrl, "registry.explorerBaseUrl"); + assertJunoAddress(value.factory, "registry.factory"); + assertJunoAddress(value.nativeCoinRegistry, "registry.nativeCoinRegistry"); + if (value.router) assertJunoAddress(value.router, "registry.router"); + if (value.incentives) assertJunoAddress(value.incentives, "registry.incentives"); + if (value.oracle) assertJunoAddress(value.oracle, "registry.oracle"); + assertString(value.updatedAt, "registry.updatedAt"); + if (!Array.isArray(value.pools)) throw new Error("registry.pools must be an array"); + const pools = value.pools.map(parsePool); + const ids = new Set(); + for (const pool of pools) { + if (ids.has(pool.id)) throw new Error(`duplicate pool id: ${pool.id}`); + ids.add(pool.id); + } + return { ...value, pools } as DexRegistry; +} + +export const dexRegistry = parseDexRegistry(registryJson); +export const enabledPools = dexRegistry.pools.filter((pool) => pool.enabled); diff --git a/frontend/src/data/registry.juno-1.json b/frontend/src/data/registry.juno-1.json new file mode 100644 index 000000000..f6356e4d8 --- /dev/null +++ b/frontend/src/data/registry.juno-1.json @@ -0,0 +1,42 @@ +{ + "chainId": "juno-1", + "chainName": "Juno", + "rpcEndpoint": "https://juno-rpc.kleomedes.network", + "restEndpoint": "https://juno-api.polkachu.com", + "explorerBaseUrl": "https://www.mintscan.io/juno", + "factory": "juno1n5ettlqdt06nd346mnqy65fahcvmncaazpwn8s3m0df3ldv0d2yqjqelca", + "nativeCoinRegistry": "juno1qwer7jleluth33trk2ywqvp6vwjh4j4zar3ag6dw5d8derkpel0sq8vfh2", + "router": "juno1fppwfa2efpsahvwlqprrshjth2mfqyd8n80yd7z5kpjspq30s8ksrapa8s", + "incentives": "juno1h0auy2knfyhkcn877cqun0fu00safgsjwvt82d4cvd0slv8q7wtsk59598", + "oracle": "juno1szsxu32r7rnu5wq7yqlxq4x46g0fq7qpzyggcvgsh2cq554mcuqql6jw4p", + "updatedAt": "2026-07-01T00:00:00Z", + "pools": [ + { + "id": "juno-agent-preview-xyk-1", + "label": "JUNO / Juno Agent Test", + "pair": "juno1s0klsaye2vuueet7utec6vmyua3pq6wv8ddr2phcrgg8v9gw9r5sqvfefv", + "lpToken": "factory/juno1s0klsaye2vuueet7utec6vmyua3pq6wv8ddr2phcrgg8v9gw9r5sqvfefv/astroport/share", + "type": "xyk", + "feeBps": 30, + "assets": [ + { + "kind": "native", + "id": "ujuno", + "symbol": "JUNO", + "decimals": 6, + "logoURI": "https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/juno.svg" + }, + { + "kind": "native", + "id": "factory/juno1xsx746x4375g39f9fj07hr7qm0wuf0ksl0an76/junoagenttest202607010323", + "symbol": "JUNOAGENT-TEST", + "decimals": 6 + } + ], + "explorer": "https://www.mintscan.io/juno/wasm/contract/juno1s0klsaye2vuueet7utec6vmyua3pq6wv8ddr2phcrgg8v9gw9r5sqvfefv", + "enabled": true, + "featured": true, + "notes": "Preview/test TokenFactory pool from PR #9. Treat as experimental thin-liquidity infrastructure, not a public launch market." + } + ] +} diff --git a/frontend/src/lib/astroport/assetInfo.ts b/frontend/src/lib/astroport/assetInfo.ts new file mode 100644 index 000000000..d9be6b227 --- /dev/null +++ b/frontend/src/lib/astroport/assetInfo.ts @@ -0,0 +1,27 @@ +import type { RegistryAsset } from "../../config/registry"; + +export type AstroportAssetInfo = + | { native_token: { denom: string } } + | { token: { contract_addr: string } }; + +export type AstroportAsset = { + info: AstroportAssetInfo; + amount: string; +}; + +export function toAssetInfo(asset: RegistryAsset): AstroportAssetInfo { + if (asset.kind === "cw20") return { token: { contract_addr: asset.id } }; + return { native_token: { denom: asset.id } }; +} + +export function toAsset(asset: RegistryAsset, amount: string): AstroportAsset { + return { info: toAssetInfo(asset), amount }; +} + +export function assetLabel(asset: RegistryAsset): string { + return `${asset.symbol} (${asset.id})`; +} + +export function nativeFunds(asset: RegistryAsset, amount: string) { + return asset.kind === "cw20" ? [] : [{ denom: asset.id, amount }]; +} diff --git a/frontend/src/lib/astroport/messages.ts b/frontend/src/lib/astroport/messages.ts new file mode 100644 index 000000000..f043a4c1d --- /dev/null +++ b/frontend/src/lib/astroport/messages.ts @@ -0,0 +1,33 @@ +import type { RegistryAsset } from "../../config/registry"; +import { nativeFunds, toAsset } from "./assetInfo"; + +export function createSwapMessage(offerAsset: RegistryAsset, askAsset: RegistryAsset, amount: string, maxSpread = "0.01") { + return { + msg: { + swap: { + offer_asset: toAsset(offerAsset, amount), + ask_asset_info: askAsset.kind === "cw20" + ? { token: { contract_addr: askAsset.id } } + : { native_token: { denom: askAsset.id } }, + max_spread: maxSpread, + }, + }, + funds: nativeFunds(offerAsset, amount), + }; +} + +export function createProvideLiquidityMessage(assets: [RegistryAsset, RegistryAsset], amounts: [string, string], slippageTolerance = "0.01") { + return { + msg: { + provide_liquidity: { + assets: [toAsset(assets[0], amounts[0]), toAsset(assets[1], amounts[1])], + slippage_tolerance: slippageTolerance, + }, + }, + funds: [...nativeFunds(assets[0], amounts[0]), ...nativeFunds(assets[1], amounts[1])], + }; +} + +export function createWithdrawLiquidityMessage() { + return { withdraw_liquidity: {} }; +} diff --git a/frontend/src/lib/astroport/queries.ts b/frontend/src/lib/astroport/queries.ts new file mode 100644 index 000000000..cc4bf4a1b --- /dev/null +++ b/frontend/src/lib/astroport/queries.ts @@ -0,0 +1,49 @@ +import type { RegistryAsset, RegistryPool } from "../../config/registry"; +import { dexRegistry } from "../../config/registry"; +import { toAsset } from "./assetInfo"; + +export type PoolAssetResponse = { info: unknown; amount: string }; +export type PoolResponse = { assets: PoolAssetResponse[]; total_share: string }; +export type SimulationResponse = { return_amount: string; spread_amount: string; commission_amount: string }; + +function encodeSmartQuery(message: unknown): string { + const json = JSON.stringify(message); + const bytes = new TextEncoder().encode(json); + let binary = ""; + for (const byte of bytes) binary += String.fromCharCode(byte); + return btoa(binary); +} + +async function queryContractSmart(contractAddress: string, message: unknown): Promise { + const encoded = encodeURIComponent(encodeSmartQuery(message)); + const response = await fetch(`${dexRegistry.restEndpoint}/cosmwasm/wasm/v1/contract/${contractAddress}/smart/${encoded}`); + if (!response.ok) throw new Error(`REST smart query failed: ${response.status}`); + const payload = await response.json() as { data: T }; + return payload.data; +} + +export async function queryPairPool(pairAddress: string): Promise { + return queryContractSmart(pairAddress, { pool: {} }); +} + +export async function querySwapSimulation( + pairAddress: string, + offerAsset: RegistryAsset, + askAsset: RegistryAsset, + amount: string, +): Promise { + return queryContractSmart(pairAddress, { + simulation: { + offer_asset: toAsset(offerAsset, amount), + ask_asset_info: askAsset.kind === "cw20" + ? { token: { contract_addr: askAsset.id } } + : { native_token: { denom: askAsset.id } }, + }, + }); +} + +export function findOppositeAsset(pool: RegistryPool, offerId: string): RegistryAsset { + const asset = pool.assets.find((candidate) => candidate.id !== offerId); + if (!asset) throw new Error("pool must contain two distinct assets"); + return asset; +} diff --git a/frontend/src/lib/cosmjs/clients.ts b/frontend/src/lib/cosmjs/clients.ts new file mode 100644 index 000000000..c42e622ab --- /dev/null +++ b/frontend/src/lib/cosmjs/clients.ts @@ -0,0 +1,12 @@ +import type { OfflineSigner } from "@cosmjs/proto-signing"; +import { dexRegistry } from "../../config/registry"; + +export async function getSigningClient(signer: OfflineSigner) { + const [{ SigningCosmWasmClient }, { GasPrice }] = await Promise.all([ + import("@cosmjs/cosmwasm-stargate"), + import("@cosmjs/stargate"), + ]); + return SigningCosmWasmClient.connectWithSigner(dexRegistry.rpcEndpoint, signer, { + gasPrice: GasPrice.fromString("0.075ujuno"), + }); +} diff --git a/frontend/src/lib/format/addresses.ts b/frontend/src/lib/format/addresses.ts new file mode 100644 index 000000000..baa0c22e6 --- /dev/null +++ b/frontend/src/lib/format/addresses.ts @@ -0,0 +1,4 @@ +export function truncateAddress(address: string, prefix = 10, suffix = 8): string { + if (address.length <= prefix + suffix + 3) return address; + return `${address.slice(0, prefix)}…${address.slice(-suffix)}`; +} diff --git a/frontend/src/lib/format/amounts.ts b/frontend/src/lib/format/amounts.ts new file mode 100644 index 000000000..95a13ecb3 --- /dev/null +++ b/frontend/src/lib/format/amounts.ts @@ -0,0 +1,13 @@ +export function formatAmount(amount: string | number | undefined, decimals = 6, maxFractionDigits = 6): string { + if (amount === undefined || amount === null || amount === "") return "—"; + const numeric = typeof amount === "number" ? amount : Number(amount); + if (!Number.isFinite(numeric)) return String(amount); + const value = numeric / 10 ** decimals; + return new Intl.NumberFormat("en-US", { maximumFractionDigits: maxFractionDigits }).format(value); +} + +export function toBaseAmount(value: string, decimals: number): string { + const numeric = Number(value); + if (!Number.isFinite(numeric) || numeric <= 0) return "0"; + return Math.floor(numeric * 10 ** decimals).toString(); +} diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx new file mode 100644 index 000000000..c79d5fd77 --- /dev/null +++ b/frontend/src/main.tsx @@ -0,0 +1,26 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { BrowserRouter } from "react-router-dom"; +import { App } from "./app/App"; +import "./styles/theme.css"; + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + retry: 1, + staleTime: 15_000, + refetchOnWindowFocus: false, + }, + }, +}); + +createRoot(document.getElementById("root")!).render( + + + + + + + , +); diff --git a/frontend/src/mutations/useProvideLiquidityTx.ts b/frontend/src/mutations/useProvideLiquidityTx.ts new file mode 100644 index 000000000..172e9a6e8 --- /dev/null +++ b/frontend/src/mutations/useProvideLiquidityTx.ts @@ -0,0 +1,16 @@ +import { useMutation } from "@tanstack/react-query"; +import type { OfflineSigner } from "@cosmjs/proto-signing"; +import type { RegistryPool } from "../config/registry"; +import { createProvideLiquidityMessage } from "../lib/astroport/messages"; +import { getSigningClient } from "../lib/cosmjs/clients"; + +export function useProvideLiquidityTx(signer: OfflineSigner | undefined, sender: string | undefined) { + return useMutation({ + mutationFn: async ({ pool, amounts }: { pool: RegistryPool; amounts: [string, string] }) => { + if (!signer || !sender) throw new Error("Connect Keplr before broadcasting"); + const client = await getSigningClient(signer); + const { msg, funds } = createProvideLiquidityMessage(pool.assets, amounts); + return client.execute(sender, pool.pair, msg, "auto", undefined, funds); + }, + }); +} diff --git a/frontend/src/mutations/useSwapTx.ts b/frontend/src/mutations/useSwapTx.ts new file mode 100644 index 000000000..dff4125e7 --- /dev/null +++ b/frontend/src/mutations/useSwapTx.ts @@ -0,0 +1,16 @@ +import { useMutation } from "@tanstack/react-query"; +import type { OfflineSigner } from "@cosmjs/proto-signing"; +import type { RegistryAsset, RegistryPool } from "../config/registry"; +import { createSwapMessage } from "../lib/astroport/messages"; +import { getSigningClient } from "../lib/cosmjs/clients"; + +export function useSwapTx(signer: OfflineSigner | undefined, sender: string | undefined) { + return useMutation({ + mutationFn: async ({ pool, offerAsset, askAsset, amount }: { pool: RegistryPool; offerAsset: RegistryAsset; askAsset: RegistryAsset; amount: string }) => { + if (!signer || !sender) throw new Error("Connect Keplr before broadcasting"); + const client = await getSigningClient(signer); + const { msg, funds } = createSwapMessage(offerAsset, askAsset, amount); + return client.execute(sender, pool.pair, msg, "auto", undefined, funds); + }, + }); +} diff --git a/frontend/src/mutations/useWithdrawLiquidityTx.ts b/frontend/src/mutations/useWithdrawLiquidityTx.ts new file mode 100644 index 000000000..434de2b28 --- /dev/null +++ b/frontend/src/mutations/useWithdrawLiquidityTx.ts @@ -0,0 +1,17 @@ +import { useMutation } from "@tanstack/react-query"; +import type { OfflineSigner } from "@cosmjs/proto-signing"; +import type { Coin } from "@cosmjs/stargate"; +import type { RegistryPool } from "../config/registry"; +import { createWithdrawLiquidityMessage } from "../lib/astroport/messages"; +import { getSigningClient } from "../lib/cosmjs/clients"; + +export function useWithdrawLiquidityTx(signer: OfflineSigner | undefined, sender: string | undefined) { + return useMutation({ + mutationFn: async ({ pool, lpAmount }: { pool: RegistryPool; lpAmount: string }) => { + if (!signer || !sender) throw new Error("Connect Keplr before broadcasting"); + const client = await getSigningClient(signer); + const funds: Coin[] = [{ denom: pool.lpToken, amount: lpAmount }]; + return client.execute(sender, pool.pair, createWithdrawLiquidityMessage(), "auto", undefined, funds); + }, + }); +} diff --git a/frontend/src/queries/useDexRegistry.ts b/frontend/src/queries/useDexRegistry.ts new file mode 100644 index 000000000..9c652bd4e --- /dev/null +++ b/frontend/src/queries/useDexRegistry.ts @@ -0,0 +1,6 @@ +import { useMemo } from "react"; +import { dexRegistry, enabledPools } from "../config/registry"; + +export function useDexRegistry() { + return useMemo(() => ({ registry: dexRegistry, pools: enabledPools }), []); +} diff --git a/frontend/src/queries/usePools.ts b/frontend/src/queries/usePools.ts new file mode 100644 index 000000000..85cd30b74 --- /dev/null +++ b/frontend/src/queries/usePools.ts @@ -0,0 +1,14 @@ +import { useQuery } from "@tanstack/react-query"; +import type { RegistryPool } from "../config/registry"; +import { queryPairPool } from "../lib/astroport/queries"; + +export function usePoolReserves(pool: RegistryPool | undefined) { + return useQuery({ + queryKey: ["pool", pool?.pair], + enabled: Boolean(pool), + queryFn: async () => { + if (!pool) throw new Error("pool is required"); + return queryPairPool(pool.pair); + }, + }); +} diff --git a/frontend/src/queries/useSwapQuote.ts b/frontend/src/queries/useSwapQuote.ts new file mode 100644 index 000000000..c66366c9c --- /dev/null +++ b/frontend/src/queries/useSwapQuote.ts @@ -0,0 +1,14 @@ +import { useQuery } from "@tanstack/react-query"; +import type { RegistryAsset, RegistryPool } from "../config/registry"; +import { querySwapSimulation } from "../lib/astroport/queries"; + +export function useSwapQuote(pool: RegistryPool | undefined, offerAsset: RegistryAsset | undefined, askAsset: RegistryAsset | undefined, amount: string) { + return useQuery({ + queryKey: ["swap-quote", pool?.pair, offerAsset?.id, askAsset?.id, amount], + enabled: Boolean(pool && offerAsset && askAsset && Number(amount) > 0), + queryFn: async () => { + if (!pool || !offerAsset || !askAsset) throw new Error("pool and assets are required"); + return querySwapSimulation(pool.pair, offerAsset, askAsset, amount); + }, + }); +} diff --git a/frontend/src/queries/useWalletBalances.ts b/frontend/src/queries/useWalletBalances.ts new file mode 100644 index 000000000..f5186d63f --- /dev/null +++ b/frontend/src/queries/useWalletBalances.ts @@ -0,0 +1,15 @@ +import { useQuery } from "@tanstack/react-query"; +import { StargateClient } from "@cosmjs/stargate"; +import { dexRegistry } from "../config/registry"; + +export function useWalletBalances(address: string | undefined) { + return useQuery({ + queryKey: ["balances", address], + enabled: Boolean(address), + queryFn: async () => { + if (!address) return []; + const client = await StargateClient.connect(dexRegistry.rpcEndpoint); + return client.getAllBalances(address); + }, + }); +} diff --git a/frontend/src/styles/theme.css b/frontend/src/styles/theme.css new file mode 100644 index 000000000..475a4d1b8 --- /dev/null +++ b/frontend/src/styles/theme.css @@ -0,0 +1,70 @@ +:root { + color-scheme: dark; + font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + color: #f5f7fb; + background: #05070d; + font-synthesis: none; + text-rendering: optimizeLegibility; +} + +* { box-sizing: border-box; } +body { margin: 0; min-width: 320px; min-height: 100vh; background: radial-gradient(circle at 20% 0%, rgba(39, 226, 255, 0.18), transparent 32rem), radial-gradient(circle at 80% 12%, rgba(255, 119, 117, 0.12), transparent 28rem), #05070d; } +a { color: #80edff; text-decoration: none; } +button, input, select { font: inherit; } +code { color: #b6f7ff; overflow-wrap: anywhere; } + +.dex-shell { width: min(1180px, calc(100% - 32px)); margin: 0 auto; padding: 28px 0 56px; } +.topbar, .topbar-actions, .nav-tabs, .contract-strip, .form-grid, .metrics-grid, .liquidity-grid { display: flex; gap: 14px; } +.topbar { align-items: center; justify-content: space-between; margin-bottom: 22px; } +.topbar h1 { margin: 0; font-size: clamp(2rem, 6vw, 4.25rem); letter-spacing: -0.08em; text-transform: uppercase; } +.topbar-actions { align-items: center; flex-wrap: wrap; justify-content: flex-end; } +.eyebrow { color: #ff9f99; letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.76rem; font-weight: 700; margin: 0 0 8px; } +.nav-tabs { margin-bottom: 22px; flex-wrap: wrap; } +.nav-tabs a { border: 1px solid rgba(128, 237, 255, 0.2); border-radius: 999px; padding: 10px 16px; color: #cdd7e3; background: rgba(10, 17, 30, 0.72); } +.nav-tabs a.active { background: #80edff; color: #071019; } + +.page-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(340px, 440px); gap: 22px; align-items: start; } +.hero-panel, .swap-card, .panel-page, .risk-notice, .quote-card, .metric-card, .action-card, .tx-card { border: 1px solid rgba(128, 237, 255, 0.16); border-radius: 26px; background: linear-gradient(145deg, rgba(11, 17, 31, 0.92), rgba(13, 19, 31, 0.72)); box-shadow: 0 24px 70px rgba(0,0,0,0.28); } +.hero-panel, .panel-page { padding: clamp(22px, 5vw, 42px); } +.hero-panel h2, .panel-page h2 { margin: 0 0 14px; font-size: clamp(2rem, 5vw, 4rem); line-height: 0.95; letter-spacing: -0.05em; } +.hero-panel p, .panel-page p { color: #a9b6c7; font-size: 1.05rem; line-height: 1.6; } +.contract-strip { align-items: center; flex-wrap: wrap; margin-top: 18px; padding: 14px; border-radius: 18px; background: rgba(128, 237, 255, 0.07); } +.contract-strip span { color: #ff9f99; font-weight: 700; } + +.risk-notice { padding: 16px; margin-bottom: 16px; color: #ffd7d5; border-color: rgba(255, 159, 153, 0.32); background: rgba(85, 30, 39, 0.42); } +.swap-card { padding: 20px; } +.form-grid { align-items: end; } +.field { display: grid; gap: 8px; color: #a9b6c7; flex: 1; } +input, select { width: 100%; border: 1px solid rgba(128, 237, 255, 0.18); border-radius: 16px; background: #080d18; color: #f5f7fb; padding: 13px 14px; } +.swap-direction { width: 42px; height: 42px; border-radius: 50%; display: grid; place-items: center; margin: 16px auto; background: rgba(128,237,255,0.12); color: #80edff; font-size: 1.4rem; } +.receive-box { display: grid; gap: 6px; padding: 16px; border-radius: 18px; background: rgba(255,255,255,0.04); } +.quote-card { padding: 16px; margin-top: 16px; } +dl { margin: 0; display: grid; gap: 10px; } +dl div { display: flex; justify-content: space-between; gap: 12px; } +dt { color: #a9b6c7; } +dd { margin: 0; font-weight: 700; } +.primary-action, .wallet-button, .action-card button { margin-top: 16px; border: 0; border-radius: 16px; padding: 12px 16px; background: #80edff; color: #071019; font-weight: 800; cursor: pointer; } +button:disabled { cursor: not-allowed; opacity: 0.48; } +.wallet-button { margin-top: 0; } +.wallet-button.connected { background: rgba(128, 237, 255, 0.14); color: #80edff; } +.wallet-stack { display: grid; gap: 6px; justify-items: end; } +.status-pill { border-radius: 999px; padding: 10px 12px; font-size: 0.85rem; border: 1px solid currentColor; } +.status-ok { color: #80edff; } +.status-warn, .error-text { color: #ff9f99; } + +.pool-table { display: grid; gap: 12px; margin-top: 22px; } +.pool-row { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 14px; align-items: center; padding: 18px; border: 1px solid rgba(128, 237, 255, 0.14); border-radius: 18px; background: rgba(255,255,255,0.04); color: #f5f7fb; } +.pool-row p { margin: 4px 0 0; font-size: 0.9rem; } +.metrics-grid, .liquidity-grid { margin-top: 22px; flex-wrap: wrap; } +.metric-card, .action-card { padding: 18px; flex: 1 1 260px; display: grid; gap: 8px; } +.metric-card span { color: #a9b6c7; } +.metric-card strong { font-size: 1.6rem; } +.action-card h3 { margin: 0; } +.action-card p { font-size: 0.95rem; margin: 0 0 8px; } + +@media (max-width: 860px) { + .page-grid { grid-template-columns: 1fr; } + .topbar { align-items: flex-start; flex-direction: column; } + .pool-row { grid-template-columns: 1fr; } + .form-grid { flex-direction: column; align-items: stretch; } +} diff --git a/frontend/src/wallet/keplr.ts b/frontend/src/wallet/keplr.ts new file mode 100644 index 000000000..d4450572a --- /dev/null +++ b/frontend/src/wallet/keplr.ts @@ -0,0 +1,22 @@ +import { JUNO_CHAIN_INFO } from "../config/chains"; +import type { WalletState } from "./types"; + +export async function connectKeplr(): Promise { + if (!window.keplr) { + return { status: "error", error: "Keplr extension not found. Read-only mode remains available." }; + } + + try { + if (window.keplr.experimentalSuggestChain) { + await window.keplr.experimentalSuggestChain(JUNO_CHAIN_INFO); + } + await window.keplr.enable(JUNO_CHAIN_INFO.chainId); + const key = await window.keplr.getKey(JUNO_CHAIN_INFO.chainId); + const signer = window.keplr.getOfflineSignerAuto + ? await window.keplr.getOfflineSignerAuto(JUNO_CHAIN_INFO.chainId) + : window.keplr.getOfflineSigner(JUNO_CHAIN_INFO.chainId); + return { status: "connected", address: key.bech32Address, name: key.name, signer }; + } catch (error) { + return { status: "error", error: error instanceof Error ? error.message : "Keplr connection failed" }; + } +} diff --git a/frontend/src/wallet/types.ts b/frontend/src/wallet/types.ts new file mode 100644 index 000000000..314aeb46e --- /dev/null +++ b/frontend/src/wallet/types.ts @@ -0,0 +1,24 @@ +import type { OfflineSigner } from "@cosmjs/proto-signing"; +import type { JUNO_CHAIN_INFO } from "../config/chains"; + +type JunoChainInfo = typeof JUNO_CHAIN_INFO; + +declare global { + interface Window { + keplr?: { + enable(chainId: string): Promise; + experimentalSuggestChain?(chainInfo: JunoChainInfo): Promise; + getKey(chainId: string): Promise<{ bech32Address: string; name: string }>; + getOfflineSignerAuto?(chainId: string): Promise; + getOfflineSigner(chainId: string): OfflineSigner; + }; + } +} + +export type WalletState = { + status: "idle" | "connecting" | "connected" | "error"; + address?: string; + name?: string; + error?: string; + signer?: OfflineSigner; +}; diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 000000000..468d6c342 --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "types": ["vite/client", "vitest/globals"] + }, + "include": ["src"], + "references": [] +} diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts new file mode 100644 index 000000000..13f3065e7 --- /dev/null +++ b/frontend/vite.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; + +export default defineConfig({ + plugins: [react()], + test: { + environment: "jsdom", + globals: true, + }, +}); diff --git a/planning/38-dex-frontend-from-scratch-architecture-2026-07-01.md b/planning/38-dex-frontend-from-scratch-architecture-2026-07-01.md new file mode 100644 index 000000000..b08d4b09b --- /dev/null +++ b/planning/38-dex-frontend-from-scratch-architecture-2026-07-01.md @@ -0,0 +1,332 @@ +# Astroport-Core DEX Frontend From-Scratch Architecture + +Date: 2026-07-01 +Task: `t_9177c2ad` +Target repo: `JakeHartnell/astroport-core` +Target app path: `frontend/` + +## Decision + +Build the new Juno DEX frontend from scratch inside this repo under `frontend/` as an isolated Vite + React + TypeScript app. + +Why `frontend/`: + +- The repo root is a Rust/CosmWasm workspace (`Cargo.toml`) with `contracts/`, `packages/`, `schemas/`, `deployment/`, and `planning/`; a sibling `frontend/` keeps UI code separate from contracts while still versioning it with the deployment handoff. +- There is no existing `package.json`, so a standalone JS app avoids contaminating the Rust workspace and CI until the frontend lane is ready. +- `deployment/` already owns the frontend handoff (`juno-v1-frontend-config.d.ts`, release checklist, config example), so `frontend/` can consume repo-local deployment/record artifacts without moving back to `juno-website`. + +Do not revive the superseded `juno-website` implementation. Treat earlier Juno DEX docs as product input only. + +## Product frame + +V1 is a boring, trustable Juno-native DEX surface: + +- Swap verified Astroport-Juno XYK pools. +- Browse pools. +- Inspect a pool. +- Add/remove liquidity. +- Show wallet, quote, tx, explorer, and error states clearly. + +Explicit non-goals for V1: + +- no DEX token, +- no stablecoin/LST/perps/lending/vaults/launchpad, +- no stable/PCL pool launch dependency, +- no charts, volume, TVL USD, APY, rewards dashboard, or recent-trade feed unless a later indexer/API lane supplies it, +- no public liquidity recommendation; label the first pool thin-liquidity experimental. + +## Current deployment inputs + +Local `deployment/records/` is not present in this checkout, but PR #9 on `JakeHartnell/astroport-core` is open and adds: + +- `deployment/records/README.md` +- `deployment/records/juno-v1-mainnet-deployment-2026-07-01.md` + +PR #9 records a live `juno-1` Astroport-Juno v1 deployment: + +- factory: `juno1n5ettlqdt06nd346mnqy65fahcvmncaazpwn8s3m0df3ldv0d2yqjqelca` +- first pair: `juno1s0klsaye2vuueet7utec6vmyua3pq6wv8ddr2phcrgg8v9gw9r5sqvfefv` +- native coin registry: `juno1qwer7jleluth33trk2ywqvp6vwjh4j4zar3ag6dw5d8derkpel0sq8vfh2` +- router: `juno1fppwfa2efpsahvwlqprrshjth2mfqyd8n80yd7z5kpjspq30s8ksrapa8s` +- incentives: `juno1h0auy2knfyhkcn877cqun0fu00safgsjwvt82d4cvd0slv8q7wtsk59598` +- oracle: `juno1szsxu32r7rnu5wq7yqlxq4x46g0fq7qpzyggcvgsh2cq554mcuqql6jw4p` +- first pool assets: `ujuno` / `factory/juno1xsx746x4375g39f9fj07hr7qm0wuf0ksl0an76/junoagenttest202607010323` +- LP denom: `factory/juno1s0klsaye2vuueet7utec6vmyua3pq6wv8ddr2phcrgg8v9gw9r5sqvfefv/astroport/share` + +The PR says factory pair, pair pool, pair simulation, router config, native registry, and smoke swap/add/withdraw checks all passed. Use these as preview/test data, not as broad public-launch copy. + +## Proposed stack + +Use: + +- Vite +- React +- TypeScript +- React Router or TanStack Router +- TanStack Query for async chain reads/mutations +- CosmJS: `@cosmjs/cosmwasm-stargate`, `@cosmjs/stargate`, `@cosmjs/proto-signing` +- Keplr wallet first; Leap can be added behind the same adapter if trivial +- CSS modules or a tiny local CSS system; defer Tailwind unless the frontend lane wants a heavier design-token setup +- Vitest + React Testing Library for pure logic/components +- Playwright only after routes exist + +Do not introduce Next/Nuxt/Storyblok. The app should be static-hostable and independent of CMS availability. + +## Route map + +- `/` — redirect or link to `/swap` inside the frontend app. +- `/swap` — default swap screen for direct XYK pair swaps. +- `/pools` — pool list from strict registry plus live pair queries. +- `/pools/:pairAddress` — pool detail, reserves, LP denom, add/remove liquidity tabs. +- `/liquidity` — wallet-centric LP overview; in V1 it may link users to pool detail pages if no wallet-position indexer exists. +- Settings should be a modal, not a route, for slippage and endpoint display. + +If the app is hosted under a larger site later, mount it at `/dex/*` with the same internal route names. + +## Frontend directory layout + +```text +frontend/ + package.json + index.html + vite.config.ts + tsconfig.json + src/ + main.tsx + app/App.tsx + app/routes.tsx + config/chains.ts + config/registry.ts + config/deployment.ts + data/registry.juno-1.json + lib/astroport/assetInfo.ts + lib/astroport/messages.ts + lib/astroport/queries.ts + lib/cosmjs/clients.ts + lib/format/amounts.ts + lib/format/addresses.ts + wallet/keplr.ts + wallet/types.ts + queries/useDexRegistry.ts + queries/usePools.ts + queries/useSwapQuote.ts + queries/useWalletBalances.ts + mutations/useSwapTx.ts + mutations/useProvideLiquidityTx.ts + mutations/useWithdrawLiquidityTx.ts + components/layout/DexShell.tsx + components/wallet/WalletConnectButton.tsx + components/wallet/ChainStatusBadge.tsx + components/swap/SwapPage.tsx + components/swap/SwapForm.tsx + components/swap/TokenSelect.tsx + components/swap/QuoteCard.tsx + components/pools/PoolsPage.tsx + components/pools/PoolTable.tsx + components/pools/PoolDetailPage.tsx + components/liquidity/AddLiquidityForm.tsx + components/liquidity/RemoveLiquidityForm.tsx + components/tx/TxStatusDialog.tsx + components/common/ExplorerLink.tsx + components/common/RiskNotice.tsx + styles/theme.css +``` + +## Registry/config source + +V1 should use a strict static registry committed under `frontend/src/data/registry.juno-1.json`, generated from deployment records when possible. + +Required registry shape: + +- top level: `chainId`, `rpcEndpoint`, `restEndpoint`, `factory`, `nativeCoinRegistry`, optional `router`, optional `incentives`, optional `oracle`, `updatedAt`, `pools[]` +- pool: `id`, `label`, `pair`, `lpToken`, `type: "xyk"`, `feeBps`, `assets`, `explorer`, `enabled`, optional `featured`, optional `notes` +- asset: `kind: "native" | "ibc" | "cw20"`, `id`, `symbol`, `decimals`, optional `denomTrace`, optional `logoURI` + +Initial preview registry can include only the PR #9 test pool, marked clearly as experimental/thin-liquidity. Do not show placeholder pools. + +Future improvement: add a repo-local generator that reads `deployment/records/*.md` or rendered deployment JSON and emits `frontend/src/data/registry.juno-1.json`, then validates no placeholder addresses or unsupported pool types are present. + +## Chain query and wallet strategy + +Read-only mode: + +- Load strict registry first. +- Query factory `pairs` and/or `pair` to verify registry pairs. +- Query pair `pool` for reserves and total share. +- Query pair `simulation` for quotes. +- Query native coin registry `native_token` / `native_tokens` for denom precision checks. +- Hide TVL, volume, APR, and charts unless separately backed by an API/indexer. + +Wallet mode: + +- Detect Keplr. +- Suggest/enable `juno-1`. +- Create `SigningCosmWasmClient` from configured RPC. +- Query native balances through Stargate/CosmWasm client. +- Direct swap: execute pair `swap` with native funds and slippage-derived `belief_price`/`max_spread` or `minimum_receive` fields supported by the schema path. +- Add liquidity: execute pair `provide_liquidity` with native funds, slippage tolerance, and optional `min_lp_to_receive` when available. +- Remove liquidity: execute pair `withdraw_liquidity`; for TokenFactory LP denoms, send the LP denom as funds if required by the contract flow. + +Router/multi-hop: + +- Keep router config available but disabled by default. +- Add router only after direct pair swaps are tested in the app. +- Use `astro_swap` operations; do not rely on `native_swap` until verified against this Juno router implementation. + +## Styling/design posture + +Direction: "Juno utility terminal," not generic DeFi casino. + +- Dark background, high-contrast panels, restrained cyan/salmon accents. +- Contract addresses, denoms, LP denom, and explorer links must be visible/copyable. +- Always show an experimental/thin-liquidity risk notice before first swap/liquidity action. +- Mobile-first swap card; pools can collapse to cards. +- Empty/error states are part of the product: registry missing, RPC degraded, no wallet, wrong network, no pair, quote failure, insufficient funds, user rejection, tx failure. + +## First implementation slices + +### Slice 1 — app skeleton and static registry + +Files: + +- create `frontend/package.json`, Vite config, TS config, `index.html` +- create `frontend/src/app/App.tsx`, `frontend/src/main.tsx`, route shell +- create `frontend/src/data/registry.juno-1.json` with the PR #9 preview pool +- create `frontend/src/config/registry.ts` with strict parsing and placeholder rejection + +Verification: + +```sh +cd frontend +npm install +npm run typecheck +npm run build +``` + +Acceptance: + +- `/swap`, `/pools`, and `/pools/:pairAddress` render from local registry data. +- Placeholder addresses fail a unit test. + +### Slice 2 — read-only contract queries + +Files: + +- `src/lib/cosmjs/clients.ts` +- `src/lib/astroport/assetInfo.ts` +- `src/lib/astroport/queries.ts` +- `src/queries/usePools.ts` +- `src/queries/useSwapQuote.ts` + +Verification: + +```sh +cd frontend +npm test +npm run typecheck +npm run build +``` + +Acceptance: + +- Pool page displays live reserves from pair `pool` or a clear RPC error. +- Swap page can quote the direct PR #9 pair through pair `simulation` in read-only mode. + +### Slice 3 — wallet connect and network guard + +Files: + +- `src/wallet/types.ts` +- `src/wallet/keplr.ts` +- `src/components/wallet/WalletConnectButton.tsx` +- `src/components/wallet/ChainStatusBadge.tsx` + +Acceptance: + +- No wallet: read-only mode remains usable. +- Wrong network: app offers `juno-1` suggest/enable recovery. +- Connected wallet shows address and native balances. + +### Slice 4 — direct swap execution + +Files: + +- `src/lib/astroport/messages.ts` +- `src/mutations/useSwapTx.ts` +- `src/components/swap/SwapForm.tsx` +- `src/components/tx/TxStatusDialog.tsx` + +Acceptance: + +- Direct native-token swap can broadcast against the preview pool. +- UI shows pending/success/failure and Mintscan tx link. +- Quote failures and slippage warnings disable submit. + +### Slice 5 — pool detail and liquidity operations + +Files: + +- `src/components/pools/PoolDetailPage.tsx` +- `src/components/liquidity/AddLiquidityForm.tsx` +- `src/components/liquidity/RemoveLiquidityForm.tsx` +- `src/mutations/useProvideLiquidityTx.ts` +- `src/mutations/useWithdrawLiquidityTx.ts` + +Acceptance: + +- Pool detail shows reserves, LP denom, and explorer links. +- Add/remove forms simulate where possible and broadcast small smoke txs against the preview pool. +- User LP balance and post-tx refresh work. + +### Slice 6 — release hardening + +Files: + +- add CI job for `frontend/` install, typecheck, tests, build +- add registry validation script or test +- add `frontend/README.md` with runbook and risk copy + +Acceptance: + +- Frontend CI runs independently of Rust contract checks. +- Registry strict mode blocks placeholders, non-`juno-1`, non-XYK V1 pools, missing explorer links, duplicate IDs, and missing required deployment addresses. + +## Open questions / blockers for implementation lane + +- Confirm package manager preference (`npm`, `pnpm`, or `yarn`). Default to npm unless the repo adopts a JS package manager standard. +- Confirm whether PR #9 deployment records will be merged before the first frontend PR. If not, copy the required public summary values into the frontend registry with a comment pointing to PR #9. +- Confirm owner/admin transfer posture before public copy: PR #9 says hot wallet owns/guards/treasury for thin-liquidity testing; broader public promotion should prefer DAO-controlled owner/admin roles. +- Confirm first counterparty asset naming: the first pool counterparty is a TokenFactory test denom, so UI copy should label it as test/preview until real launch assets are approved. + +## Evidence inspected + +Repo-local: + +- `Cargo.toml` — Rust workspace only; no frontend package exists. +- `README.md` — upstream Astroport contract repo shape. +- `deployment/README.md` — frontend consumption handoff and no-hardcoded-pools guidance. +- `deployment/juno-v1-readiness-plan.md` — XYK-only deployment and frontend readiness gates. +- `deployment/MAINNET_DEPLOYMENT.md` — mainnet/frontend handoff and smoke requirements. +- `deployment/frontend-release-checklist.md` — frontend address surface and release blockers. +- `deployment/juno-v1-frontend-config.d.ts` and `.example.ts` — generated frontend type/address contract. +- `planning/17-frontend-schema-surface-2026-06-29.md` — contract query/execute surface. +- `schemas/astroport-factory/raw/query.json` — `pair`, `pairs`, `fee_info` queries. +- `schemas/astroport-pair/raw/query.json` and `execute.json` — `pool`, `simulation`, `simulate_provide`, `simulate_withdraw`, `swap`, `provide_liquidity`, `withdraw_liquidity`. +- `schemas/astroport-router/raw/query.json` — router simulation surface. +- `schemas/astroport-native-coin-registry/raw/query.json` — denom metadata surface. + +Prior DEX notes: + +- `/opt/data/repos/juno-dex-v1-product-architecture-spec.md` +- `/opt/data/repos/juno-dex-v1-data-layer-spec.md` +- `/opt/data/repos/juno-dex-frontend-v1-design.md` + +Remote PR evidence: + +- `https://github.com/JakeHartnell/astroport-core/pull/9` — open PR adding `deployment/records/` with real mainnet deployment summary. + +## Recommended next Kanban tasks + +1. Frontend engineer: create `frontend/` Vite React skeleton and strict registry using this plan. +2. Frontend/data engineer: implement read-only CosmWasm queries against the PR #9 preview pool. +3. QA/reviewer: verify registry copy against PR #9 and smoke query pool/simulation from the UI runtime before any swap execution work. From cb906c9b881fcbd928d0acb4ae230bce4fc4d34c Mon Sep 17 00:00:00 2001 From: Jake Hartnell Date: Wed, 1 Jul 2026 09:21:18 -0700 Subject: [PATCH 04/84] docs: record Juno DEX v1 mainnet deployment (#9) Adds the verified juno-1 deployment outputs, key tx hashes, test pool details, validation evidence, and artifact checksums for the Astroport-Juno v1 deployment. Co-authored-by: Hermes Agent --- deployment/records/README.md | 3 + .../juno-v1-mainnet-deployment-2026-07-01.md | 74 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 deployment/records/README.md create mode 100644 deployment/records/juno-v1-mainnet-deployment-2026-07-01.md diff --git a/deployment/records/README.md b/deployment/records/README.md new file mode 100644 index 000000000..a83f2e7b6 --- /dev/null +++ b/deployment/records/README.md @@ -0,0 +1,3 @@ +# Deployment records + +Human-readable records for real Juno deployment outputs. These files are public summaries; raw tx JSON and wasm binaries should stay in operator archives unless a release process explicitly publishes them. diff --git a/deployment/records/juno-v1-mainnet-deployment-2026-07-01.md b/deployment/records/juno-v1-mainnet-deployment-2026-07-01.md new file mode 100644 index 000000000..ed16e7f33 --- /dev/null +++ b/deployment/records/juno-v1-mainnet-deployment-2026-07-01.md @@ -0,0 +1,74 @@ +# Astroport-Juno v1 mainnet deployment — 2026-07-01 + +## Scope + +Experimental Astroport-Juno v1 deployment on `juno-1`, using the Juno agent hot wallet as upload signer/owner/guardian/treasury for thin-liquidity testing. Product surface remains XYK-only: no DEX token, stablecoin, LST, perps, yield vault, PCL/stable pairs, staking/maker/vesting/xASTRO launch surface. + +## Contracts + +| Component | Address / Code ID | +|---|---| +| Factory | `juno1n5ettlqdt06nd346mnqy65fahcvmncaazpwn8s3m0df3ldv0d2yqjqelca` / code `5129` | +| Pair code | code `5133` | +| First pair | `juno1s0klsaye2vuueet7utec6vmyua3pq6wv8ddr2phcrgg8v9gw9r5sqvfefv` | +| Native coin registry | `juno1qwer7jleluth33trk2ywqvp6vwjh4j4zar3ag6dw5d8derkpel0sq8vfh2` / code `5131` | +| Router | `juno1fppwfa2efpsahvwlqprrshjth2mfqyd8n80yd7z5kpjspq30s8ksrapa8s` / code `5134` | +| Incentives | `juno1h0auy2knfyhkcn877cqun0fu00safgsjwvt82d4cvd0slv8q7wtsk59598` / code `5130` | +| Oracle | `juno1szsxu32r7rnu5wq7yqlxq4x46g0fq7qpzyggcvgsh2cq554mcuqql6jw4p` / code `5132` | +| Whitelist code | code `5136` | +| Tokenfactory tracker code | code `5135` | +| cw20-base | existing code `109` | + +## First test pool + +- Pair: `juno1s0klsaye2vuueet7utec6vmyua3pq6wv8ddr2phcrgg8v9gw9r5sqvfefv` +- Assets: `ujuno` / `factory/juno1xsx746x4375g39f9fj07hr7qm0wuf0ksl0an76/junoagenttest202607010323` +- LP denom: `factory/juno1s0klsaye2vuueet7utec6vmyua3pq6wv8ddr2phcrgg8v9gw9r5sqvfefv/astroport/share` +- Pair creation was opened publicly after pool verification (`permissioned=false`). + +## Key txs + +| Action | Tx | +|---|---| +| Store factory | `9F554BF49C45C3250D6BF0EEEEB446EA16AC9FF9C6E6CC1866912F2DC537A57F` | +| Store pair | `FD5FDF8D541858BC586D3F6705A4B79C0DC4D7AEE4D7C9305067C298AB617735` | +| Create test denom | `0C92541E989029A87F20C1768CFF59A1A570B01C356C25DA9139A201BDABA928` | +| Mint test denom | `5370935A3C98B8B36281C4BAD87F528269961B89E7F9B29015AD713FD11133D2` | +| Instantiate factory | `56B88238DD314A4774CC9019CE6763FE57A2FEBDE93F7DE85BD5F97F921C02AE` | +| Instantiate incentives | `7F4C3F4722BF41C6C832387F401ABBFA4F3F52B6B3DE77D75496BB7B0CEA8BAD` | +| Instantiate router | `39F331EF10486231BDB2C851F763EA826E3B19ABA04ED7D7B28FA95EC8666219` | +| Create pair | `8EFD15276286C15D5CFF11B55D49522D2987E16F8220DE671CA0971E586BCD8E` | +| Seed liquidity | `DEE44565B5E6124A27430646A371691396A504497EB0315D4A66675C8C765401` | +| Open pair creation | `5A214C0FAE998A5A772A13EA407C267E57787276A34AD8B7D4AF91FFD866E35E` | +| Smoke swap | `15CE5277D55668B4ADE7D44132C7E2EE4FE71882B2003C28503AF09D7138B502` | +| Smoke add liquidity | `F6C33B16578AAA1A4DC4931C250A07649F0F750AC8EAAE150146F5C6D54C5079` | +| Smoke withdraw liquidity | `ED1923D1DF041245296358BEC1EF80FDEFF47A3118F8CBD06EB73A7F5E860E97` | + +## Verification + +- Artifacts built locally with Rust 1.81.0 contract-by-contract, optimized with `wasm-opt -Oz`. +- `scripts/check_juno_v1_artifacts.py artifacts` passed. +- `cosmwasm-check` passed for all 8 artifacts. +- Factory pair query, pair pool query, pair simulation query, router config query, and native coin registry query all passed. +- Smoke swap/add-liquidity/withdraw-liquidity txs all included successfully. +- Frontend registry PR: https://github.com/JakeHartnell/juno-website/pull/1 (`aad48842f7b07c3f42842b9aa3db613419071caf`). +- Durable local artifacts/tx evidence: `/opt/data/repos/astroport-juno-v1-mainnet-deploy-20260701/`. + +## Recommendation + +Launch blocker is cleared for a test/preview frontend. Still label the pool as thin-liquidity experimental and do not imply public liquidity recommendation. Consider transferring owner/admin roles from the hot wallet to DAO-controlled governance before broader public promotion. + +## Artifact SHA-256 + +```text +e38c3a9490fabe469605d2814fcf6e79b1482d031a66cd8dfdc23a010afc885d artifacts/astroport_factory.wasm +d057f063573b7974113aaeee27c3252c075fdc11e2dd31c3485d11ca0d3ec9e3 artifacts/astroport_incentives.wasm +b7bba9d965a2e5074b29c9a7c08782da86535c336239203a8f6ba5213d7c3b0f artifacts/astroport_native_coin_registry.wasm +a9062ec7d40ddfa7fac16f2da826c8dcbe887c9cf6d62aa85d1e939029d45066 artifacts/astroport_oracle.wasm +a99f1b1b3b3bed72ed9c4bdf16adfa51fc90057a943d31bb1c5ac870c9c95249 artifacts/astroport_pair.wasm +e5f9982127fbfe698958172f97f68483152e26d4385f381e9056ee62ce19f3c6 artifacts/astroport_router.wasm +a77ccfaf87f4dc3ce39c09980cf3783bf15e2f818e5250bcd411bbbb934609ee artifacts/astroport_tokenfactory_tracker.wasm +aff60f2783e55a766f671506ad0cb32af67b5b166c54dc51ad44120e278e0de1 artifacts/astroport_whitelist.wasm +``` + +Full local tx JSON + wasm artifact archive exists at `/opt/data/repos/astroport-juno-v1-mainnet-deploy-20260701/` in the Juno agent environment. Do not commit raw tx directories or wasm binaries unless a release process explicitly calls for them. From 0ff06647a296e785d8fcb2f168d717d2cf3d2b51 Mon Sep 17 00:00:00 2001 From: Jake Hartnell Date: Thu, 2 Jul 2026 04:25:05 -0700 Subject: [PATCH 05/84] feat(frontend): polish Juno DEX UI (#11) * feat(frontend): polish Juno DEX trade UX * fix(frontend): resolve DEX polish QA blockers --------- Co-authored-by: Hermes Agent Co-authored-by: Juno AI --- frontend/src/app/App.test.tsx | 39 ++++++++++++++ frontend/src/components/common/RiskNotice.tsx | 6 +-- frontend/src/components/layout/DexShell.tsx | 31 ++++++----- .../components/liquidity/LiquidityPage.tsx | 12 ++++- .../liquidity/RemoveLiquidityForm.tsx | 3 ++ .../src/components/pools/PoolDetailPage.tsx | 9 ++-- frontend/src/components/pools/PoolTable.tsx | 54 +++++++++++++++---- .../src/components/swap/QuoteCard.test.tsx | 23 ++++++++ frontend/src/components/swap/QuoteCard.tsx | 30 ++++++++--- frontend/src/components/swap/SwapForm.tsx | 52 +++++++++++++----- frontend/src/components/swap/SwapPage.tsx | 22 +++++--- frontend/src/components/tx/TxStatusDialog.tsx | 13 ++++- .../components/wallet/WalletConnectButton.tsx | 13 ++--- frontend/src/styles/theme.css | 42 +++++++++++++-- frontend/src/wallet/WalletContext.tsx | 29 ++++++++++ 15 files changed, 301 insertions(+), 77 deletions(-) create mode 100644 frontend/src/app/App.test.tsx create mode 100644 frontend/src/components/swap/QuoteCard.test.tsx create mode 100644 frontend/src/wallet/WalletContext.tsx diff --git a/frontend/src/app/App.test.tsx b/frontend/src/app/App.test.tsx new file mode 100644 index 000000000..8a0ccc66c --- /dev/null +++ b/frontend/src/app/App.test.tsx @@ -0,0 +1,39 @@ +import { fireEvent, render, screen, waitFor } from "@testing-library/react"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { MemoryRouter } from "react-router-dom"; +import { afterEach, describe, expect, it, vi } from "vitest"; +import { App } from "./App"; + +const signer = {} as ReturnType["getOfflineSigner"]>; + +describe("App wallet state", () => { + afterEach(() => { + vi.restoreAllMocks(); + delete window.keplr; + }); + + it("keeps liquidity copy in sync with the connected header wallet", async () => { + window.keplr = { + enable: vi.fn().mockResolvedValue(undefined), + experimentalSuggestChain: vi.fn().mockResolvedValue(undefined), + getKey: vi.fn().mockResolvedValue({ bech32Address: "juno1testwallet000000000000000000000000000000", name: "QA wallet" }), + getOfflineSigner: vi.fn().mockReturnValue(signer), + }; + const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } } }); + + render( + + + + + , + ); + + fireEvent.click(screen.getByRole("button", { name: /connect keplr/i })); + + await waitFor(() => expect(screen.getByRole("button", { name: /qa wallet/i })).toBeTruthy()); + + expect(screen.queryByText(/No wallet connected/i)).toBeNull(); + expect(screen.getByText(/Connected wallet:/i).textContent).toContain("LP balances are unknown until queried from verified pool denoms."); + }); +}); diff --git a/frontend/src/components/common/RiskNotice.tsx b/frontend/src/components/common/RiskNotice.tsx index d4dee2629..86dd1fc49 100644 --- a/frontend/src/components/common/RiskNotice.tsx +++ b/frontend/src/components/common/RiskNotice.tsx @@ -1,7 +1,7 @@ -export function RiskNotice() { +export function RiskNotice({ variant = "full" }: { variant?: "full" | "compact" }) { return ( -