├── .changeset
├── README.md
└── config.json
├── .github
├── CODEOWNERS
└── workflows
│ ├── eslint.yml
│ ├── publish.yml
│ ├── release-web-component.yml
│ ├── sync-staging.yml
│ ├── tests.yml
│ └── widget-tests.yml
├── .gitignore
├── .gitmodules
├── .vscode
└── settings.json
├── .yarn
├── plugins
│ └── @yarnpkg
│ │ ├── plugin-typescript.cjs
│ │ └── plugin-workspace-tools.cjs
└── releases
│ └── yarn-3.2.3.cjs
├── .yarnrc.yml
├── AGENTS.md
├── LICENSE.txt
├── README.md
├── RELEASE_PROCESS.md
├── docs
├── advanced-swapping
│ ├── allow_unsafe-preventing-handling-bad-execution.mdx
│ ├── safe-swapping-how-to-protect-users-from-harming-themselves.mdx
│ ├── smart-swap-options.mdx
│ └── understanding-quote-quality-metrics.mdx
├── advanced-transfer
│ ├── cw20-swaps.mdx
│ ├── evm-transactions.mdx
│ ├── experimental-features.mdx
│ ├── go-fast.mdx
│ ├── handling-cross-chain-failure-cases.mdx
│ ├── ibc-routing-algorithm.mdx
│ ├── interpreting-transaction-status.mdx
│ └── svm-transaction-details.mdx
├── anything-anywhere
│ └── how-to-generate-shareable-links.mdx
├── api-reference
│ ├── error-codes.mdx
│ └── prod
│ │ ├── fungible
│ │ ├── get-v2fungibleassets.mdx
│ │ ├── get-v2fungiblevenues.mdx
│ │ ├── post-v2fungibleassets_between_chains.mdx
│ │ ├── post-v2fungibleassets_from_source.mdx
│ │ ├── post-v2fungibleibc_origin_assets.mdx
│ │ ├── post-v2fungiblemsgs.mdx
│ │ ├── post-v2fungiblemsgs_direct.mdx
│ │ └── post-v2fungibleroute.mdx
│ │ ├── info
│ │ ├── get-v2infobridges.mdx
│ │ ├── get-v2infochains.mdx
│ │ └── post-v2infobalances.mdx
│ │ └── transaction
│ │ ├── get-v2txstatus.mdx
│ │ ├── post-v2txsubmit.mdx
│ │ └── post-v2txtrack.mdx
├── client
│ ├── advanced-features.mdx
│ ├── balance-gas-and-fee-tooling.mdx
│ ├── executing-a-route.mdx
│ ├── getting-started.mdx
│ └── migration-guide.mdx
├── docs.json
├── eureka
│ ├── contract-addresses.mdx
│ ├── custom-erc20-integration.mdx
│ ├── eureka-overview.mdx
│ ├── eureka-tech-overview.mdx
│ ├── integration-guide.mdx
│ └── security-properties.mdx
├── favicon.ico
├── favicon.png
├── general
│ ├── affiliate-fees.mdx
│ ├── api-keys.mdx
│ ├── faq.mdx
│ ├── fee-info.mdx
│ ├── getting-started.mdx
│ ├── multi-chain-realtime-transaction-and-packet-tracking.mdx
│ ├── overview-and-typical-usage.mdx
│ ├── post-route-actions.mdx
│ ├── quickstart-guide.mdx
│ ├── smart-relay.mdx
│ ├── supported-ecosystems-and-bridges.mdx
│ └── upcoming-features.mdx
├── images
│ ├── 12bf3f9-Screen_Shot_2023-07-25_at_3.26.30_PM.png
│ ├── 2.png
│ ├── 2477aba-Screen_Shot_2023-07-25_at_3.48.15_PM.png
│ ├── 3dde446-case3.jpg
│ ├── 3ff1176-Screen_Shot_2023-07-25_at_11.46.38_AM.png
│ ├── 443a393-Screen_Shot_2023-07-25_at_11.46.47_AM.png
│ ├── 51dc78a-Screen_Shot_2023-07-25_at_3.04.14_PM.png
│ ├── 568550d-case2.jpg
│ ├── 5b993ce-swap-warning-image.png
│ ├── 5c93590-error-type-2.png
│ ├── 66a9d2b-Screen_Shot_2023-07-25_at_9.50.00_AM.png
│ ├── 6744b96-error-1-diagram.png
│ ├── 78d8d3f-CleanShot_2024-05-23_at_15.33.182x.png
│ ├── 9afddc0-case1.jpg
│ ├── a61a075-swap-warning-page-image.png
│ ├── a83beaf-CleanShot_2024-05-23_at_15.59.452x.png
│ ├── b42b522-CleanShot_2024-05-23_at_15.38.522x.png
│ ├── ca61685-CleanShot_2024-05-23_at_15.28.242x.png
│ ├── cc4fe76-Screenshot_2024-03-07_at_9.12.25_AM.png
│ ├── eb72804-Screen_Shot_2023-07-25_at_3.59.53_PM.png
│ ├── go-banner.svg
│ └── shareable-links.png
├── legal-and-privacy
│ ├── privacy-policy.mdx
│ └── terms-of-service.mdx
├── logo
│ ├── dark.svg
│ └── light.svg
├── release-notes
│ ├── api.mdx
│ ├── client.mdx
│ ├── overview.mdx
│ └── widget.mdx
├── style.css
├── support-requirements
│ ├── chain-support-requirements.mdx
│ ├── swap-venue-requirements.mdx
│ └── token-support-requirements.mdx
├── swagger.yml
└── widget
│ ├── configuration.mdx
│ ├── connected-wallet.mdx
│ ├── faq.mdx
│ ├── getting-started.mdx
│ ├── migration-guide.mdx
│ └── web-component.mdx
├── examples
├── client
│ ├── README.md
│ ├── index.ts
│ ├── package.json
│ ├── stats.html
│ └── vite.config.mjs
├── nextjs
│ ├── .gitignore
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── next.config.ts
│ ├── package.json
│ ├── public
│ │ ├── gobg-dark.svg
│ │ └── gobg-light.svg
│ ├── src
│ │ ├── app
│ │ │ ├── globals.css
│ │ │ ├── injected
│ │ │ │ └── page.tsx
│ │ │ ├── layout.tsx
│ │ │ └── page.tsx
│ │ └── hooks
│ │ │ └── useURLQueryParams.tsx
│ ├── tsconfig.json
│ └── window.d.ts
├── nuxtjs
│ ├── .gitignore
│ ├── README.md
│ ├── app.vue
│ ├── nuxt.config.ts
│ ├── package.json
│ ├── plugins
│ │ └── skip-widget.client.ts
│ ├── public
│ │ ├── favicon.ico
│ │ └── robots.txt
│ ├── server
│ │ └── tsconfig.json
│ └── tsconfig.json
└── raw-html.html
├── local_vendor
├── OPinit
│ └── proto
│ │ └── opinit
│ │ └── ophost
│ │ └── v1
│ │ ├── tx.proto
│ │ └── types.proto
└── initia
│ └── proto
│ └── initia
│ └── move
│ └── v1
│ └── tx.proto
├── package.json
├── packages
├── client
│ ├── .eslintrc.cjs
│ ├── CHANGELOG.md
│ ├── Makefile
│ ├── README.md
│ ├── e2e
│ │ └── utils.ts
│ ├── generateTypes.mjs
│ ├── jest.config.cjs
│ ├── package.json
│ ├── scripts
│ │ ├── codegen.cjs
│ │ ├── dev-setup.sh
│ │ ├── port-forward.sh
│ │ └── prepublish.cjs
│ ├── src
│ │ ├── __test__
│ │ │ ├── client.test.ts
│ │ │ └── convert.test.ts
│ │ ├── amino
│ │ │ ├── README.md
│ │ │ ├── addresses.ts
│ │ │ ├── encoding.ts
│ │ │ ├── pubkey.ts
│ │ │ └── signature.ts
│ │ ├── api
│ │ │ ├── getAssets.ts
│ │ │ ├── getAssetsBetweenChains.ts
│ │ │ ├── getBridges.ts
│ │ │ ├── getChains.ts
│ │ │ ├── getVenues.ts
│ │ │ ├── postAssetsFromSource.ts
│ │ │ ├── postBalances.ts
│ │ │ ├── postIbcOriginAssets.ts
│ │ │ ├── postMessages.ts
│ │ │ ├── postMessagesDirect.ts
│ │ │ ├── postRecommendAssets.ts
│ │ │ ├── postRoute.ts
│ │ │ ├── postSubmit.ts
│ │ │ ├── postSubmitTransaction.ts
│ │ │ ├── postTrackTransaction.ts
│ │ │ └── postTransactionStatus.ts
│ │ ├── chains.ts
│ │ ├── codegen
│ │ │ ├── .gitkeep
│ │ │ ├── amino
│ │ │ │ └── amino.ts
│ │ │ ├── chains.json
│ │ │ ├── circle
│ │ │ │ ├── cctp
│ │ │ │ │ └── v1
│ │ │ │ │ │ ├── attester.ts
│ │ │ │ │ │ ├── burn_message.ts
│ │ │ │ │ │ ├── burning_and_minting_paused.ts
│ │ │ │ │ │ ├── events.ts
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── max_message_body_size.ts
│ │ │ │ │ │ ├── message.ts
│ │ │ │ │ │ ├── nonce.ts
│ │ │ │ │ │ ├── per_message_burn_limit.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── remote_token_messenger.ts
│ │ │ │ │ │ ├── sending_and_receiving_messages_paused.ts
│ │ │ │ │ │ ├── signature_threshold.ts
│ │ │ │ │ │ ├── token_pair.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ └── client.ts
│ │ │ ├── cosmos
│ │ │ │ ├── app
│ │ │ │ │ ├── runtime
│ │ │ │ │ │ └── v1alpha1
│ │ │ │ │ │ │ └── module.ts
│ │ │ │ │ └── v1alpha1
│ │ │ │ │ │ ├── config.ts
│ │ │ │ │ │ ├── module.ts
│ │ │ │ │ │ └── query.ts
│ │ │ │ ├── auth
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── auth.ts
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── authz
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── authz.ts
│ │ │ │ │ │ ├── event.ts
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── autocli
│ │ │ │ │ └── v1
│ │ │ │ │ │ ├── options.ts
│ │ │ │ │ │ └── query.ts
│ │ │ │ ├── bank
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── authz.ts
│ │ │ │ │ │ ├── bank.ts
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── base
│ │ │ │ │ ├── abci
│ │ │ │ │ │ └── v1beta1
│ │ │ │ │ │ │ └── abci.ts
│ │ │ │ │ ├── kv
│ │ │ │ │ │ └── v1beta1
│ │ │ │ │ │ │ └── kv.ts
│ │ │ │ │ ├── node
│ │ │ │ │ │ └── v1beta1
│ │ │ │ │ │ │ └── query.ts
│ │ │ │ │ ├── query
│ │ │ │ │ │ └── v1beta1
│ │ │ │ │ │ │ └── pagination.ts
│ │ │ │ │ ├── reflection
│ │ │ │ │ │ ├── v1beta1
│ │ │ │ │ │ │ └── reflection.ts
│ │ │ │ │ │ └── v2alpha1
│ │ │ │ │ │ │ └── reflection.ts
│ │ │ │ │ ├── snapshots
│ │ │ │ │ │ └── v1beta1
│ │ │ │ │ │ │ └── snapshot.ts
│ │ │ │ │ ├── store
│ │ │ │ │ │ └── v1beta1
│ │ │ │ │ │ │ ├── commit_info.ts
│ │ │ │ │ │ │ └── listening.ts
│ │ │ │ │ ├── tendermint
│ │ │ │ │ │ └── v1beta1
│ │ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ │ └── types.ts
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ └── coin.ts
│ │ │ │ ├── capability
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── capability.ts
│ │ │ │ │ │ └── genesis.ts
│ │ │ │ ├── client.ts
│ │ │ │ ├── consensus
│ │ │ │ │ └── v1
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── crisis
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── crypto
│ │ │ │ │ ├── ed25519
│ │ │ │ │ │ └── keys.ts
│ │ │ │ │ ├── hd
│ │ │ │ │ │ └── v1
│ │ │ │ │ │ │ └── hd.ts
│ │ │ │ │ ├── keyring
│ │ │ │ │ │ └── v1
│ │ │ │ │ │ │ └── record.ts
│ │ │ │ │ ├── multisig
│ │ │ │ │ │ ├── keys.ts
│ │ │ │ │ │ └── v1beta1
│ │ │ │ │ │ │ └── multisig.ts
│ │ │ │ │ ├── secp256k1
│ │ │ │ │ │ └── keys.ts
│ │ │ │ │ └── secp256r1
│ │ │ │ │ │ └── keys.ts
│ │ │ │ ├── distribution
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── distribution.ts
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── evidence
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── evidence.ts
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── feegrant
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── feegrant.ts
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── genutil
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ └── genesis.ts
│ │ │ │ ├── gov
│ │ │ │ │ ├── v1
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── gov.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── gov.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── group
│ │ │ │ │ └── v1
│ │ │ │ │ │ ├── events.ts
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ ├── tx.ts
│ │ │ │ │ │ └── types.ts
│ │ │ │ ├── mint
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── mint.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── msg
│ │ │ │ │ └── v1
│ │ │ │ │ │ └── msg.ts
│ │ │ │ ├── nft
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── event.ts
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── nft.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── orm
│ │ │ │ │ ├── query
│ │ │ │ │ │ └── v1alpha1
│ │ │ │ │ │ │ └── query.ts
│ │ │ │ │ ├── v1
│ │ │ │ │ │ └── orm.ts
│ │ │ │ │ └── v1alpha1
│ │ │ │ │ │ └── schema.ts
│ │ │ │ ├── params
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── params.ts
│ │ │ │ │ │ └── query.ts
│ │ │ │ ├── query
│ │ │ │ │ └── v1
│ │ │ │ │ │ └── query.ts
│ │ │ │ ├── reflection
│ │ │ │ │ └── v1
│ │ │ │ │ │ └── reflection.ts
│ │ │ │ ├── slashing
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── slashing.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── staking
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── authz.ts
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── staking.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── tx
│ │ │ │ │ ├── config
│ │ │ │ │ │ └── v1
│ │ │ │ │ │ │ └── config.ts
│ │ │ │ │ ├── signing
│ │ │ │ │ │ └── v1beta1
│ │ │ │ │ │ │ └── signing.ts
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── service.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── upgrade
│ │ │ │ │ └── v1beta1
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ ├── tx.ts
│ │ │ │ │ │ └── upgrade.ts
│ │ │ │ └── vesting
│ │ │ │ │ └── v1beta1
│ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ ├── tx.ts
│ │ │ │ │ └── vesting.ts
│ │ │ ├── cosmos_proto
│ │ │ │ └── cosmos.ts
│ │ │ ├── ethermint
│ │ │ │ ├── client.ts
│ │ │ │ ├── crypto
│ │ │ │ │ └── v1
│ │ │ │ │ │ └── ethsecp256k1
│ │ │ │ │ │ └── keys.ts
│ │ │ │ ├── evm
│ │ │ │ │ └── v1
│ │ │ │ │ │ ├── events.ts
│ │ │ │ │ │ ├── evm.ts
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── feemarket
│ │ │ │ │ └── v1
│ │ │ │ │ │ ├── events.ts
│ │ │ │ │ │ ├── feemarket.ts
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ └── types
│ │ │ │ │ └── v1
│ │ │ │ │ ├── account.ts
│ │ │ │ │ ├── dynamic_fee.ts
│ │ │ │ │ ├── indexer.ts
│ │ │ │ │ └── web3.ts
│ │ │ ├── evmos
│ │ │ │ ├── client.ts
│ │ │ │ ├── epochs
│ │ │ │ │ └── v1
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ └── query.ts
│ │ │ │ ├── erc20
│ │ │ │ │ └── v1
│ │ │ │ │ │ ├── erc20.ts
│ │ │ │ │ │ ├── events.ts
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── incentives
│ │ │ │ │ └── v1
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ └── incentives.ts
│ │ │ │ ├── inflation
│ │ │ │ │ └── v1
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── inflation.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ ├── revenue
│ │ │ │ │ └── v1
│ │ │ │ │ │ ├── events.ts
│ │ │ │ │ │ ├── genesis.ts
│ │ │ │ │ │ ├── query.ts
│ │ │ │ │ │ ├── revenue.ts
│ │ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ │ └── tx.ts
│ │ │ │ └── vesting
│ │ │ │ │ ├── v1
│ │ │ │ │ └── vesting.ts
│ │ │ │ │ └── v2
│ │ │ │ │ ├── events.ts
│ │ │ │ │ ├── query.ts
│ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ ├── tx.ts
│ │ │ │ │ └── vesting.ts
│ │ │ ├── gogoproto
│ │ │ │ └── gogo.ts
│ │ │ ├── google
│ │ │ │ ├── api
│ │ │ │ │ ├── annotations.ts
│ │ │ │ │ └── http.ts
│ │ │ │ └── protobuf
│ │ │ │ │ ├── any.ts
│ │ │ │ │ ├── descriptor.ts
│ │ │ │ │ ├── duration.ts
│ │ │ │ │ ├── empty.ts
│ │ │ │ │ └── timestamp.ts
│ │ │ ├── helpers.ts
│ │ │ ├── initia
│ │ │ │ ├── client.ts
│ │ │ │ └── move
│ │ │ │ │ └── v1
│ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ └── tx.ts
│ │ │ ├── json-safe.ts
│ │ │ ├── opinit
│ │ │ │ ├── client.ts
│ │ │ │ └── ophost
│ │ │ │ │ └── v1
│ │ │ │ │ ├── tx.amino.ts
│ │ │ │ │ ├── tx.registry.ts
│ │ │ │ │ ├── tx.ts
│ │ │ │ │ └── types.ts
│ │ │ └── tendermint
│ │ │ │ ├── abci
│ │ │ │ └── types.ts
│ │ │ │ ├── crypto
│ │ │ │ ├── keys.ts
│ │ │ │ └── proof.ts
│ │ │ │ ├── libs
│ │ │ │ └── bits
│ │ │ │ │ └── types.ts
│ │ │ │ ├── p2p
│ │ │ │ └── types.ts
│ │ │ │ ├── types
│ │ │ │ ├── block.ts
│ │ │ │ ├── evidence.ts
│ │ │ │ ├── params.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── validator.ts
│ │ │ │ └── version
│ │ │ │ └── types.ts
│ │ ├── constants
│ │ │ ├── abis.ts
│ │ │ └── constants.ts
│ │ ├── index.ts
│ │ ├── injective
│ │ │ └── index.ts
│ │ ├── private-functions
│ │ │ ├── cosmos
│ │ │ │ ├── executeCosmosTransaction.ts
│ │ │ │ ├── getEncodeObjectFromCosmosMessage.ts
│ │ │ │ ├── signCosmosMessageAmino.ts
│ │ │ │ ├── signCosmosMessageDirect.ts
│ │ │ │ ├── signCosmosMessageDirectEvmos.ts
│ │ │ │ ├── signCosmosMessageDirectInjective.ts
│ │ │ │ ├── signCosmosTransaction.ts
│ │ │ │ └── validateCosmosGasBalance.ts
│ │ │ ├── evm
│ │ │ │ ├── executeEvmTransaction.ts
│ │ │ │ ├── validateEvmGasBalance.ts
│ │ │ │ └── validateEvmTokenApproval.ts
│ │ │ ├── executeTransactions.ts
│ │ │ ├── getAccountNumberAndSequence.ts
│ │ │ ├── getDefaultGasTokenForChain.ts
│ │ │ ├── getMainnetAndTestnetAssets.ts
│ │ │ ├── getMainnetAndTestnetChains.ts
│ │ │ ├── getRestEndpointForChain.ts
│ │ │ ├── getRpcEndpointForChain.ts
│ │ │ ├── svm
│ │ │ │ ├── executeSvmTransaction.ts
│ │ │ │ ├── signSvmTransaction.ts
│ │ │ │ └── validateSvmGasBalance.ts
│ │ │ └── validateGasBalances.ts
│ │ ├── proto-signing
│ │ │ ├── README.md
│ │ │ ├── pubkey.ts
│ │ │ └── signer.ts
│ │ ├── public-functions
│ │ │ ├── executeRoute.ts
│ │ │ ├── getCosmosGasAmountForMessage.ts
│ │ │ ├── getEvmGasAmountForMessage.ts
│ │ │ ├── getFeeInfoForChain.ts
│ │ │ ├── getRecommendedGasPrice.ts
│ │ │ ├── getSigningStargateClient.ts
│ │ │ ├── setApiOptions.ts
│ │ │ ├── setClientOptions.ts
│ │ │ └── waitForTransaction.ts
│ │ ├── registry.ts
│ │ ├── state
│ │ │ ├── apiState.ts
│ │ │ └── clientState.ts
│ │ ├── stride
│ │ │ └── index.ts
│ │ ├── types
│ │ │ ├── callbacks.ts
│ │ │ ├── client-types.ts
│ │ │ ├── index.ts
│ │ │ ├── swaggerTypes.ts
│ │ │ └── swaggerTypesJson.ts
│ │ └── utils
│ │ │ ├── convert.ts
│ │ │ ├── filterMessagesRequest.ts
│ │ │ ├── generateApi.ts
│ │ │ └── timer.ts
│ ├── starship
│ │ ├── ci.yaml
│ │ └── local.yaml
│ ├── tsconfig.build.json
│ ├── tsconfig.json
│ ├── tsup.config.ts
│ ├── vitest.config.mjs
│ ├── vitest.e2e.config.mjs
│ └── vitest.unit.config.mjs
└── widget
│ ├── .env.example
│ ├── .storybook
│ ├── main.ts
│ └── preview.tsx
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__
│ ├── Keplr.test.tsx
│ ├── Widget
│ │ ├── both-assets-selected.png
│ │ ├── connect-keplr.png
│ │ ├── default-widget.png
│ │ └── usdc-noble-selected.png
│ └── setup
│ │ ├── globalSetup.ts
│ │ ├── helpers.ts
│ │ ├── keplr.ts
│ │ ├── playwright.ts
│ │ ├── types.ts
│ │ └── utils.ts
│ ├── eslint.config.mjs
│ ├── index.html
│ ├── package.json
│ ├── playwright.config.ts
│ ├── scripts
│ ├── generate-chains.cjs
│ └── prepublish.cjs
│ ├── setupTests.ts
│ ├── src
│ ├── components
│ │ ├── Button.tsx
│ │ ├── EvmDisclaimer.tsx
│ │ ├── GoFastSymbol.tsx
│ │ ├── GroupedAssetImage.tsx
│ │ ├── Layout.tsx
│ │ ├── MainButton.tsx
│ │ ├── Modal.tsx
│ │ ├── ModalHeader.tsx
│ │ ├── ModalRowItem.tsx
│ │ ├── PageHeader.tsx
│ │ ├── RenderWalletList.tsx
│ │ ├── Skeleton.tsx
│ │ ├── Tooltip.tsx
│ │ ├── Typography.tsx
│ │ └── VirtualList.tsx
│ ├── constants
│ │ ├── abis.ts
│ │ ├── chains.ts
│ │ ├── cosmosChains
│ │ │ ├── explorers.json
│ │ │ ├── mainnet.json
│ │ │ └── testnet.json
│ │ ├── graz.ts
│ │ ├── skipClientDefault.ts
│ │ ├── solana.ts
│ │ ├── wagmi.ts
│ │ └── widget.ts
│ ├── devMode
│ │ ├── global.css
│ │ └── loadWidget.tsx
│ ├── fonts
│ │ ├── ABCDiatype-Bold.woff2
│ │ ├── ABCDiatype-Medium.woff2
│ │ ├── ABCDiatype-Regular copy.woff2
│ │ ├── ABCDiatype-Regular.woff2
│ │ └── ABCDiatypeMono-Medium.woff2
│ ├── hooks
│ │ ├── useAutoSetAddress.ts
│ │ ├── useCW20Balance.ts
│ │ ├── useCopyAddress.ts
│ │ ├── useCosmosFeeAssetValidation.ts
│ │ ├── useCreateCosmosWallets.tsx
│ │ ├── useCreateEvmWallets.tsx
│ │ ├── useCreateSolanaWallets.tsx
│ │ ├── useFetchAllBalances.ts
│ │ ├── useGetAccount.ts
│ │ ├── useGetAssetDetails.tsx
│ │ ├── useGetBalance.ts
│ │ ├── useGetSourceBalance.ts
│ │ ├── useInjectFontsToDocumentHead.ts
│ │ ├── useIsGoFast.ts
│ │ ├── useIsMobileScreenSize.ts
│ │ ├── useKeepWalletStateSynced.ts
│ │ ├── useMobileRouteConfig.ts
│ │ ├── usePreventPageUnload.ts
│ │ ├── usePrimaryChainIdForChainType.ts
│ │ ├── useSettingsChanged.ts
│ │ ├── useSettingsDrawer.tsx
│ │ ├── useShowCosmosLedgerWarning.ts
│ │ ├── useSwitchEvmChain.tsx
│ │ ├── useTxHistory.ts
│ │ ├── useUpdateSourceAssetToDefaultForChainType.ts
│ │ └── useWalletList.tsx
│ ├── icons
│ │ ├── ArrowIcon.tsx
│ │ ├── BridgeArrowIcon.tsx
│ │ ├── BridgeIcon.tsx
│ │ ├── ChainIcon.tsx
│ │ ├── CheckmarkIcon.tsx
│ │ ├── ChevronIcon.tsx
│ │ ├── CogIcon.tsx
│ │ ├── CopyIcon.tsx
│ │ ├── FilledWarningIcon.tsx
│ │ ├── GasIcon.tsx
│ │ ├── GoFastIcon.tsx
│ │ ├── HamburgerIcon.tsx
│ │ ├── HistoryArrowIcon.tsx
│ │ ├── HistoryIcon.tsx
│ │ ├── HorizontalLineIcon.tsx
│ │ ├── LightningIcon.tsx
│ │ ├── PenIcon.tsx
│ │ ├── PlusIcon.tsx
│ │ ├── QuestionMarkIcon.tsx
│ │ ├── RouteArrow.tsx
│ │ ├── SearchIcon.tsx
│ │ ├── SignatureIcon.tsx
│ │ ├── SkipLogoIcon.tsx
│ │ ├── SpeedometerIcon.tsx
│ │ ├── SpinnerIcon.tsx
│ │ ├── SwapExecutionBridgeIcon.tsx
│ │ ├── SwapExecutionSendIcon.tsx
│ │ ├── SwapExecutionSwapIcon.tsx
│ │ ├── SwapIcon.tsx
│ │ ├── ThinArrowIcon.tsx
│ │ ├── TinyTriangleIcon.tsx
│ │ ├── TrashIcon.tsx
│ │ ├── TriangleWarningIcon.tsx
│ │ ├── WarningIcon.tsx
│ │ ├── XIcon.tsx
│ │ └── index.tsx
│ ├── index.tsx
│ ├── modals
│ │ ├── AssetAndChainSelectorModal
│ │ │ ├── AssetAndChainSelectorModal.tsx
│ │ │ ├── AssetAndChainSelectorModalRowItem.tsx
│ │ │ ├── AssetAndChainSelectorModalSearchInput.tsx
│ │ │ ├── useFilteredAssets.ts
│ │ │ ├── useFilteredChains.ts
│ │ │ └── useGroupedAssetsByRecommendedSymbol.ts
│ │ ├── ConnectedWalletModal
│ │ │ ├── ConnectEcoRow.tsx
│ │ │ ├── ConnectedWalletModal.tsx
│ │ │ └── EcosystemConnectors.tsx
│ │ ├── SetAddressModal
│ │ │ ├── SetAddressModal.tsx
│ │ │ └── isValidWalletAddress.ts
│ │ ├── SwapSettingsDrawer
│ │ │ └── SwapSettingsDrawer.tsx
│ │ ├── WalletSelectorModal
│ │ │ └── WalletSelectorModal.tsx
│ │ └── registerModals.ts
│ ├── pages
│ │ ├── ErrorWarningPage
│ │ │ ├── ErrorWarningPage.tsx
│ │ │ ├── ErrorWarningPageContent.tsx
│ │ │ ├── ExpectedErrorPage
│ │ │ │ ├── ExpectedErrorPageAuthFailed.tsx
│ │ │ │ ├── ExpectedErrorPageInsufficientGasBalance.tsx
│ │ │ │ └── ExpectedErrorPageRelayFeeQuoteExpired.tsx
│ │ │ ├── UnexpectedErrorPage
│ │ │ │ ├── UnexpectedErrorPageTimeout.tsx
│ │ │ │ ├── UnexpectedErrorPageTransactionFailed.tsx
│ │ │ │ ├── UnexpectedErrorPageTransactionReverted.tsx
│ │ │ │ └── UnexpectedErrorPageUnexpected.tsx
│ │ │ └── WarningPage
│ │ │ │ ├── WarningPageBadPrice.tsx
│ │ │ │ ├── WarningPageCosmosLedger.tsx
│ │ │ │ ├── WarningPageGoFast.tsx
│ │ │ │ ├── WarningPageLowInfo.tsx
│ │ │ │ └── WarningPageTradeAdditionalSigningRequired.tsx
│ │ ├── SwapExecutionPage
│ │ │ ├── SwapExecutionButton.tsx
│ │ │ ├── SwapExecutionPage.tsx
│ │ │ ├── SwapExecutionPageRouteDetailed.tsx
│ │ │ ├── SwapExecutionPageRouteDetailedRow.tsx
│ │ │ ├── SwapExecutionPageRouteSimple.tsx
│ │ │ ├── SwapExecutionPageRouteSimpleRow.tsx
│ │ │ ├── useBroadcastedTxs.ts
│ │ │ ├── useCountdown.ts
│ │ │ ├── useHandleTransactionFailed.tsx
│ │ │ ├── useHandleTransactionTimeout.tsx
│ │ │ ├── useIsGasStationTx.tsx
│ │ │ ├── useSwapExecutionState.ts
│ │ │ └── useSyncTxStatus.tsx
│ │ ├── SwapPage
│ │ │ ├── ConnectedWalletContent.tsx
│ │ │ ├── RoutePreferenceSelector.tsx
│ │ │ ├── SlippageSelector.tsx
│ │ │ ├── SwapPage.tsx
│ │ │ ├── SwapPageAssetChainInput.tsx
│ │ │ ├── SwapPageBridge.tsx
│ │ │ ├── SwapPageFooter.tsx
│ │ │ ├── SwapPageHeader.tsx
│ │ │ ├── useCleanupDebouncedAtoms.ts
│ │ │ ├── useConnectToMissingCosmosChain.ts
│ │ │ ├── useSetMaxAmount.ts
│ │ │ └── useUpdateAmountWhenRouteChanges.ts
│ │ └── TransactionHistoryPage
│ │ │ ├── TransactionHistoryPage.tsx
│ │ │ ├── TransactionHistoryPageHistoryItem.tsx
│ │ │ └── TransactionHistoryPageHistoryItemDetails.tsx
│ ├── providers
│ │ ├── CosmosProvider.tsx
│ │ └── EVMProvider.tsx
│ ├── state
│ │ ├── assetSymbolsSortedToTop.ts
│ │ ├── balances.ts
│ │ ├── callbacks.ts
│ │ ├── errorWarning.ts
│ │ ├── filters.ts
│ │ ├── hideAssetsUnlessWalletTypeConnected.ts
│ │ ├── history.ts
│ │ ├── ibcEurekaHighlightedAssets.ts
│ │ ├── localStorageKeys.ts
│ │ ├── route.ts
│ │ ├── router.ts
│ │ ├── settingsDrawer.ts
│ │ ├── skipClient.ts
│ │ ├── swapExecutionPage.ts
│ │ ├── swapPage.ts
│ │ ├── types.ts
│ │ └── wallets.ts
│ ├── stories
│ │ ├── AssetChainInput.stories.tsx
│ │ ├── ErrorPage.stories.tsx
│ │ ├── ErrorState.stories.tsx
│ │ ├── GhostButton.stories.tsx
│ │ ├── MainButton.stories.tsx
│ │ ├── Modal.stories.tsx
│ │ ├── ModalRowItem.stories.tsx
│ │ ├── SetAddressModals.stories.tsx
│ │ ├── SwapExecutionPage.stories.tsx
│ │ ├── SwapPage.stories.tsx
│ │ ├── TokenAndChainSelectorModal.stories.tsx
│ │ ├── VirtualList.stories.tsx
│ │ ├── WalletSelectorModal.stories.tsx
│ │ ├── Widget.stories.tsx
│ │ ├── exampleOperations.json
│ │ ├── renderLightAndDarkTheme.tsx
│ │ └── tx_history.json
│ ├── utils
│ │ ├── atomWithDebounce.ts
│ │ ├── bech32.ts
│ │ ├── clientType.test.ts
│ │ ├── clientType.ts
│ │ ├── colors.ts
│ │ ├── countdownTimer.ts
│ │ ├── crypto.test.ts
│ │ ├── crypto.ts
│ │ ├── date.test.ts
│ │ ├── date.ts
│ │ ├── error.ts
│ │ ├── explorerLink.ts
│ │ ├── intl.ts
│ │ ├── migrateOldLocalStorageValues.ts
│ │ ├── misc.tsx
│ │ ├── number.test.ts
│ │ ├── number.ts
│ │ ├── os.ts
│ │ ├── route.ts
│ │ └── transitions.ts
│ ├── vite-env.d.ts
│ ├── web-component.tsx
│ └── widget
│ │ ├── Router.tsx
│ │ ├── ShadowDomAndProviders.tsx
│ │ ├── Widget.tsx
│ │ ├── initAmplitude.ts
│ │ ├── initSentry.ts
│ │ ├── theme.ts
│ │ ├── useInitDefaultRoute.ts
│ │ └── useInitWidget.ts
│ ├── tsconfig.json
│ ├── tsconfig.webpack.json
│ ├── vite.config.ts
│ ├── web-component
│ ├── README.md
│ ├── index.d.ts
│ ├── package.json
│ └── syncVersion.cjs
│ └── webpack.config.js
├── vendor
└── index.js
└── yarn.lock
/.changeset/README.md:
--------------------------------------------------------------------------------
1 | # Changesets
2 |
3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4 | with multi-package repos, or single-package repos to help you version and publish your code. You can
5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets)
6 |
7 | We have a quick list of common questions to get you started engaging with this project in
8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
9 |
--------------------------------------------------------------------------------
/.changeset/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://unpkg.com/@changesets/config@3.0.1/schema.json",
3 | "changelog": "@changesets/cli/changelog",
4 | "commit": false,
5 | "fixed": [],
6 | "linked": [],
7 | "access": "restricted",
8 | "baseBranch": "main",
9 | "updateInternalDependencies": "patch",
10 | "ignore": []
11 | }
12 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @codingki @NotJeremyLiu @toddkao @ericHgorski @daps94
2 |
--------------------------------------------------------------------------------
/.github/workflows/eslint.yml:
--------------------------------------------------------------------------------
1 | name: ESLint Widget
2 |
3 | on:
4 | pull_request:
5 | paths:
6 | - 'packages/widget/**'
7 |
8 | jobs:
9 | eslint:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v3
13 | - uses: actions/setup-node@v4
14 | with:
15 | node-version: lts/*
16 | cache: 'yarn'
17 | cache-dependency-path: yarn.lock
18 | - name: Install dependencies
19 | run: YARN_ENABLE_SCRIPTS=false yarn install --immutable
20 | working-directory: packages/widget
21 | - name: Run ESLint
22 | run: yarn lint
23 | working-directory: packages/widget
24 |
--------------------------------------------------------------------------------
/.github/workflows/publish.yml:
--------------------------------------------------------------------------------
1 | name: Release
2 |
3 | on:
4 | workflow_dispatch:
5 | push:
6 | branches:
7 | - main
8 |
9 | concurrency: ${{ github.workflow }}-${{ github.ref }}
10 |
11 | permissions:
12 | actions: write
13 | contents: write
14 | id-token: write
15 | pull-requests: write
16 |
17 | jobs:
18 | release:
19 | name: Release
20 | runs-on: ubuntu-latest
21 | steps:
22 | - name: Checkout Repo
23 | uses: actions/checkout@v3
24 |
25 | - uses: actions/setup-node@v4
26 | with:
27 | node-version: lts/*
28 | cache: 'yarn'
29 | cache-dependency-path: yarn.lock
30 |
31 | - name: Install dependencies
32 | run: YARN_ENABLE_SCRIPTS=false yarn install --immutable
33 |
34 | - name: Create Release Pull Request or Publish to npm
35 | id: changesets
36 | uses: changesets/action@v1
37 | with:
38 | publish: yarn release
39 | env:
40 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
41 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
42 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
43 |
--------------------------------------------------------------------------------
/.github/workflows/release-web-component.yml:
--------------------------------------------------------------------------------
1 |
2 | name: Release Web Component
3 |
4 | on:
5 | push:
6 | branches:
7 | - main
8 |
9 | jobs:
10 | publish:
11 | # Optional: Run only if Changesets released (can check for specific commit message prefix)
12 | if: contains(github.event.head_commit.message, 'Version Packages')
13 | runs-on: ubuntu-latest
14 | steps:
15 | - name: Checkout repository
16 | uses: actions/checkout@v3
17 |
18 | - uses: actions/setup-node@v4
19 | with:
20 | node-version: lts/*
21 | cache: 'yarn'
22 | cache-dependency-path: yarn.lock
23 |
24 | - name: Install dependencies
25 | run: YARN_ENABLE_SCRIPTS=false yarn install --immutable
26 | - name: Build
27 | run: yarn build
28 | - name: Configure .npmrc for authentication
29 | run: echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc
30 | env:
31 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
32 | - name: Publish widget web component
33 | working-directory: packages/widget
34 | run: yarn publish:web-component
35 | env:
36 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
37 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
38 |
--------------------------------------------------------------------------------
/.github/workflows/sync-staging.yml:
--------------------------------------------------------------------------------
1 | name: Sync (Staging)
2 | on:
3 | push:
4 | branches:
5 | - main
6 |
7 | jobs:
8 | sync-branches:
9 | runs-on: ubuntu-latest
10 | name: Syncing branches
11 | steps:
12 | - name: Checkout
13 | uses: actions/checkout@v2
14 | - name: Set up Node
15 | uses: actions/setup-node@v1
16 | with:
17 | node-version: 12
18 | - name: Opening pull request
19 | id: pull
20 | uses: tretuna/sync-branches@1.4.0
21 | with:
22 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
23 | FROM_BRANCH: 'main'
24 | TO_BRANCH: 'staging'
25 | CONTENT_COMPARISON: true
26 |
--------------------------------------------------------------------------------
/.github/workflows/tests.yml:
--------------------------------------------------------------------------------
1 | name: Tests
2 | on:
3 | pull_request:
4 | push:
5 | branches:
6 | - main
7 | - staging
8 |
9 | jobs:
10 | test:
11 | runs-on: ubuntu-latest
12 | steps:
13 | - name: Checkout
14 | uses: actions/checkout@v3
15 |
16 | - uses: actions/setup-node@v4
17 | with:
18 | node-version: lts/*
19 | cache: 'yarn'
20 | cache-dependency-path: yarn.lock
21 |
22 | - name: Fetch submodule
23 | run: git submodule update --init --recursive
24 |
25 | - name: Install dependencies
26 | run: YARN_ENABLE_SCRIPTS=false yarn install --immutable
27 |
28 | - name: Generate cosmjs types
29 | run: yarn run codegen
30 | working-directory: ./packages/client
31 |
32 | - name: Test
33 | run: yarn run test
34 | working-directory: ./packages/client
35 |
--------------------------------------------------------------------------------
/.github/workflows/widget-tests.yml:
--------------------------------------------------------------------------------
1 | name: Widget Tests
2 | on:
3 | pull_request:
4 | push:
5 | branches:
6 | - main
7 | - staging
8 |
9 | jobs:
10 | e2e-test:
11 | timeout-minutes: 20
12 | runs-on: ubuntu-latest
13 | container:
14 | image: mcr.microsoft.com/playwright:v1.52.0-noble
15 | options: --user 1001
16 | ports:
17 | - 5173:5173
18 | env:
19 | PLAYWRIGHT_BROWSERS_PATH: ~/.cache/ms-playwright
20 | steps:
21 | - uses: actions/checkout@v4
22 | - uses: actions/setup-node@v4
23 | with:
24 | node-version: lts/*
25 | cache: 'yarn'
26 | cache-dependency-path: yarn.lock
27 | - name: Cache Playwright browsers
28 | id: playwright-cache
29 | uses: actions/cache@v3
30 | with:
31 | path: ~/.cache/ms-playwright
32 | key: ${{ runner.os }}-playwright-${{ hashFiles('yarn.lock') }}
33 | restore-keys: |
34 | ${{ runner.os }}-playwright-
35 | - name: Install dependencies
36 | run: YARN_ENABLE_SCRIPTS=false yarn install --immutable
37 | - name: Playwright install
38 | working-directory: ./packages/widget
39 | if: steps.playwright-cache.outputs.cache-hit != 'true'
40 | run: yarn playwright install
41 | - name: build client lib
42 | run: yarn run build:client
43 | - name: Run e2e tests
44 | env:
45 | WORD_PHRASE_KEY: ${{ secrets.WORD_PHRASE_KEY }}
46 | run: yarn test-widget
47 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # dependencies
2 | node_modules
3 | /.pnp
4 | .pnp.js
5 |
6 | # testing
7 | /coverage
8 |
9 | # production
10 | dist
11 | lib
12 | main
13 | mjs
14 | module
15 | build
16 | tsconfig.tsbuildinfo
17 |
18 | # misc
19 | .DS_Store
20 | .env.local
21 | .env.development.local
22 | .env.test.local
23 | .env.production.local
24 |
25 | npm-debug.log*
26 | yarn-debug.log*
27 | yarn-error.log*
28 | .yarn/cache
29 | .yarn/install-state.gz
30 |
31 | yalc.lock
32 | .yalc
33 |
34 | .idea
35 | .node_repl_history
36 | .npm
37 | .turbo
38 |
39 | .env
40 |
41 | packages/widget/__tests__/downloads*
42 | packages/widget/test-results*
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "vendor/cosmos-proto"]
2 | path = vendor/cosmos-proto
3 | url = https://github.com/cosmos/cosmos-proto.git
4 | [submodule "vendor/cosmos-sdk"]
5 | path = vendor/cosmos-sdk
6 | url = https://github.com/cosmos/cosmos-sdk.git
7 | [submodule "vendor/evmos"]
8 | path = vendor/evmos
9 | url = https://github.com/evmos/evmos.git
10 | [submodule "vendor/noble-cctp"]
11 | path = vendor/noble-cctp
12 | url = https://github.com/circlefin/noble-cctp.git
13 | [submodule "vendor/wasmd"]
14 | path = vendor/wasmd
15 | url = https://github.com/CosmWasm/wasmd.git
16 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.formatOnSave": true,
3 | "editor.defaultFormatter": "dbaeumer.vscode-eslint",
4 | "editor.tabSize": 2,
5 | "eslint.workingDirectories": [{ "mode": "auto" }],
6 | "editor.codeActionsOnSave": {
7 | "source.fixAll.eslint": "explicit"
8 | },
9 | "eslint.format.enable": true,
10 | "[typescript]": {
11 | "editor.defaultFormatter": "dbaeumer.vscode-eslint"
12 | },
13 | "[typescriptreact]": {
14 | "editor.defaultFormatter": "dbaeumer.vscode-eslint"
15 | },
16 | "[javascript]": {
17 | "editor.defaultFormatter": "dbaeumer.vscode-eslint"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/.yarnrc.yml:
--------------------------------------------------------------------------------
1 | nodeLinker: node-modules
2 |
3 | plugins:
4 | - path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
5 | spec: '@yarnpkg/plugin-workspace-tools'
6 |
7 | yarnPath: .yarn/releases/yarn-3.2.3.cjs
8 |
--------------------------------------------------------------------------------
/AGENTS.md:
--------------------------------------------------------------------------------
1 | # Repository Instructions
2 |
3 | ## All Codex PRs must include a changeset entry.
4 |
5 | 1. From the repository root run `npx changeset`.
6 | 2. Commit the generated file inside `.changeset/` with the rest of your changes.
7 |
8 | ## Testing rules for `packages/widget`
9 |
10 | 1. Name each test file after the file being tested and append the `.test.ts` suffix.
11 | 2. Import testing utilities from `@playwright/test`.
12 | 3. Include multiple test cases in every file.
13 |
14 | ## Best Practices
15 |
16 | 1. Keep PRs focused on a single change.
17 | 2. Write descriptive commit messages in the imperative mood, e.g. "Add widget tests".
18 | 3. Favor small helper functions over repeated logic.
19 | 4. Document complex code with comments.
20 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Skip Go
2 |
3 | ## Project Structure
4 |
5 | ```sh
6 | ├── examples
7 | │ └── nextjs
8 | ├── packages
9 | │ ├── client
10 | │ └── widget
11 | ```
12 |
13 | - `client` (@skip-go/client): The core package of the project. Contains the core logic, api fetch and types, helper functions, signing, etc.
14 | - `widget` (@skip-go/widget): React library that contains the widget component.
15 | - `examples`: The example app of the project
16 |
17 | ### How the package consumed
18 |
19 | `@skip-go/client` -> `@skip-go/widget` -> `examples/nextjs`
20 |
21 | ## Dev Setup
22 |
23 | ### Install dependencies
24 |
25 | ```bash
26 | yarn
27 | ```
28 |
29 | ### Start the development server
30 |
31 | It will run the example app on `http://localhost:3000`
32 |
33 | ```bash
34 | yarn dev
35 | ```
36 |
37 | ### Build the packages
38 |
39 | ```bash
40 | yarn build
41 | ```
42 |
43 | ### Updating changelog
44 |
45 | ```
46 | npx changeset
47 | ```
48 |
49 | ## Docs
50 |
51 | - [Client](./packages/client/README.md)
52 | - [Widget](./packages/widget/README.md)
53 |
54 | ## Examples
55 |
56 | - Widget: https://github.com/skip-mev/go-widget-example-next-js-app
57 | - Client: https://github.com/skip-mev/skip-next-simple-example
58 |
--------------------------------------------------------------------------------
/docs/api-reference/prod/fungible/get-v2fungibleassets.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Get /v2/fungible/assets
3 | openapi: swagger get /v2/fungible/assets
4 | ---
--------------------------------------------------------------------------------
/docs/api-reference/prod/fungible/get-v2fungiblevenues.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Get /v2/fungible/venues
3 | openapi: swagger get /v2/fungible/venues
4 | ---
--------------------------------------------------------------------------------
/docs/api-reference/prod/fungible/post-v2fungibleassets_between_chains.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Post /v2/fungible/assets_between_chains
3 | openapi: swagger post /v2/fungible/assets_between_chains
4 | ---
--------------------------------------------------------------------------------
/docs/api-reference/prod/fungible/post-v2fungibleassets_from_source.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Post /v2/fungible/assets_from_source
3 | openapi: swagger post /v2/fungible/assets_from_source
4 | ---
--------------------------------------------------------------------------------
/docs/api-reference/prod/fungible/post-v2fungibleibc_origin_assets.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Post /v2/fungible/ibc_origin_assets
3 | openapi: swagger post /v2/fungible/ibc_origin_assets
4 | ---
--------------------------------------------------------------------------------
/docs/api-reference/prod/fungible/post-v2fungiblemsgs.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Post /v2/fungible/msgs
3 | openapi: swagger post /v2/fungible/msgs
4 | ---
--------------------------------------------------------------------------------
/docs/api-reference/prod/fungible/post-v2fungiblemsgs_direct.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Post /v2/fungible/msgs_direct
3 | openapi: swagger post /v2/fungible/msgs_direct
4 | ---
--------------------------------------------------------------------------------
/docs/api-reference/prod/fungible/post-v2fungibleroute.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Post /v2/fungible/route
3 | openapi: swagger post /v2/fungible/route
4 | ---
--------------------------------------------------------------------------------
/docs/api-reference/prod/info/get-v2infobridges.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Get /v2/info/bridges
3 | openapi: swagger get /v2/info/bridges
4 | ---
--------------------------------------------------------------------------------
/docs/api-reference/prod/info/get-v2infochains.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Get /v2/info/chains
3 | openapi: swagger get /v2/info/chains
4 | ---
--------------------------------------------------------------------------------
/docs/api-reference/prod/info/post-v2infobalances.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Post /v2/info/balances
3 | openapi: swagger post /v2/info/balances
4 | ---
--------------------------------------------------------------------------------
/docs/api-reference/prod/transaction/get-v2txstatus.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Get /v2/tx/status
3 | openapi: swagger get /v2/tx/status
4 | ---
--------------------------------------------------------------------------------
/docs/api-reference/prod/transaction/post-v2txsubmit.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Post /v2/tx/submit
3 | openapi: swagger post /v2/tx/submit
4 | ---
--------------------------------------------------------------------------------
/docs/api-reference/prod/transaction/post-v2txtrack.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Post /v2/tx/track
3 | openapi: swagger post /v2/tx/track
4 | ---
--------------------------------------------------------------------------------
/docs/client/advanced-features.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: 'Advanced Features'
3 | description: 'This page details advanced features and utilities in the Skip Go client library.'
4 | ---
5 |
6 | ## Adding custom messages before or after route execution
7 |
8 | The `executeRoute` method now accepts `beforeMsg` and `afterMsg` parameter to allow for the execution of custom Cosmos messages before and/or after the route is executed. This is useful for executing custom messages that are not part of the route definition.
9 |
10 |
11 | ```typescript
12 | const msg = JSON.stringify({
13 | fromAddress: 'cosmos1...', // Replace with sender address
14 | toAddress: 'cosmos1...', // Replace with recipient address
15 | amount: [{
16 | denom: 'uatom', // Replace with the actual denom, e.g., 'uatom' for ATOM
17 | amount: '1000000' // Replace with the actual amount (in smallest unit, e.g., micro-ATOM)
18 | }]
19 | });
20 |
21 | await executeRoute({
22 | route,
23 | userAddresses,
24 | beforeMsg: { msg, msgTypeUrl: '/cosmos.bank.v1beta1.MsgSend' }
25 | });
26 | ```
27 | ## Use the Go Fast Transfer system
28 |
29 | The `route` function accepts a `goFast` parameter to enable the Go Fast Transfers. Then pass this route to the `executeRoute` method to execute.
30 | ```typescript
31 | import { executeRoute, route } from '@skip-go/client';
32 |
33 | const route = await route({
34 | goFast: true
35 | ...otherParams,
36 | });
37 |
38 | await executeRoute({
39 | route,
40 | ...otherParams,
41 | });
42 | ```
--------------------------------------------------------------------------------
/docs/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skip-mev/skip-go/72247b2ef65a8c6ba340bf069ad06a0bb36dd43c/docs/favicon.ico
--------------------------------------------------------------------------------
/docs/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skip-mev/skip-go/72247b2ef65a8c6ba340bf069ad06a0bb36dd43c/docs/favicon.png
--------------------------------------------------------------------------------
/docs/general/upcoming-features.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Upcoming Features"
3 | description: "This page highlights a few of the features we're cooking up 🧑🍳. Please get in touch with us if you'd like us to prioritize any of these or add something else to our roadmap"
4 | ---
5 |
6 | #### New bridges
7 |
8 | * Wormhole
9 | * Union
10 | * Bifrost
11 | * Synapse
12 | * Initia's native bridge
13 |
14 | #### More DEXes
15 |
16 | We're currently adding support for:
17 |
18 | * Kujira's native DEX
19 | * Stride (conversions between TOKEN + stTOKEN)
20 |
21 |
22 |
( 5 | WrappedComponent: React.ComponentType
, 6 | boundProps: Partial
, 7 | ) => { 8 | return (props: Partial
): React.ReactElement => {
9 | const combinedProps = {
10 | ...boundProps,
11 | ...props,
12 | } as P;
13 | return