# CHANGELOG The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### Added - @cosmjs/stargate: Add support for different account types in `accountFromAny` and `StargateClient`. Added vesting accounts `BaseVestingAccount`, `ContinuousVestingAccount`, `DelayedVestingAccount` and `PeriodicVestingAccount`. ### Changed - @cosmjs/cosmwasm-stargate: Codec adapted to support wasmd 0.16. Older versions of wasmd are not supported anymore. - @cosmjs/stargate: Let `AuthExtension.account` and `AuthExtension.unverified.account` return an account of type `Any`. This makes the caller responsible for decoding the type. - @cosmjs/stargate: Remove `accountFromProto` in favour of `accountFromAny`. - @cosmjs/tendermint-rpc: The fields `CommitSignature.validatorAddress`, `.timestamp` and `.signature` are now optional. They are unset when `blockIdFlag` is `BlockIdFlag.Absent`. The decoding into `CommitSignature` is only updated for the class `Tendermint34Client`, not for `Client`. Please migrate to the former. ## [0.24.0] - 2021-03-11 - @cosmjs/cosmwasm: This package is now deprecated. The same functionality is now available in @cosmjs/cosmwasm-launchpad. - @cosmjs/cosmwasm: `logs` is no longer exported. Use `logs` from @cosmjs/launchpad instead. - @cosmjs/cosmwasm: Export `JsonObject`, `ChangeAdminResult` and `WasmData` types as well as `isValidBuilder` and `parseWasmData` functions. - @cosmjs/cosmwasm: Add `CosmWasmClient.getTx` method for searching by ID and remove such functionality from `CosmWasmClient.searchTx`. - @cosmjs/cosmwasm: Rename `SigningCosmWasmClient.senderAddress` to `.signerAddress`. - @cosmjs/cosmwasm-stargate: Add new package for CosmWasm Stargate support. - @cosmjs/crypto: Change `Secp256k1Keypair` from tagged type to simple interface. - @cosmjs/launchpad: Add `Secp256k1Wallet` to manage a single raw secp256k1 keypair. - @cosmjs/launchpad: `OfflineSigner` type’s `sign` method renamed `signAmino` and `SignResponse` type renamed `AminoSignResponse`. - @cosmjs/launchpad: `Secp256k1HdWallet.sign` method renamed `signAmino`. - @cosmjs/launchpad: Add `CosmosClient.getTx` method for searching by ID and remove such functionality from `CosmosClient.searchTx`. - @cosmjs/launchpad: Add `SigningCosmosClient.sign` method for signing without broadcasting. - @cosmjs/launchpad: Add `SigningCosmosClient.appendSignature` method creating transactions with multiple signatures. - @cosmjs/launchpad: Add support for undefined memo in `makeSignDoc`. - @cosmjs/launchpad: Rename `SigningCosmosClient.senderAddress` to `.signerAddress`. - @cosmjs/proto-signing: Add new package for handling transaction signing with protobuf encoding. - @cosmjs/proto-signing: Expose `DirectSignResponse` interface. - @cosmjs/stargate: Add new package for Cosmos SDK Stargate support. - @cosmjs/tendermint-rpc: Make `Client.detectVersion` private and let it return a version instead of a client. - @cosmjs/tendermint-rpc: Make the constructor of `Client` private. Add `Client.create` for creating a Tendermint client given an RPC client and an optional adaptor. - @cosmjs/tendermint-rpc: Add an optional adaptor argument to `Client.connect` which allows skipping the auto-detection. - @cosmjs/tendermint-rpc: Remove export `v0_33` in favour of `adaptor33` and `adaptor34`. Export the `Adaptor` type. - @cosmjs/tendermint-rpc: Export `DateTime` class. - @cosmjs/tendermint-rpc: Remove types `QueryString`, `Base64String`, `HexString`, `IntegerString` and `IpPortString`. Use `string` instead. - @cosmjs/tendermint-rpc: Remove types `BlockHash`, `TxBytes` and `TxHash`. Use `Uint8Array` instead. ### Added - @cosmjs/launchpad: Export distribution module msg types `MsgFundCommunityPool`, `MsgSetWithdrawAddress`, `MsgWithdrawDelegatorReward`, `MsgWithdrawValidatorCommission` and type checker helper functions. - @cosmjs/utils: Added `assertDefinedAndNotNull`. - @cosmjs/tendermint-rpc: The new `Tendermint34Client` is a copy of the old `Client` but without the automatic version detection. Its usage is encouraged over `Client` if you connect to a Tendermint 0.34 backend. ### Changed - @cosmjs/encoding: Change return type of `fromRfc3339` from `ReadonlyDate` to `Date` as the caller becomes the owner of the object and can safely mutate it in any way. - @cosmjs/launchpad-ledger: Renamed to @cosmjs/ledger-amino. - @cosmjs/ledger-amino: `LedgerSigner.sign` method renamed `signAmino`. ### Deprecated - @cosmjs/tendermint-rpc: Deprecate `DateTime` in favour of the free functions `fromRfc3339WithNanoseconds` and `toRfc3339WithNanoseconds`. ## 0.23.2 (2021-01-06) ### Security - @cosmjs/cli: Update vulnerable axios dependency. - @cosmjs/faucet-client: Update vulnerable axios dependency. - @cosmjs/launchpad: Update vulnerable axios dependency. - @cosmjs/tendermint-rpc: Update vulnerable axios dependency. ## 0.23.1 (2020-10-27) - @cosmjs/crypto: Export new convenience functions `keccak256`, `ripemd160`, `sha1`, `sha256` and `sha512`. - @cosmjs/faucet-client: Add new package which exports `FaucetClient` class. ## 0.23.0 (2020-10-09) - @cosmjs/cli: Expose `HdPath` type. - @cosmjs/cosmwasm: Rename `CosmWasmClient.postTx` method to `.broadcastTx`. - @cosmjs/cosmwasm: Rename `FeeTable` type to `CosmWasmFeeTable`. - @cosmjs/cosmwasm: `SigningCosmWasmClient` constructor now takes optional arguments `gasPrice` and `gasLimits` instead of `customFees` for easier customization. - @cosmjs/cosmwasm: Rename `SigningCosmWasmClient.signAndPost` method to `.signAndBroadcast`. - @cosmjs/cosmwasm: Use stricter type `Record` for smart query, init, migrate and handle messages (in `WasmExtension.wasm.queryContractSmart`, `CosmWasmClient.queryContractSmart`, `SigningCosmWasmClient.instantiate`, `SigningCosmWasmClient.migrate`, `SigningCosmWasmClient.execute`). - @cosmjs/crypto: Export new type alias `HdPath`. - @cosmjs/crypto: Add `Secp256k1Signature.toFixedLength` method. - @cosmjs/demo-staking: Remove package and supporting scripts. - @cosmjs/encoding: Add `limit` parameter to `Bech32.encode` and `.decode`. The new default limit for decoding is infinity (was 90 before). Set it to 90 to create a strict decoder. - @cosmjs/faucet: Environmental variable `FAUCET_FEE` renamed to `FAUCET_GAS_PRICE` and now only accepts one token. Environmental variable `FAUCET_GAS` renamed to `FAUCET_GAS_LIMIT`. - @cosmjs/faucet: `/credit` API now expects `denom` (base token) instead of `ticker` (unit token). Environmental variables specifying credit amounts now need to use uppercase denom. - @cosmjs/launchpad: Rename `FeeTable` type to `CosmosFeeTable` and export a new more generic type `FeeTable`. - @cosmjs/launchpad: Add new class `GasPrice`, new helper type `GasLimits` and new helper function `buildFeeTable` for easier handling of gas prices and fees. - @cosmjs/launchpad: Rename `CosmosClient.postTx` method to `.broadcastTx`. - @cosmjs/launchpad: `SigningCosmosClient` constructor now takes optional arguments `gasPrice` and `gasLimits` instead of `customFees` for easier customization. - @cosmjs/launchpad: Rename `SigningCosmosClient.signAndPost` method to `.signAndBroadcast`. - @cosmjs/launchpad: Rename `PostTx`-related types to `BroadcastTxResult`, `BroadcastTxSuccess` and `BroadcastTxFailure` respectively, as well as helper functions `isBroadcastTxFailure`, `isBroadcastTxSuccess` and `assertIsBroadcastTxSuccess`. - @cosmjs/launchpad: Export `isSearchByIdQuery`, `isSearchByHeightQuery`, `isSearchBySentFromOrToQuery` and `isSearchByTagsQuery`. - @cosmjs/launchpad: Change type of `TxsResponse.logs` and `BroadcastTxsResponse.logs` to `unknown[]`. - @cosmjs/launchpad: Export `StdSignDoc` and create helpers to make and serialize a `StdSignDoc`: `makeSignDoc` and `serializeSignDoc`. - @cosmjs/launchpad: Let `OfflineSigner.sign` take an `StdSignDoc` instead of an encoded message and return a `SignResponse` that includes the document which was signed. - @cosmjs/launchpad: Remove `PrehashType` and the prehash type argument in `OfflineSigner.sign` because the signer now needs to know how to serialize an `StdSignDoc`. - @cosmjs/launchpad: Remove `makeSignBytes` in favour of `makeSignDoc` and `serializeSignDoc`. - @cosmjs/launchpad: Create `WrappedTx`, `WrappedStdTx` and `isWrappedStdTx` to better represent the Amino tx interface. Deprecate `CosmosSdkTx`, which is an alias for `WrappedStdTx`. - @cosmjs/launchpad: Add `makeStdTx` to create an `StdTx`. - @cosmjs/launchpad: Rename `Secp256k1Wallet` to `Secp256k1HdWallet`. Later on, we'll use `Secp256k1Wallet` for single key wallets. - @cosmjs/launchpad-ledger: Add package supporting Ledger device integration for Launchpad. Two new classes are provided: `LedgerSigner` (for most use cases) and `LaunchpadLedger` for more fine-grained access. - @cosmjs/math: Add `.multiply` method to `Decimal` class. - @cosmjs/math: Deprecate `Uint32.fromBigEndianBytes` in favour of `Uint32.fromBytes`, which supports both big and little endian. - @cosmjs/math: Deprecate `Uint64.fromBytesBigEndian` in favour of `Uint64.fromBytes`, which supports both big and little endian. - @cosmjs/math: Add `Uint32.fromString`. - @cosmjs/tendermint-rpc: Make `BroadcastTxCommitResponse.height` non-optional. - @cosmjs/tendermint-rpc: Make `TxProof.proof.leafHash` non-optional because it is always set. - @cosmjs/tendermint-rpc: Change type of `GenesisResponse.appState` to `Record | undefined`. - @cosmjs/tendermint-rpc: Remove obsolete `TxData.tags` and make `TxData.events` non-optional. Rename `Tag` to `Attribute`. - @cosmjs/tendermint-rpc: Remove obsolete `BlockResultsResponse.beginBlock` and `.beginBlock`. The new `.beginBlockEvents` and `.endBlockEvents` now parse the events correctly. - @cosmjs/tendermint-rpc: Remove trivial helpers `getTxEventHeight`, `getHeaderEventHeight` and `getBlockEventHeight` because they don't do anything else than accessing an object member. - @cosmjs/tendermint-rpc: Add support for connecting to Tendermint RPC 0.34. - @cosmjs/tendermint-rpc: Make `TxEvent.index` optional and deprecate it because it is not set anymore in Tendermint 0.34. - @cosmjs/utils: Add `assertDefined`. - @cosmjs/faucet: Rename binary from `cosmwasm-faucet` to `cosmos-faucet`. ## 0.22.3 (2020-09-15) - @cosmjs/math: Add `Decimal.minus`. ## 0.22.2 (2020-08-11) - @cosmjs/faucet: Log errors for failed send transactions. - @cosmjs/faucet: Add config variable `FAUCET_MEMO`. - @cosmjs/faucet: Add config variables `FAUCET_FEE` and `FAUCET_GAS`. - @cosmjs/launchpad: Add `parseCoins` helper. ## 0.22.1 (2020-08-11) - @cosmjs/cli: Import `encodeAminoPubkey`, `encodeBech32Pubkey`, `decodeAminoPubkey` and `decodeBech32Pubkey` by default. - @cosmjs/launchpad: Add ed25519 support to `encodeBech32Pubkey`. - @cosmjs/launchpad: Add `encodeAminoPubkey` and `decodeAminoPubkey`. - @cosmjs/utils: Add `arrayContentEquals`. - @cosmjs/faucet: Add config variables `FAUCET_ADDRESS_PREFIX` and `FAUCET_TOKENS`. - @cosmjs/faucet: Remove broken chain ID from `cosmwasm-faucet generate`. ## 0.22.0 (2020-08-03) - @cosmjs/cli: Now supports HTTPs URLs for `--init` code sources. - @cosmjs/cli: Now supports adding code directly via `--code`. - @cosmjs/cosmwasm: Rename `CosmWasmClient.getNonce` method to `.getSequence`. - @cosmjs/cosmwasm: Remove `RestClient` class in favour of new modular `LcdClient` class from @cosmjs/sdk38. - @cosmjs/cosmwasm: Add `SigningCosmWasmClient.signAndPost` as a mid-level abstraction between `SigningCosmWasmClient.upload`/`.instantiate`/`.execute` and `.postTx`. - @cosmjs/cosmwasm: Use `*PostTx*` types and helpers from @cosmjs/sdk38. Remove exported `PostTxResult`. - @cosmjs/cosmwasm: `ContractDetails` was removed in favour of just `Contract`. The missing `init_msg` is now available via the contract's code history (see `getContractCodeHistory`). - @cosmjs/cosmwasm: Remove `SigningCallback` in favour of the `OfflineSigner` interface. - @cosmjs/sdk38: Rename `CosmosClient.getNonce` method to `.getSequence`. - @cosmjs/sdk38: Remove `RestClient` class in favour of new modular `LcdClient` class. - @cosmjs/sdk38: Remove `Pen` type in favour of `OfflineSigner` and remove `Secp256k1Pen` class in favour of `Secp256k1Wallet` which takes an `OfflineSigner` instead of a `SigningCallback`. - @cosmjs/sdk38: Rename `CosmosSdkAccount` to `BaseAccount` and export the type. - @cosmjs/sdk38: `BaseAccount` now uses `number | string` as the type for `account_number` and `sequence`. The new helpers `uint64ToNumber` and `uint64ToString` allow you to normalize the mixed input. - @cosmjs/sdk38: `BaseAccount` now uses `string | PubKey | null` as the type for `public_key`. The new helper `normalizePubkey` allows you to normalize the mixed input. - @cosmjs/math: Add missing integer check to `Uint64.fromNumber`. Before `Uint64.fromNumber(1.1)` produced some result. - @cosmjs/sdk38: Add `SigningCosmosClient.signAndPost` as a mid-level abstraction between `SigningCosmosClient.sendTokens` and `.postTx`. - @cosmjs/sdk38: Export `PostTxFailure`/`PostTxSuccess` and type checkers `isPostTxFailure`/`isPostTxSuccess`; export `assertIsPostTxSuccess`. - @cosmjs/sdk38: `Secp256k1Wallet`s can now be generated randomly with `Secp256k1Wallet.generate(n)` where `n` is 12, 15, 18, 21 or 24 mnemonic words. - @cosmjs/sdk38: The new `Secp256k1Wallet.serialize` and `.deserialize` allow encrypted serialization of the wallet. - @cosmjs/sdk38: Remove the obsolete `upload`, `init`, `exec` properties from `FeeTable`. @cosmjs/cosmwasm has its own `FeeTable` with those properties. - @cosmjs/sdk38: Rename package to @cosmjs/launchpad. [unreleased]: https://github.com/cosmos/cosmjs/compare/v0.24.0...HEAD [0.24.0]: https://github.com/cosmos/cosmjs/compare/v0.23.0...v0.24.0