├── .dockerignore ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── feature_request.md │ ├── keplr-dashboard-bug-report.md │ ├── keplr-extension-bug-report.md │ ├── keplr-mobile-bug-report.md │ └── libraries-bug-report.md └── workflows │ ├── lint.yml │ ├── mobile-publish.yml │ ├── publish.yml │ └── test.yml ├── .gitignore ├── .gitmodules ├── .prettierignore ├── .yarn └── releases │ └── yarn-1.19.0.cjs ├── .yarnrc ├── LICENSE ├── README.md ├── docker ├── Dockerfile └── create-firefox-archive │ └── Dockerfile ├── docs ├── .vuepress │ ├── config.js │ ├── public │ │ ├── Keplr_Black.png │ │ ├── favicon-256.png │ │ └── og-image.png │ └── styles │ │ └── index.styl ├── README.md ├── api │ ├── README.md │ ├── cosmjs.md │ ├── secretjs.md │ └── suggest-chain.md ├── package.json └── yarn.lock ├── etc └── noop │ ├── README.md │ ├── index.js │ └── package.json ├── lerna.json ├── package.json ├── packages ├── analytics │ ├── .eslintignore │ ├── .prettierignore │ ├── package.json │ ├── src │ │ └── index.tsx │ └── tsconfig.json ├── background │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── analytics │ │ │ ├── constants.ts │ │ │ ├── handler.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── internal.ts │ │ │ ├── messages.ts │ │ │ └── service.ts │ │ ├── auto-lock-account │ │ │ ├── constants.ts │ │ │ ├── handler.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── internal.ts │ │ │ ├── messages.ts │ │ │ ├── service.spec.ts │ │ │ └── service.ts │ │ ├── chains │ │ │ ├── constants.ts │ │ │ ├── handler.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── internal.ts │ │ │ ├── messages.ts │ │ │ ├── service.ts │ │ │ └── types.ts │ │ ├── index.ts │ │ ├── interaction │ │ │ ├── constants.ts │ │ │ ├── foreground │ │ │ │ ├── constants.ts │ │ │ │ ├── handler.ts │ │ │ │ ├── index.ts │ │ │ │ ├── init.ts │ │ │ │ ├── messages.ts │ │ │ │ ├── service.ts │ │ │ │ └── types.ts │ │ │ ├── handler.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── internal.ts │ │ │ ├── messages.ts │ │ │ ├── service.ts │ │ │ └── types.ts │ │ ├── keyring │ │ │ ├── amino-sign-doc.spec.ts │ │ │ ├── amino-sign-doc.ts │ │ │ ├── constants.ts │ │ │ ├── crypto.ts │ │ │ ├── eip712.spec.ts │ │ │ ├── eip712.ts │ │ │ ├── handler.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── internal.ts │ │ │ ├── keyring.ts │ │ │ ├── messages.ts │ │ │ ├── service.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── keystone │ │ │ ├── cosmos-keyring.ts │ │ │ ├── ethereum-keyring.ts │ │ │ ├── index.ts │ │ │ ├── internal.ts │ │ │ ├── service.ts │ │ │ └── utils.ts │ │ ├── ledger │ │ │ ├── constants.ts │ │ │ ├── handler.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── internal.ts │ │ │ ├── ledger-utils.spec.ts │ │ │ ├── ledger.ts │ │ │ ├── messages.ts │ │ │ ├── options.ts │ │ │ └── service.ts │ │ ├── permission │ │ │ ├── constants.ts │ │ │ ├── handler.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── internal.ts │ │ │ ├── messages.ts │ │ │ ├── service.ts │ │ │ └── types.ts │ │ ├── persistent-memory │ │ │ ├── constants.ts │ │ │ ├── handler.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── internal.ts │ │ │ ├── messages.ts │ │ │ └── service.ts │ │ ├── phishing-list │ │ │ ├── constants.ts │ │ │ ├── handler.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── internal.ts │ │ │ ├── messages.spec.ts │ │ │ ├── messages.ts │ │ │ ├── service.spec.ts │ │ │ ├── service.ts │ │ │ ├── utils.spec.ts │ │ │ └── utils.ts │ │ ├── secret-wasm │ │ │ ├── constants.ts │ │ │ ├── handler.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── internal.ts │ │ │ ├── messages.ts │ │ │ └── service.ts │ │ ├── tokens │ │ │ ├── constants.ts │ │ │ ├── handler.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── internal.ts │ │ │ ├── messages.ts │ │ │ ├── service.ts │ │ │ └── types.ts │ │ ├── tx │ │ │ ├── constants.ts │ │ │ ├── handler.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── internal.ts │ │ │ ├── messages.ts │ │ │ ├── service.ts │ │ │ └── types.ts │ │ └── updater │ │ │ ├── constants.ts │ │ │ ├── handler.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── internal.ts │ │ │ ├── messages.ts │ │ │ └── service.ts │ └── tsconfig.json ├── chain-validator │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── basic.ts │ │ ├── connection.ts │ │ ├── feature.spec.ts │ │ ├── feature.ts │ │ ├── index.ts │ │ ├── schema.spec.ts │ │ └── schema.ts │ └── tsconfig.json ├── common │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── denom │ │ │ ├── denom.spec.ts │ │ │ └── index.ts │ │ ├── escape │ │ │ ├── escape.spec.ts │ │ │ └── index.ts │ │ ├── icns │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── json │ │ │ ├── index.ts │ │ │ ├── sort.spec.ts │ │ │ └── sort.ts │ │ ├── kv-store │ │ │ ├── base.spec.ts │ │ │ ├── base.ts │ │ │ ├── extension.ts │ │ │ ├── index.ts │ │ │ ├── indexed-db.ts │ │ │ ├── interface.ts │ │ │ ├── local.ts │ │ │ └── memory.ts │ │ ├── mobx │ │ │ └── index.ts │ │ └── utils │ │ │ ├── debouncer.spec.ts │ │ │ ├── debouncer.ts │ │ │ └── index.ts │ └── tsconfig.json ├── cosmjs-test │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ └── cosmjs.spec.ts │ └── tsconfig.json ├── cosmos │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── account │ │ │ ├── account.spec.ts │ │ │ └── index.ts │ │ ├── adr-36 │ │ │ ├── amino.spec.ts │ │ │ ├── amino.ts │ │ │ └── index.ts │ │ ├── bech32 │ │ │ ├── index.ts │ │ │ └── test.spec.ts │ │ ├── chain-id │ │ │ ├── cosmos.ts │ │ │ ├── ethermint.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── signing │ │ │ ├── encode.ts │ │ │ └── index.ts │ │ ├── stargate │ │ │ ├── codec │ │ │ │ ├── index.ts │ │ │ │ └── unknown.ts │ │ │ ├── decoder │ │ │ │ ├── decode.spec.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ └── wrapper │ │ │ │ └── index.ts │ │ └── tx-tracer │ │ │ ├── index.ts │ │ │ └── types.ts │ └── tsconfig.json ├── crypto │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── hash.spec.ts │ │ ├── hash.ts │ │ ├── index.ts │ │ ├── key.spec.ts │ │ ├── key.ts │ │ ├── mnemonic.spec.ts │ │ └── mnemonic.ts │ └── tsconfig.json ├── extension │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── noop-alt-sign-in │ │ ├── index.d.ts │ │ ├── index.js │ │ └── package.json │ ├── package.json │ ├── scripts │ │ ├── lerna-lifecyle-version.mjs │ │ └── post-build.mjs │ ├── src │ │ ├── @types │ │ │ └── scrypt-js │ │ │ │ └── index.d.ts │ │ ├── background │ │ │ └── background.ts │ │ ├── components │ │ │ ├── address │ │ │ │ └── index.tsx │ │ │ ├── alert-experimental-feature │ │ │ │ ├── index.tsx │ │ │ │ └── style.module.scss │ │ │ ├── banner │ │ │ │ ├── index.tsx │ │ │ │ └── style.module.scss │ │ │ ├── confirm │ │ │ │ ├── dialog.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── style.module.scss │ │ │ ├── form │ │ │ │ ├── address-input.module.scss │ │ │ │ ├── address-input.tsx │ │ │ │ ├── coin-input.module.scss │ │ │ │ ├── coin-input.tsx │ │ │ │ ├── fee-buttons │ │ │ │ │ ├── fee-buttons.module.scss │ │ │ │ │ ├── fee-buttons.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── gas-form │ │ │ │ │ ├── auto.module.scss │ │ │ │ │ ├── auto.tsx │ │ │ │ │ ├── container.module.scss │ │ │ │ │ ├── container.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── gas-input.tsx │ │ │ │ ├── ibc │ │ │ │ │ ├── chain-selector.tsx │ │ │ │ │ ├── channel-registrar.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.module.scss │ │ │ │ ├── index.tsx │ │ │ │ ├── input.module.scss │ │ │ │ ├── input.tsx │ │ │ │ ├── memo-input.tsx │ │ │ │ ├── password-input.module.scss │ │ │ │ ├── password-input.tsx │ │ │ │ └── textarea.tsx │ │ │ ├── header │ │ │ │ ├── header.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── style │ │ │ │ │ ├── header.module.scss │ │ │ │ │ └── index.tsx │ │ │ ├── icon │ │ │ │ ├── github.tsx │ │ │ │ ├── index.ts │ │ │ │ └── information-circle-outline.tsx │ │ │ ├── loading-indicator │ │ │ │ ├── index.tsx │ │ │ │ └── style.module.scss │ │ │ ├── notification │ │ │ │ ├── container.tsx │ │ │ │ ├── element.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── store.tsx │ │ │ │ └── style.scss │ │ │ └── tooltip │ │ │ │ ├── index.tsx │ │ │ │ └── tooltip.module.scss │ │ ├── config.ts │ │ ├── config.ui.ts │ │ ├── content-scripts │ │ │ ├── content-scripts.ts │ │ │ ├── events.ts │ │ │ └── inject │ │ │ │ └── injected-script.ts │ │ ├── env.d.ts │ │ ├── index.html │ │ ├── index.tsx │ │ ├── languages │ │ │ ├── en.json │ │ │ ├── index.tsx │ │ │ └── ko.json │ │ ├── layouts │ │ │ ├── empty-layout │ │ │ │ ├── index.tsx │ │ │ │ └── style.module.scss │ │ │ ├── header-layout │ │ │ │ ├── index.tsx │ │ │ │ └── style.module.scss │ │ │ ├── header │ │ │ │ ├── chain-list.module.scss │ │ │ │ ├── chain-list.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── style.module.scss │ │ │ ├── index.tsx │ │ │ └── menu │ │ │ │ ├── index.tsx │ │ │ │ ├── menu-button.tsx │ │ │ │ ├── menu.module.scss │ │ │ │ └── menu.tsx │ │ ├── manifest.firefox.json │ │ ├── manifest.json │ │ ├── pages │ │ │ ├── access │ │ │ │ ├── basic-access.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── style.module.scss │ │ │ │ └── viewing-key.tsx │ │ │ ├── blocklist │ │ │ │ ├── index.tsx │ │ │ │ └── style.module.scss │ │ │ ├── chain │ │ │ │ └── suggest │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.module.scss │ │ │ ├── ibc-transfer │ │ │ │ ├── index.tsx │ │ │ │ └── style.module.scss │ │ │ ├── icns │ │ │ │ └── sign │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.module.scss │ │ │ ├── keystone │ │ │ │ ├── guide.tsx │ │ │ │ ├── import-pubkey.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── loading.tsx │ │ │ │ ├── message.tsx │ │ │ │ ├── scan.tsx │ │ │ │ ├── sign.tsx │ │ │ │ └── style.module.scss │ │ │ ├── ledger │ │ │ │ ├── grant.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── style.module.scss │ │ │ ├── lock │ │ │ │ ├── index.tsx │ │ │ │ └── style.module.scss │ │ │ ├── main │ │ │ │ ├── account.module.scss │ │ │ │ ├── account.tsx │ │ │ │ ├── asset.module.scss │ │ │ │ ├── asset.tsx │ │ │ │ ├── bip44-select-modal.module.scss │ │ │ │ ├── bip44-select-modal.tsx │ │ │ │ ├── evmos-dashboard.module.scss │ │ │ │ ├── evmos-dashboard.tsx │ │ │ │ ├── ibc-transfer.module.scss │ │ │ │ ├── ibc-transfer.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── ledger-app-modal.module.scss │ │ │ │ ├── ledger-app-modal.tsx │ │ │ │ ├── menu.module.scss │ │ │ │ ├── menu.tsx │ │ │ │ ├── stake.module.scss │ │ │ │ ├── stake.tsx │ │ │ │ ├── style.module.scss │ │ │ │ ├── token.module.scss │ │ │ │ ├── token.tsx │ │ │ │ ├── tx-button.module.scss │ │ │ │ ├── tx-button.tsx │ │ │ │ ├── vesting-info.module.scss │ │ │ │ └── vesting-info.tsx │ │ │ ├── permission │ │ │ │ └── grant │ │ │ │ │ ├── get-chain-infos.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.module.scss │ │ │ ├── register │ │ │ │ ├── advanced-bip44.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── keystone │ │ │ │ │ └── index.tsx │ │ │ │ ├── ledger │ │ │ │ │ └── index.tsx │ │ │ │ ├── mnemonic │ │ │ │ │ ├── hook.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── new-mnemonic.tsx │ │ │ │ │ ├── recover-mnemonic.module.scss │ │ │ │ │ └── recover-mnemonic.tsx │ │ │ │ ├── style.module.scss │ │ │ │ ├── welcome.module.scss │ │ │ │ └── welcome.tsx │ │ │ ├── send │ │ │ │ ├── index.tsx │ │ │ │ └── style.module.scss │ │ │ ├── setting │ │ │ │ ├── address-book │ │ │ │ │ ├── add-address-modal.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.module.scss │ │ │ │ ├── autolock │ │ │ │ │ ├── description-view.module.scss │ │ │ │ │ ├── description-view.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.module.scss │ │ │ │ ├── chain-active │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.module.scss │ │ │ │ ├── clear │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style.module.scss │ │ │ │ │ ├── warning-view.module.scss │ │ │ │ │ └── warning-view.tsx │ │ │ │ ├── connections │ │ │ │ │ ├── basic-access.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style.module.scss │ │ │ │ │ └── viewing-key.tsx │ │ │ │ ├── credit │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.module.scss │ │ │ │ ├── endpoints │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.module.scss │ │ │ │ ├── export-to-mobile │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.module.scss │ │ │ │ ├── export │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style.module.scss │ │ │ │ │ ├── warning-view.module.scss │ │ │ │ │ └── warning-view.tsx │ │ │ │ ├── fiat │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── keyring │ │ │ │ │ ├── change │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── name.module.scss │ │ │ │ │ │ └── name.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.module.scss │ │ │ │ ├── language │ │ │ │ │ └── index.tsx │ │ │ │ ├── page-button.module.scss │ │ │ │ ├── page-button.tsx │ │ │ │ ├── security-privacy │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── permissions │ │ │ │ │ │ └── get-chain-infos │ │ │ │ │ │ └── index.tsx │ │ │ │ ├── style.module.scss │ │ │ │ └── token │ │ │ │ │ ├── add │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.module.scss │ │ │ │ │ └── manage │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.module.scss │ │ │ └── sign │ │ │ │ ├── adr-36.tsx │ │ │ │ ├── amino.tsx │ │ │ │ ├── data-tab.tsx │ │ │ │ ├── details-tab.module.scss │ │ │ │ ├── details-tab.tsx │ │ │ │ ├── direct.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── messages.spec.ts │ │ │ │ ├── messages.tsx │ │ │ │ └── style.module.scss │ │ ├── public │ │ │ └── assets │ │ │ │ ├── brand-sub-text.png │ │ │ │ ├── brand-text-fit-logo-height.png │ │ │ │ ├── brand-text.png │ │ │ │ ├── font │ │ │ │ ├── NanumBarunGothic.ttf │ │ │ │ ├── NanumBarunGothicBold.ttf │ │ │ │ └── NanumBarunGothicLight.ttf │ │ │ │ ├── icns-logo.png │ │ │ │ ├── icon │ │ │ │ ├── icon-128.png │ │ │ │ ├── icon-16.png │ │ │ │ ├── icon-48.png │ │ │ │ ├── icon-beta-128.png │ │ │ │ ├── icon-beta-16.png │ │ │ │ └── icon-beta-48.png │ │ │ │ ├── img │ │ │ │ ├── atom-o.svg │ │ │ │ ├── blocklist.svg │ │ │ │ ├── broken-link.svg │ │ │ │ ├── ethereum.svg │ │ │ │ ├── icns-banner.png │ │ │ │ ├── icns-mark.png │ │ │ │ ├── icons8-cancel.svg │ │ │ │ ├── icons8-checked.svg │ │ │ │ ├── icons8-lock.svg │ │ │ │ ├── icons8-pen.svg │ │ │ │ ├── icons8-test-tube.svg │ │ │ │ ├── icons8-trash-can.svg │ │ │ │ ├── icons8-usb-2.svg │ │ │ │ ├── keystone │ │ │ │ │ ├── logo.svg │ │ │ │ │ ├── tutorial1.png │ │ │ │ │ ├── tutorial2.png │ │ │ │ │ ├── tutorial3.png │ │ │ │ │ └── tutorial4.png │ │ │ │ └── trash.svg │ │ │ │ ├── logo-256.png │ │ │ │ ├── logo-beta-256.png │ │ │ │ └── svg │ │ │ │ ├── arrow-left.svg │ │ │ │ ├── arrow-right-outline.svg │ │ │ │ ├── arrow-right-primary.svg │ │ │ │ ├── error.svg │ │ │ │ ├── export-to-mobile.svg │ │ │ │ ├── for-developer.svg │ │ │ │ ├── github-dark.svg │ │ │ │ ├── info-mark.svg │ │ │ │ ├── loading.svg │ │ │ │ ├── scanner.svg │ │ │ │ └── warning-primary.svg │ │ ├── scss.d.ts │ │ ├── stores │ │ │ ├── chain │ │ │ │ └── index.tsx │ │ │ ├── index.tsx │ │ │ ├── root.tsx │ │ │ └── ui-config │ │ │ │ └── index.ts │ │ ├── styles │ │ │ ├── _mixin.scss │ │ │ ├── _var.scss │ │ │ ├── global.scss │ │ │ └── type.tsx │ │ └── window.d.ts │ ├── tsconfig.json │ └── webpack.config.js ├── hooks │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── address-book │ │ │ └── index.ts │ │ ├── ibc │ │ │ ├── amount.ts │ │ │ ├── channel.ts │ │ │ ├── errors.ts │ │ │ ├── gas.ts │ │ │ ├── index.ts │ │ │ ├── reciepient.ts │ │ │ ├── send-ibc-transfer.ts │ │ │ └── types.ts │ │ ├── index.ts │ │ ├── interaction │ │ │ └── index.ts │ │ ├── register │ │ │ └── index.tsx │ │ ├── sign-doc │ │ │ ├── amount.ts │ │ │ ├── helper.ts │ │ │ └── index.ts │ │ └── tx │ │ │ ├── amount.ts │ │ │ ├── chain.ts │ │ │ ├── delegate-tx.ts │ │ │ ├── errors.ts │ │ │ ├── fee.ts │ │ │ ├── gas-simulator.ts │ │ │ ├── gas.ts │ │ │ ├── index.ts │ │ │ ├── internal.ts │ │ │ ├── memo.ts │ │ │ ├── recipient.ts │ │ │ ├── redelegate-tx.ts │ │ │ ├── send-gas.ts │ │ │ ├── send-tx.ts │ │ │ ├── send-types.ts │ │ │ ├── staked-amount.ts │ │ │ ├── types.ts │ │ │ └── undelegate-tx.ts │ └── tsconfig.json ├── mobile │ ├── .buckconfig │ ├── .eslintrc.js │ ├── .gitattributes │ ├── .gitignore │ ├── .watchmanconfig │ ├── LICENSE │ ├── android │ │ ├── Gemfile │ │ ├── Gemfile.lock │ │ ├── app │ │ │ ├── _BUCK │ │ │ ├── build.gradle │ │ │ ├── build_defs.bzl │ │ │ ├── debug.keystore │ │ │ ├── proguard-rules.pro │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── chainapsis │ │ │ │ │ └── keplr │ │ │ │ │ └── ReactNativeFlipper.java │ │ │ │ └── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── assets │ │ │ │ └── appcenter-config.json │ │ │ │ ├── ic_launcher-playstore.png │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── chainapsis │ │ │ │ │ └── keplr │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ ├── MainApplication.java │ │ │ │ │ └── generated │ │ │ │ │ └── BasePackageList.java │ │ │ │ └── res │ │ │ │ ├── drawable-v24 │ │ │ │ └── ic_launcher_foreground.xml │ │ │ │ ├── drawable │ │ │ │ ├── splashscreen.xml │ │ │ │ ├── splashscreen_background.png │ │ │ │ └── splashscreen_image.png │ │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── values-v23 │ │ │ │ └── styles.xml │ │ │ │ └── values │ │ │ │ ├── colors.xml │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ ├── build.gradle │ │ ├── fastlane │ │ │ ├── Appfile │ │ │ ├── Fastfile │ │ │ └── README.md │ │ ├── gradle.properties │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ └── settings.gradle │ ├── app.json │ ├── babel.config.js │ ├── bugsnag.env.ts │ ├── crypto-polyfill │ │ ├── get-random-values.js │ │ ├── index.js │ │ └── package.json │ ├── index.js │ ├── init.ts │ ├── ios │ │ ├── AppCenter-Config.plist │ │ ├── Gemfile │ │ ├── Gemfile.lock │ │ ├── Podfile │ │ ├── Podfile.lock │ │ ├── fastlane │ │ │ ├── Appfile │ │ │ ├── Fastfile │ │ │ └── README.md │ │ ├── mobile-tvOS │ │ │ └── Info.plist │ │ ├── mobile-tvOSTests │ │ │ └── Info.plist │ │ ├── mobile.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ ├── mobile-tvOS.xcscheme │ │ │ │ └── mobile.xcscheme │ │ ├── mobile.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ ├── mobile │ │ │ ├── AppDelegate.h │ │ │ ├── AppDelegate.m │ │ │ ├── Images.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ ├── 1024.png │ │ │ │ │ ├── 120.png │ │ │ │ │ ├── 180.png │ │ │ │ │ ├── 40.png │ │ │ │ │ ├── 58.png │ │ │ │ │ ├── 60.png │ │ │ │ │ ├── 80.png │ │ │ │ │ ├── 87.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── Contents.json │ │ │ │ ├── SplashScreen.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── splashscreen.png │ │ │ │ └── SplashScreenBackground.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── splash-screen-only-background.png │ │ │ ├── Info.plist │ │ │ ├── LaunchScreen.storyboard │ │ │ ├── SplashScreen.storyboard │ │ │ ├── main.m │ │ │ └── mobile.entitlements │ │ └── mobileTests │ │ │ ├── Info.plist │ │ │ └── mobileTests.m │ ├── metro.config.js │ ├── package.json │ ├── scripts │ │ ├── BleTransport.d.ts │ │ ├── BleTransport.js │ │ ├── BlurView.m │ │ ├── NativeResourcesBasedSplashScreenViewProvider.kt │ │ ├── SplashScreenView.kt │ │ ├── clean.sh │ │ ├── fix-android-splash-screen-flash.sh │ │ ├── fix-ios-blur-view.sh │ │ ├── force-export-ble-manager-from-ledger.sh │ │ ├── set-code-bundle-id.sh │ │ └── splashscreen_background.png │ ├── shim.js │ ├── src │ │ ├── app.tsx │ │ ├── assets │ │ │ ├── gradients │ │ │ │ ├── gradient-background-3x.png │ │ │ │ ├── gradient-background-dark-3x.png │ │ │ │ ├── gradient-background-dark.png │ │ │ │ ├── gradient-background.png │ │ │ │ ├── tx-result-screen-failed-3x.png │ │ │ │ ├── tx-result-screen-failed-dark-3x.png │ │ │ │ ├── tx-result-screen-failed-dark.png │ │ │ │ ├── tx-result-screen-failed.png │ │ │ │ ├── tx-result-screen-pending-3x.png │ │ │ │ ├── tx-result-screen-pending-dark-3x.png │ │ │ │ ├── tx-result-screen-pending-dark.png │ │ │ │ ├── tx-result-screen-pending.png │ │ │ │ ├── tx-result-screen-success-3x.png │ │ │ │ ├── tx-result-screen-success-dark-3x.png │ │ │ │ ├── tx-result-screen-success-dark.png │ │ │ │ ├── tx-result-screen-success.png │ │ │ │ ├── unlock-screen-3x.png │ │ │ │ ├── unlock-screen-dark-3x.png │ │ │ │ ├── unlock-screen-dark.png │ │ │ │ └── unlock-screen.png │ │ │ ├── image │ │ │ │ ├── wallet-connection.png │ │ │ │ └── webpage │ │ │ │ │ ├── junoswap.png │ │ │ │ │ ├── osmosis-frontier-text.png │ │ │ │ │ ├── osmosis-frontier.png │ │ │ │ │ ├── osmosis.png │ │ │ │ │ ├── stargaze.png │ │ │ │ │ └── umee.png │ │ │ ├── logo │ │ │ │ ├── keplr-logo-dark-mode.png │ │ │ │ ├── keplr-logo.png │ │ │ │ ├── splash-image-dark-mode.png │ │ │ │ ├── splash-image.png │ │ │ │ ├── splash-screen-only-background.png │ │ │ │ └── splash-screen-only-k.png │ │ │ ├── lottie │ │ │ │ ├── check.json │ │ │ │ ├── failed.json │ │ │ │ ├── fireworks.json │ │ │ │ ├── pangpare.json │ │ │ │ ├── pending.json │ │ │ │ └── success.json │ │ │ └── svg │ │ │ │ ├── failed.png │ │ │ │ ├── icons8-google.png │ │ │ │ ├── icons8-person.png │ │ │ │ ├── import-from-extension.svg │ │ │ │ ├── pending.png │ │ │ │ ├── success.png │ │ │ │ ├── welcome-rocket-dark-mode.svg │ │ │ │ └── welcome-rocket.svg │ │ ├── background │ │ │ └── background.ts │ │ ├── common │ │ │ ├── async-kv-store.ts │ │ │ ├── async-random.ts │ │ │ └── index.ts │ │ ├── components │ │ │ ├── address-copyable │ │ │ │ └── index.tsx │ │ │ ├── bottom-tabbar │ │ │ │ ├── blurred.tsx │ │ │ │ └── index.tsx │ │ │ ├── button │ │ │ │ ├── button.tsx │ │ │ │ └── index.ts │ │ │ ├── camera │ │ │ │ └── index.tsx │ │ │ ├── card │ │ │ │ ├── body.tsx │ │ │ │ ├── card.tsx │ │ │ │ ├── divider.tsx │ │ │ │ ├── header.tsx │ │ │ │ └── index.ts │ │ │ ├── chain-selector │ │ │ │ └── index.tsx │ │ │ ├── chip │ │ │ │ └── index.tsx │ │ │ ├── dot │ │ │ │ └── index.tsx │ │ │ ├── drawer │ │ │ │ └── index.tsx │ │ │ ├── fixed-height-sortable-list │ │ │ │ └── index.tsx │ │ │ ├── header │ │ │ │ ├── blurred.tsx │ │ │ │ ├── button.tsx │ │ │ │ ├── icon │ │ │ │ │ ├── add.tsx │ │ │ │ │ ├── back.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── wallet-connect.tsx │ │ │ │ └── index.tsx │ │ │ ├── icon │ │ │ │ ├── address-book.tsx │ │ │ │ ├── alert.tsx │ │ │ │ ├── apple.tsx │ │ │ │ ├── arrow.tsx │ │ │ │ ├── camera.tsx │ │ │ │ ├── check.tsx │ │ │ │ ├── close.tsx │ │ │ │ ├── copy.tsx │ │ │ │ ├── drawer.tsx │ │ │ │ ├── google.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── person.tsx │ │ │ │ ├── plus.tsx │ │ │ │ ├── refresh.tsx │ │ │ │ ├── reward.tsx │ │ │ │ ├── scan.tsx │ │ │ │ ├── trash-can.tsx │ │ │ │ ├── unconnect.tsx │ │ │ │ └── wallet-connect.tsx │ │ │ ├── input │ │ │ │ ├── address.tsx │ │ │ │ ├── amount.tsx │ │ │ │ ├── currency-selector.tsx │ │ │ │ ├── fee-buttons.tsx │ │ │ │ ├── gas.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── input.tsx │ │ │ │ ├── memo.tsx │ │ │ │ └── selector.tsx │ │ │ ├── mnemonic │ │ │ │ └── index.tsx │ │ │ ├── page │ │ │ │ ├── background.tsx │ │ │ │ ├── fixed-height-sortable-list.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── scroll-view-in-bottom-tab-view.tsx │ │ │ │ ├── scroll-view.tsx │ │ │ │ ├── section-list.tsx │ │ │ │ ├── utils.ts │ │ │ │ ├── view-in-bottom-tab-view.tsx │ │ │ │ └── view.tsx │ │ │ ├── progress-bar │ │ │ │ └── index.tsx │ │ │ ├── rect-button │ │ │ │ └── index.tsx │ │ │ ├── spinner │ │ │ │ ├── hooks.tsx │ │ │ │ ├── index.ts │ │ │ │ └── loading.tsx │ │ │ ├── svg │ │ │ │ ├── double-doughnut-chart.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── progress-bar.tsx │ │ │ │ └── simple-gradient.tsx │ │ │ ├── thumbnail │ │ │ │ ├── index.tsx │ │ │ │ └── validator.tsx │ │ │ ├── toggle │ │ │ │ └── index.tsx │ │ │ ├── token-symbol │ │ │ │ └── index.tsx │ │ │ ├── vector-character │ │ │ │ ├── characters │ │ │ │ │ ├── a.tsx │ │ │ │ │ ├── b.tsx │ │ │ │ │ ├── c.tsx │ │ │ │ │ ├── d.tsx │ │ │ │ │ ├── e.tsx │ │ │ │ │ ├── f.tsx │ │ │ │ │ ├── g.tsx │ │ │ │ │ ├── h.tsx │ │ │ │ │ ├── i.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── j.tsx │ │ │ │ │ ├── k.tsx │ │ │ │ │ ├── l.tsx │ │ │ │ │ ├── m.tsx │ │ │ │ │ ├── n.tsx │ │ │ │ │ ├── o.tsx │ │ │ │ │ ├── p.tsx │ │ │ │ │ ├── q.tsx │ │ │ │ │ ├── question-mark.tsx │ │ │ │ │ ├── r.tsx │ │ │ │ │ ├── s.tsx │ │ │ │ │ ├── t.tsx │ │ │ │ │ ├── u.tsx │ │ │ │ │ ├── v.tsx │ │ │ │ │ ├── w.tsx │ │ │ │ │ ├── x.tsx │ │ │ │ │ ├── y.tsx │ │ │ │ │ └── z.tsx │ │ │ │ └── index.tsx │ │ │ └── wallet-connect │ │ │ │ ├── app-logo-name.tsx │ │ │ │ ├── app-logo.tsx │ │ │ │ └── index.tsx │ │ ├── config.ts │ │ ├── hooks │ │ │ ├── index.tsx │ │ │ ├── use-previous.tsx │ │ │ ├── use-simple-timer.tsx │ │ │ ├── use-smart-navigation.tsx │ │ │ └── use-unmount.tsx │ │ ├── injected │ │ │ ├── index.ts │ │ │ └── injected-provider.ts │ │ ├── modals │ │ │ ├── base │ │ │ │ ├── base.tsx │ │ │ │ ├── const.ts │ │ │ │ ├── hooks.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── provider.tsx │ │ │ │ ├── transition.tsx │ │ │ │ └── utils.tsx │ │ │ ├── card │ │ │ │ └── index.tsx │ │ │ ├── ledger │ │ │ │ └── index.tsx │ │ │ ├── password-input │ │ │ │ └── modal.tsx │ │ │ ├── sign │ │ │ │ ├── amino.tsx │ │ │ │ ├── direct.tsx │ │ │ │ ├── fee.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── messages.tsx │ │ │ │ └── msg.tsx │ │ │ ├── unlock │ │ │ │ └── index.tsx │ │ │ ├── wallet-connect-approval │ │ │ │ └── index.tsx │ │ │ └── wc-go-back-to-browser │ │ │ │ └── index.tsx │ │ ├── navigation.tsx │ │ ├── providers │ │ │ ├── confirm-modal │ │ │ │ ├── index.tsx │ │ │ │ └── modal.tsx │ │ │ ├── focused-screen │ │ │ │ └── index.tsx │ │ │ ├── interaction-modals-provider │ │ │ │ └── index.tsx │ │ │ ├── loading-screen │ │ │ │ ├── index.tsx │ │ │ │ └── modal.tsx │ │ │ └── page-scroll-position │ │ │ │ └── index.tsx │ │ ├── router │ │ │ ├── env.ts │ │ │ ├── index.ts │ │ │ ├── requester.ts │ │ │ └── rn-router.ts │ │ ├── screens │ │ │ ├── camera │ │ │ │ └── index.tsx │ │ │ ├── governance │ │ │ │ ├── card.tsx │ │ │ │ ├── details.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── utils.ts │ │ │ ├── home │ │ │ │ ├── account-card.tsx │ │ │ │ ├── bip44-selectable.tsx │ │ │ │ ├── governance-card.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── my-reward-card.tsx │ │ │ │ ├── network-error-view.tsx │ │ │ │ ├── staking-info-card.tsx │ │ │ │ └── tokens-card.tsx │ │ │ ├── manage-wallet-connect │ │ │ │ └── index.tsx │ │ │ ├── register │ │ │ │ ├── bip44 │ │ │ │ │ ├── advanced-button.tsx │ │ │ │ │ ├── bip44-option.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── end.tsx │ │ │ │ ├── import-from-extension │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── intro.tsx │ │ │ │ │ └── set-password.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── ledger │ │ │ │ │ └── index.tsx │ │ │ │ ├── mnemonic │ │ │ │ │ ├── hook.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── new-mnemonic.tsx │ │ │ │ │ ├── recover-mnemonic.tsx │ │ │ │ │ └── verify-mnemonic.tsx │ │ │ │ ├── new-user.tsx │ │ │ │ ├── not-new-user.tsx │ │ │ │ └── torus │ │ │ │ │ └── index.tsx │ │ │ ├── send │ │ │ │ └── index.tsx │ │ │ ├── setting │ │ │ │ ├── components │ │ │ │ │ ├── basic.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── key-store.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── items │ │ │ │ │ ├── biometric-lock.tsx │ │ │ │ │ ├── fiat-currency.tsx │ │ │ │ │ ├── remove-account.tsx │ │ │ │ │ ├── select-account.tsx │ │ │ │ │ ├── theme.tsx │ │ │ │ │ └── view-private-data.tsx │ │ │ │ └── screens │ │ │ │ │ ├── address-book │ │ │ │ │ ├── add.tsx │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── chain-list │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── select-account │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── token │ │ │ │ │ ├── add.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── manage.tsx │ │ │ │ │ ├── version │ │ │ │ │ └── index.tsx │ │ │ │ │ └── view-private-data │ │ │ │ │ └── index.tsx │ │ │ ├── stake │ │ │ │ ├── dashboard │ │ │ │ │ ├── dashboard.tsx │ │ │ │ │ ├── delegations-card.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── reward-card.tsx │ │ │ │ │ └── undelegations-card.tsx │ │ │ │ ├── delegate │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── redelegate │ │ │ │ │ └── index.tsx │ │ │ │ ├── undelegate │ │ │ │ │ └── index.tsx │ │ │ │ ├── validator-details │ │ │ │ │ ├── delegated-card.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── unbonding-card.tsx │ │ │ │ │ └── validator-details-card.tsx │ │ │ │ └── validator-list │ │ │ │ │ └── index.tsx │ │ │ ├── tokens │ │ │ │ └── index.tsx │ │ │ ├── tx-result │ │ │ │ ├── failed.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── pending.tsx │ │ │ │ └── success.tsx │ │ │ ├── unlock │ │ │ │ └── index.tsx │ │ │ └── web │ │ │ │ ├── components │ │ │ │ ├── context │ │ │ │ │ └── index.tsx │ │ │ │ ├── header │ │ │ │ │ └── index.tsx │ │ │ │ └── webpage-screen │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── screen-options.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── webpages │ │ │ │ ├── index.tsx │ │ │ │ ├── junoswap.tsx │ │ │ │ ├── osmosis.tsx │ │ │ │ ├── stargaze.tsx │ │ │ │ └── umee.tsx │ │ ├── stores │ │ │ ├── chain │ │ │ │ └── index.ts │ │ │ ├── index.tsx │ │ │ ├── keychain │ │ │ │ └── index.ts │ │ │ ├── root.tsx │ │ │ └── wallet-connect │ │ │ │ ├── index.ts │ │ │ │ └── msg-requester.ts │ │ ├── styles │ │ │ ├── builder │ │ │ │ ├── builder.spec.ts │ │ │ │ ├── builder.ts │ │ │ │ ├── hook.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── types │ │ │ │ │ ├── all.ts │ │ │ │ │ ├── border.ts │ │ │ │ │ ├── color.ts │ │ │ │ │ ├── common.ts │ │ │ │ │ ├── image.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── layout.ts │ │ │ │ │ ├── margin.ts │ │ │ │ │ ├── opacity.ts │ │ │ │ │ ├── padding.ts │ │ │ │ │ ├── size.ts │ │ │ │ │ └── text.ts │ │ │ │ └── utils.ts │ │ │ └── index.tsx │ │ └── utils │ │ │ ├── import-from-extension │ │ │ └── index.ts │ │ │ ├── ledger │ │ │ └── index.ts │ │ │ └── stable-sort │ │ │ └── index.ts │ ├── tsconfig.json │ └── tsconfig.provider.json ├── popup │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ └── index.ts │ └── tsconfig.json ├── proto-types │ ├── .eslintignore │ ├── .prettierignore │ ├── README.md │ ├── outputHash │ ├── package.json │ └── proto-types-gen │ │ ├── proto │ │ ├── cosmos │ │ │ ├── auth │ │ │ │ └── v1beta1 │ │ │ │ │ ├── auth.proto │ │ │ │ │ ├── genesis.proto │ │ │ │ │ └── query.proto │ │ │ ├── authz │ │ │ │ └── v1beta1 │ │ │ │ │ ├── authz.proto │ │ │ │ │ ├── event.proto │ │ │ │ │ ├── genesis.proto │ │ │ │ │ ├── query.proto │ │ │ │ │ └── tx.proto │ │ │ ├── bank │ │ │ │ └── v1beta1 │ │ │ │ │ ├── authz.proto │ │ │ │ │ ├── bank.proto │ │ │ │ │ ├── genesis.proto │ │ │ │ │ ├── query.proto │ │ │ │ │ └── tx.proto │ │ │ ├── base │ │ │ │ ├── abci │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ └── abci.proto │ │ │ │ ├── kv │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ └── kv.proto │ │ │ │ ├── query │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ └── pagination.proto │ │ │ │ ├── reflection │ │ │ │ │ ├── v1beta1 │ │ │ │ │ │ └── reflection.proto │ │ │ │ │ └── v2alpha1 │ │ │ │ │ │ └── reflection.proto │ │ │ │ ├── snapshots │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ └── snapshot.proto │ │ │ │ ├── store │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── commit_info.proto │ │ │ │ │ │ ├── listening.proto │ │ │ │ │ │ └── snapshot.proto │ │ │ │ ├── tendermint │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ └── query.proto │ │ │ │ └── v1beta1 │ │ │ │ │ └── coin.proto │ │ │ ├── capability │ │ │ │ └── v1beta1 │ │ │ │ │ ├── capability.proto │ │ │ │ │ └── genesis.proto │ │ │ ├── crisis │ │ │ │ └── v1beta1 │ │ │ │ │ ├── genesis.proto │ │ │ │ │ └── tx.proto │ │ │ ├── crypto │ │ │ │ ├── ed25519 │ │ │ │ │ └── keys.proto │ │ │ │ ├── multisig │ │ │ │ │ ├── keys.proto │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ └── multisig.proto │ │ │ │ ├── secp256k1 │ │ │ │ │ └── keys.proto │ │ │ │ └── secp256r1 │ │ │ │ │ └── keys.proto │ │ │ ├── distribution │ │ │ │ └── v1beta1 │ │ │ │ │ ├── distribution.proto │ │ │ │ │ ├── genesis.proto │ │ │ │ │ ├── query.proto │ │ │ │ │ └── tx.proto │ │ │ ├── evidence │ │ │ │ └── v1beta1 │ │ │ │ │ ├── evidence.proto │ │ │ │ │ ├── genesis.proto │ │ │ │ │ ├── query.proto │ │ │ │ │ └── tx.proto │ │ │ ├── feegrant │ │ │ │ └── v1beta1 │ │ │ │ │ ├── feegrant.proto │ │ │ │ │ ├── genesis.proto │ │ │ │ │ ├── query.proto │ │ │ │ │ └── tx.proto │ │ │ ├── genutil │ │ │ │ └── v1beta1 │ │ │ │ │ └── genesis.proto │ │ │ ├── gov │ │ │ │ └── v1beta1 │ │ │ │ │ ├── genesis.proto │ │ │ │ │ ├── gov.proto │ │ │ │ │ ├── query.proto │ │ │ │ │ └── tx.proto │ │ │ ├── mint │ │ │ │ └── v1beta1 │ │ │ │ │ ├── genesis.proto │ │ │ │ │ ├── mint.proto │ │ │ │ │ └── query.proto │ │ │ ├── params │ │ │ │ └── v1beta1 │ │ │ │ │ ├── params.proto │ │ │ │ │ └── query.proto │ │ │ ├── slashing │ │ │ │ └── v1beta1 │ │ │ │ │ ├── genesis.proto │ │ │ │ │ ├── query.proto │ │ │ │ │ ├── slashing.proto │ │ │ │ │ └── tx.proto │ │ │ ├── staking │ │ │ │ └── v1beta1 │ │ │ │ │ ├── authz.proto │ │ │ │ │ ├── genesis.proto │ │ │ │ │ ├── query.proto │ │ │ │ │ ├── staking.proto │ │ │ │ │ └── tx.proto │ │ │ ├── tx │ │ │ │ ├── signing │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ └── signing.proto │ │ │ │ └── v1beta1 │ │ │ │ │ ├── service.proto │ │ │ │ │ └── tx.proto │ │ │ ├── upgrade │ │ │ │ └── v1beta1 │ │ │ │ │ ├── query.proto │ │ │ │ │ └── upgrade.proto │ │ │ └── vesting │ │ │ │ └── v1beta1 │ │ │ │ ├── tx.proto │ │ │ │ └── vesting.proto │ │ ├── cosmwasm │ │ │ └── wasm │ │ │ │ └── v1 │ │ │ │ ├── genesis.proto │ │ │ │ ├── ibc.proto │ │ │ │ ├── proposal.proto │ │ │ │ ├── query.proto │ │ │ │ ├── tx.proto │ │ │ │ └── types.proto │ │ ├── ethermint │ │ │ ├── crypto │ │ │ │ └── v1 │ │ │ │ │ └── ethsecp256k1 │ │ │ │ │ └── keys.proto │ │ │ ├── evm │ │ │ │ └── v1 │ │ │ │ │ ├── evm.proto │ │ │ │ │ ├── genesis.proto │ │ │ │ │ ├── query.proto │ │ │ │ │ └── tx.proto │ │ │ ├── feemarket │ │ │ │ └── v1 │ │ │ │ │ ├── feemarket.proto │ │ │ │ │ ├── genesis.proto │ │ │ │ │ └── query.proto │ │ │ └── types │ │ │ │ └── v1 │ │ │ │ ├── account.proto │ │ │ │ ├── indexer.proto │ │ │ │ └── web3.proto │ │ ├── ibc │ │ │ ├── applications │ │ │ │ └── transfer │ │ │ │ │ ├── v1 │ │ │ │ │ ├── genesis.proto │ │ │ │ │ ├── query.proto │ │ │ │ │ ├── transfer.proto │ │ │ │ │ └── tx.proto │ │ │ │ │ └── v2 │ │ │ │ │ └── packet.proto │ │ │ ├── core │ │ │ │ ├── channel │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── channel.proto │ │ │ │ │ │ ├── genesis.proto │ │ │ │ │ │ ├── query.proto │ │ │ │ │ │ └── tx.proto │ │ │ │ ├── client │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── client.proto │ │ │ │ │ │ ├── genesis.proto │ │ │ │ │ │ ├── query.proto │ │ │ │ │ │ └── tx.proto │ │ │ │ ├── commitment │ │ │ │ │ └── v1 │ │ │ │ │ │ └── commitment.proto │ │ │ │ ├── connection │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── connection.proto │ │ │ │ │ │ ├── genesis.proto │ │ │ │ │ │ ├── query.proto │ │ │ │ │ │ └── tx.proto │ │ │ │ ├── port │ │ │ │ │ └── v1 │ │ │ │ │ │ └── query.proto │ │ │ │ └── types │ │ │ │ │ └── v1 │ │ │ │ │ └── genesis.proto │ │ │ └── lightclients │ │ │ │ ├── localhost │ │ │ │ └── v1 │ │ │ │ │ └── localhost.proto │ │ │ │ ├── solomachine │ │ │ │ ├── v1 │ │ │ │ │ └── solomachine.proto │ │ │ │ └── v2 │ │ │ │ │ └── solomachine.proto │ │ │ │ └── tendermint │ │ │ │ └── v1 │ │ │ │ └── tendermint.proto │ │ └── secret │ │ │ ├── compute │ │ │ └── v1beta1 │ │ │ │ ├── genesis.proto │ │ │ │ ├── msg.proto │ │ │ │ ├── query.proto │ │ │ │ └── types.proto │ │ │ └── registration │ │ │ └── v1beta1 │ │ │ ├── genesis.proto │ │ │ ├── msg.proto │ │ │ ├── query.proto │ │ │ ├── remote_attestation │ │ │ └── types.proto │ │ │ └── types.proto │ │ ├── scripts │ │ ├── clean.mjs │ │ └── proto-gen.mjs │ │ ├── third_party │ │ └── proto │ │ │ ├── confio │ │ │ └── proofs.proto │ │ │ ├── cosmos_proto │ │ │ └── cosmos.proto │ │ │ ├── gogoproto │ │ │ └── gogo.proto │ │ │ ├── google │ │ │ ├── api │ │ │ │ ├── annotations.proto │ │ │ │ ├── http.proto │ │ │ │ └── httpbody.proto │ │ │ └── protobuf │ │ │ │ └── any.proto │ │ │ └── tendermint │ │ │ ├── abci │ │ │ └── types.proto │ │ │ ├── crypto │ │ │ ├── keys.proto │ │ │ └── proof.proto │ │ │ ├── libs │ │ │ └── bits │ │ │ │ └── types.proto │ │ │ ├── p2p │ │ │ └── types.proto │ │ │ ├── types │ │ │ ├── block.proto │ │ │ ├── evidence.proto │ │ │ ├── params.proto │ │ │ ├── types.proto │ │ │ └── validator.proto │ │ │ └── version │ │ │ └── types.proto │ │ └── tsconfig.json ├── provider-mock │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── mock.ts │ └── tsconfig.json ├── provider │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── core-types.ts │ │ ├── core.ts │ │ ├── cosmjs.ts │ │ ├── enigma.ts │ │ ├── index.ts │ │ ├── inject.ts │ │ └── types │ │ │ ├── index.ts │ │ │ └── msgs.ts │ └── tsconfig.json ├── router-extension │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── env │ │ │ ├── content-script.ts │ │ │ ├── extension.spec.ts │ │ │ ├── extension.ts │ │ │ └── index.ts │ │ ├── guard │ │ │ ├── content-script.ts │ │ │ ├── extension.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── requester │ │ │ ├── content-script.ts │ │ │ ├── extension.ts │ │ │ └── index.ts │ │ ├── router │ │ │ ├── extension.ts │ │ │ └── index.ts │ │ ├── utils │ │ │ └── index.ts │ │ └── window.d.ts │ └── tsconfig.json ├── router-mock │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── env │ │ │ └── index.ts │ │ ├── guard │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── mock │ │ │ └── mock.spec.ts │ │ ├── requester │ │ │ └── index.ts │ │ └── router │ │ │ └── index.ts │ └── tsconfig.json ├── router │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── constant.ts │ │ ├── encoding │ │ │ └── index.ts │ │ ├── error.ts │ │ ├── handler.ts │ │ ├── index.ts │ │ ├── interfaces.ts │ │ ├── json-uint8-array │ │ │ ├── hex.ts │ │ │ ├── index.ts │ │ │ └── json.spec.ts │ │ ├── message.ts │ │ ├── router │ │ │ └── index.ts │ │ └── types.ts │ └── tsconfig.json ├── stores-etc │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── axelar │ │ │ ├── currency-registrar.ts │ │ │ ├── index.ts │ │ │ ├── token-info.ts │ │ │ └── types.ts │ │ ├── erc20 │ │ │ ├── index.ts │ │ │ └── query │ │ │ │ └── index.ts │ │ ├── gravity-bridge │ │ │ ├── currency-registrar.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ └── queries.ts │ └── tsconfig.json ├── stores │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── account │ │ │ ├── base.spec.ts │ │ │ ├── base.ts │ │ │ ├── cosmos.ts │ │ │ ├── cosmwasm.ts │ │ │ ├── get-keplr.ts │ │ │ ├── index.ts │ │ │ ├── secret.ts │ │ │ ├── store.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── chain │ │ │ └── index.ts │ │ ├── common │ │ │ ├── index.ts │ │ │ ├── map │ │ │ │ └── index.ts │ │ │ ├── merge.spec.ts │ │ │ ├── merge.ts │ │ │ ├── query │ │ │ │ ├── index.ts │ │ │ │ ├── json-rpc.ts │ │ │ │ ├── query.spec.ts │ │ │ │ └── query.ts │ │ │ ├── types.ts │ │ │ └── utils │ │ │ │ └── index.ts │ │ ├── core │ │ │ ├── index.ts │ │ │ ├── interaction │ │ │ │ ├── chain-suggest.ts │ │ │ │ ├── icns.ts │ │ │ │ ├── index.ts │ │ │ │ ├── interaction.ts │ │ │ │ ├── keystone.ts │ │ │ │ ├── ledger.ts │ │ │ │ ├── permission.ts │ │ │ │ └── sign.ts │ │ │ ├── keyring.ts │ │ │ └── tokens.ts │ │ ├── ibc │ │ │ ├── channel.ts │ │ │ ├── currency-registrar.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── index.ts │ │ ├── price │ │ │ ├── index.ts │ │ │ ├── test.spec.ts │ │ │ └── types.ts │ │ ├── query │ │ │ ├── balances.ts │ │ │ ├── chain-query.ts │ │ │ ├── chain-rpc-query.ts │ │ │ ├── cosmos │ │ │ │ ├── account │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── balance │ │ │ │ │ ├── balances.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── spendable.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── distribution │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── params.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── governance │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── params.ts │ │ │ │ │ ├── proposal.ts │ │ │ │ │ ├── proposals.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── vote.ts │ │ │ │ ├── ibc │ │ │ │ │ ├── channel.ts │ │ │ │ │ ├── client-state.ts │ │ │ │ │ ├── denom-trace.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── index.ts │ │ │ │ ├── queries.ts │ │ │ │ ├── staking │ │ │ │ │ ├── delegations.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── params.ts │ │ │ │ │ ├── pool.ts │ │ │ │ │ ├── rewards.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── unbonding-delegations.ts │ │ │ │ │ └── validators.ts │ │ │ │ ├── status │ │ │ │ │ └── index.ts │ │ │ │ └── supply │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── inflation.ts │ │ │ │ │ ├── iris-minting.ts │ │ │ │ │ ├── juno │ │ │ │ │ ├── annual-provisions.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ │ ├── minting.ts │ │ │ │ │ ├── osmosis │ │ │ │ │ ├── epoch-provisions.ts │ │ │ │ │ ├── epochs.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── params.ts │ │ │ │ │ └── types.ts │ │ │ │ │ ├── sifchain.ts │ │ │ │ │ ├── stride │ │ │ │ │ ├── epoch-provisions.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── params.ts │ │ │ │ │ └── types.ts │ │ │ │ │ ├── supply.ts │ │ │ │ │ └── types.ts │ │ │ ├── cosmwasm │ │ │ │ ├── contract-query.ts │ │ │ │ ├── cw20-balance.ts │ │ │ │ ├── cw20-contract-info.ts │ │ │ │ ├── index.ts │ │ │ │ ├── queries.ts │ │ │ │ └── types.ts │ │ │ ├── icns │ │ │ │ ├── index.ts │ │ │ │ ├── names.ts │ │ │ │ ├── queries.ts │ │ │ │ └── types.ts │ │ │ ├── index.ts │ │ │ ├── osmosis │ │ │ │ ├── index.ts │ │ │ │ ├── queries.ts │ │ │ │ └── txfees │ │ │ │ │ ├── base-denom │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ │ ├── fee-tokens │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ │ └── spot-price-by-denom │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ ├── queries.ts │ │ │ └── secret-wasm │ │ │ │ ├── contract-hash.ts │ │ │ │ ├── contract-query.ts │ │ │ │ ├── errors.ts │ │ │ │ ├── index.ts │ │ │ │ ├── queries.ts │ │ │ │ ├── secret20-balance.ts │ │ │ │ ├── secret20-contract-info.ts │ │ │ │ └── types.ts │ │ └── window.d.ts │ └── tsconfig.json ├── types │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── bech32.ts │ │ ├── bip44.ts │ │ ├── chain-info.ts │ │ ├── cosmjs.ts │ │ ├── currency.ts │ │ ├── ethereum.ts │ │ ├── index.ts │ │ ├── secretjs.ts │ │ ├── wallet │ │ │ ├── index.ts │ │ │ └── keplr.ts │ │ └── window.ts │ └── tsconfig.json ├── unit │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── coin-pretty.spec.ts │ │ ├── coin-pretty.ts │ │ ├── coin-utils.spec.ts │ │ ├── coin-utils.ts │ │ ├── coin.spec.ts │ │ ├── coin.ts │ │ ├── dec-utils.spec.ts │ │ ├── dec-utils.ts │ │ ├── decimal.spec.ts │ │ ├── decimal.ts │ │ ├── etc.spec.ts │ │ ├── etc.ts │ │ ├── index.ts │ │ ├── int-pretty.spec.ts │ │ ├── int-pretty.ts │ │ ├── int.spec.ts │ │ ├── int.ts │ │ ├── price-pretty.spec.ts │ │ ├── price-pretty.ts │ │ ├── rate-pretty.spec.ts │ │ └── rate-pretty.ts │ └── tsconfig.json ├── wc-client-example │ ├── package.json │ ├── src │ │ ├── app.tsx │ │ ├── config.ts │ │ ├── get-wc-keplr.ts │ │ ├── index.html │ │ ├── index.tsx │ │ └── stores │ │ │ ├── index.tsx │ │ │ └── root.ts │ └── tsconfig.json ├── wc-client │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ │ └── index.ts │ └── tsconfig.json └── wc-qrcode-modal │ ├── .eslintignore │ ├── .prettierignore │ ├── jest.config.js │ ├── package.json │ ├── src │ ├── index.tsx │ └── modal.tsx │ └── tsconfig.json ├── scripts ├── firefox-distribution-diff-check.mjs ├── lerna-lifecyle-check-version.mjs ├── mobile-publish │ ├── package.json │ ├── publish.mjs │ ├── repository-dispatch.mjs │ └── yarn.lock ├── monorepo-deps-version-check.mjs └── publish.mjs ├── tsconfig.json └── yarn.lock /.dockerignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | yarn-error.log 3 | .idea 4 | .vscode 5 | 6 | .gitsecret 7 | .github 8 | **/node_modules 9 | **/dist 10 | **/build 11 | **/.git 12 | **/.cache 13 | **/coverage 14 | 15 | packages/proto-types/**/*.ts 16 | packages/proto-types/**/*.js 17 | packages/proto-types/**/*.mjs 18 | packages/proto-types/**/*.cjs 19 | packages/proto-types/**/*.map 20 | !packages/proto-types/proto-types-gen/**/*.ts 21 | !packages/proto-types/proto-types-gen/**/*.js 22 | !packages/proto-types/proto-types-gen/**/*.mjs 23 | !packages/proto-types/proto-types-gen/**/*.cjs 24 | !packages/proto-types/proto-types-gen/**/*.map 25 | 26 | packages/proto-types/proto-types-gen/src 27 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | **/*.scss 2 | **/*.html 3 | **/*.json 4 | **/*.png 5 | **/*.svg 6 | **/*.ttf 7 | **/*.secret 8 | **/*.md 9 | .DS_Store 10 | 11 | node_modules 12 | 13 | dist/* 14 | prod/* 15 | build/* 16 | 17 | yarn.lock 18 | Podfile.lock 19 | build.gradle 20 | 21 | injected-provider.bundle.js 22 | 23 | .gitsecret/* 24 | *.styl 25 | .github/* 26 | 27 | **/*.proto 28 | 29 | packages/proto-types/!(proto-types-gen)/**/*.ts 30 | packages/proto-types/!(proto-types-gen)/**/*.js 31 | packages/proto-types/!(proto-types-gen)/**/*.mjs 32 | packages/proto-types/!(proto-types-gen)/**/*.cjs 33 | packages/proto-types/!(proto-types-gen)/**/*.map 34 | packages/proto-types/outputHash 35 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | .yarn/releases/*.js linguist-vendored 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | contact_links: 2 | - name: Questions and Help 3 | url: https://keplr.crunch.help 4 | about: This issue tracker is not for support questions. Please refer to the Keplr help desk. -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/libraries-bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Libraries Bug report 3 | about: Create a report to help us improve the libraries (@keplr-wallet/*) 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: Lint 2 | on: 3 | pull_request: 4 | push: 5 | 6 | jobs: 7 | lint: 8 | name: Lint code base 9 | runs-on: ubuntu-20.04 10 | timeout-minutes: 30 11 | steps: 12 | - uses: actions/checkout@v3 13 | - name: Setup node 14 | uses: actions/setup-node@v3 15 | with: 16 | node-version: '16' 17 | - run: npm install --global yarn 18 | - run: yarn ci-lint 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea 3 | .vscode 4 | node_modules 5 | dist 6 | prod 7 | .gitsecret/keys/random_seed 8 | !*.secret 9 | *.log 10 | 11 | yarn-error.log 12 | 13 | build 14 | 15 | .cache 16 | 17 | coverage 18 | 19 | packages/proto-types/**/*.ts 20 | packages/proto-types/**/*.js 21 | packages/proto-types/**/*.mjs 22 | packages/proto-types/**/*.cjs 23 | packages/proto-types/**/*.map 24 | !packages/proto-types/proto-types-gen/**/*.ts 25 | !packages/proto-types/proto-types-gen/**/*.js 26 | !packages/proto-types/proto-types-gen/**/*.mjs 27 | !packages/proto-types/proto-types-gen/**/*.cjs 28 | !packages/proto-types/proto-types-gen/**/*.map 29 | 30 | packages/proto-types/proto-types-gen/src 31 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "packages/extension/src/keplr-torus-signin"] 2 | path = packages/extension/src/keplr-torus-signin 3 | url = https://github.com/chainapsis/keplr-torus-signin.git 4 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | **/*.png 2 | **/*.svg 3 | **/*.ttf 4 | **/*.secret 5 | **/*.md 6 | .DS_Store 7 | 8 | node_modules 9 | 10 | dist/* 11 | prod/* 12 | build/* 13 | 14 | yarn.lock 15 | Podfile.lock 16 | build.gradle 17 | 18 | injected-provider.bundle.js 19 | 20 | .gitsecret/* 21 | *.styl 22 | .github/* 23 | 24 | **/*.proto 25 | 26 | .eslintignore 27 | .prettierignore 28 | 29 | packages/proto-types/!(proto-types-gen)/**/*.ts 30 | packages/proto-types/!(proto-types-gen)/**/*.js 31 | packages/proto-types/!(proto-types-gen)/**/*.mjs 32 | packages/proto-types/!(proto-types-gen)/**/*.cjs 33 | packages/proto-types/!(proto-types-gen)/**/*.map 34 | packages/proto-types/outputHash 35 | 36 | package.json 37 | tsconfig.json 38 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | yarn-path ".yarn/releases/yarn-1.19.0.cjs" 6 | -------------------------------------------------------------------------------- /docker/create-firefox-archive/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:20.04 2 | 3 | RUN mkdir app 4 | 5 | COPY ./ /app 6 | 7 | WORKDIR /app 8 | 9 | # Remove all .DS_Store fils which exist only in OSX 10 | RUN find . -name .DS_Store -exec rm {} \; 11 | 12 | RUN tar cvzf firefox-archive.tar.gz * 13 | 14 | VOLUME /data 15 | 16 | WORKDIR /data 17 | 18 | CMD mkdir -p ./build && cp /app/firefox-archive.tar.gz /data/build/firefox-archive.tar.gz 19 | -------------------------------------------------------------------------------- /docs/.vuepress/public/Keplr_Black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/docs/.vuepress/public/Keplr_Black.png -------------------------------------------------------------------------------- /docs/.vuepress/public/favicon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/docs/.vuepress/public/favicon-256.png -------------------------------------------------------------------------------- /docs/.vuepress/public/og-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/docs/.vuepress/public/og-image.png -------------------------------------------------------------------------------- /docs/.vuepress/styles/index.styl: -------------------------------------------------------------------------------- 1 | :root 2 | --color-primary #5064fb 3 | --color-link #5064fb 4 | 5 | .suggest-chain-example-table { 6 | table { 7 | thead { 8 | tr { 9 | th { 10 | min-width: 12rem; 11 | } 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /docs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "docs", 3 | "version": "0.8.0", 4 | "description": "Keplr wallet Documentation", 5 | "scripts": { 6 | "serve": "trap 'exit 0' SIGINT; vuepress dev --no-cache", 7 | "build": "trap 'exit 0' SIGINT; vuepress build --no-cache --debug" 8 | }, 9 | "author": "chainapsis", 10 | "license": "Apache-2.0", 11 | "dependencies": { 12 | "markdown-it": "12.3.2", 13 | "markdown-it-container": "^3.0.0", 14 | "vuepress": "1.9.7", 15 | "vuepress-theme-cosmos": "1.0.183" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /etc/noop/README.md: -------------------------------------------------------------------------------- 1 | This directory isn’t actually used, and would be preferred to not be added. But it is needed to explicitly ignore specific libraries used by the dependency. Specifically, libsodium isn’t actually used and WebAssembly can’t be used in the extension’s sandbox environment but creates various errors so the directory exists to ignore libsodium. 2 | -------------------------------------------------------------------------------- /etc/noop/index.js: -------------------------------------------------------------------------------- 1 | module.exports = {}; 2 | -------------------------------------------------------------------------------- /etc/noop/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "noop", 3 | "version": "0.0.1", 4 | "main": "index.js", 5 | "private": true, 6 | "scripts": {}, 7 | "dependencies": {} 8 | } 9 | -------------------------------------------------------------------------------- /lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.11.34", 3 | "useWorkspaces": true, 4 | "npmClient": "yarn", 5 | "command": { 6 | "version": { 7 | "forcePublish": true, 8 | "exact": true 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/analytics/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/analytics/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/analytics/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@keplr-wallet/analytics", 3 | "version": "0.11.34", 4 | "main": "build/index.js", 5 | "author": "chainapsis", 6 | "license": "Apache-2.0", 7 | "private": false, 8 | "publishConfig": { 9 | "access": "public" 10 | }, 11 | "scripts": { 12 | "clean": "rm -rf node_modules; rm -rf build", 13 | "build": "tsc", 14 | "dev": "tsc -w", 15 | "lint-test": "eslint \"src/**/*\" && prettier --check \"src/**/*\"", 16 | "lint-fix": "eslint --fix \"src/**/*\" && prettier --write \"src/**/*\"" 17 | }, 18 | "dependencies": { 19 | "sha.js": "^2.4.11" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/analytics/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "jsx": "react", 5 | "baseUrl": ".", 6 | "outDir": "build", 7 | "declaration": true, 8 | "rootDir": "src", 9 | "skipLibCheck": true 10 | }, 11 | "include": ["src/**/*"] 12 | } 13 | -------------------------------------------------------------------------------- /packages/background/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/background/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/background/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/background/src/analytics/constants.ts: -------------------------------------------------------------------------------- 1 | export const ROUTE = "analytics"; 2 | -------------------------------------------------------------------------------- /packages/background/src/analytics/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./messages"; 3 | -------------------------------------------------------------------------------- /packages/background/src/analytics/init.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "@keplr-wallet/router"; 2 | import { GetAnalyticsIdMsg } from "./messages"; 3 | import { ROUTE } from "./constants"; 4 | import { getHandler } from "./handler"; 5 | import { AnalyticsService } from "./service"; 6 | 7 | export function init(router: Router, service: AnalyticsService) { 8 | router.registerMessage(GetAnalyticsIdMsg); 9 | 10 | router.addHandler(ROUTE, getHandler(service)); 11 | } 12 | -------------------------------------------------------------------------------- /packages/background/src/analytics/internal.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./init"; 3 | -------------------------------------------------------------------------------- /packages/background/src/analytics/messages.ts: -------------------------------------------------------------------------------- 1 | import { Message } from "@keplr-wallet/router"; 2 | import { ROUTE } from "./constants"; 3 | 4 | export class GetAnalyticsIdMsg extends Message { 5 | public static type() { 6 | return "get-analytics-id"; 7 | } 8 | 9 | constructor() { 10 | super(); 11 | } 12 | 13 | validateBasic(): void { 14 | // noop 15 | } 16 | 17 | approveExternal(): boolean { 18 | return true; 19 | } 20 | 21 | route(): string { 22 | return ROUTE; 23 | } 24 | 25 | type(): string { 26 | return GetAnalyticsIdMsg.type(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /packages/background/src/auto-lock-account/constants.ts: -------------------------------------------------------------------------------- 1 | export const ROUTE = "auto-lock-account"; 2 | -------------------------------------------------------------------------------- /packages/background/src/auto-lock-account/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./messages"; 3 | -------------------------------------------------------------------------------- /packages/background/src/auto-lock-account/init.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "@keplr-wallet/router"; 2 | import { 3 | UpdateAutoLockAccountDurationMsg, 4 | GetAutoLockAccountDurationMsg, 5 | StartAutoLockMonitoringMsg, 6 | } from "./messages"; 7 | import { ROUTE } from "./constants"; 8 | import { getHandler } from "./handler"; 9 | import { AutoLockAccountService } from "./service"; 10 | 11 | export function init(router: Router, service: AutoLockAccountService): void { 12 | router.registerMessage(GetAutoLockAccountDurationMsg); 13 | router.registerMessage(UpdateAutoLockAccountDurationMsg); 14 | router.registerMessage(StartAutoLockMonitoringMsg); 15 | 16 | router.addHandler(ROUTE, getHandler(service)); 17 | } 18 | -------------------------------------------------------------------------------- /packages/background/src/auto-lock-account/internal.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./init"; 3 | -------------------------------------------------------------------------------- /packages/background/src/chains/constants.ts: -------------------------------------------------------------------------------- 1 | export const ROUTE = "chains"; 2 | -------------------------------------------------------------------------------- /packages/background/src/chains/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./messages"; 3 | export * from "./types"; 4 | -------------------------------------------------------------------------------- /packages/background/src/chains/internal.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./init"; 3 | -------------------------------------------------------------------------------- /packages/background/src/chains/types.ts: -------------------------------------------------------------------------------- 1 | import { ChainInfo } from "@keplr-wallet/types"; 2 | 3 | export type ChainInfoWithRepoUpdateOptions = ChainInfo & { 4 | updateFromRepoDisabled?: boolean; 5 | }; 6 | 7 | export type ChainInfoWithCoreTypes = ChainInfo & { 8 | embeded: boolean; 9 | } & ChainInfoWithRepoUpdateOptions; 10 | -------------------------------------------------------------------------------- /packages/background/src/interaction/constants.ts: -------------------------------------------------------------------------------- 1 | export const ROUTE = "interaction"; 2 | -------------------------------------------------------------------------------- /packages/background/src/interaction/foreground/constants.ts: -------------------------------------------------------------------------------- 1 | export const ROUTE = "interaction-foreground"; 2 | -------------------------------------------------------------------------------- /packages/background/src/interaction/foreground/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./messages"; 3 | export * from "./types"; 4 | export * from "./init"; 5 | -------------------------------------------------------------------------------- /packages/background/src/interaction/foreground/init.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "@keplr-wallet/router"; 2 | import { PushInteractionDataMsg, PushEventDataMsg } from "./messages"; 3 | import { ROUTE } from "./constants"; 4 | import { getHandler } from "./handler"; 5 | import { InteractionForegroundService } from "./service"; 6 | 7 | export function interactionForegroundInit( 8 | router: Router, 9 | service: InteractionForegroundService 10 | ): void { 11 | router.registerMessage(PushInteractionDataMsg); 12 | router.registerMessage(PushEventDataMsg); 13 | 14 | router.addHandler(ROUTE, getHandler(service)); 15 | } 16 | -------------------------------------------------------------------------------- /packages/background/src/interaction/foreground/service.ts: -------------------------------------------------------------------------------- 1 | import { InteractionForegroundHandler } from "./types"; 2 | import { InteractionWaitingData } from "../types"; 3 | 4 | export class InteractionForegroundService { 5 | constructor(protected handler: InteractionForegroundHandler) {} 6 | 7 | pushData(data: InteractionWaitingData): void { 8 | this.handler.onInteractionDataReceived(data); 9 | } 10 | 11 | pushEvent(data: Omit): void { 12 | this.handler.onEventDataReceived(data); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/background/src/interaction/foreground/types.ts: -------------------------------------------------------------------------------- 1 | import { InteractionWaitingData } from "../types"; 2 | 3 | export interface InteractionForegroundHandler { 4 | onInteractionDataReceived: (data: InteractionWaitingData) => void; 5 | onEventDataReceived: ( 6 | data: Omit 7 | ) => void; 8 | } 9 | -------------------------------------------------------------------------------- /packages/background/src/interaction/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./messages"; 3 | export * from "./types"; 4 | 5 | export * from "./foreground"; 6 | -------------------------------------------------------------------------------- /packages/background/src/interaction/init.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "@keplr-wallet/router"; 2 | import { ApproveInteractionMsg, RejectInteractionMsg } from "./messages"; 3 | import { ROUTE } from "./constants"; 4 | import { getHandler } from "./handler"; 5 | import { InteractionService } from "./service"; 6 | 7 | export function init(router: Router, service: InteractionService): void { 8 | router.registerMessage(ApproveInteractionMsg); 9 | router.registerMessage(RejectInteractionMsg); 10 | 11 | router.addHandler(ROUTE, getHandler(service)); 12 | } 13 | -------------------------------------------------------------------------------- /packages/background/src/interaction/internal.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./init"; 3 | -------------------------------------------------------------------------------- /packages/background/src/interaction/types.ts: -------------------------------------------------------------------------------- 1 | export interface InteractionWaitingData { 2 | id: string; 3 | type: string; 4 | isInternal: boolean; 5 | data: T; 6 | } 7 | -------------------------------------------------------------------------------- /packages/background/src/keyring/constants.ts: -------------------------------------------------------------------------------- 1 | export const ROUTE = "keyring"; 2 | -------------------------------------------------------------------------------- /packages/background/src/keyring/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./messages"; 3 | export * from "./types"; 4 | export * from "./keyring"; 5 | export * from "./eip712"; 6 | -------------------------------------------------------------------------------- /packages/background/src/keyring/internal.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./init"; 3 | -------------------------------------------------------------------------------- /packages/background/src/keystone/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | -------------------------------------------------------------------------------- /packages/background/src/keystone/internal.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | -------------------------------------------------------------------------------- /packages/background/src/keystone/utils.ts: -------------------------------------------------------------------------------- 1 | export const toNumber = (num: string) => { 2 | const isHardened = /'$/.test(num); 3 | return isHardened ? +num.slice(0, -1) : +num; 4 | }; 5 | 6 | export const parseHDPath = (hdPath: string) => { 7 | const path = hdPath.split(/\//); 8 | return { 9 | coinType: toNumber(path[2]), 10 | bip44HDPath: { 11 | account: toNumber(path[3]), 12 | change: toNumber(path[4]), 13 | addressIndex: toNumber(path[5]), 14 | }, 15 | }; 16 | }; 17 | -------------------------------------------------------------------------------- /packages/background/src/ledger/constants.ts: -------------------------------------------------------------------------------- 1 | export const ROUTE = "ledger"; 2 | -------------------------------------------------------------------------------- /packages/background/src/ledger/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./messages"; 3 | export * from "./ledger"; 4 | -------------------------------------------------------------------------------- /packages/background/src/ledger/init.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "@keplr-wallet/router"; 2 | import { LedgerGetWebHIDFlagMsg, LedgerSetWebHIDFlagMsg } from "./messages"; 3 | import { ROUTE } from "./constants"; 4 | import { getHandler } from "./handler"; 5 | import { LedgerService } from "./service"; 6 | 7 | export function init(router: Router, service: LedgerService): void { 8 | router.registerMessage(LedgerGetWebHIDFlagMsg); 9 | router.registerMessage(LedgerSetWebHIDFlagMsg); 10 | 11 | router.addHandler(ROUTE, getHandler(service)); 12 | } 13 | -------------------------------------------------------------------------------- /packages/background/src/ledger/internal.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./init"; 3 | -------------------------------------------------------------------------------- /packages/background/src/ledger/options.ts: -------------------------------------------------------------------------------- 1 | import Transport from "@ledgerhq/hw-transport"; 2 | 3 | export type TransportIniter = (...args: any[]) => Promise; 4 | 5 | export interface LedgerOptions { 6 | defaultMode: string; 7 | transportIniters: { 8 | [mode: string]: TransportIniter; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /packages/background/src/permission/constants.ts: -------------------------------------------------------------------------------- 1 | export const ROUTE = "permission"; 2 | -------------------------------------------------------------------------------- /packages/background/src/permission/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./types"; 3 | export * from "./messages"; 4 | -------------------------------------------------------------------------------- /packages/background/src/permission/internal.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./init"; 3 | -------------------------------------------------------------------------------- /packages/background/src/permission/types.ts: -------------------------------------------------------------------------------- 1 | export const INTERACTION_TYPE_PERMISSION = "permission"; 2 | export const INTERACTION_TYPE_GLOBAL_PERMISSION = "global_permission"; 3 | 4 | export function getBasicAccessPermissionType() { 5 | return "basic-access"; 6 | } 7 | 8 | export function isBasicAccessPermissionType(type: string) { 9 | return type === getBasicAccessPermissionType(); 10 | } 11 | 12 | export interface PermissionData { 13 | chainIds: string[]; 14 | type: string; 15 | origins: string[]; 16 | } 17 | 18 | export interface GlobalPermissionData { 19 | type: string; 20 | origins: string[]; 21 | } 22 | -------------------------------------------------------------------------------- /packages/background/src/persistent-memory/constants.ts: -------------------------------------------------------------------------------- 1 | export const ROUTE = "persistent-memory"; 2 | -------------------------------------------------------------------------------- /packages/background/src/persistent-memory/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./messages"; 3 | -------------------------------------------------------------------------------- /packages/background/src/persistent-memory/init.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "@keplr-wallet/router"; 2 | import { GetPersistentMemoryMsg, SetPersistentMemoryMsg } from "./messages"; 3 | import { ROUTE } from "./constants"; 4 | import { getHandler } from "./handler"; 5 | import { PersistentMemoryService } from "./service"; 6 | 7 | export function init(router: Router, service: PersistentMemoryService) { 8 | router.registerMessage(SetPersistentMemoryMsg); 9 | router.registerMessage(GetPersistentMemoryMsg); 10 | 11 | router.addHandler(ROUTE, getHandler(service)); 12 | } 13 | -------------------------------------------------------------------------------- /packages/background/src/persistent-memory/internal.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./init"; 3 | -------------------------------------------------------------------------------- /packages/background/src/persistent-memory/service.ts: -------------------------------------------------------------------------------- 1 | export class PersistentMemoryService { 2 | data: any = {}; 3 | 4 | init() { 5 | // noop 6 | } 7 | 8 | set(data: any) { 9 | this.data = { ...this.data, ...data }; 10 | } 11 | 12 | get(): any { 13 | return this.data; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/background/src/phishing-list/constants.ts: -------------------------------------------------------------------------------- 1 | export const ROUTE = "phishing-list"; 2 | -------------------------------------------------------------------------------- /packages/background/src/phishing-list/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./messages"; 3 | -------------------------------------------------------------------------------- /packages/background/src/phishing-list/init.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "@keplr-wallet/router"; 2 | import { ROUTE } from "./constants"; 3 | import { getHandler } from "./handler"; 4 | import { PhishingListService } from "./service"; 5 | import { 6 | CheckBadTwitterIdMsg, 7 | CheckURLIsPhishingMsg, 8 | URLTempAllowMsg, 9 | } from "./messages"; 10 | 11 | export function init(router: Router, service: PhishingListService): void { 12 | router.registerMessage(CheckURLIsPhishingMsg); 13 | router.registerMessage(URLTempAllowMsg); 14 | router.registerMessage(CheckBadTwitterIdMsg); 15 | 16 | router.addHandler(ROUTE, getHandler(service)); 17 | } 18 | -------------------------------------------------------------------------------- /packages/background/src/phishing-list/internal.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./init"; 3 | -------------------------------------------------------------------------------- /packages/background/src/secret-wasm/constants.ts: -------------------------------------------------------------------------------- 1 | export const ROUTE = "secret-wasm"; 2 | -------------------------------------------------------------------------------- /packages/background/src/secret-wasm/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./messages"; 3 | -------------------------------------------------------------------------------- /packages/background/src/secret-wasm/init.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "@keplr-wallet/router"; 2 | import { 3 | GetPubkeyMsg, 4 | GetTxEncryptionKeyMsg, 5 | ReqeustEncryptMsg, 6 | RequestDecryptMsg, 7 | } from "./messages"; 8 | import { SecretWasmService } from "./service"; 9 | import { ROUTE } from "./constants"; 10 | import { getHandler } from "./handler"; 11 | 12 | export function init(router: Router, service: SecretWasmService): void { 13 | router.registerMessage(GetPubkeyMsg); 14 | router.registerMessage(ReqeustEncryptMsg); 15 | router.registerMessage(RequestDecryptMsg); 16 | router.registerMessage(GetTxEncryptionKeyMsg); 17 | 18 | router.addHandler(ROUTE, getHandler(service)); 19 | } 20 | -------------------------------------------------------------------------------- /packages/background/src/secret-wasm/internal.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./init"; 3 | -------------------------------------------------------------------------------- /packages/background/src/tokens/constants.ts: -------------------------------------------------------------------------------- 1 | export const ROUTE = "tokens"; 2 | -------------------------------------------------------------------------------- /packages/background/src/tokens/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./messages"; 3 | export * from "./types"; 4 | -------------------------------------------------------------------------------- /packages/background/src/tokens/internal.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./init"; 3 | -------------------------------------------------------------------------------- /packages/background/src/tokens/types.ts: -------------------------------------------------------------------------------- 1 | export function getSecret20ViewingKeyPermissionType(contractAddress: string) { 2 | return `viewing-key/${contractAddress}`; 3 | } 4 | 5 | export function isSecret20ViewingKeyPermissionType(type: string) { 6 | return type.startsWith("viewing-key/"); 7 | } 8 | 9 | export function splitSecret20ViewingKeyPermissionType(type: string) { 10 | return type.replace("viewing-key/", ""); 11 | } 12 | -------------------------------------------------------------------------------- /packages/background/src/tx/constants.ts: -------------------------------------------------------------------------------- 1 | export const ROUTE = "background-tx"; 2 | -------------------------------------------------------------------------------- /packages/background/src/tx/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./messages"; 3 | export * from "./types"; 4 | -------------------------------------------------------------------------------- /packages/background/src/tx/init.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "@keplr-wallet/router"; 2 | import { SendTxMsg } from "./messages"; 3 | import { ROUTE } from "./constants"; 4 | import { getHandler } from "./handler"; 5 | import { BackgroundTxService } from "./service"; 6 | 7 | export function init(router: Router, service: BackgroundTxService): void { 8 | router.registerMessage(SendTxMsg); 9 | 10 | router.addHandler(ROUTE, getHandler(service)); 11 | } 12 | -------------------------------------------------------------------------------- /packages/background/src/tx/internal.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./init"; 3 | -------------------------------------------------------------------------------- /packages/background/src/tx/types.ts: -------------------------------------------------------------------------------- 1 | export interface Notification { 2 | create: (params: { 3 | iconRelativeUrl?: string; 4 | title: string; 5 | message: string; 6 | }) => void; 7 | } 8 | -------------------------------------------------------------------------------- /packages/background/src/updater/constants.ts: -------------------------------------------------------------------------------- 1 | export const ROUTE = "chain-updator"; 2 | -------------------------------------------------------------------------------- /packages/background/src/updater/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./messages"; 3 | -------------------------------------------------------------------------------- /packages/background/src/updater/init.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "@keplr-wallet/router"; 2 | import { 3 | ResetChainEndpointsMsg, 4 | SetChainEndpointsMsg, 5 | TryUpdateChainMsg, 6 | } from "./messages"; 7 | import { ROUTE } from "./constants"; 8 | import { getHandler } from "./handler"; 9 | import { ChainUpdaterService } from "./service"; 10 | 11 | export function init(router: Router, service: ChainUpdaterService): void { 12 | router.registerMessage(TryUpdateChainMsg); 13 | router.registerMessage(SetChainEndpointsMsg); 14 | router.registerMessage(ResetChainEndpointsMsg); 15 | 16 | router.addHandler(ROUTE, getHandler(service)); 17 | } 18 | -------------------------------------------------------------------------------- /packages/background/src/updater/internal.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./init"; 3 | -------------------------------------------------------------------------------- /packages/background/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/chain-validator/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/chain-validator/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/chain-validator/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/chain-validator/src/basic.ts: -------------------------------------------------------------------------------- 1 | import { ChainInfo } from "@keplr-wallet/types"; 2 | import { ChainInfoSchema } from "./schema"; 3 | 4 | export async function validateBasicChainInfoType( 5 | chainInfo: ChainInfo, 6 | stripUnknown: boolean = true 7 | ): Promise { 8 | return await ChainInfoSchema.validateAsync(chainInfo, { 9 | stripUnknown, 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /packages/chain-validator/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./schema"; 2 | export * from "./basic"; 3 | export * from "./connection"; 4 | export * from "./feature"; 5 | -------------------------------------------------------------------------------- /packages/chain-validator/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src", 8 | "jsx": "react" 9 | }, 10 | "include": [ 11 | "src/**/*" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /packages/common/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/common/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/common/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/common/src/denom/denom.spec.ts: -------------------------------------------------------------------------------- 1 | import { DenomHelper } from "./index"; 2 | 3 | describe("Test Denom helper methods", () => { 4 | test("Test ibc denom", () => { 5 | expect( 6 | DenomHelper.ibcDenom( 7 | [ 8 | { 9 | portId: "transfer", 10 | channelId: "channel-0", 11 | }, 12 | ], 13 | "uatom" 14 | ) 15 | ).toBe( 16 | "ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2" 17 | ); 18 | }); 19 | }); 20 | -------------------------------------------------------------------------------- /packages/common/src/icns/index.ts: -------------------------------------------------------------------------------- 1 | export function parseICNSName(name: string): [string, string] | undefined { 2 | const split = name.split("."); 3 | if (split.length === 2) { 4 | if (split[0].length > 0 && split[1].length > 0) { 5 | return [split[0], split[1]]; 6 | } 7 | } 8 | 9 | return undefined; 10 | } 11 | 12 | export function validateICNSName(name: string, bech32Prefix: string): boolean { 13 | const parsed = parseICNSName(name); 14 | if (!parsed) { 15 | return false; 16 | } 17 | return parsed[1] === bech32Prefix; 18 | } 19 | -------------------------------------------------------------------------------- /packages/common/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./kv-store"; 2 | export * from "./denom"; 3 | export * from "./mobx"; 4 | export * from "./utils"; 5 | export * from "./escape"; 6 | export * from "./json"; 7 | export * from "./icns"; 8 | -------------------------------------------------------------------------------- /packages/common/src/json/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./sort"; 2 | -------------------------------------------------------------------------------- /packages/common/src/json/sort.ts: -------------------------------------------------------------------------------- 1 | export function sortObjectByKey(obj: Record): any { 2 | if (typeof obj !== "object" || obj === null) { 3 | return obj; 4 | } 5 | if (Array.isArray(obj)) { 6 | return obj.map(sortObjectByKey); 7 | } 8 | const sortedKeys = Object.keys(obj).sort(); 9 | const result: Record = {}; 10 | sortedKeys.forEach((key) => { 11 | result[key] = sortObjectByKey(obj[key]); 12 | }); 13 | return result; 14 | } 15 | 16 | export function sortedJsonByKeyStringify(obj: Record): string { 17 | return JSON.stringify(sortObjectByKey(obj)); 18 | } 19 | -------------------------------------------------------------------------------- /packages/common/src/kv-store/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./interface"; 2 | export * from "./extension"; 3 | export * from "./base"; 4 | export * from "./memory"; 5 | export * from "./local"; 6 | export * from "./indexed-db"; 7 | -------------------------------------------------------------------------------- /packages/common/src/kv-store/interface.ts: -------------------------------------------------------------------------------- 1 | export interface KVStore { 2 | get(key: string): Promise; 3 | set(key: string, data: T | null): Promise; 4 | prefix(): string; 5 | } 6 | 7 | export interface KVStoreProvider { 8 | get(): Promise<{ [key: string]: any }>; 9 | set(items: { [key: string]: any }): Promise; 10 | } 11 | -------------------------------------------------------------------------------- /packages/common/src/kv-store/memory.ts: -------------------------------------------------------------------------------- 1 | import { BaseKVStore } from "./base"; 2 | import { KVStoreProvider } from "./interface"; 3 | 4 | class MemoryKVStoreProvider implements KVStoreProvider { 5 | private store: { [key: string]: any } = {}; 6 | 7 | get() { 8 | return Promise.resolve(this.store); 9 | } 10 | 11 | set(items: { [key: string]: any }) { 12 | this.store = { ...this.store, ...items }; 13 | return Promise.resolve(); 14 | } 15 | } 16 | 17 | export class MemoryKVStore extends BaseKVStore { 18 | constructor(prefix: string) { 19 | super(new MemoryKVStoreProvider(), prefix); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/common/src/utils/debouncer.ts: -------------------------------------------------------------------------------- 1 | export class Debouncer { 2 | static promise( 3 | fn: (...args: ArgumentsType) => PromiseLike | ReturnType 4 | ): (...args: ArgumentsType) => Promise { 5 | let currentPromise: PromiseLike | ReturnType | undefined; 6 | 7 | return async (...arguments_) => { 8 | if (currentPromise) { 9 | return currentPromise; 10 | } 11 | 12 | try { 13 | currentPromise = fn.apply(this, arguments_); 14 | return await currentPromise; 15 | } finally { 16 | currentPromise = undefined; 17 | } 18 | }; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/common/src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./debouncer"; 2 | -------------------------------------------------------------------------------- /packages/common/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src" 8 | }, 9 | "include": [ 10 | "src/**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/cosmjs-test/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/cosmjs-test/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/cosmjs-test/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/cosmjs-test/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cosmjs-test", 3 | "version": "0.11.34", 4 | "author": "chainapsis", 5 | "license": "Apache-2.0", 6 | "private": true, 7 | "scripts": { 8 | "clean": "rm -rf node_modules", 9 | "test": "tsc && jest --passWithNoTests", 10 | "lint-test": "eslint \"src/**/*\" && prettier --check \"src/**/*\"", 11 | "lint-fix": "eslint --fix \"src/**/*\" && prettier --write \"src/**/*\"" 12 | }, 13 | "devDependencies": { 14 | "@cosmjs/stargate": "^0.29.3", 15 | "@keplr-wallet/provider-mock": "0.11.34", 16 | "secretjs": "^1.6.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/cosmjs-test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "declaration": true, 6 | "rootDir": "src", 7 | "noEmit": true, 8 | // Secretjs uses nodejs 18 as typing. 9 | // However, keplr uses 16. And, it makes type conflicts. 10 | // This package is not used as public and not included to product. 11 | // So, just ignore the error from node_modules. 12 | "skipLibCheck": true 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/cosmos/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/cosmos/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/cosmos/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/cosmos/src/adr-36/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./amino"; 2 | -------------------------------------------------------------------------------- /packages/cosmos/src/chain-id/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./cosmos"; 2 | export * from "./ethermint"; 3 | -------------------------------------------------------------------------------- /packages/cosmos/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./account"; 2 | export * from "./bech32"; 3 | export * from "./chain-id"; 4 | export * from "./tx-tracer"; 5 | export * from "./stargate"; 6 | export * from "./adr-36"; 7 | export * from "./signing"; 8 | -------------------------------------------------------------------------------- /packages/cosmos/src/signing/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./encode"; 2 | -------------------------------------------------------------------------------- /packages/cosmos/src/stargate/codec/unknown.ts: -------------------------------------------------------------------------------- 1 | import { Buffer } from "buffer/"; 2 | import { Any } from "@keplr-wallet/proto-types/google/protobuf/any"; 3 | 4 | export class UnknownMessage implements Any { 5 | constructor( 6 | /** Any type_url. */ 7 | protected readonly _typeUrl: string, 8 | /** Any value. */ 9 | protected readonly _value: Uint8Array 10 | ) {} 11 | 12 | get typeUrl(): string { 13 | return this._typeUrl; 14 | } 15 | 16 | get value(): Uint8Array { 17 | return this._value; 18 | } 19 | 20 | toJSON() { 21 | return { 22 | type_url: this._typeUrl, 23 | value: Buffer.from(this._value).toString("base64"), 24 | }; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/cosmos/src/stargate/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./codec"; 2 | export * from "./decoder"; 3 | export * from "./wrapper"; 4 | -------------------------------------------------------------------------------- /packages/cosmos/src/tx-tracer/types.ts: -------------------------------------------------------------------------------- 1 | export enum WsReadyState { 2 | CONNECTING, 3 | OPEN, 4 | CLOSING, 5 | CLOSED, 6 | // WS is not initialized or the ready state of WS is unknown 7 | NONE, 8 | } 9 | 10 | export interface TxEventMap { 11 | close: (e: CloseEvent) => void; 12 | error: (e: ErrorEvent) => void; 13 | message: (e: MessageEvent) => void; 14 | open: (e: Event) => void; 15 | } 16 | -------------------------------------------------------------------------------- /packages/cosmos/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src" 8 | }, 9 | "include": [ 10 | "src/**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/crypto/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/crypto/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/crypto/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/crypto/src/hash.spec.ts: -------------------------------------------------------------------------------- 1 | import { Hash } from "./hash"; 2 | 3 | describe("Test hash", () => { 4 | it("sha256", () => { 5 | expect( 6 | Buffer.from(Hash.sha256(Buffer.from("12345678", "hex"))).toString("hex") 7 | ).toBe("b2ed992186a5cb19f6668aade821f502c1d00970dfd0e35128d51bac4649916c"); 8 | }); 9 | 10 | it("keccak256", () => { 11 | expect( 12 | Buffer.from(Hash.keccak256(Buffer.from("12345678", "hex"))).toString( 13 | "hex" 14 | ) 15 | ).toBe("30ca65d5da355227c97ff836c9c6719af9d3835fc6bc72bddc50eeecc1bb2b25"); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/crypto/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./mnemonic"; 2 | export * from "./key"; 3 | export * from "./hash"; 4 | -------------------------------------------------------------------------------- /packages/crypto/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src" 8 | }, 9 | "include": [ 10 | "src/**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/extension/.eslintignore: -------------------------------------------------------------------------------- 1 | **/*.scss 2 | **/*.html 3 | **/*.json 4 | **/*.png 5 | **/*.svg 6 | **/*.ttf 7 | **/*.secret 8 | **/*.md 9 | .DS_Store 10 | 11 | .gitignore 12 | 13 | node_modules 14 | 15 | dist/* 16 | prod/* 17 | build/* 18 | 19 | yarn.lock 20 | 21 | noop-alt-sign-in 22 | -------------------------------------------------------------------------------- /packages/extension/.prettierignore: -------------------------------------------------------------------------------- 1 | **/*.png 2 | **/*.svg 3 | **/*.ttf 4 | **/*.secret 5 | **/*.md 6 | .DS_Store 7 | 8 | .gitignore 9 | 10 | node_modules 11 | 12 | dist/* 13 | prod/* 14 | build/* 15 | 16 | yarn.lock 17 | 18 | noop-alt-sign-in 19 | -------------------------------------------------------------------------------- /packages/extension/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | moduleNameMapper: { 5 | "\\.(css|scss|sass)$": "identity-obj-proxy", 6 | }, 7 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 8 | }; 9 | -------------------------------------------------------------------------------- /packages/extension/noop-alt-sign-in/index.d.ts: -------------------------------------------------------------------------------- 1 | export declare const ADDITIONAL_SIGN_IN_PREPEND: undefined; 2 | export declare const ADDITIONAL_INTL_MESSAGES: {}; 3 | -------------------------------------------------------------------------------- /packages/extension/noop-alt-sign-in/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.ADDITIONAL_INTL_MESSAGES = exports.ADDITIONAL_SIGN_IN_PREPEND = void 0; 4 | exports.ADDITIONAL_SIGN_IN_PREPEND = undefined; 5 | exports.ADDITIONAL_INTL_MESSAGES = {}; 6 | //# sourceMappingURL=index.js.map 7 | -------------------------------------------------------------------------------- /packages/extension/noop-alt-sign-in/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "noop-alt-sign-in", 3 | "version": "0.0.1", 4 | "main": "index.js", 5 | "sideEffects": false, 6 | "dependencies": {} 7 | } 8 | -------------------------------------------------------------------------------- /packages/extension/src/@types/scrypt-js/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module "scrypt-js" { 2 | export type ProgressCallback = (progress: number) => boolean | void; 3 | 4 | export function scrypt( 5 | password: ArrayLike, 6 | salt: ArrayLike, 7 | N: number, 8 | r: number, 9 | p: number, 10 | dkLen: number, 11 | callback?: ProgressCallback 12 | ): Promise; 13 | 14 | export function syncScrypt( 15 | password: ArrayLike, 16 | salt: ArrayLike, 17 | N: number, 18 | r: number, 19 | p: number, 20 | dkLen: number 21 | ): Uint8Array; 22 | } 23 | -------------------------------------------------------------------------------- /packages/extension/src/components/alert-experimental-feature/style.module.scss: -------------------------------------------------------------------------------- 1 | .warning { 2 | display: flex; 3 | flex-direction: row; 4 | 5 | .img-container { 6 | display: flex; 7 | height: 100%; 8 | justify-content: center; 9 | align-items: center; 10 | margin-right: 8px; 11 | 12 | img { 13 | height: 36px; 14 | } 15 | } 16 | 17 | .content { 18 | display: flex; 19 | flex-direction: column; 20 | 21 | .title { 22 | font-size: 16px; 23 | font-weight: bold; 24 | line-height: 1.75; 25 | letter-spacing: -0.3px; 26 | color: white; 27 | } 28 | 29 | .paragraph { 30 | font-size: 13px; 31 | color: white; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /packages/extension/src/components/banner/style.module.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | height: 100%; 3 | } 4 | 5 | .flex-vertical { 6 | display: flex; 7 | flex-direction: column; 8 | } 9 | 10 | .items-center { 11 | align-items: center; 12 | } 13 | 14 | .flex-horizontal { 15 | display: flex; 16 | flex-direction: row; 17 | } 18 | 19 | .empty { 20 | flex: 1; 21 | } 22 | 23 | .icon { 24 | width: 100px; 25 | height: 100px; 26 | 27 | margin-bottom: 30px; 28 | } 29 | 30 | .logo { 31 | object-fit: contain; 32 | height: 32px; 33 | 34 | margin-bottom: 4px; 35 | } 36 | 37 | .subtitle { 38 | font-size: 18px; 39 | } 40 | -------------------------------------------------------------------------------- /packages/extension/src/components/form/fee-buttons/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./fee-buttons"; 2 | -------------------------------------------------------------------------------- /packages/extension/src/components/form/gas-form/auto.module.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | 5 | .gasAdjustmentContainer { 6 | display: flex; 7 | 8 | .multiply-icon { 9 | margin: 0 8px; 10 | margin-top: 42px; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/extension/src/components/form/gas-form/container.module.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | padding: 12px; 3 | background-color: white; 4 | border-radius: 6px; 5 | 6 | box-shadow: 0 1px 3px rgb(50 50 93 / 15%), 0 1px 0 rgb(0 0 0 / 2%) !important; 7 | 8 | margin-bottom: 1.5rem; 9 | 10 | .auto-button-group { 11 | margin-bottom: 0.5rem; 12 | 13 | display: flex; 14 | align-items: center; 15 | 16 | .label { 17 | font-weight: 500; 18 | font-size: 14px; 19 | line-height: 21px; 20 | color: #323c4a; 21 | margin-right: 0.325rem; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /packages/extension/src/components/form/gas-form/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./container"; 2 | export * from "./auto"; 3 | -------------------------------------------------------------------------------- /packages/extension/src/components/form/ibc/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./channel-registrar"; 2 | export * from "./chain-selector"; 3 | -------------------------------------------------------------------------------- /packages/extension/src/components/form/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./input"; 2 | export * from "./textarea"; 3 | export * from "./address-input"; 4 | export * from "./coin-input"; 5 | export * from "./fee-buttons"; 6 | export * from "./memo-input"; 7 | export * from "./gas-input"; 8 | export * from "./ibc"; 9 | export * from "./password-input"; 10 | -------------------------------------------------------------------------------- /packages/extension/src/components/form/input.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../../node_modules/argon-dashboard-react/src/assets/scss/argon-dashboard/custom/functions"; 2 | @import "../../../../../node_modules/argon-dashboard-react/src/assets/scss/argon-dashboard/custom/mixins"; 3 | @import "../../../../../node_modules/argon-dashboard-react/src/assets/scss/argon-dashboard/custom/variables"; 4 | 5 | .input { 6 | box-shadow: $input-alternative-box-shadow !important; 7 | 8 | &:focus { 9 | box-shadow: $input-focus-alternative-box-shadow !important; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/extension/src/components/form/password-input.module.scss: -------------------------------------------------------------------------------- 1 | .capslock-tooltip-arrow { 2 | left: 10px !important; 3 | } 4 | -------------------------------------------------------------------------------- /packages/extension/src/components/header/header.tsx: -------------------------------------------------------------------------------- 1 | import React, { FunctionComponent } from "react"; 2 | import classnames from "classnames"; 3 | 4 | import "./style"; 5 | 6 | export interface HeaderProps { 7 | fixed?: boolean; 8 | left?: React.ReactNode; 9 | right?: React.ReactNode; 10 | } 11 | 12 | export const Header: FunctionComponent = ({ 13 | fixed, 14 | left, 15 | right, 16 | children, 17 | }) => { 18 | return ( 19 |
20 |
{left}
21 |
{children}
22 |
{right}
23 |
24 | ); 25 | }; 26 | -------------------------------------------------------------------------------- /packages/extension/src/components/header/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./header"; 2 | -------------------------------------------------------------------------------- /packages/extension/src/components/header/style/index.tsx: -------------------------------------------------------------------------------- 1 | import "./header.module.scss"; 2 | -------------------------------------------------------------------------------- /packages/extension/src/components/icon/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./github"; 2 | export * from "./information-circle-outline"; 3 | -------------------------------------------------------------------------------- /packages/extension/src/components/loading-indicator/style.module.scss: -------------------------------------------------------------------------------- 1 | .modal { 2 | :global(.modal-dialog) { 3 | transition: none !important; 4 | } 5 | } 6 | 7 | .modal-content-empty { 8 | background: transparent; 9 | box-shadow: none; 10 | 11 | display: flex; 12 | justify-content: center; 13 | align-items: center; 14 | } 15 | -------------------------------------------------------------------------------- /packages/extension/src/content-scripts/inject/injected-script.ts: -------------------------------------------------------------------------------- 1 | import { InjectedKeplr } from "@keplr-wallet/provider"; 2 | import { injectKeplrToWindow } from "@keplr-wallet/provider"; 3 | 4 | import manifest from "../../manifest.json"; 5 | 6 | const keplr = new InjectedKeplr(manifest.version, "extension"); 7 | injectKeplrToWindow(keplr); 8 | -------------------------------------------------------------------------------- /packages/extension/src/env.d.ts: -------------------------------------------------------------------------------- 1 | declare namespace NodeJS { 2 | interface ProcessEnv { 3 | /** node environment */ 4 | NODE_ENV: "production" | "development" | undefined; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/extension/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Keplr 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/extension/src/layouts/empty-layout/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { CSSProperties, FunctionComponent } from "react"; 2 | 3 | import style from "./style.module.scss"; 4 | 5 | import classnames from "classnames"; 6 | 7 | interface Props { 8 | className?: string; 9 | style?: CSSProperties; 10 | } 11 | 12 | export const EmptyLayout: FunctionComponent = (props) => { 13 | const { children } = props; 14 | 15 | return ( 16 |
20 | {children} 21 |
22 | ); 23 | }; 24 | -------------------------------------------------------------------------------- /packages/extension/src/layouts/empty-layout/style.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../styles/var"; 2 | 3 | .container { 4 | padding: $layout-margin; 5 | } 6 | -------------------------------------------------------------------------------- /packages/extension/src/layouts/header-layout/style.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../styles/var"; 2 | 3 | .container { 4 | height: 100%; 5 | display: flex; 6 | flex-direction: column; 7 | background-color: $background-color; 8 | } 9 | 10 | .inner-container { 11 | padding: 0 $layout-padding $layout-padding; 12 | flex: 1; 13 | } 14 | -------------------------------------------------------------------------------- /packages/extension/src/layouts/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./header-layout"; 2 | -------------------------------------------------------------------------------- /packages/extension/src/layouts/menu/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./menu"; 2 | export * from "./menu-button"; 3 | -------------------------------------------------------------------------------- /packages/extension/src/layouts/menu/menu.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../styles/var"; 2 | 3 | .menu-nav { 4 | position: fixed; 5 | top: 0; 6 | left: 0; 7 | padding-top: $header-height; 8 | 9 | width: $popup-size-width * 0.75; 10 | height: 100%; 11 | z-index: 900; 12 | 13 | background-color: white; 14 | overflow-y: auto; 15 | } 16 | 17 | .background { 18 | position: fixed; 19 | top: 0; 20 | left: 0; 21 | 22 | width: $popup-size-width; 23 | height: 100%; 24 | z-index: 899; 25 | 26 | background-color: black; 27 | } 28 | -------------------------------------------------------------------------------- /packages/extension/src/manifest.firefox.json: -------------------------------------------------------------------------------- 1 | { 2 | "applications": { 3 | "gecko": { 4 | "id": "keplr-extension@keplr.app", 5 | "strict_min_version": "89.0" 6 | } 7 | }, 8 | "icons": { 9 | "16": "assets/icon-beta-16.png", 10 | "48": "assets/icon-beta-48.png", 11 | "128": "assets/icon-beta-128.png" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/extension/src/pages/access/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./basic-access"; 2 | export * from "./viewing-key"; 3 | -------------------------------------------------------------------------------- /packages/extension/src/pages/keystone/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./import-pubkey"; 2 | -------------------------------------------------------------------------------- /packages/extension/src/pages/keystone/loading.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import style from "./style.module.scss"; 3 | 4 | interface Props { 5 | title?: string; 6 | } 7 | 8 | export function Loading({ title }: Props) { 9 | return ( 10 |
11 |
12 | 17 | {title &&
{title}
} 18 |
19 |
20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /packages/extension/src/pages/ledger/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./grant"; 2 | -------------------------------------------------------------------------------- /packages/extension/src/pages/lock/style.module.scss: -------------------------------------------------------------------------------- 1 | .form-container { 2 | display: flex; 3 | flex-direction: column; 4 | height: 100%; 5 | } 6 | 7 | .capslock-tooltip-arrow { 8 | left: 10px !important; 9 | } 10 | -------------------------------------------------------------------------------- /packages/extension/src/pages/main/bip44-select-modal.module.scss: -------------------------------------------------------------------------------- 1 | .title { 2 | font-size: 28px; 3 | font-weight: bold; 4 | color: #32325d; 5 | } 6 | 7 | .selectable { 8 | margin-left: 6px; 9 | margin-top: -6px; 10 | 11 | .path { 12 | font-size: 12px; 13 | font-weight: bold; 14 | color: #9092b6; 15 | 16 | margin-bottom: 6px; 17 | } 18 | 19 | .label { 20 | font-size: 12px; 21 | line-height: 1.2; 22 | color: #8898aa; 23 | 24 | text-transform: uppercase; 25 | } 26 | 27 | .value { 28 | font-size: 16px; 29 | color: #212529; 30 | 31 | margin-bottom: 8px; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /packages/extension/src/pages/main/evmos-dashboard.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../styles/var"; 2 | 3 | .container-inner { 4 | display: flex; 5 | flex-direction: row; 6 | 7 | height: 48px; 8 | justify-content: center; 9 | align-items: center; 10 | 11 | .paragraph-main { 12 | line-height: 1.35; 13 | } 14 | 15 | .paragraph-sub { 16 | line-height: 1.35; 17 | color: #8898aa; 18 | } 19 | 20 | .vertical { 21 | display: flex; 22 | flex-direction: column; 23 | } 24 | 25 | .button { 26 | min-width: 76px; 27 | padding: 6px 10px 4px; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /packages/extension/src/pages/main/ibc-transfer.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../styles/var"; 2 | 3 | .container-inner { 4 | display: flex; 5 | flex-direction: row; 6 | 7 | height: 48px; 8 | justify-content: center; 9 | align-items: center; 10 | 11 | .paragraph-main { 12 | line-height: 1.35; 13 | } 14 | 15 | .paragraph-sub { 16 | line-height: 1.35; 17 | color: #8898aa; 18 | } 19 | 20 | .vertical { 21 | display: flex; 22 | flex-direction: column; 23 | } 24 | 25 | .button { 26 | min-width: 76px; 27 | padding: 6px 10px 4px; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /packages/extension/src/pages/main/ledger-app-modal.module.scss: -------------------------------------------------------------------------------- 1 | .title { 2 | font-weight: 700; 3 | font-size: 24px; 4 | line-height: 28px; 5 | 6 | letter-spacing: 0.3px; 7 | 8 | color: #32325d; 9 | 10 | margin-bottom: 16px; 11 | } 12 | 13 | .paragraph { 14 | font-weight: 400; 15 | font-size: 15px; 16 | line-height: 20px; 17 | 18 | color: #566172; 19 | 20 | margin-bottom: 28px; 21 | } 22 | -------------------------------------------------------------------------------- /packages/extension/src/pages/main/menu.module.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | 5 | height: 100%; 6 | } 7 | 8 | .item { 9 | cursor: pointer; 10 | 11 | padding: 8px 20px; 12 | font-size: 24px; 13 | font-weight: bold; 14 | color: #32325d; 15 | } 16 | 17 | .footer { 18 | padding: 20px 30px; 19 | font-size: 14px; 20 | 21 | .inner { 22 | display: flex; 23 | cursor: pointer; 24 | color: #8898aa; 25 | 26 | i { 27 | margin-right: 6px; 28 | font-size: 20px; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /packages/extension/src/pages/main/stake.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../styles/var"; 2 | 3 | .container-inner { 4 | display: flex; 5 | flex-direction: row; 6 | 7 | height: 48px; 8 | justify-content: center; 9 | align-items: center; 10 | 11 | .paragraph-main { 12 | line-height: 1.35; 13 | } 14 | 15 | .paragraph-sub { 16 | line-height: 1.35; 17 | color: #8898aa; 18 | } 19 | 20 | .vertical { 21 | display: flex; 22 | flex-direction: column; 23 | } 24 | 25 | .button { 26 | min-width: 76px; 27 | padding: 6px 10px 4px; 28 | } 29 | } 30 | 31 | .hr { 32 | margin: $main-card-padding 0; 33 | } 34 | -------------------------------------------------------------------------------- /packages/extension/src/pages/main/tx-button.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../styles/var"; 2 | 3 | .container-tx-button { 4 | display: flex; 5 | flex-direction: row; 6 | 7 | .button { 8 | flex: 1; 9 | 10 | margin-right: $layout-margin; 11 | 12 | &:last-child { 13 | margin-right: 0; 14 | } 15 | } 16 | } 17 | 18 | .deposit-modal { 19 | display: flex; 20 | flex-direction: column; 21 | align-items: center; 22 | justify-content: center; 23 | 24 | .qrcode { 25 | margin-bottom: 20px; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /packages/extension/src/pages/permission/grant/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./get-chain-infos"; 2 | -------------------------------------------------------------------------------- /packages/extension/src/pages/register/mnemonic/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./hook"; 2 | export * from "./new-mnemonic"; 3 | export * from "./recover-mnemonic"; 4 | -------------------------------------------------------------------------------- /packages/extension/src/pages/register/welcome.module.scss: -------------------------------------------------------------------------------- 1 | .title { 2 | font-size: 24px; 3 | letter-spacing: -1.07px; 4 | } 5 | 6 | .content { 7 | font-size: 16px; 8 | letter-spacing: -0.71px; 9 | color: #6b6b6b; 10 | } 11 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/address-book/style.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../../styles/var"; 2 | 3 | .inner-top-container { 4 | display: flex; 5 | margin: 0 $layout-padding; 6 | 7 | min-height: 43px; 8 | } 9 | 10 | .full-modal { 11 | width: 100%; 12 | height: 100%; 13 | max-width: none; 14 | max-height: none; 15 | border: 0; 16 | margin: 0; 17 | padding: 0; 18 | 19 | &:global(.modal-content) { 20 | box-shadow: none; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/autolock/description-view.module.scss: -------------------------------------------------------------------------------- 1 | .inner-container { 2 | flex: 1; 3 | 4 | display: flex; 5 | flex-direction: column; 6 | justify-content: center; 7 | align-items: center; 8 | 9 | .img-lock { 10 | height: 96px; 11 | } 12 | 13 | p { 14 | margin-top: 24px; 15 | margin-left: 10px; 16 | margin-right: 10px; 17 | 18 | font-size: 16px; 19 | letter-spacing: -0.6px; 20 | color: #32325d; 21 | 22 | text-align: center; 23 | } 24 | 25 | b { 26 | width: 100%; 27 | 28 | margin-bottom: 24px; 29 | 30 | font-size: 14px; 31 | letter-spacing: -0.3px; 32 | color: #32325d; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/autolock/style.module.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | 5 | height: 100%; 6 | } 7 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/chain-active/style.module.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | 5 | height: 100%; 6 | } 7 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/clear/style.module.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | 5 | height: 100%; 6 | } 7 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/clear/warning-view.module.scss: -------------------------------------------------------------------------------- 1 | .inner-container { 2 | flex: 1; 3 | 4 | display: flex; 5 | flex-direction: column; 6 | align-items: center; 7 | } 8 | 9 | .trash-container { 10 | flex: 1; 11 | 12 | display: flex; 13 | flex-direction: column; 14 | justify-content: center; 15 | align-items: center; 16 | 17 | padding: 0 16px; 18 | 19 | font-size: 16px; 20 | letter-spacing: -0.3px; 21 | text-align: center; 22 | color: #32325d; 23 | 24 | img { 25 | height: 60px; 26 | margin-bottom: 20px; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/connections/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./basic-access"; 2 | export * from "./viewing-key"; 3 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/connections/style.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../../styles/var"; 2 | 3 | .dropdown { 4 | margin-left: $layout-padding; 5 | } 6 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/credit/style.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../../styles/var"; 2 | 3 | .container { 4 | margin: 0 calc(#{$layout-padding} * -1) calc(#{$layout-padding} * -1); 5 | 6 | display: flex; 7 | flex-direction: column; 8 | height: 100%; 9 | } 10 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/endpoints/style.module.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | height: 100%; 3 | 4 | display: flex; 5 | flex-direction: column; 6 | 7 | .inner-top-container { 8 | display: flex; 9 | 10 | min-height: 43px; 11 | } 12 | 13 | .form-container { 14 | flex: 1; 15 | 16 | display: flex; 17 | flex-direction: column; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/export-to-mobile/style.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../../styles/var"; 2 | 3 | .container { 4 | display: flex; 5 | flex-direction: column; 6 | 7 | height: 100%; 8 | } 9 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/export/warning-view.module.scss: -------------------------------------------------------------------------------- 1 | .inner-container { 2 | flex: 1; 3 | 4 | display: flex; 5 | flex-direction: column; 6 | justify-content: center; 7 | align-items: center; 8 | 9 | .img-lock { 10 | height: 96px; 11 | } 12 | 13 | p { 14 | margin-top: 18px; 15 | 16 | font-size: 16px; 17 | letter-spacing: -0.3px; 18 | color: #32325d; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/export/warning-view.tsx: -------------------------------------------------------------------------------- 1 | import React, { FunctionComponent } from "react"; 2 | 3 | import styleWarningView from "./warning-view.module.scss"; 4 | import { FormattedMessage } from "react-intl"; 5 | 6 | export const WarningView: FunctionComponent = () => { 7 | return ( 8 |
9 | lock 14 |

15 | 16 |

17 |
18 | ); 19 | }; 20 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/keyring/change/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./name"; 2 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/keyring/change/name.module.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | 5 | height: 100%; 6 | } 7 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/keyring/style.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../../styles/var"; 2 | 3 | .container { 4 | margin: 0 calc(#{$layout-padding} * -1) calc(#{$layout-padding} * -1); 5 | 6 | display: flex; 7 | flex-direction: column; 8 | height: 100%; 9 | } 10 | 11 | .inner-top-container { 12 | display: flex; 13 | margin: 0 $layout-padding; 14 | 15 | min-height: 43px; 16 | } 17 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/style.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../styles/var"; 2 | 3 | .container { 4 | margin: 0 calc(#{$layout-padding} * -1) calc(#{$layout-padding} * -1); 5 | 6 | display: flex; 7 | flex-direction: column; 8 | height: 100%; 9 | } 10 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/token/add/style.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../styles/var"; 2 | 3 | .container { 4 | display: flex; 5 | flex-direction: column; 6 | height: 100%; 7 | 8 | input:read-only { 9 | box-shadow: none !important; 10 | background: transparent; 11 | padding: 0; 12 | height: 20px; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/extension/src/pages/setting/token/manage/style.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../styles/var"; 2 | 3 | .container { 4 | margin: 0 calc(#{$layout-padding} * -1) calc(#{$layout-padding} * -1); 5 | 6 | display: flex; 7 | flex-direction: column; 8 | height: 100%; 9 | } 10 | -------------------------------------------------------------------------------- /packages/extension/src/pages/sign/data-tab.tsx: -------------------------------------------------------------------------------- 1 | import React, { FunctionComponent } from "react"; 2 | import { observer } from "mobx-react-lite"; 3 | import { SignDocHelper } from "@keplr-wallet/hooks"; 4 | 5 | import style from "./style.module.scss"; 6 | 7 | export const DataTab: FunctionComponent<{ 8 | signDocHelper: SignDocHelper; 9 | }> = observer(({ signDocHelper }) => { 10 | return ( 11 |
12 |       {JSON.stringify(signDocHelper.signDocJson, undefined, 2)}
13 |     
14 | ); 15 | }); 16 | -------------------------------------------------------------------------------- /packages/extension/src/pages/sign/messages.spec.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @jest-environment jsdom 3 | */ 4 | 5 | import { clearDecimals } from "./messages"; 6 | 7 | describe("Test methods in messages", () => { 8 | test("Test clearDecimals", () => { 9 | expect(clearDecimals("0.00100")).toBe("0.001"); 10 | expect(clearDecimals("10.00100")).toBe("10.001"); 11 | expect(clearDecimals("100")).toBe("100"); 12 | expect(clearDecimals("0")).toBe("0"); 13 | expect(clearDecimals("10.00101")).toBe("10.00101"); 14 | expect(clearDecimals("0.1")).toBe("0.1"); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /packages/extension/src/public/assets/brand-sub-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/brand-sub-text.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/brand-text-fit-logo-height.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/brand-text-fit-logo-height.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/brand-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/brand-text.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/font/NanumBarunGothic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/font/NanumBarunGothic.ttf -------------------------------------------------------------------------------- /packages/extension/src/public/assets/font/NanumBarunGothicBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/font/NanumBarunGothicBold.ttf -------------------------------------------------------------------------------- /packages/extension/src/public/assets/font/NanumBarunGothicLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/font/NanumBarunGothicLight.ttf -------------------------------------------------------------------------------- /packages/extension/src/public/assets/icns-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/icns-logo.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/icon/icon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/icon/icon-128.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/icon/icon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/icon/icon-16.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/icon/icon-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/icon/icon-48.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/icon/icon-beta-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/icon/icon-beta-128.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/icon/icon-beta-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/icon/icon-beta-16.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/icon/icon-beta-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/icon/icon-beta-48.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/img/icns-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/img/icns-banner.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/img/icns-mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/img/icns-mark.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/img/icons8-usb-2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/extension/src/public/assets/img/keystone/tutorial1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/img/keystone/tutorial1.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/img/keystone/tutorial2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/img/keystone/tutorial2.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/img/keystone/tutorial3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/img/keystone/tutorial3.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/img/keystone/tutorial4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/img/keystone/tutorial4.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/logo-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/logo-256.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/logo-beta-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/extension/src/public/assets/logo-beta-256.png -------------------------------------------------------------------------------- /packages/extension/src/public/assets/svg/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/extension/src/public/assets/svg/arrow-right-outline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/extension/src/public/assets/svg/arrow-right-primary.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/extension/src/public/assets/svg/error.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/extension/src/public/assets/svg/for-developer.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/extension/src/public/assets/svg/info-mark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/extension/src/scss.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.scss" { 2 | const content: { [className: string]: string }; 3 | // eslint-disable-next-line import/no-default-export 4 | export default content; 5 | } 6 | -------------------------------------------------------------------------------- /packages/extension/src/styles/_mixin.scss: -------------------------------------------------------------------------------- 1 | @import "var"; 2 | 3 | @mixin main-card { 4 | padding: $main-card-padding; 5 | margin-bottom: $layout-padding; 6 | box-shadow: 0 2px 16px 0 rgba(0, 0, 0, 0.03), 0 2px 15px 0 rgba(0, 0, 0, 0.08); 7 | background-color: white; 8 | border-radius: 16px; 9 | } 10 | -------------------------------------------------------------------------------- /packages/extension/src/styles/_var.scss: -------------------------------------------------------------------------------- 1 | $background-color: #fafbfd; 2 | 3 | $popup-size-width: 360px; 4 | $popup-size-height: 580px; 5 | 6 | $header-height: 64px; 7 | 8 | $layout-padding: 12px; 9 | $layout-margin: 12px; 10 | 11 | $main-card-padding: 16px; 12 | -------------------------------------------------------------------------------- /packages/extension/src/styles/type.tsx: -------------------------------------------------------------------------------- 1 | export type Size = "small" | "default" | "normal" | "medium" | "large"; 2 | 3 | export function getSizeClass(size?: Size): string { 4 | if (size === undefined || size === "default") { 5 | return ""; 6 | } 7 | return "is-" + size; 8 | } 9 | 10 | export type Color = 11 | | "primary" 12 | | "default" 13 | | "link" 14 | | "info" 15 | | "success" 16 | | "warning" 17 | | "danger"; 18 | 19 | export function getColorClass(color?: Color): string { 20 | if (color === undefined || color === "default") { 21 | return ""; 22 | } 23 | return "is-" + color; 24 | } 25 | -------------------------------------------------------------------------------- /packages/extension/src/window.d.ts: -------------------------------------------------------------------------------- 1 | import { Window as KeplrWindow } from "@keplr-wallet/types"; 2 | 3 | declare global { 4 | // eslint-disable-next-line @typescript-eslint/no-empty-interface 5 | interface Window extends KeplrWindow {} 6 | } 7 | -------------------------------------------------------------------------------- /packages/extension/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "target": "ES2016" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */, 5 | "module": "ESNEXT" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, 6 | "jsx": "react" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */, 7 | "typeRoots": [ 8 | "./node_modules/@types", 9 | "../../node_modules/@types", 10 | "./@types" 11 | ] 12 | }, 13 | "include": ["src/**/*"] 14 | } 15 | -------------------------------------------------------------------------------- /packages/hooks/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/hooks/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/hooks/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/hooks/src/ibc/errors.ts: -------------------------------------------------------------------------------- 1 | export class ChannelNotSetError extends Error { 2 | constructor(m: string) { 3 | super(m); 4 | // Set the prototype explicitly. 5 | Object.setPrototypeOf(this, ChannelNotSetError.prototype); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/hooks/src/ibc/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./amount"; 2 | export * from "./channel"; 3 | export * from "./errors"; 4 | export * from "./gas"; 5 | export * from "./send-ibc-transfer"; 6 | export * from "./types"; 7 | -------------------------------------------------------------------------------- /packages/hooks/src/ibc/types.ts: -------------------------------------------------------------------------------- 1 | export interface Channel { 2 | portId: string; 3 | channelId: string; 4 | counterpartyChainId: string; 5 | } 6 | 7 | export interface IIBCChannelConfig { 8 | channel: Channel | undefined; 9 | setChannel(channel: Channel | undefined): void; 10 | 11 | error: Error | undefined; 12 | } 13 | -------------------------------------------------------------------------------- /packages/hooks/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./interaction"; 2 | export * from "./tx"; 3 | export * from "./register"; 4 | export * from "./address-book"; 5 | export * from "./sign-doc"; 6 | export * from "./ibc"; 7 | -------------------------------------------------------------------------------- /packages/hooks/src/sign-doc/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./amount"; 2 | export * from "./helper"; 3 | -------------------------------------------------------------------------------- /packages/hooks/src/tx/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./errors"; 2 | export * from "./types"; 3 | export * from "./memo"; 4 | export * from "./fee"; 5 | export * from "./gas"; 6 | export * from "./recipient"; 7 | export * from "./amount"; 8 | export * from "./send-gas"; 9 | export * from "./send-tx"; 10 | export * from "./chain"; 11 | export * from "./delegate-tx"; 12 | export * from "./undelegate-tx"; 13 | export * from "./redelegate-tx"; 14 | export * from "./gas-simulator"; 15 | -------------------------------------------------------------------------------- /packages/hooks/src/tx/internal.ts: -------------------------------------------------------------------------------- 1 | import { 2 | CosmosQueriesImpl, 3 | IQueriesStore, 4 | OsmosisQueries, 5 | } from "@keplr-wallet/stores"; 6 | 7 | export type QueriesStore = IQueriesStore< 8 | Partial & { 9 | cosmos?: Pick; 10 | } 11 | >; 12 | -------------------------------------------------------------------------------- /packages/hooks/src/tx/send-types.ts: -------------------------------------------------------------------------------- 1 | import { IAccountStore, MsgOpt } from "@keplr-wallet/stores"; 2 | 3 | export type AccountStore = IAccountStore<{ 4 | cosmos?: { 5 | readonly msgOpts: { 6 | readonly send: { 7 | readonly native: MsgOpt; 8 | }; 9 | }; 10 | }; 11 | cosmwasm?: { 12 | readonly msgOpts: { 13 | readonly send: { 14 | readonly cw20: Pick; 15 | }; 16 | }; 17 | }; 18 | secret?: { 19 | readonly msgOpts: { 20 | readonly send: { 21 | readonly secret20: Pick; 22 | }; 23 | }; 24 | }; 25 | }>; 26 | -------------------------------------------------------------------------------- /packages/hooks/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src", 8 | "jsx": "react" 9 | }, 10 | "include": [ 11 | "src/**/*" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /packages/mobile/.buckconfig: -------------------------------------------------------------------------------- 1 | 2 | [android] 3 | target = Google Inc.:Google APIs:23 4 | 5 | [maven_repositories] 6 | central = https://repo1.maven.org/maven2 7 | -------------------------------------------------------------------------------- /packages/mobile/.eslintrc.js: -------------------------------------------------------------------------------- 1 | const config = require("../../.eslintrc"); 2 | 3 | module.exports = { 4 | ...config, 5 | }; 6 | -------------------------------------------------------------------------------- /packages/mobile/.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text 2 | -------------------------------------------------------------------------------- /packages/mobile/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /packages/mobile/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021 Chainapsis Inc. All rights reserved. 2 | -------------------------------------------------------------------------------- /packages/mobile/android/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "fastlane" 4 | -------------------------------------------------------------------------------- /packages/mobile/android/app/build_defs.bzl: -------------------------------------------------------------------------------- 1 | """Helper definitions to glob .aar and .jar targets""" 2 | 3 | def create_aar_targets(aarfiles): 4 | for aarfile in aarfiles: 5 | name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] 6 | lib_deps.append(":" + name) 7 | android_prebuilt_aar( 8 | name = name, 9 | aar = aarfile, 10 | ) 11 | 12 | def create_jar_targets(jarfiles): 13 | for jarfile in jarfiles: 14 | name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] 15 | lib_deps.append(":" + name) 16 | prebuilt_jar( 17 | name = name, 18 | binary_jar = jarfile, 19 | ) 20 | -------------------------------------------------------------------------------- /packages/mobile/android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/android/app/debug.keystore -------------------------------------------------------------------------------- /packages/mobile/android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | -------------------------------------------------------------------------------- /packages/mobile/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/assets/appcenter-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "app_secret": "767cafcc-896a-4258-bddd-6428eaaa9349" 3 | } -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/android/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/java/com/chainapsis/keplr/generated/BasePackageList.java: -------------------------------------------------------------------------------- 1 | package com.chainapsis.keplr.generated; 2 | 3 | import java.util.Arrays; 4 | import java.util.List; 5 | import org.unimodules.core.interfaces.Package; 6 | 7 | public class BasePackageList { 8 | public List getPackageList() { 9 | return Arrays.asList( 10 | new expo.modules.constants.ConstantsPackage(), 11 | new expo.modules.filesystem.FileSystemPackage(), 12 | new expo.modules.imageloader.ImageLoaderPackage(), 13 | new expo.modules.splashscreen.SplashScreenPackage(), 14 | new expo.modules.webbrowser.WebBrowserPackage() 15 | ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/res/drawable/splashscreen.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/res/drawable/splashscreen_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/android/app/src/main/res/drawable/splashscreen_background.png -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/res/drawable/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/android/app/src/main/res/drawable/splashscreen_image.png -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/res/values-v23/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @android:color/transparent 5 | @android:color/transparent 6 | 7 | -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /packages/mobile/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Keplr 3 | KIjCGsvIA6HTRxeR5BN0gsemSrsNJfOICquOP 4 | ALWAYS_SEND 5 | 6 | -------------------------------------------------------------------------------- /packages/mobile/android/fastlane/Appfile: -------------------------------------------------------------------------------- 1 | package_name("com.chainapsis.keplr") # e.g. com.krausefx.app 2 | -------------------------------------------------------------------------------- /packages/mobile/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /packages/mobile/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.1-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /packages/mobile/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'mobile' 2 | apply from: new File(["node", "--print", "require.resolve('react-native-unimodules/package.json')"].execute().text.trim(), "../gradle.groovy"); includeUnimodulesProjects() 3 | apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute().text.trim(), "../native_modules.gradle"); applyNativeModulesSettingsGradle(settings) 4 | include ':app', ':react-native-code-push' 5 | project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app') 6 | -------------------------------------------------------------------------------- /packages/mobile/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mobile", 3 | "displayName": "mobile" 4 | } -------------------------------------------------------------------------------- /packages/mobile/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ["module:metro-react-native-babel-preset"], 3 | plugins: [ 4 | ["@babel/plugin-transform-flow-strip-types"], 5 | ["@babel/plugin-proposal-decorators", { legacy: true }], 6 | ["@babel/plugin-proposal-class-properties", { loose: true }], 7 | ], 8 | }; 9 | -------------------------------------------------------------------------------- /packages/mobile/bugsnag.env.ts: -------------------------------------------------------------------------------- 1 | // https://docs.bugsnag.com/platforms/react-native/react-native/codepush/#setting-a-code-bundle-id 2 | // This has to be configured on the build side. 3 | export const codeBundleId: string | undefined = undefined; 4 | -------------------------------------------------------------------------------- /packages/mobile/crypto-polyfill/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "keplr-standard-web-crypto", 3 | "version": "0.0.1", 4 | "description": "A partial implementation of the W3C Crypto API for Expo", 5 | "main": "index.js", 6 | "sideEffects": false, 7 | "dependencies": { 8 | "expo-random": "^11.0.0", 9 | "create-hash": "^1.2.0", 10 | "create-hmac": "^1.1.7", 11 | "browserify-cipher": "^1.0.1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/mobile/init.ts: -------------------------------------------------------------------------------- 1 | import "./src/background/background"; 2 | 3 | import { Keplr } from "@keplr-wallet/provider"; 4 | import { RNMessageRequesterInternal } from "./src/router"; 5 | 6 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 7 | // @ts-ignore 8 | window.keplr = new Keplr("", new RNMessageRequesterInternal()); 9 | -------------------------------------------------------------------------------- /packages/mobile/ios/AppCenter-Config.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AppSecret 6 | f09d1053-881a-4178-9bff-15678b9c96fa 7 | 8 | -------------------------------------------------------------------------------- /packages/mobile/ios/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "fastlane" -------------------------------------------------------------------------------- /packages/mobile/ios/fastlane/Appfile: -------------------------------------------------------------------------------- 1 | app_identifier("com.chainapsis.keplrwallet") # The bundle identifier of your app 2 | -------------------------------------------------------------------------------- /packages/mobile/ios/mobile.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/mobile/ios/mobile.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/mobile/ios/mobile.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import 5 | 6 | @interface AppDelegate : UMAppDelegateWrapper 7 | 8 | @property (nonatomic, strong) UIWindow *window; 9 | 10 | @end 11 | -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/1024.png -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/120.png -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/180.png -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/40.png -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/58.png -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/60.png -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/80.png -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/ios/mobile/Images.xcassets/AppIcon.appiconset/87.png -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/Images.xcassets/SplashScreen.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "idiom": "universal", 5 | "filename": "splashscreen.png", 6 | "scale": "1x" 7 | }, 8 | { 9 | "idiom": "universal", 10 | "scale": "2x" 11 | }, 12 | { 13 | "idiom": "universal", 14 | "scale": "3x" 15 | } 16 | ], 17 | "info": { 18 | "version": 1, 19 | "author": "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/Images.xcassets/SplashScreen.imageset/splashscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/ios/mobile/Images.xcassets/SplashScreen.imageset/splashscreen.png -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/Images.xcassets/SplashScreenBackground.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "splash-screen-only-background.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/Images.xcassets/SplashScreenBackground.imageset/splash-screen-only-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/ios/mobile/Images.xcassets/SplashScreenBackground.imageset/splash-screen-only-background.png -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char * argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/mobile/ios/mobile/mobile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | production 7 | com.apple.developer.applesignin 8 | 9 | Default 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/mobile/scripts/clean.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e 3 | 4 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" 5 | 6 | cd "$DIR/../ios" 7 | xcodebuild clean | true 8 | 9 | rm -rf "$DIR/../ios/Pods" 10 | 11 | cd "$DIR/../android" 12 | ./gradlew clean | true 13 | 14 | rm -rf "$DIR/../android/.gradle" 15 | rm -rf "$DIR/../android/build" 16 | 17 | rm -rf "$DIR/../node_modules" 18 | rm -rf "$DIR/../build" 19 | -------------------------------------------------------------------------------- /packages/mobile/scripts/fix-ios-blur-view.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Fix a bug that if blur type is not changed, the blur amount is not applied too. 4 | # And, if the blur amount is 0 or lesser than 0, disable the blur. 5 | 6 | DIR="$( cd "$( dirname "$0" )" && pwd -P )" 7 | 8 | cp ${DIR}/BlurView.m ${DIR}/../node_modules/@react-native-community/blur/ios/BlurView.m 9 | -------------------------------------------------------------------------------- /packages/mobile/scripts/force-export-ble-manager-from-ledger.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # react-native-ble-plx requires only one instance of BLEManager exists. 4 | # But, react-native-hw-transport-ble uses their instance without exporting that. 5 | # So, to use the react-native-hw-transport-ble's ble manager instance, 6 | # temporarily change the their source code by force. 7 | 8 | DIR="$( cd "$( dirname "$0" )" && pwd -P )" 9 | 10 | cp ${DIR}/BleTransport.d.ts ${DIR}/../node_modules/@ledgerhq/react-native-hw-transport-ble/lib/BleTransport.d.ts 11 | cp ${DIR}/BleTransport.js ${DIR}/../node_modules/@ledgerhq/react-native-hw-transport-ble/lib/BleTransport.js 12 | -------------------------------------------------------------------------------- /packages/mobile/scripts/set-code-bundle-id.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e 3 | 4 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" 5 | 6 | if [ "$#" -ne 1 ]; then 7 | echo "Please pass the code bundle id to set" 8 | exit 1 9 | fi 10 | 11 | echo "export const codeBundleId: string | undefined = \"$1\";" > "$DIR/../bugsnag.env.ts" 12 | -------------------------------------------------------------------------------- /packages/mobile/scripts/splashscreen_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/scripts/splashscreen_background.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/gradient-background-3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/gradient-background-3x.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/gradient-background-dark-3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/gradient-background-dark-3x.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/gradient-background-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/gradient-background-dark.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/gradient-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/gradient-background.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/tx-result-screen-failed-3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/tx-result-screen-failed-3x.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/tx-result-screen-failed-dark-3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/tx-result-screen-failed-dark-3x.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/tx-result-screen-failed-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/tx-result-screen-failed-dark.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/tx-result-screen-failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/tx-result-screen-failed.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/tx-result-screen-pending-3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/tx-result-screen-pending-3x.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/tx-result-screen-pending-dark-3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/tx-result-screen-pending-dark-3x.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/tx-result-screen-pending-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/tx-result-screen-pending-dark.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/tx-result-screen-pending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/tx-result-screen-pending.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/tx-result-screen-success-3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/tx-result-screen-success-3x.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/tx-result-screen-success-dark-3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/tx-result-screen-success-dark-3x.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/tx-result-screen-success-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/tx-result-screen-success-dark.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/tx-result-screen-success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/tx-result-screen-success.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/unlock-screen-3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/unlock-screen-3x.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/unlock-screen-dark-3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/unlock-screen-dark-3x.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/unlock-screen-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/unlock-screen-dark.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/gradients/unlock-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/gradients/unlock-screen.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/image/wallet-connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/image/wallet-connection.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/image/webpage/junoswap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/image/webpage/junoswap.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/image/webpage/osmosis-frontier-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/image/webpage/osmosis-frontier-text.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/image/webpage/osmosis-frontier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/image/webpage/osmosis-frontier.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/image/webpage/osmosis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/image/webpage/osmosis.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/image/webpage/stargaze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/image/webpage/stargaze.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/image/webpage/umee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/image/webpage/umee.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/logo/keplr-logo-dark-mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/logo/keplr-logo-dark-mode.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/logo/keplr-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/logo/keplr-logo.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/logo/splash-image-dark-mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/logo/splash-image-dark-mode.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/logo/splash-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/logo/splash-image.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/logo/splash-screen-only-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/logo/splash-screen-only-background.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/logo/splash-screen-only-k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/logo/splash-screen-only-k.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/svg/failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/svg/failed.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/svg/icons8-google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/svg/icons8-google.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/svg/icons8-person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/svg/icons8-person.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/svg/pending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/svg/pending.png -------------------------------------------------------------------------------- /packages/mobile/src/assets/svg/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/mobile/src/assets/svg/success.png -------------------------------------------------------------------------------- /packages/mobile/src/common/async-random.ts: -------------------------------------------------------------------------------- 1 | import * as Random from "expo-random"; 2 | import { RNG } from "@keplr-wallet/crypto"; 3 | 4 | export const getRandomBytesAsync: RNG = async (array) => { 5 | if (array) { 6 | const random = await Random.getRandomBytesAsync(array.byteLength); 7 | 8 | const bytes = new Uint8Array( 9 | array.buffer, 10 | array.byteOffset, 11 | array.byteLength 12 | ); 13 | 14 | for (let i = 0; i < random.length; i++) { 15 | bytes[i] = random[i]; 16 | } 17 | } 18 | 19 | return array; 20 | }; 21 | -------------------------------------------------------------------------------- /packages/mobile/src/common/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./async-random"; 2 | export * from "./async-kv-store"; 3 | -------------------------------------------------------------------------------- /packages/mobile/src/components/bottom-tabbar/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./blurred"; 2 | -------------------------------------------------------------------------------- /packages/mobile/src/components/button/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./button"; 2 | -------------------------------------------------------------------------------- /packages/mobile/src/components/card/body.tsx: -------------------------------------------------------------------------------- 1 | import React, { FunctionComponent } from "react"; 2 | import { StyleSheet, View, ViewStyle } from "react-native"; 3 | import { useStyle } from "../../styles"; 4 | 5 | export const CardBody: FunctionComponent<{ 6 | style?: ViewStyle; 7 | }> = ({ style: propStyle, children }) => { 8 | const style = useStyle(); 9 | 10 | return ( 11 | 17 | {children} 18 | 19 | ); 20 | }; 21 | -------------------------------------------------------------------------------- /packages/mobile/src/components/card/card.tsx: -------------------------------------------------------------------------------- 1 | import React, { FunctionComponent } from "react"; 2 | import { StyleSheet, View, ViewStyle } from "react-native"; 3 | import { useStyle } from "../../styles"; 4 | 5 | export const Card: FunctionComponent<{ 6 | style?: ViewStyle; 7 | }> = ({ style: propStyle, children }) => { 8 | const style = useStyle(); 9 | 10 | return ( 11 | 21 | {children} 22 | 23 | ); 24 | }; 25 | -------------------------------------------------------------------------------- /packages/mobile/src/components/card/divider.tsx: -------------------------------------------------------------------------------- 1 | import React, { FunctionComponent } from "react"; 2 | import { StyleSheet, View, ViewStyle } from "react-native"; 3 | import { useStyle } from "../../styles"; 4 | 5 | export const CardDivider: FunctionComponent<{ 6 | style?: ViewStyle; 7 | }> = ({ style: propStyle }) => { 8 | const style = useStyle(); 9 | 10 | return ( 11 | 22 | ); 23 | }; 24 | -------------------------------------------------------------------------------- /packages/mobile/src/components/card/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./card"; 2 | export * from "./body"; 3 | export * from "./header"; 4 | export * from "./divider"; 5 | -------------------------------------------------------------------------------- /packages/mobile/src/components/header/icon/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./add"; 2 | export * from "./back"; 3 | export * from "./wallet-connect"; 4 | -------------------------------------------------------------------------------- /packages/mobile/src/components/header/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./blurred"; 2 | export * from "./button"; 3 | -------------------------------------------------------------------------------- /packages/mobile/src/components/icon/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./arrow"; 2 | export * from "./copy"; 3 | export * from "./plus"; 4 | export * from "./address-book"; 5 | export * from "./person"; 6 | export * from "./camera"; 7 | export * from "./reward"; 8 | export * from "./scan"; 9 | export * from "./drawer"; 10 | export * from "./trash-can"; 11 | export * from "./wallet-connect"; 12 | export * from "./check"; 13 | export * from "./close"; 14 | export * from "./alert"; 15 | export * from "./refresh"; 16 | export * from "./unconnect"; 17 | export * from "./google"; 18 | export * from "./apple"; 19 | -------------------------------------------------------------------------------- /packages/mobile/src/components/icon/plus.tsx: -------------------------------------------------------------------------------- 1 | import React, { FunctionComponent } from "react"; 2 | import Svg, { Path } from "react-native-svg"; 3 | 4 | export const PlusIcon: FunctionComponent<{ 5 | color: string; 6 | size: number; 7 | }> = ({ color, size }) => { 8 | return ( 9 | 18 | 25 | 26 | ); 27 | }; 28 | -------------------------------------------------------------------------------- /packages/mobile/src/components/input/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./input"; 2 | export * from "./address"; 3 | export * from "./memo"; 4 | export * from "./amount"; 5 | export * from "./selector"; 6 | export * from "./currency-selector"; 7 | export * from "./fee-buttons"; 8 | -------------------------------------------------------------------------------- /packages/mobile/src/components/page/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./scroll-view"; 2 | export * from "./section-list"; 3 | export * from "./view"; 4 | export * from "./scroll-view-in-bottom-tab-view"; 5 | export * from "./view-in-bottom-tab-view"; 6 | export * from "./background"; 7 | -------------------------------------------------------------------------------- /packages/mobile/src/components/spinner/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./loading"; 2 | export * from "./hooks"; 3 | -------------------------------------------------------------------------------- /packages/mobile/src/components/svg/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./progress-bar"; 2 | export * from "./double-doughnut-chart"; 3 | export * from "./simple-gradient"; 4 | -------------------------------------------------------------------------------- /packages/mobile/src/components/thumbnail/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./validator"; 2 | -------------------------------------------------------------------------------- /packages/mobile/src/components/wallet-connect/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./app-logo-name"; 2 | export * from "./app-logo"; 3 | -------------------------------------------------------------------------------- /packages/mobile/src/hooks/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./use-smart-navigation"; 2 | export * from "./use-simple-timer"; 3 | export * from "./use-unmount"; 4 | export * from "./use-previous"; 5 | -------------------------------------------------------------------------------- /packages/mobile/src/hooks/use-previous.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from "react"; 2 | 3 | export const usePrevious = ( 4 | state: T, 5 | initialValue?: T 6 | ): T | undefined => { 7 | const ref = useRef(initialValue); 8 | 9 | useEffect(() => { 10 | ref.current = state; 11 | }, [state]); 12 | 13 | return ref.current; 14 | }; 15 | -------------------------------------------------------------------------------- /packages/mobile/src/hooks/use-unmount.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from "react"; 2 | 3 | export const useUnmount = (cleanUpFn: () => void) => { 4 | const ref = useRef(cleanUpFn); 5 | ref.current = cleanUpFn; 6 | 7 | useEffect(() => { 8 | return () => { 9 | ref.current(); 10 | }; 11 | }, []); 12 | }; 13 | -------------------------------------------------------------------------------- /packages/mobile/src/injected/index.ts: -------------------------------------------------------------------------------- 1 | import { RNInjectedKeplr } from "./injected-provider"; 2 | import { injectKeplrToWindow } from "@keplr-wallet/provider"; 3 | 4 | // TODO: Set the Keplr version properly 5 | const keplr = new RNInjectedKeplr("0.10.10", "mobile-web"); 6 | injectKeplrToWindow(keplr); 7 | -------------------------------------------------------------------------------- /packages/mobile/src/modals/base/const.ts: -------------------------------------------------------------------------------- 1 | export const DefaultOpenVelocity = 550; 2 | export const DefaultCloseVelocity = 750; 3 | export const DefaultAcceleration = 1.15; 4 | export const OpenMinDuration = 300; 5 | export const CloseMinDuration = 250; 6 | -------------------------------------------------------------------------------- /packages/mobile/src/modals/base/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./base"; 2 | export * from "./provider"; 3 | export * from "./utils"; 4 | export * from "./hooks"; 5 | export * from "./transition"; 6 | -------------------------------------------------------------------------------- /packages/mobile/src/router/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./rn-router"; 2 | export * from "./env"; 3 | export * from "./requester"; 4 | -------------------------------------------------------------------------------- /packages/mobile/src/screens/governance/utils.ts: -------------------------------------------------------------------------------- 1 | import { IntlShape } from "react-intl"; 2 | 3 | export const dateToLocalString = (intl: IntlShape, dateStr: string) => { 4 | if (!dateStr) { 5 | return; 6 | } 7 | 8 | const current = new Date(); 9 | const date = new Date(dateStr); 10 | const isYearDifferent = current.getFullYear() !== date.getFullYear(); 11 | 12 | return intl 13 | .formatDate(dateStr, { 14 | format: "en", 15 | year: isYearDifferent ? "numeric" : undefined, 16 | }) 17 | .replace("GMT", "UTC"); 18 | }; 19 | -------------------------------------------------------------------------------- /packages/mobile/src/screens/register/bip44/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./bip44-option"; 2 | export * from "./advanced-button"; 3 | -------------------------------------------------------------------------------- /packages/mobile/src/screens/register/mnemonic/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./hook"; 2 | export * from "./new-mnemonic"; 3 | export * from "./verify-mnemonic"; 4 | export * from "./recover-mnemonic"; 5 | -------------------------------------------------------------------------------- /packages/mobile/src/screens/setting/components/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./basic"; 2 | export * from "./key-store"; 3 | -------------------------------------------------------------------------------- /packages/mobile/src/screens/setting/screens/token/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./add"; 2 | export * from "./manage"; 3 | -------------------------------------------------------------------------------- /packages/mobile/src/screens/stake/dashboard/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./dashboard"; 2 | -------------------------------------------------------------------------------- /packages/mobile/src/screens/stake/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./dashboard"; 2 | export * from "./validator-details"; 3 | export * from "./validator-list"; 4 | export * from "./delegate"; 5 | -------------------------------------------------------------------------------- /packages/mobile/src/screens/tx-result/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./pending"; 2 | export * from "./success"; 3 | export * from "./failed"; 4 | -------------------------------------------------------------------------------- /packages/mobile/src/screens/web/components/context/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { useContext } from "react"; 2 | import WebView from "react-native-webview"; 3 | 4 | export interface WebViewState { 5 | webView: WebView | null; 6 | name: string; 7 | url: string; 8 | canGoBack: boolean; 9 | canGoForward: boolean; 10 | } 11 | 12 | export const WebViewStateContext = React.createContext( 13 | null 14 | ); 15 | 16 | export const useWebViewState = () => { 17 | const context = useContext(WebViewStateContext); 18 | if (!context) { 19 | throw new Error("You forgot to use WebViewStateContext"); 20 | } 21 | return context; 22 | }; 23 | -------------------------------------------------------------------------------- /packages/mobile/src/screens/web/webpages/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./osmosis"; 2 | export * from "./stargaze"; 3 | export * from "./umee"; 4 | export * from "./junoswap"; 5 | -------------------------------------------------------------------------------- /packages/mobile/src/screens/web/webpages/junoswap.tsx: -------------------------------------------------------------------------------- 1 | import React, { FunctionComponent } from "react"; 2 | import { WebpageScreen } from "../components/webpage-screen"; 3 | 4 | export const JunoswapWebpageScreen: FunctionComponent = () => { 5 | return ( 6 | 14 | ); 15 | }; 16 | -------------------------------------------------------------------------------- /packages/mobile/src/screens/web/webpages/stargaze.tsx: -------------------------------------------------------------------------------- 1 | import React, { FunctionComponent } from "react"; 2 | import { WebpageScreen } from "../components/webpage-screen"; 3 | 4 | export const StargazeWebpageScreen: FunctionComponent = () => { 5 | return ( 6 | 12 | ); 13 | }; 14 | -------------------------------------------------------------------------------- /packages/mobile/src/screens/web/webpages/umee.tsx: -------------------------------------------------------------------------------- 1 | import React, { FunctionComponent } from "react"; 2 | import { WebpageScreen } from "../components/webpage-screen"; 3 | 4 | export const UmeeWebpageScreen: FunctionComponent = () => { 5 | return ( 6 | 11 | ); 12 | }; 13 | -------------------------------------------------------------------------------- /packages/mobile/src/styles/builder/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./builder"; 2 | export * from "./hook"; 3 | -------------------------------------------------------------------------------- /packages/mobile/src/styles/builder/types/image.ts: -------------------------------------------------------------------------------- 1 | import { StaticStylesDefinitions } from "./common"; 2 | 3 | export const StaticImageStyles = { 4 | ["resize-cover"]: { 5 | resizeMode: "cover", 6 | }, 7 | ["resize-contain"]: { 8 | resizeMode: "contain", 9 | }, 10 | ["resize-stretch"]: { 11 | resizeMode: "stretch", 12 | }, 13 | ["resize-repeat"]: { 14 | resizeMode: "repeat", 15 | }, 16 | ["resize-center"]: { 17 | resizeMode: "center", 18 | }, 19 | }; 20 | 21 | export type StyleBuilderImageDefinitions = StaticStylesDefinitions< 22 | typeof StaticImageStyles 23 | >; 24 | -------------------------------------------------------------------------------- /packages/mobile/src/styles/builder/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./common"; 2 | export * from "./color"; 3 | export * from "./padding"; 4 | export * from "./margin"; 5 | export * from "./border"; 6 | export * from "./layout"; 7 | export * from "./image"; 8 | export * from "./text"; 9 | export * from "./size"; 10 | 11 | export * from "./all"; 12 | -------------------------------------------------------------------------------- /packages/mobile/src/styles/builder/types/opacity.ts: -------------------------------------------------------------------------------- 1 | export type StyleBuilderOpacityDefinitions< 2 | Opacities extends Record 3 | > = { 4 | [K in keyof Opacities as `opacity-${string & K}`]: { 5 | opacity: number; 6 | }; 7 | }; 8 | -------------------------------------------------------------------------------- /packages/mobile/src/utils/ledger/index.ts: -------------------------------------------------------------------------------- 1 | import { AsyncKVStore } from "../../common"; 2 | 3 | export const getLastUsedLedgerDeviceId = async (): Promise< 4 | string | undefined 5 | > => { 6 | const kvStore = new AsyncKVStore("__keplr_ledger_nano_x"); 7 | return await kvStore.get("last_device_id"); 8 | }; 9 | 10 | export const setLastUsedLedgerDeviceId = async ( 11 | deviceId: string 12 | ): Promise => { 13 | const kvStore = new AsyncKVStore("__keplr_ledger_nano_x"); 14 | await kvStore.set("last_device_id", deviceId); 15 | }; 16 | -------------------------------------------------------------------------------- /packages/mobile/src/utils/stable-sort/index.ts: -------------------------------------------------------------------------------- 1 | export function stableSort( 2 | arr: ReadonlyArray, 3 | compareFn: (a: Item, b: Item) => number 4 | ): Array { 5 | const itemsWithIndex = arr.map<{ 6 | index: number; 7 | item: Item; 8 | }>((item, index) => { 9 | return { 10 | index, 11 | item, 12 | }; 13 | }); 14 | 15 | return itemsWithIndex 16 | .sort((a, b) => { 17 | const compared = compareFn(a.item, b.item); 18 | if (compared === 0) { 19 | return a.index < b.index ? -1 : 1; 20 | } 21 | return compared; 22 | }) 23 | .map(({ item }) => item); 24 | } 25 | -------------------------------------------------------------------------------- /packages/mobile/tsconfig.provider.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "rootDir": "src", 7 | 8 | "skipLibCheck": true, 9 | "declaration": false, 10 | "sourceMap": false 11 | }, 12 | "files": ["src/injected/index.ts"], 13 | "exclude": ["node_modules"] 14 | } 15 | -------------------------------------------------------------------------------- /packages/popup/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/popup/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/popup/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/popup/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@keplr-wallet/popup", 3 | "version": "0.11.34", 4 | "main": "build/index.js", 5 | "author": "chainapsis", 6 | "license": "Apache-2.0", 7 | "private": false, 8 | "publishConfig": { 9 | "access": "public" 10 | }, 11 | "scripts": { 12 | "clean": "rm -rf node_modules; rm -rf build", 13 | "build": "tsc", 14 | "dev": "tsc -w", 15 | "test": "jest --passWithNoTests", 16 | "lint-test": "eslint \"src/**/*\" && prettier --check \"src/**/*\"", 17 | "lint-fix": "eslint --fix \"src/**/*\" && prettier --write \"src/**/*\"" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/popup/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src" 8 | }, 9 | "include": [ 10 | "src/**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/proto-types/.eslintignore: -------------------------------------------------------------------------------- 1 | !(proto-types-gen)/**/*.ts 2 | !(proto-types-gen)/**/*.js 3 | !(proto-types-gen)/**/*.mjs 4 | !(proto-types-gen)/**/*.cjs 5 | !(proto-types-gen)/**/*.map 6 | outputHash 7 | .DS_Store 8 | -------------------------------------------------------------------------------- /packages/proto-types/.prettierignore: -------------------------------------------------------------------------------- 1 | !(proto-types-gen)/**/*.ts 2 | !(proto-types-gen)/**/*.js 3 | !(proto-types-gen)/**/*.mjs 4 | !(proto-types-gen)/**/*.cjs 5 | !(proto-types-gen)/**/*.map 6 | outputHash 7 | .DS_Store 8 | -------------------------------------------------------------------------------- /packages/proto-types/README.md: -------------------------------------------------------------------------------- 1 | This package is used inside the keplr-wallet library. 2 | The protobuf option differs from cosmjs. There’s no guarantee that this could be used with cosmjs, as it’s also not recommended. 3 | 4 | This package is created by proto-types-gen directory. 5 | Reference the proto-types-gen directory for more information on how it’s created. 6 | -------------------------------------------------------------------------------- /packages/proto-types/outputHash: -------------------------------------------------------------------------------- 1 | kEBtgy8ck/R5M4XyfocaoBVjv1OrO+gNcNIDXp71Bh9YRpK0nFFqFKqRFpGdXms0Ubgvb3jJyabmyyLD6oz3jS0zNAVZu9RqsVtWPXTg+r/+hs+NfFPmk5ayWp5NiPvIM4RoNr02x8Xmmo0MjBxd1zHjtCOuZTkrFvXp0y7071STrn9B5PSVB9pQpWvNy79+JM38Oe1NRfXRkCIa9g1ojeTXKNgCm3aPdnYvFhfNNVTJuIUI -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/proto/cosmos/auth/v1beta1/genesis.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package cosmos.auth.v1beta1; 3 | 4 | import "google/protobuf/any.proto"; 5 | import "gogoproto/gogo.proto"; 6 | import "cosmos/auth/v1beta1/auth.proto"; 7 | 8 | option go_package = "github.com/cosmos/cosmos-sdk/x/auth/types"; 9 | 10 | // GenesisState defines the auth module's genesis state. 11 | message GenesisState { 12 | // params defines all the paramaters of the module. 13 | Params params = 1 [(gogoproto.nullable) = false]; 14 | 15 | // accounts are the accounts present at genesis. 16 | repeated google.protobuf.Any accounts = 2; 17 | } 18 | -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/proto/cosmos/bank/v1beta1/authz.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package cosmos.bank.v1beta1; 3 | 4 | import "gogoproto/gogo.proto"; 5 | import "cosmos_proto/cosmos.proto"; 6 | import "cosmos/base/v1beta1/coin.proto"; 7 | 8 | option go_package = "github.com/cosmos/cosmos-sdk/x/bank/types"; 9 | 10 | // SendAuthorization allows the grantee to spend up to spend_limit coins from 11 | // the granter's account. 12 | message SendAuthorization { 13 | option (cosmos_proto.implements_interface) = "Authorization"; 14 | 15 | repeated cosmos.base.v1beta1.Coin spend_limit = 1 16 | [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; 17 | } 18 | -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/proto/cosmos/base/kv/v1beta1/kv.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package cosmos.base.kv.v1beta1; 3 | 4 | import "gogoproto/gogo.proto"; 5 | 6 | option go_package = "github.com/cosmos/cosmos-sdk/types/kv"; 7 | 8 | // Pairs defines a repeated slice of Pair objects. 9 | message Pairs { 10 | repeated Pair pairs = 1 [(gogoproto.nullable) = false]; 11 | } 12 | 13 | // Pair defines a key/value bytes tuple. 14 | message Pair { 15 | bytes key = 1; 16 | bytes value = 2; 17 | } 18 | -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/proto/cosmos/base/snapshots/v1beta1/snapshot.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package cosmos.base.snapshots.v1beta1; 3 | 4 | import "gogoproto/gogo.proto"; 5 | 6 | option go_package = "github.com/cosmos/cosmos-sdk/snapshots/types"; 7 | 8 | // Snapshot contains Tendermint state sync snapshot info. 9 | message Snapshot { 10 | uint64 height = 1; 11 | uint32 format = 2; 12 | uint32 chunks = 3; 13 | bytes hash = 4; 14 | Metadata metadata = 5 [(gogoproto.nullable) = false]; 15 | } 16 | 17 | // Metadata contains SDK-specific snapshot metadata. 18 | message Metadata { 19 | repeated bytes chunk_hashes = 1; // SHA-256 chunk hashes 20 | } -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/proto/cosmos/base/store/v1beta1/listening.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package cosmos.base.store.v1beta1; 3 | 4 | option go_package = "github.com/cosmos/cosmos-sdk/store/types"; 5 | 6 | // StoreKVPair is a KVStore KVPair used for listening to state changes (Sets and Deletes) 7 | // It optionally includes the StoreKey for the originating KVStore and a Boolean flag to distinguish between Sets and 8 | // Deletes 9 | message StoreKVPair { 10 | string store_key = 1; // the store key for the KVStore this pair originates from 11 | bool delete = 2; // true indicates a delete operation, false indicates a set operation 12 | bytes key = 3; 13 | bytes value = 4; 14 | } 15 | -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/proto/cosmos/crisis/v1beta1/genesis.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package cosmos.crisis.v1beta1; 3 | 4 | option go_package = "github.com/cosmos/cosmos-sdk/x/crisis/types"; 5 | 6 | import "gogoproto/gogo.proto"; 7 | import "cosmos/base/v1beta1/coin.proto"; 8 | 9 | // GenesisState defines the crisis module's genesis state. 10 | message GenesisState { 11 | // constant_fee is the fee used to verify the invariant in the crisis 12 | // module. 13 | cosmos.base.v1beta1.Coin constant_fee = 3 14 | [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"constant_fee\""]; 15 | } 16 | -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/proto/cosmos/evidence/v1beta1/genesis.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package cosmos.evidence.v1beta1; 3 | 4 | option go_package = "github.com/cosmos/cosmos-sdk/x/evidence/types"; 5 | 6 | import "google/protobuf/any.proto"; 7 | 8 | // GenesisState defines the evidence module's genesis state. 9 | message GenesisState { 10 | // evidence defines all the evidence at genesis. 11 | repeated google.protobuf.Any evidence = 1; 12 | } 13 | -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/proto/cosmos/feegrant/v1beta1/genesis.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package cosmos.feegrant.v1beta1; 3 | 4 | import "gogoproto/gogo.proto"; 5 | import "cosmos/feegrant/v1beta1/feegrant.proto"; 6 | 7 | option go_package = "github.com/cosmos/cosmos-sdk/x/feegrant"; 8 | 9 | // GenesisState contains a set of fee allowances, persisted from the store 10 | message GenesisState { 11 | repeated Grant allowances = 1 [(gogoproto.nullable) = false]; 12 | } 13 | -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/proto/cosmos/genutil/v1beta1/genesis.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package cosmos.genutil.v1beta1; 3 | 4 | import "gogoproto/gogo.proto"; 5 | 6 | option go_package = "github.com/cosmos/cosmos-sdk/x/genutil/types"; 7 | 8 | // GenesisState defines the raw genesis transaction in JSON. 9 | message GenesisState { 10 | // gen_txs defines the genesis transactions. 11 | repeated bytes gen_txs = 1 [ 12 | (gogoproto.casttype) = "encoding/json.RawMessage", 13 | (gogoproto.jsontag) = "gentxs", 14 | (gogoproto.moretags) = "yaml:\"gentxs\"" 15 | ]; 16 | } 17 | -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/proto/cosmos/mint/v1beta1/genesis.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package cosmos.mint.v1beta1; 3 | 4 | import "gogoproto/gogo.proto"; 5 | import "cosmos/mint/v1beta1/mint.proto"; 6 | 7 | option go_package = "github.com/cosmos/cosmos-sdk/x/mint/types"; 8 | 9 | // GenesisState defines the mint module's genesis state. 10 | message GenesisState { 11 | // minter is a space for holding current inflation information. 12 | Minter minter = 1 [(gogoproto.nullable) = false]; 13 | 14 | // params defines all the paramaters of the module. 15 | Params params = 2 [(gogoproto.nullable) = false]; 16 | } 17 | -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/proto/ethermint/crypto/v1/ethsecp256k1/keys.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package ethermint.crypto.v1.ethsecp256k1; 3 | 4 | import "gogoproto/gogo.proto"; 5 | 6 | option go_package = "github.com/evmos/ethermint/crypto/ethsecp256k1"; 7 | 8 | // PubKey defines a type alias for an ecdsa.PublicKey that implements 9 | // Tendermint's PubKey interface. It represents the 33-byte compressed public 10 | // key format. 11 | message PubKey { 12 | option (gogoproto.goproto_stringer) = false; 13 | 14 | bytes key = 1; 15 | } 16 | 17 | // PrivKey defines a type alias for an ecdsa.PrivateKey that implements 18 | // Tendermint's PrivateKey interface. 19 | message PrivKey { bytes key = 1; } 20 | -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/third_party/proto/cosmos_proto/cosmos.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package cosmos_proto; 3 | 4 | import "google/protobuf/descriptor.proto"; 5 | 6 | option go_package = "github.com/regen-network/cosmos-proto"; 7 | 8 | extend google.protobuf.MessageOptions { 9 | string interface_type = 93001; 10 | 11 | string implements_interface = 93002; 12 | } 13 | 14 | extend google.protobuf.FieldOptions { 15 | string accepts_interface = 93001; 16 | } 17 | -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/third_party/proto/tendermint/crypto/keys.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package tendermint.crypto; 3 | 4 | option go_package = "github.com/tendermint/tendermint/proto/tendermint/crypto"; 5 | 6 | import "gogoproto/gogo.proto"; 7 | 8 | // PublicKey defines the keys available for use with Tendermint Validators 9 | message PublicKey { 10 | option (gogoproto.compare) = true; 11 | option (gogoproto.equal) = true; 12 | 13 | oneof sum { 14 | bytes ed25519 = 1; 15 | bytes secp256k1 = 2; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/third_party/proto/tendermint/libs/bits/types.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package tendermint.libs.bits; 3 | 4 | option go_package = "github.com/tendermint/tendermint/proto/tendermint/libs/bits"; 5 | 6 | message BitArray { 7 | int64 bits = 1; 8 | repeated uint64 elems = 2; 9 | } 10 | -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/third_party/proto/tendermint/types/block.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package tendermint.types; 3 | 4 | option go_package = "github.com/tendermint/tendermint/proto/tendermint/types"; 5 | 6 | import "gogoproto/gogo.proto"; 7 | import "tendermint/types/types.proto"; 8 | import "tendermint/types/evidence.proto"; 9 | 10 | message Block { 11 | Header header = 1 [(gogoproto.nullable) = false]; 12 | Data data = 2 [(gogoproto.nullable) = false]; 13 | tendermint.types.EvidenceList evidence = 3 [(gogoproto.nullable) = false]; 14 | Commit last_commit = 4; 15 | } 16 | -------------------------------------------------------------------------------- /packages/proto-types/proto-types-gen/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "proto-types-gen/build", 6 | "declaration": true, 7 | "rootDir": "proto-types-gen/src" 8 | }, 9 | "include": [ 10 | "proto-types-gen/src/**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/provider-mock/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/provider-mock/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/provider-mock/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/provider-mock/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./mock"; 2 | -------------------------------------------------------------------------------- /packages/provider-mock/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src" 8 | }, 9 | "include": [ 10 | "src/**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/provider/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/provider/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/provider/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/provider/src/core-types.ts: -------------------------------------------------------------------------------- 1 | export interface KeplrCoreTypes { 2 | __core__getAnalyticsId(): Promise; 3 | } 4 | -------------------------------------------------------------------------------- /packages/provider/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./core"; 2 | export * from "./cosmjs"; 3 | export * from "./enigma"; 4 | export * from "./inject"; 5 | -------------------------------------------------------------------------------- /packages/provider/src/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./msgs"; 2 | -------------------------------------------------------------------------------- /packages/provider/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src" 8 | }, 9 | "include": [ 10 | "src/**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/router-extension/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/router-extension/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/router-extension/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/router-extension/src/env/content-script.ts: -------------------------------------------------------------------------------- 1 | import { Env, MessageSender } from "@keplr-wallet/router"; 2 | 3 | // ContentScriptEnv only checks the id is same as the extension id. 4 | // And, doesn't support the request interaction. 5 | export class ContentScriptEnv { 6 | static readonly produceEnv = (sender: MessageSender): Env => { 7 | const isInternalMsg = sender.id === browser.runtime.id; 8 | 9 | return { 10 | isInternalMsg, 11 | requestInteraction: () => { 12 | throw new Error( 13 | "ContentScriptEnv doesn't support `requestInteraction`" 14 | ); 15 | }, 16 | }; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /packages/router-extension/src/env/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./extension"; 2 | export * from "./content-script"; 3 | -------------------------------------------------------------------------------- /packages/router-extension/src/guard/content-script.ts: -------------------------------------------------------------------------------- 1 | import { Env, Guard, MessageSender, Message } from "@keplr-wallet/router"; 2 | 3 | export class ContentScriptGuards { 4 | // Router in content script will reject all messages that can be sent from the external. 5 | static readonly checkMessageIsInternal: Guard = ( 6 | env: Omit, 7 | msg: Message, 8 | sender: MessageSender 9 | ): Promise => { 10 | if (!env.isInternalMsg || msg.approveExternal(env, sender)) { 11 | throw new Error( 12 | "Content script can't handle the message that is able to be sent from external" 13 | ); 14 | } 15 | 16 | return Promise.resolve(); 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /packages/router-extension/src/guard/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./extension"; 2 | export * from "./content-script"; 3 | -------------------------------------------------------------------------------- /packages/router-extension/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./router"; 2 | export * from "./requester"; 3 | export * from "./guard"; 4 | export * from "./env"; 5 | -------------------------------------------------------------------------------- /packages/router-extension/src/requester/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./extension"; 2 | export * from "./content-script"; 3 | -------------------------------------------------------------------------------- /packages/router-extension/src/router/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./extension"; 2 | -------------------------------------------------------------------------------- /packages/router-extension/src/utils/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * getKeplrExtensionRouterId returns the `window.keplrExtensionRouterId`. 3 | * If the `window.keplrExtensionRouterId` is not initialized, it will be initialized and returned. 4 | */ 5 | export function getKeplrExtensionRouterId(): number { 6 | if (window.keplrExtensionRouterId == null) { 7 | window.keplrExtensionRouterId = Math.floor( 8 | Math.random() * Number.MAX_SAFE_INTEGER 9 | ); 10 | } 11 | return window.keplrExtensionRouterId; 12 | } 13 | -------------------------------------------------------------------------------- /packages/router-extension/src/window.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | 3 | declare global { 4 | interface Window { 5 | keplrExtensionRouterId?: number; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/router-extension/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src" 8 | }, 9 | "include": [ 10 | "src/**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/router-mock/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/router-mock/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/router-mock/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/router-mock/src/guard/index.ts: -------------------------------------------------------------------------------- 1 | import { Guard } from "@keplr-wallet/router"; 2 | import { ExtensionGuards } from "@keplr-wallet/router-extension"; 3 | 4 | export class MockGuards { 5 | static readonly checkOriginIsValid: Guard = 6 | ExtensionGuards.checkOriginIsValid; 7 | 8 | static readonly checkMessageIsInternal: Guard = 9 | ExtensionGuards.checkMessageIsInternal; 10 | } 11 | -------------------------------------------------------------------------------- /packages/router-mock/src/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nymtech/keplr-wallet/fb70e639f9787c3e305e15a085dd53e4ba5b9ef5/packages/router-mock/src/index.ts -------------------------------------------------------------------------------- /packages/router-mock/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src" 8 | }, 9 | "include": [ 10 | "src/**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/router/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/router/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/router/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/router/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@keplr-wallet/router", 3 | "version": "0.11.34", 4 | "main": "build/index.js", 5 | "author": "chainapsis", 6 | "license": "Apache-2.0", 7 | "private": false, 8 | "publishConfig": { 9 | "access": "public" 10 | }, 11 | "scripts": { 12 | "clean": "rm -rf node_modules; rm -rf build", 13 | "build": "tsc", 14 | "dev": "tsc -w", 15 | "test": "jest --passWithNoTests", 16 | "lint-test": "eslint \"src/**/*\" && prettier --check \"src/**/*\"", 17 | "lint-fix": "eslint --fix \"src/**/*\" && prettier --write \"src/**/*\"" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/router/src/constant.ts: -------------------------------------------------------------------------------- 1 | export const BACKGROUND_PORT = "background"; 2 | export const APP_PORT = "popup"; 3 | export const WEBPAGE_PORT = "webpage"; 4 | -------------------------------------------------------------------------------- /packages/router/src/error.ts: -------------------------------------------------------------------------------- 1 | export class KeplrError extends Error { 2 | public readonly module: string; 3 | public readonly code: number; 4 | 5 | constructor(module: string, code: number, message?: string) { 6 | super(message); 7 | this.module = module; 8 | this.code = code; 9 | 10 | Object.setPrototypeOf(this, KeplrError.prototype); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/router/src/handler.ts: -------------------------------------------------------------------------------- 1 | import { Message } from "./message"; 2 | import { Env } from "./types"; 3 | 4 | export type Handler = (env: Env, msg: Message) => any; 5 | export type InternalHandler> = ( 6 | env: Env, 7 | msg: M 8 | ) => 9 | | (M extends Message ? R : never) 10 | | Promise ? R : never>; 11 | -------------------------------------------------------------------------------- /packages/router/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./router"; 2 | export * from "./handler"; 3 | export * from "./interfaces"; 4 | export * from "./types"; 5 | export * from "./error"; 6 | export * from "./message"; 7 | export * from "./constant"; 8 | export * from "./encoding"; 9 | export * from "./json-uint8-array"; 10 | -------------------------------------------------------------------------------- /packages/router/src/interfaces.ts: -------------------------------------------------------------------------------- 1 | export interface Result { 2 | /** 3 | * NOTE: If `error` is of type `{ module:string; code: number; message: string }`, 4 | * it should be considered and processed as `KeplrError`. 5 | */ 6 | error?: string | { module: string; code: number; message: string }; 7 | return?: any; 8 | } 9 | -------------------------------------------------------------------------------- /packages/router/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src" 8 | }, 9 | "include": [ 10 | "src/**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/stores-etc/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/stores-etc/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/stores-etc/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/stores-etc/src/axelar/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./currency-registrar"; 2 | export * from "./token-info"; 3 | -------------------------------------------------------------------------------- /packages/stores-etc/src/axelar/types.ts: -------------------------------------------------------------------------------- 1 | export type TokenInfo = { 2 | asset: string; 3 | details: { 4 | token_name: string; 5 | symbol: string; 6 | decimals: number; 7 | capacity: string; 8 | }; 9 | address: string; 10 | confirmed: boolean; 11 | is_external: boolean; 12 | burner_code_hash: string; 13 | }; 14 | -------------------------------------------------------------------------------- /packages/stores-etc/src/erc20/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./query"; 2 | -------------------------------------------------------------------------------- /packages/stores-etc/src/gravity-bridge/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./currency-registrar"; 2 | -------------------------------------------------------------------------------- /packages/stores-etc/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./queries"; 2 | export * from "./erc20"; 3 | export * from "./gravity-bridge"; 4 | export * from "./axelar"; 5 | -------------------------------------------------------------------------------- /packages/stores-etc/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src" 8 | }, 9 | "include": [ 10 | "src/**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/stores/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/stores/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/stores/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/stores/src/account/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./types"; 2 | export * from "./base"; 3 | export * from "./cosmos"; 4 | export * from "./get-keplr"; 5 | export * from "./secret"; 6 | export * from "./store"; 7 | export * from "./cosmwasm"; 8 | export * from "./utils"; 9 | -------------------------------------------------------------------------------- /packages/stores/src/common/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./map"; 2 | export * from "./query"; 3 | export * from "./utils"; 4 | export * from "./types"; 5 | export * from "./merge"; 6 | -------------------------------------------------------------------------------- /packages/stores/src/common/query/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./query"; 2 | export * from "./json-rpc"; 3 | -------------------------------------------------------------------------------- /packages/stores/src/core/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./interaction"; 2 | export * from "./keyring"; 3 | export * from "./tokens"; 4 | -------------------------------------------------------------------------------- /packages/stores/src/core/interaction/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./interaction"; 2 | export * from "./permission"; 3 | export * from "./sign"; 4 | export * from "./ledger"; 5 | export * from "./keystone"; 6 | export * from "./chain-suggest"; 7 | export * from "./icns"; 8 | -------------------------------------------------------------------------------- /packages/stores/src/ibc/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./channel"; 2 | export * from "./currency-registrar"; 3 | -------------------------------------------------------------------------------- /packages/stores/src/ibc/types.ts: -------------------------------------------------------------------------------- 1 | export interface Channel { 2 | portId: string; 3 | channelId: string; 4 | counterpartyChainId: string; 5 | } 6 | -------------------------------------------------------------------------------- /packages/stores/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./account"; 2 | export * from "./common"; 3 | export * from "./price"; 4 | export * from "./query"; 5 | export * from "./chain"; 6 | export * from "./core"; 7 | export * from "./ibc"; 8 | -------------------------------------------------------------------------------- /packages/stores/src/price/types.ts: -------------------------------------------------------------------------------- 1 | export type CoinGeckoSimplePrice = { 2 | [coinId: string]: { 3 | [vsCurrency: string]: number; 4 | }; 5 | }; 6 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/account/types.ts: -------------------------------------------------------------------------------- 1 | export type AuthAccount = { 2 | account: any; 3 | }; 4 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/balance/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./balances"; 2 | export * from "./spendable"; 3 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/balance/types.ts: -------------------------------------------------------------------------------- 1 | import { CoinPrimitive } from "../../../common"; 2 | 3 | export type Balances = { 4 | balances: CoinPrimitive[]; 5 | // TODO: Handle pagination? 6 | // pagination: {}; 7 | }; 8 | 9 | export type SpendableBalances = { 10 | balances: CoinPrimitive[]; 11 | // TODO: Handle pagination? 12 | // pagination: {}; 13 | }; 14 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/distribution/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./params"; 2 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/distribution/types.ts: -------------------------------------------------------------------------------- 1 | export type DistributionParams = { 2 | params: { 3 | community_tax: string; 4 | base_proposer_reward: string; 5 | bonus_proposer_reward: string; 6 | withdraw_addr_enabled: boolean; 7 | }; 8 | }; 9 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/governance/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./proposals"; 2 | export * from "./proposal"; 3 | export * from "./params"; 4 | export * from "./vote"; 5 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/ibc/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./channel"; 2 | export * from "./client-state"; 3 | export * from "./denom-trace"; 4 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./governance"; 2 | export * from "./staking"; 3 | export * from "./supply"; 4 | export * from "./account"; 5 | export * from "./ibc"; 6 | export * from "./balance"; 7 | 8 | export * as Governance from "./governance/types"; 9 | export * as Staking from "./staking/types"; 10 | export * as Supply from "./supply/types"; 11 | export * as Account from "./account/types"; 12 | export * as IBC from "./ibc/types"; 13 | export * as Balance from "./balance/types"; 14 | 15 | export * from "./queries"; 16 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/staking/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./delegations"; 2 | export * from "./rewards"; 3 | export * from "./unbonding-delegations"; 4 | export * from "./validators"; 5 | export * from "./pool"; 6 | export * from "./params"; 7 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/supply/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./inflation"; 2 | export * from "./minting"; 3 | export * from "./supply"; 4 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/supply/iris-minting.ts: -------------------------------------------------------------------------------- 1 | import { ObservableChainQuery } from "../../chain-query"; 2 | import { KVStore } from "@keplr-wallet/common"; 3 | import { ChainGetter } from "../../../common"; 4 | 5 | export class ObservableQueryIrisMintingInfation extends ObservableChainQuery<{ 6 | height: string; 7 | result: { 8 | mint_denom: string; 9 | // Dec 10 | inflation: string; 11 | }; 12 | }> { 13 | constructor(kvStore: KVStore, chainId: string, chainGetter: ChainGetter) { 14 | super(kvStore, chainId, chainGetter, "/mint/params"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/supply/juno/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./annual-provisions"; 2 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/supply/juno/types.ts: -------------------------------------------------------------------------------- 1 | export type AnnualProvisions = { 2 | // Dec 3 | annual_provisions: string; 4 | }; 5 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/supply/minting.ts: -------------------------------------------------------------------------------- 1 | import { ObservableChainQuery } from "../../chain-query"; 2 | import { MintingInflation } from "./types"; 3 | import { KVStore } from "@keplr-wallet/common"; 4 | import { ChainGetter } from "../../../common"; 5 | 6 | export class ObservableQueryMintingInfation extends ObservableChainQuery { 7 | constructor(kvStore: KVStore, chainId: string, chainGetter: ChainGetter) { 8 | super(kvStore, chainId, chainGetter, "/cosmos/mint/v1beta1/inflation"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/supply/osmosis/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./epochs"; 2 | export * from "./epoch-provisions"; 3 | export * from "./params"; 4 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/supply/stride/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./epoch-provisions"; 2 | export * from "./params"; 3 | export * from "./types"; 4 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/supply/stride/types.ts: -------------------------------------------------------------------------------- 1 | export type StrideMintParams = { 2 | params: { 3 | distribution_proportions: { 4 | staking: string; 5 | community_pool_growth: string; 6 | community_pool_security_budget: string; 7 | strategic_reserve: string; 8 | }; 9 | epoch_identifier: string; 10 | genesis_epoch_provisions: string; 11 | mint_denom: string; 12 | minting_rewards_distribution_start_epoch: string; 13 | reduction_factor: string; 14 | reduction_period_in_epochs: string; 15 | }; 16 | }; 17 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmos/supply/types.ts: -------------------------------------------------------------------------------- 1 | export type SupplyTotal = { 2 | amount: { 3 | denom: string; 4 | amount: string; 5 | }; 6 | }; 7 | 8 | export type MintingInflation = { 9 | // Dec 10 | inflation: string; 11 | }; 12 | 13 | export type EpochProvisions = { 14 | epoch_provisions: string; 15 | }; 16 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmwasm/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./cw20-balance"; 2 | 3 | export * as CosmWasm from "./types"; 4 | 5 | export * from "./queries"; 6 | -------------------------------------------------------------------------------- /packages/stores/src/query/cosmwasm/types.ts: -------------------------------------------------------------------------------- 1 | export type Cw20ContractBalance = { 2 | balance: string; 3 | }; 4 | 5 | export type Cw20ContractTokenInfo = { 6 | decimals: number; 7 | name: string; 8 | symbol: string; 9 | total_supply: string; 10 | }; 11 | -------------------------------------------------------------------------------- /packages/stores/src/query/icns/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./names"; 2 | export * from "./queries"; 3 | 4 | export * as ICNS from "./types"; 5 | -------------------------------------------------------------------------------- /packages/stores/src/query/icns/types.ts: -------------------------------------------------------------------------------- 1 | export interface ICNSNames { 2 | names: string[]; 3 | primary_name: string; 4 | } 5 | -------------------------------------------------------------------------------- /packages/stores/src/query/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./queries"; 2 | export * from "./chain-query"; 3 | export * from "./balances"; 4 | 5 | export * from "./cosmos"; 6 | export * from "./cosmwasm"; 7 | export * from "./secret-wasm"; 8 | export * from "./osmosis"; 9 | export * from "./icns"; 10 | -------------------------------------------------------------------------------- /packages/stores/src/query/osmosis/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./txfees/fee-tokens"; 2 | export * from "./txfees/spot-price-by-denom"; 3 | export * from "./txfees/base-denom"; 4 | 5 | export * as TxFeesFeeTokens from "./txfees/fee-tokens/types"; 6 | export * as TxFeesSpotPriceByDenom from "./txfees/spot-price-by-denom/types"; 7 | export * as TxFeesBaseDenom from "./txfees/base-denom/types"; 8 | 9 | export * from "./queries"; 10 | -------------------------------------------------------------------------------- /packages/stores/src/query/osmosis/txfees/base-denom/index.ts: -------------------------------------------------------------------------------- 1 | import { ObservableChainQuery } from "../../../chain-query"; 2 | import { KVStore } from "@keplr-wallet/common"; 3 | import { ChainGetter } from "../../../../common"; 4 | import { makeObservable } from "mobx"; 5 | import { BaseDenom } from "./types"; 6 | 7 | export class ObservableQueryTxFeesBaseDenom extends ObservableChainQuery { 8 | constructor(kvStore: KVStore, chainId: string, chainGetter: ChainGetter) { 9 | super(kvStore, chainId, chainGetter, "/osmosis/txfees/v1beta1/base_denom"); 10 | 11 | makeObservable(this); 12 | } 13 | 14 | get baseDenom(): string { 15 | return this.response?.data.base_denom ?? ""; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/stores/src/query/osmosis/txfees/base-denom/types.ts: -------------------------------------------------------------------------------- 1 | export type BaseDenom = { 2 | base_denom: string; 3 | }; 4 | -------------------------------------------------------------------------------- /packages/stores/src/query/osmosis/txfees/fee-tokens/types.ts: -------------------------------------------------------------------------------- 1 | export type FeeTokens = { 2 | fee_tokens: { 3 | denom: string; 4 | poolID: string; 5 | }[]; 6 | }; 7 | -------------------------------------------------------------------------------- /packages/stores/src/query/osmosis/txfees/spot-price-by-denom/types.ts: -------------------------------------------------------------------------------- 1 | export type SpotPriceByDenom = { 2 | poolID: string; 3 | // Dec 4 | spot_price: string; 5 | }; 6 | -------------------------------------------------------------------------------- /packages/stores/src/query/secret-wasm/errors.ts: -------------------------------------------------------------------------------- 1 | export class WrongViewingKeyError extends Error { 2 | constructor(m: string) { 3 | super(m); 4 | // Set the prototype explicitly. 5 | Object.setPrototypeOf(this, WrongViewingKeyError.prototype); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/stores/src/query/secret-wasm/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./contract-hash"; 2 | export * from "./secret20-balance"; 3 | export * from "./errors"; 4 | 5 | export * as SecretWasm from "./types"; 6 | 7 | export * from "./queries"; 8 | -------------------------------------------------------------------------------- /packages/stores/src/query/secret-wasm/types.ts: -------------------------------------------------------------------------------- 1 | export type SecretContractCodeHash = { 2 | code_hash: string; 3 | }; 4 | 5 | export type Secret20ContractTokenInfo = { 6 | token_info: { 7 | decimals: number; 8 | name: string; 9 | symbol: string; 10 | // TODO: Add the `total_supply` 11 | }; 12 | }; 13 | -------------------------------------------------------------------------------- /packages/stores/src/window.d.ts: -------------------------------------------------------------------------------- 1 | import { Window as KeplrWindow } from "@keplr-wallet/types"; 2 | 3 | declare global { 4 | // eslint-disable-next-line @typescript-eslint/no-empty-interface 5 | interface Window extends KeplrWindow {} 6 | } 7 | -------------------------------------------------------------------------------- /packages/stores/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src" 8 | }, 9 | "include": [ 10 | "src/**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/types/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/types/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/types/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/types/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@keplr-wallet/types", 3 | "version": "0.11.34", 4 | "main": "build/index.js", 5 | "author": "chainapsis", 6 | "license": "Apache-2.0", 7 | "private": false, 8 | "publishConfig": { 9 | "access": "public" 10 | }, 11 | "scripts": { 12 | "clean": "rm -rf node_modules; rm -rf build", 13 | "build": "tsc", 14 | "dev": "tsc -w", 15 | "test": "jest --passWithNoTests", 16 | "lint-test": "eslint \"src/**/*\" && prettier --check \"src/**/*\"", 17 | "lint-fix": "eslint --fix \"src/**/*\" && prettier --write \"src/**/*\"" 18 | }, 19 | "dependencies": { 20 | "axios": "^0.27.2", 21 | "long": "^4.0.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/types/src/bech32.ts: -------------------------------------------------------------------------------- 1 | export interface Bech32Config { 2 | readonly bech32PrefixAccAddr: string; 3 | readonly bech32PrefixAccPub: string; 4 | readonly bech32PrefixValAddr: string; 5 | readonly bech32PrefixValPub: string; 6 | readonly bech32PrefixConsAddr: string; 7 | readonly bech32PrefixConsPub: string; 8 | } 9 | -------------------------------------------------------------------------------- /packages/types/src/bip44.ts: -------------------------------------------------------------------------------- 1 | export interface BIP44 { 2 | readonly coinType: number; 3 | } 4 | -------------------------------------------------------------------------------- /packages/types/src/ethereum.ts: -------------------------------------------------------------------------------- 1 | export enum EthSignType { 2 | MESSAGE = "message", 3 | TRANSACTION = "transaction", 4 | EIP712 = "eip-712", 5 | } 6 | -------------------------------------------------------------------------------- /packages/types/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./currency"; 2 | export * from "./bech32"; 3 | export * from "./bip44"; 4 | export * from "./chain-info"; 5 | export * from "./wallet"; 6 | export * from "./window"; 7 | export * from "./ethereum"; 8 | export * from "./cosmjs"; 9 | export * from "./secretjs"; 10 | -------------------------------------------------------------------------------- /packages/types/src/secretjs.ts: -------------------------------------------------------------------------------- 1 | export interface SecretUtils { 2 | getPubkey: () => Promise; 3 | decrypt: (ciphertext: Uint8Array, nonce: Uint8Array) => Promise; 4 | encrypt: ( 5 | contractCodeHash: string, 6 | // eslint-disable-next-line @typescript-eslint/ban-types 7 | msg: object 8 | ) => Promise; 9 | getTxEncryptionKey: (nonce: Uint8Array) => Promise; 10 | } 11 | -------------------------------------------------------------------------------- /packages/types/src/wallet/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./keplr"; 2 | -------------------------------------------------------------------------------- /packages/types/src/window.ts: -------------------------------------------------------------------------------- 1 | import { Keplr } from "./wallet"; 2 | import { OfflineAminoSigner, OfflineDirectSigner } from "./cosmjs"; 3 | import { SecretUtils } from "./secretjs"; 4 | 5 | export interface Window { 6 | keplr?: Keplr; 7 | getOfflineSigner?: ( 8 | chainId: string 9 | ) => OfflineAminoSigner & OfflineDirectSigner; 10 | getOfflineSignerOnlyAmino?: (chainId: string) => OfflineAminoSigner; 11 | getOfflineSignerAuto?: ( 12 | chainId: string 13 | ) => Promise; 14 | getEnigmaUtils?: (chainId: string) => SecretUtils; 15 | } 16 | -------------------------------------------------------------------------------- /packages/types/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src" 8 | }, 9 | "include": [ 10 | "src/**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/unit/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/unit/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/unit/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/unit/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./int-pretty"; 2 | export * from "./coin-pretty"; 3 | export * from "./coin"; 4 | export * from "./int"; 5 | export * from "./decimal"; 6 | export * from "./coin-utils"; 7 | export * from "./dec-utils"; 8 | export * from "./price-pretty"; 9 | export * from "./rate-pretty"; 10 | -------------------------------------------------------------------------------- /packages/unit/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src" 8 | }, 9 | "include": [ 10 | "src/**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/wc-client-example/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Keplr WC Example 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /packages/wc-client-example/src/index.tsx: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-extraneous-dependencies 2 | import "regenerator-runtime/runtime"; 3 | 4 | import ReactDOM from "react-dom"; 5 | import { StoreProvider } from "./stores"; 6 | import React from "react"; 7 | import { App } from "./app"; 8 | 9 | ReactDOM.render( 10 | 11 | 12 | , 13 | document.getElementById("root") 14 | ); 15 | -------------------------------------------------------------------------------- /packages/wc-client-example/src/stores/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { FunctionComponent, useState } from "react"; 2 | 3 | import { createRootStore, RootStore } from "./root"; 4 | 5 | const storeContext = React.createContext(null); 6 | 7 | export const StoreProvider: FunctionComponent = ({ children }) => { 8 | const [stores] = useState(() => createRootStore()); 9 | 10 | return ( 11 | {children} 12 | ); 13 | }; 14 | 15 | export const useStore = () => { 16 | const store = React.useContext(storeContext); 17 | if (!store) { 18 | throw new Error("You have forgot to use StoreProvider"); 19 | } 20 | return store; 21 | }; 22 | -------------------------------------------------------------------------------- /packages/wc-client-example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src", 8 | "jsx": "react" 9 | }, 10 | "include": [ 11 | "src/**/*" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /packages/wc-client/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/wc-client/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/wc-client/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/wc-client/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src", 8 | "skipLibCheck": true 9 | }, 10 | "include": [ 11 | "src/**/*" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /packages/wc-qrcode-modal/.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/wc-qrcode-modal/.prettierignore: -------------------------------------------------------------------------------- 1 | build/* 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/wc-qrcode-modal/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "ts-jest", 3 | testEnvironment: "node", 4 | testMatch: ["**/src/**/?(*.)+(spec|test).[jt]s?(x)"], 5 | }; 6 | -------------------------------------------------------------------------------- /packages/wc-qrcode-modal/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "build", 6 | "declaration": true, 7 | "rootDir": "src", 8 | "jsx": "react" 9 | }, 10 | "include": [ 11 | "src/**/*" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /scripts/mobile-publish/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mobile-publish-repository-dispatch", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "repository-dispatch": "zx ./repository-dispatch.mjs", 7 | "publish-ios": "zx ./publish.mjs ios", 8 | "publish-android": "zx ./publish.mjs android" 9 | }, 10 | "devDependencies": { 11 | "@octokit/core": "^3.5.1", 12 | "semver": "^7.3.5", 13 | "zx": "^4.3.0" 14 | } 15 | } 16 | --------------------------------------------------------------------------------