diff --git a/.eslintrc.js b/.eslintrc.js index ae6c05b0..d78f9590 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -27,10 +27,11 @@ module.exports = { "no-shadow": "warn", "no-unused-vars": "off", // disabled in favour of @typescript-eslint/no-unused-vars, see https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unused-vars.md "prefer-const": "warn", - "radix": ["warn", "always"], + radix: ["warn", "always"], "spaced-comment": ["warn", "always", { line: { markers: ["/ ; + readonly balance: readonly Coin[]; readonly pubkey: PubKey | undefined; readonly accountNumber: number; readonly sequence: number; @@ -68,7 +68,7 @@ export interface SearchBySentFromOrToQuery { * more powerful and slightly lower level than the other search options. */ export interface SearchByTagsQuery { - readonly tags: readonly { readonly key: string; readonly value: string }[]; + readonly tags: ReadonlyArray<{ readonly key: string; readonly value: string }>; } export type SearchTxQuery = @@ -144,7 +144,7 @@ export interface Block { readonly id: string; readonly header: BlockHeader; /** Array of raw transactions */ - readonly txs: ReadonlyArray; + readonly txs: readonly Uint8Array[]; } /** Use for testing only */ diff --git a/packages/cosmwasm/src/msgs.ts b/packages/cosmwasm/src/msgs.ts index d71a477d..7aae1b6c 100644 --- a/packages/cosmwasm/src/msgs.ts +++ b/packages/cosmwasm/src/msgs.ts @@ -41,7 +41,7 @@ export interface MsgInstantiateContract extends Msg { readonly label: string; /** Init message as JavaScript object */ readonly init_msg: any; - readonly init_funds: ReadonlyArray; + readonly init_funds: readonly Coin[]; /** Bech32-encoded admin address */ readonly admin?: string; }; @@ -106,7 +106,7 @@ export interface MsgExecuteContract extends Msg { readonly contract: string; /** Handle message as JavaScript object */ readonly msg: any; - readonly sent_funds: ReadonlyArray; + readonly sent_funds: readonly Coin[]; }; } diff --git a/packages/cosmwasm/src/restclient.ts b/packages/cosmwasm/src/restclient.ts index e1793716..a915f565 100644 --- a/packages/cosmwasm/src/restclient.ts +++ b/packages/cosmwasm/src/restclient.ts @@ -55,9 +55,9 @@ interface SmartQueryResponse { } /** Unfortunately, Cosmos SDK encodes empty arrays as null */ -type CosmosSdkArray = ReadonlyArray | null; +type CosmosSdkArray = readonly T[] | null; -function normalizeArray(backend: CosmosSdkArray): ReadonlyArray { +function normalizeArray(backend: CosmosSdkArray): readonly T[] { return backend || []; } diff --git a/packages/cosmwasm/types/cosmwasmclient.d.ts b/packages/cosmwasm/types/cosmwasmclient.d.ts index 5e85137a..87e5360c 100644 --- a/packages/cosmwasm/types/cosmwasmclient.d.ts +++ b/packages/cosmwasm/types/cosmwasmclient.d.ts @@ -9,7 +9,7 @@ export interface GetNonceResult { export interface Account { /** Bech32 account address */ readonly address: string; - readonly balance: ReadonlyArray; + readonly balance: readonly Coin[]; readonly pubkey: PubKey | undefined; readonly accountNumber: number; readonly sequence: number; @@ -44,10 +44,10 @@ export interface SearchBySentFromOrToQuery { * more powerful and slightly lower level than the other search options. */ export interface SearchByTagsQuery { - readonly tags: readonly { + readonly tags: ReadonlyArray<{ readonly key: string; readonly value: string; - }[]; + }>; } export declare type SearchTxQuery = | SearchByIdQuery @@ -99,7 +99,7 @@ export interface Block { readonly id: string; readonly header: BlockHeader; /** Array of raw transactions */ - readonly txs: ReadonlyArray; + readonly txs: readonly Uint8Array[]; } /** Use for testing only */ export interface PrivateCosmWasmClient { diff --git a/packages/cosmwasm/types/msgs.d.ts b/packages/cosmwasm/types/msgs.d.ts index c070fa18..5250100b 100644 --- a/packages/cosmwasm/types/msgs.d.ts +++ b/packages/cosmwasm/types/msgs.d.ts @@ -36,7 +36,7 @@ export interface MsgInstantiateContract extends Msg { readonly label: string; /** Init message as JavaScript object */ readonly init_msg: any; - readonly init_funds: ReadonlyArray; + readonly init_funds: readonly Coin[]; /** Bech32-encoded admin address */ readonly admin?: string; }; @@ -89,7 +89,7 @@ export interface MsgExecuteContract extends Msg { readonly contract: string; /** Handle message as JavaScript object */ readonly msg: any; - readonly sent_funds: ReadonlyArray; + readonly sent_funds: readonly Coin[]; }; } export declare function isMsgExecuteContract(msg: Msg): msg is MsgExecuteContract; diff --git a/packages/crypto/src/secp256k1.spec.ts b/packages/crypto/src/secp256k1.spec.ts index 36833fdf..84586cb8 100644 --- a/packages/crypto/src/secp256k1.spec.ts +++ b/packages/crypto/src/secp256k1.spec.ts @@ -194,11 +194,11 @@ describe("Secp256k1", () => { it("verifies unnormalized pyca/cryptography signatures", async () => { // signatures are mixed lowS and non-lowS, prehash type is sha256 - const data: readonly { + const data: ReadonlyArray<{ readonly message: Uint8Array; readonly privkey: Uint8Array; readonly signature: Uint8Array; - }[] = [ + }> = [ { message: fromHex( "5c868fedb8026979ebd26f1ba07c27eedf4ff6d10443505a96ecaf21ba8c4f0937b3cd23ffdc3dd429d4cd1905fb8dbcceeff1350020e18b58d2ba70887baa3a9b783ad30d3fbf210331cdd7df8d77defa398cdacdfc2e359c7ba4cae46bb74401deb417f8b912a1aa966aeeba9c39c7dd22479ae2b30719dca2f2206c5eb4b7", @@ -395,11 +395,11 @@ describe("Secp256k1", () => { it("matches normalized pyca/cryptography signatures", async () => { // signatures are normalized to lowS, prehash type is sha256 - const data: readonly { + const data: ReadonlyArray<{ readonly message: Uint8Array; readonly privkey: Uint8Array; readonly signature: Uint8Array; - }[] = [ + }> = [ { message: fromHex( "5c868fedb8026979ebd26f1ba07c27eedf4ff6d10443505a96ecaf21ba8c4f0937b3cd23ffdc3dd429d4cd1905fb8dbcceeff1350020e18b58d2ba70887baa3a9b783ad30d3fbf210331cdd7df8d77defa398cdacdfc2e359c7ba4cae46bb74401deb417f8b912a1aa966aeeba9c39c7dd22479ae2b30719dca2f2206c5eb4b7", diff --git a/packages/faucet/src/actions/generate.ts b/packages/faucet/src/actions/generate.ts index 096b18f7..73ed15c1 100644 --- a/packages/faucet/src/actions/generate.ts +++ b/packages/faucet/src/actions/generate.ts @@ -3,7 +3,7 @@ import { Bip39, Random } from "@cosmjs/crypto"; import * as constants from "../constants"; import { createPens } from "../profile"; -export async function generate(args: ReadonlyArray): Promise { +export async function generate(args: readonly string[]): Promise { if (args.length < 1) { throw Error( `Not enough arguments for action 'generate'. See '${constants.binaryName} help' or README for arguments.`, diff --git a/packages/faucet/src/actions/start/start.ts b/packages/faucet/src/actions/start/start.ts index ad1c29ed..9c72cd01 100644 --- a/packages/faucet/src/actions/start/start.ts +++ b/packages/faucet/src/actions/start/start.ts @@ -5,7 +5,7 @@ import * as constants from "../../constants"; import { logAccountsState } from "../../debugging"; import { Faucet } from "../../faucet"; -export async function start(args: ReadonlyArray): Promise { +export async function start(args: readonly string[]): Promise { if (args.length < 1) { throw Error( `Not enough arguments for action 'start'. See '${constants.binaryName} help' or README for arguments.`, diff --git a/packages/faucet/src/cli.ts b/packages/faucet/src/cli.ts index ce90446e..a8d108cd 100644 --- a/packages/faucet/src/cli.ts +++ b/packages/faucet/src/cli.ts @@ -1,6 +1,6 @@ import { generate, help, start, version } from "./actions"; -export function main(args: ReadonlyArray): void { +export function main(args: readonly string[]): void { if (args.length < 1) { help(); process.exit(1); diff --git a/packages/faucet/src/debugging.ts b/packages/faucet/src/debugging.ts index 1db74139..ca7ba833 100644 --- a/packages/faucet/src/debugging.ts +++ b/packages/faucet/src/debugging.ts @@ -21,7 +21,7 @@ export function debugAccount(account: MinimalAccount, tokens: TokenConfiguration return `${account.address}: ${debugBalance(account.balance, tokens)}`; } -export function logAccountsState(accounts: ReadonlyArray, tokens: TokenConfiguration): void { +export function logAccountsState(accounts: readonly MinimalAccount[], tokens: TokenConfiguration): void { if (accounts.length < 2) { throw new Error("List of accounts must contain at least one token holder and one distributor"); } diff --git a/packages/faucet/src/faucet.ts b/packages/faucet/src/faucet.ts index 6e9f78fd..b6450956 100644 --- a/packages/faucet/src/faucet.ts +++ b/packages/faucet/src/faucet.ts @@ -38,7 +38,7 @@ export class Faucet { apiUrl: string, addressPrefix: string, config: TokenConfiguration, - pens: readonly [string, Pen][], + pens: ReadonlyArray, logging = false, ) { this.addressPrefix = addressPrefix; @@ -64,7 +64,7 @@ export class Faucet { /** * Returns a list of ticker symbols of tokens owned by the the holder and configured in the faucet */ - public async availableTokens(): Promise> { + public async availableTokens(): Promise { const holderAccount = await this.readOnlyClient.getAccount(this.holderAddress); const balance = holderAccount ? holderAccount.balance : []; @@ -99,7 +99,7 @@ export class Faucet { return this.tokenConfig.bankTokens.map((token) => token.tickerSymbol); } - public async loadAccounts(): Promise> { + public async loadAccounts(): Promise { const addresses = [this.holderAddress, ...this.distributorAddresses]; return Promise.all( diff --git a/packages/faucet/src/profile.ts b/packages/faucet/src/profile.ts index 7aaf70e8..0abc05a9 100644 --- a/packages/faucet/src/profile.ts +++ b/packages/faucet/src/profile.ts @@ -6,8 +6,8 @@ export async function createPens( addressPrefix: string, numberOfDistributors: number, logging = false, -): Promise { - const pens = new Array<[string, Pen]>(); +): Promise> { + const pens = new Array(); // first account is the token holder const numberOfIdentities = 1 + numberOfDistributors; diff --git a/packages/faucet/src/types.ts b/packages/faucet/src/types.ts index ec2cbcde..f099fcd5 100644 --- a/packages/faucet/src/types.ts +++ b/packages/faucet/src/types.ts @@ -26,7 +26,7 @@ export interface BankTokenMeta { export interface TokenConfiguration { /** Supported tokens of the Cosmos SDK bank module */ - readonly bankTokens: ReadonlyArray; + readonly bankTokens: readonly BankTokenMeta[]; } export type MinimalAccount = Pick; diff --git a/packages/sdk38/src/cosmosclient.ts b/packages/sdk38/src/cosmosclient.ts index fc6fd5b5..077e354c 100644 --- a/packages/sdk38/src/cosmosclient.ts +++ b/packages/sdk38/src/cosmosclient.ts @@ -16,7 +16,7 @@ export interface GetNonceResult { export interface Account { /** Bech32 account address */ readonly address: string; - readonly balance: ReadonlyArray; + readonly balance: readonly Coin[]; readonly pubkey: PubKey | undefined; readonly accountNumber: number; readonly sequence: number; @@ -61,7 +61,7 @@ export interface SearchBySentFromOrToQuery { * more powerful and slightly lower level than the other search options. */ export interface SearchByTagsQuery { - readonly tags: readonly { readonly key: string; readonly value: string }[]; + readonly tags: ReadonlyArray<{ readonly key: string; readonly value: string }>; } export type SearchTxQuery = @@ -125,7 +125,7 @@ export interface Block { readonly id: string; readonly header: BlockHeader; /** Array of raw transactions */ - readonly txs: ReadonlyArray; + readonly txs: readonly Uint8Array[]; } /** Use for testing only */ diff --git a/packages/sdk38/src/msgs.ts b/packages/sdk38/src/msgs.ts index 83937893..8644eb6a 100644 --- a/packages/sdk38/src/msgs.ts +++ b/packages/sdk38/src/msgs.ts @@ -13,7 +13,7 @@ export interface MsgSend extends Msg { readonly from_address: string; /** Bech32 account address */ readonly to_address: string; - readonly amount: ReadonlyArray; + readonly amount: readonly Coin[]; }; } diff --git a/packages/sdk38/src/restclient.ts b/packages/sdk38/src/restclient.ts index 0cf8e62a..67edfb99 100644 --- a/packages/sdk38/src/restclient.ts +++ b/packages/sdk38/src/restclient.ts @@ -7,7 +7,7 @@ import { CosmosSdkTx, StdTx } from "./types"; export interface CosmosSdkAccount { /** Bech32 account address */ readonly address: string; - readonly coins: ReadonlyArray; + readonly coins: readonly Coin[]; /** Bech32 encoded pubkey */ readonly public_key: string; readonly account_number: number; @@ -84,7 +84,7 @@ interface Block { readonly header: BlockHeader; readonly data: { /** Array of base64 encoded transactions */ - readonly txs: ReadonlyArray | null; + readonly txs: readonly string[] | null; }; } diff --git a/packages/sdk38/src/types.ts b/packages/sdk38/src/types.ts index e0c085a8..ecfea0c7 100644 --- a/packages/sdk38/src/types.ts +++ b/packages/sdk38/src/types.ts @@ -26,7 +26,7 @@ export interface CosmosSdkTx { } export interface StdFee { - readonly amount: ReadonlyArray; + readonly amount: readonly Coin[]; readonly gas: string; } diff --git a/packages/sdk38/types/cosmosclient.d.ts b/packages/sdk38/types/cosmosclient.d.ts index 4749f6b9..b62fb2c6 100644 --- a/packages/sdk38/types/cosmosclient.d.ts +++ b/packages/sdk38/types/cosmosclient.d.ts @@ -9,7 +9,7 @@ export interface GetNonceResult { export interface Account { /** Bech32 account address */ readonly address: string; - readonly balance: ReadonlyArray; + readonly balance: readonly Coin[]; readonly pubkey: PubKey | undefined; readonly accountNumber: number; readonly sequence: number; @@ -44,10 +44,10 @@ export interface SearchBySentFromOrToQuery { * more powerful and slightly lower level than the other search options. */ export interface SearchByTagsQuery { - readonly tags: readonly { + readonly tags: ReadonlyArray<{ readonly key: string; readonly value: string; - }[]; + }>; } export declare type SearchTxQuery = | SearchByIdQuery @@ -90,7 +90,7 @@ export interface Block { readonly id: string; readonly header: BlockHeader; /** Array of raw transactions */ - readonly txs: ReadonlyArray; + readonly txs: readonly Uint8Array[]; } /** Use for testing only */ export interface PrivateCosmWasmClient { diff --git a/packages/sdk38/types/msgs.d.ts b/packages/sdk38/types/msgs.d.ts index eabba375..62221458 100644 --- a/packages/sdk38/types/msgs.d.ts +++ b/packages/sdk38/types/msgs.d.ts @@ -11,7 +11,7 @@ export interface MsgSend extends Msg { readonly from_address: string; /** Bech32 account address */ readonly to_address: string; - readonly amount: ReadonlyArray; + readonly amount: readonly Coin[]; }; } export declare function isMsgSend(msg: Msg): msg is MsgSend; diff --git a/packages/sdk38/types/restclient.d.ts b/packages/sdk38/types/restclient.d.ts index 830457cb..b1134d30 100644 --- a/packages/sdk38/types/restclient.d.ts +++ b/packages/sdk38/types/restclient.d.ts @@ -3,7 +3,7 @@ import { CosmosSdkTx, StdTx } from "./types"; export interface CosmosSdkAccount { /** Bech32 account address */ readonly address: string; - readonly coins: ReadonlyArray; + readonly coins: readonly Coin[]; /** Bech32 encoded pubkey */ readonly public_key: string; readonly account_number: number; @@ -69,7 +69,7 @@ interface Block { readonly header: BlockHeader; readonly data: { /** Array of base64 encoded transactions */ - readonly txs: ReadonlyArray | null; + readonly txs: readonly string[] | null; }; } export interface BlockResponse { diff --git a/packages/sdk38/types/types.d.ts b/packages/sdk38/types/types.d.ts index 2f3d218d..c12484fa 100644 --- a/packages/sdk38/types/types.d.ts +++ b/packages/sdk38/types/types.d.ts @@ -17,7 +17,7 @@ export interface CosmosSdkTx { readonly value: StdTx; } export interface StdFee { - readonly amount: ReadonlyArray; + readonly amount: readonly Coin[]; readonly gas: string; } export interface StdSignature { diff --git a/packages/stream/src/concat.ts b/packages/stream/src/concat.ts index 131e080f..540bdbac 100644 --- a/packages/stream/src/concat.ts +++ b/packages/stream/src/concat.ts @@ -17,7 +17,7 @@ import { Producer, Stream, Subscription } from "xstream"; * differently than xstream's concat as discussed in https://github.com/staltz/xstream/issues/170. * */ -export function concat(...streams: Stream[]): Stream { +export function concat(...streams: Array>): Stream { const subscriptions = new Array(); const queues = new Array(); // one queue per stream const completedStreams = new Set(); diff --git a/packages/stream/types/concat.d.ts b/packages/stream/types/concat.d.ts index cd1ea4a5..132f6f62 100644 --- a/packages/stream/types/concat.d.ts +++ b/packages/stream/types/concat.d.ts @@ -16,4 +16,4 @@ import { Stream } from "xstream"; * differently than xstream's concat as discussed in https://github.com/staltz/xstream/issues/170. * */ -export declare function concat(...streams: Stream[]): Stream; +export declare function concat(...streams: Array>): Stream;