From 416ed00824866f8fdc9449f396ca956294e4f915 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Tue, 1 Oct 2024 14:57:39 +0200 Subject: [PATCH 01/54] remove @celo/rpc-wallet (#342) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Description As described[ in this form post](https://forum.celo.org/t/deprecation-of-celo-wallet-rpc/8452) the @celo/wallet-rpc package is being removed. `personal_` namespace is deprecated in geth. and already not supported in testing environments like anvil. ### Other changes nope ### Tested n/a ### Related issues - Fixes #257 - fixes https://github.com/celo-org/celo-blockchain-planning/issues/431 ### Backwards compatibility nope ### Documentation docs updated --- ## PR-Codex overview This PR focuses on the deletion of various files and directories related to the `wallet-rpc` module in the SDK, indicating a significant removal of components from the project. ### Detailed summary - Deleted the entire `docs/sdk/wallet-rpc` directory, including `README.md` and multiple module documentation files. - Removed the `wallet-rpc` directory from `packages/sdk/wallets`, including its `README.md`, configuration files, and source files. - Eliminated test utility files related to `ganache` in `src/test-utils`. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- README.md | 1 - docs/sdk/wallet-rpc/README.md | 13 - .../classes/rpc_signer.RpcSigner.md | 268 ----------- .../classes/rpc_wallet.RpcWallet.md | 448 ------------------ .../enums/rpc_wallet.RpcWalletErrors.md | 32 -- docs/sdk/wallet-rpc/modules/index.md | 29 -- docs/sdk/wallet-rpc/modules/rpc_signer.md | 9 - docs/sdk/wallet-rpc/modules/rpc_wallet.md | 13 - .../modules/test_utils_ganache_setup.md | 23 - .../modules/test_utils_ganache_teardown.md | 23 - packages/sdk/wallets/wallet-rpc/.eslintrc.js | 3 - packages/sdk/wallets/wallet-rpc/.gitignore | 1 - packages/sdk/wallets/wallet-rpc/.npmignore | 24 - packages/sdk/wallets/wallet-rpc/CHANGELOG.md | 197 -------- packages/sdk/wallets/wallet-rpc/README.md | 23 - .../wallets/wallet-rpc/eslint.tsconfig.json | 4 - .../sdk/wallets/wallet-rpc/jest.config.js | 7 - packages/sdk/wallets/wallet-rpc/package.json | 45 -- packages/sdk/wallets/wallet-rpc/src/index.ts | 2 - .../sdk/wallets/wallet-rpc/src/rpc-signer.ts | 178 ------- .../wallets/wallet-rpc/src/rpc-wallet.test.ts | 256 ---------- .../sdk/wallets/wallet-rpc/src/rpc-wallet.ts | 72 --- .../src/test-utils/ganache.setup.ts | 9 - .../src/test-utils/ganache.teardown.ts | 2 - packages/sdk/wallets/wallet-rpc/tsconfig.json | 9 - packages/sdk/wallets/wallet-rpc/typedoc.json | 19 - 26 files changed, 1710 deletions(-) delete mode 100644 docs/sdk/wallet-rpc/README.md delete mode 100644 docs/sdk/wallet-rpc/classes/rpc_signer.RpcSigner.md delete mode 100644 docs/sdk/wallet-rpc/classes/rpc_wallet.RpcWallet.md delete mode 100644 docs/sdk/wallet-rpc/enums/rpc_wallet.RpcWalletErrors.md delete mode 100644 docs/sdk/wallet-rpc/modules/index.md delete mode 100644 docs/sdk/wallet-rpc/modules/rpc_signer.md delete mode 100644 docs/sdk/wallet-rpc/modules/rpc_wallet.md delete mode 100644 docs/sdk/wallet-rpc/modules/test_utils_ganache_setup.md delete mode 100644 docs/sdk/wallet-rpc/modules/test_utils_ganache_teardown.md delete mode 100644 packages/sdk/wallets/wallet-rpc/.eslintrc.js delete mode 100644 packages/sdk/wallets/wallet-rpc/.gitignore delete mode 100644 packages/sdk/wallets/wallet-rpc/.npmignore delete mode 100644 packages/sdk/wallets/wallet-rpc/CHANGELOG.md delete mode 100644 packages/sdk/wallets/wallet-rpc/README.md delete mode 100644 packages/sdk/wallets/wallet-rpc/eslint.tsconfig.json delete mode 100644 packages/sdk/wallets/wallet-rpc/jest.config.js delete mode 100644 packages/sdk/wallets/wallet-rpc/package.json delete mode 100644 packages/sdk/wallets/wallet-rpc/src/index.ts delete mode 100644 packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts delete mode 100644 packages/sdk/wallets/wallet-rpc/src/rpc-wallet.test.ts delete mode 100644 packages/sdk/wallets/wallet-rpc/src/rpc-wallet.ts delete mode 100644 packages/sdk/wallets/wallet-rpc/src/test-utils/ganache.setup.ts delete mode 100644 packages/sdk/wallets/wallet-rpc/src/test-utils/ganache.teardown.ts delete mode 100644 packages/sdk/wallets/wallet-rpc/tsconfig.json delete mode 100644 packages/sdk/wallets/wallet-rpc/typedoc.json diff --git a/README.md b/README.md index 01b7b79348..3ebfc8cdce 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,6 @@ This repository contains source code for: - [`@celo/wallet-ledger`](https://www.npmjs.com/package/@celo/wallet-ledger) - [`@celo/wallet-local`](https://www.npmjs.com/package/@celo/wallet-local) - [`@celo/wallet-remote`](https://www.npmjs.com/package/@celo/wallet-remote) - - [`@celo/wallet-rpc`](https://www.npmjs.com/package/@celo/wallet-rpc) ## Contributing diff --git a/docs/sdk/wallet-rpc/README.md b/docs/sdk/wallet-rpc/README.md deleted file mode 100644 index 4277c1cbd4..0000000000 --- a/docs/sdk/wallet-rpc/README.md +++ /dev/null @@ -1,13 +0,0 @@ -@celo/wallet-rpc - -# @celo/wallet-rpc - -## Table of contents - -### Modules - -- [index](modules/index.md) -- [rpc-signer](modules/rpc_signer.md) -- [rpc-wallet](modules/rpc_wallet.md) -- [test-utils/ganache.setup](modules/test_utils_ganache_setup.md) -- [test-utils/ganache.teardown](modules/test_utils_ganache_teardown.md) diff --git a/docs/sdk/wallet-rpc/classes/rpc_signer.RpcSigner.md b/docs/sdk/wallet-rpc/classes/rpc_signer.RpcSigner.md deleted file mode 100644 index 8affc0b25e..0000000000 --- a/docs/sdk/wallet-rpc/classes/rpc_signer.RpcSigner.md +++ /dev/null @@ -1,268 +0,0 @@ -[@celo/wallet-rpc](../README.md) / [rpc-signer](../modules/rpc_signer.md) / RpcSigner - -# Class: RpcSigner - -[rpc-signer](../modules/rpc_signer.md).RpcSigner - -Implements the signer interface on top of the JSON-RPC interface. - -**`Deprecated`** - -https://forum.celo.org/t/deprecation-of-celo-wallet-rpc/8452 - -## Implements - -- `Signer` - -## Table of contents - -### Constructors - -- [constructor](rpc_signer.RpcSigner.md#constructor) - -### Methods - -- [computeSharedSecret](rpc_signer.RpcSigner.md#computesharedsecret) -- [decrypt](rpc_signer.RpcSigner.md#decrypt) -- [getNativeKey](rpc_signer.RpcSigner.md#getnativekey) -- [init](rpc_signer.RpcSigner.md#init) -- [isUnlocked](rpc_signer.RpcSigner.md#isunlocked) -- [signPersonalMessage](rpc_signer.RpcSigner.md#signpersonalmessage) -- [signRawTransaction](rpc_signer.RpcSigner.md#signrawtransaction) -- [signTransaction](rpc_signer.RpcSigner.md#signtransaction) -- [signTypedData](rpc_signer.RpcSigner.md#signtypeddata) -- [unlock](rpc_signer.RpcSigner.md#unlock) - -## Constructors - -### constructor - -• **new RpcSigner**(`rpc`, `account`, `unlockBufferSeconds?`, `unlockTime?`, `unlockDuration?`): [`RpcSigner`](rpc_signer.RpcSigner.md) - -Construct a new instance of the RPC signer - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `rpc` | `RpcCaller` | `undefined` | RPC caller instance | -| `account` | `string` | `undefined` | Account address derived from the private key to be called in init | -| `unlockBufferSeconds` | `number` | `5` | Number of seconds to shrink the unlocked duration by to account for latency and timing inconsistencies on the node | -| `unlockTime?` | `number` | `undefined` | Timestamp in seconds when the signer was last unlocked | -| `unlockDuration?` | `number` | `undefined` | Number of seconds that the signer was last unlocked for | - -#### Returns - -[`RpcSigner`](rpc_signer.RpcSigner.md) - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-signer.ts:65](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts#L65) - -## Methods - -### computeSharedSecret - -▸ **computeSharedSecret**(`_publicKey`): `Promise`\<`Buffer`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `_publicKey` | `string` | - -#### Returns - -`Promise`\<`Buffer`\> - -#### Implementation of - -Signer.computeSharedSecret - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-signer.ts:174](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts#L174) - -___ - -### decrypt - -▸ **decrypt**(`ciphertext`): `Promise`\<`Buffer`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `ciphertext` | `Buffer` | - -#### Returns - -`Promise`\<`Buffer`\> - -#### Implementation of - -Signer.decrypt - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-signer.ts:165](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts#L165) - -___ - -### getNativeKey - -▸ **getNativeKey**(): `string` - -#### Returns - -`string` - -#### Implementation of - -Signer.getNativeKey - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-signer.ts:123](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts#L123) - -___ - -### init - -▸ **init**(`privateKey`, `passphrase`): `Promise`\<`string`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `privateKey` | `string` | -| `passphrase` | `string` | - -#### Returns - -`Promise`\<`string`\> - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-signer.ts:73](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts#L73) - -___ - -### isUnlocked - -▸ **isUnlocked**(): `boolean` - -#### Returns - -`boolean` - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-signer.ts:147](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts#L147) - -___ - -### signPersonalMessage - -▸ **signPersonalMessage**(`data`): `Promise`\<\{ `r`: `Buffer` ; `s`: `Buffer` ; `v`: `number` }\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `data` | `string` | - -#### Returns - -`Promise`\<\{ `r`: `Buffer` ; `s`: `Buffer` ; `v`: `number` }\> - -#### Implementation of - -Signer.signPersonalMessage - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-signer.ts:115](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts#L115) - -___ - -### signRawTransaction - -▸ **signRawTransaction**(`tx`): `Promise`\<`EncodedTransaction`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `tx` | `CeloTx` | - -#### Returns - -`Promise`\<`EncodedTransaction`\> - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-signer.ts:79](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts#L79) - -___ - -### signTransaction - -▸ **signTransaction**(): `Promise`\<\{ `r`: `Buffer` ; `s`: `Buffer` ; `v`: `number` }\> - -#### Returns - -`Promise`\<\{ `r`: `Buffer` ; `s`: `Buffer` ; `v`: `number` }\> - -#### Implementation of - -Signer.signTransaction - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-signer.ts:102](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts#L102) - -___ - -### signTypedData - -▸ **signTypedData**(`typedData`): `Promise`\<\{ `r`: `Buffer` ; `s`: `Buffer` ; `v`: `number` }\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `typedData` | `EIP712TypedData` | - -#### Returns - -`Promise`\<\{ `r`: `Buffer` ; `s`: `Buffer` ; `v`: `number` }\> - -#### Implementation of - -Signer.signTypedData - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-signer.ts:106](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts#L106) - -___ - -### unlock - -▸ **unlock**(`passphrase`, `duration`): `Promise`\<`boolean`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `passphrase` | `string` | -| `duration` | `number` | - -#### Returns - -`Promise`\<`boolean`\> - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-signer.ts:125](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts#L125) diff --git a/docs/sdk/wallet-rpc/classes/rpc_wallet.RpcWallet.md b/docs/sdk/wallet-rpc/classes/rpc_wallet.RpcWallet.md deleted file mode 100644 index 887d9e14ce..0000000000 --- a/docs/sdk/wallet-rpc/classes/rpc_wallet.RpcWallet.md +++ /dev/null @@ -1,448 +0,0 @@ -[@celo/wallet-rpc](../README.md) / [rpc-wallet](../modules/rpc_wallet.md) / RpcWallet - -# Class: RpcWallet - -[rpc-wallet](../modules/rpc_wallet.md).RpcWallet - -WARNING: This class should only be used with well-permissioned providers (ie IPC) - to avoid sensitive user 'privateKey' and 'passphrase' information being exposed - -**`Deprecated`** - -https://forum.celo.org/t/deprecation-of-celo-wallet-rpc/8452 - -## Hierarchy - -- `RemoteWallet`\<[`RpcSigner`](rpc_signer.RpcSigner.md)\> - - ↳ **`RpcWallet`** - -## Implements - -- `UnlockableWallet` - -## Table of contents - -### Constructors - -- [constructor](rpc_wallet.RpcWallet.md#constructor) - -### Properties - -- [isSetupFinished](rpc_wallet.RpcWallet.md#issetupfinished) - -### Methods - -- [addAccount](rpc_wallet.RpcWallet.md#addaccount) -- [computeSharedSecret](rpc_wallet.RpcWallet.md#computesharedsecret) -- [decrypt](rpc_wallet.RpcWallet.md#decrypt) -- [getAccounts](rpc_wallet.RpcWallet.md#getaccounts) -- [hasAccount](rpc_wallet.RpcWallet.md#hasaccount) -- [init](rpc_wallet.RpcWallet.md#init) -- [isAccountUnlocked](rpc_wallet.RpcWallet.md#isaccountunlocked) -- [loadAccountSigners](rpc_wallet.RpcWallet.md#loadaccountsigners) -- [removeAccount](rpc_wallet.RpcWallet.md#removeaccount) -- [signPersonalMessage](rpc_wallet.RpcWallet.md#signpersonalmessage) -- [signTransaction](rpc_wallet.RpcWallet.md#signtransaction) -- [signTypedData](rpc_wallet.RpcWallet.md#signtypeddata) -- [unlockAccount](rpc_wallet.RpcWallet.md#unlockaccount) - -## Constructors - -### constructor - -• **new RpcWallet**(`_provider`): [`RpcWallet`](rpc_wallet.RpcWallet.md) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `_provider` | `Provider` | - -#### Returns - -[`RpcWallet`](rpc_wallet.RpcWallet.md) - -#### Overrides - -RemoteWallet\<RpcSigner\>.constructor - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-wallet.ts:22](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.ts#L22) - -## Properties - -### isSetupFinished - -• **isSetupFinished**: () => `boolean` - -#### Type declaration - -▸ (): `boolean` - -##### Returns - -`boolean` - -#### Inherited from - -RemoteWallet.isSetupFinished - -#### Defined in - -sdk/wallets/wallet-remote/lib/remote-wallet.d.ts:51 - -## Methods - -### addAccount - -▸ **addAccount**(`privateKey`, `passphrase`): `Promise`\<`string`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `privateKey` | `string` | -| `passphrase` | `string` | - -#### Returns - -`Promise`\<`string`\> - -#### Implementation of - -UnlockableWallet.addAccount - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-wallet.ts:40](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.ts#L40) - -___ - -### computeSharedSecret - -▸ **computeSharedSecret**(`address`, `publicKey`): `Promise`\<`Buffer`\> - -Computes the shared secret (an ECDH key exchange object) between two accounts - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `publicKey` | `string` | - -#### Returns - -`Promise`\<`Buffer`\> - -#### Implementation of - -UnlockableWallet.computeSharedSecret - -#### Inherited from - -RemoteWallet.computeSharedSecret - -#### Defined in - -sdk/wallets/wallet-base/lib/wallet-base.d.ts:64 - -___ - -### decrypt - -▸ **decrypt**(`address`, `ciphertext`): `Promise`\<`Buffer`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `ciphertext` | `Buffer` | - -#### Returns - -`Promise`\<`Buffer`\> - -#### Implementation of - -UnlockableWallet.decrypt - -#### Inherited from - -RemoteWallet.decrypt - -#### Defined in - -sdk/wallets/wallet-base/lib/wallet-base.d.ts:60 - -___ - -### getAccounts - -▸ **getAccounts**(): `string`[] - -Get a list of accounts in the remote wallet - -#### Returns - -`string`[] - -#### Implementation of - -UnlockableWallet.getAccounts - -#### Inherited from - -RemoteWallet.getAccounts - -#### Defined in - -sdk/wallets/wallet-remote/lib/remote-wallet.d.ts:27 - -___ - -### hasAccount - -▸ **hasAccount**(`address?`): `boolean` - -Returns true if account is in the remote wallet - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address?` | `string` | Account to check | - -#### Returns - -`boolean` - -#### Implementation of - -UnlockableWallet.hasAccount - -#### Inherited from - -RemoteWallet.hasAccount - -#### Defined in - -sdk/wallets/wallet-remote/lib/remote-wallet.d.ts:32 - -___ - -### init - -▸ **init**(): `Promise`\<`void`\> - -Discovers wallet accounts and caches results in memory -Idempotent to ensure multiple calls are benign - -#### Returns - -`Promise`\<`void`\> - -#### Inherited from - -RemoteWallet.init - -#### Defined in - -sdk/wallets/wallet-remote/lib/remote-wallet.d.ts:15 - -___ - -### isAccountUnlocked - -▸ **isAccountUnlocked**(`address`): `boolean` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`boolean` - -#### Implementation of - -UnlockableWallet.isAccountUnlocked - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-wallet.ts:56](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.ts#L56) - -___ - -### loadAccountSigners - -▸ **loadAccountSigners**(): `Promise`\<`Map`\<`string`, [`RpcSigner`](rpc_signer.RpcSigner.md)\>\> - -#### Returns - -`Promise`\<`Map`\<`string`, [`RpcSigner`](rpc_signer.RpcSigner.md)\>\> - -#### Overrides - -RemoteWallet.loadAccountSigners - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-wallet.ts:27](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.ts#L27) - -___ - -### removeAccount - -▸ **removeAccount**(`_address`): `void` - -Removes the account with the given address. Needs to be implemented by subclass, otherwise throws error - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `_address` | `string` | - -#### Returns - -`void` - -#### Implementation of - -UnlockableWallet.removeAccount - -#### Inherited from - -RemoteWallet.removeAccount - -#### Defined in - -sdk/wallets/wallet-base/lib/wallet-base.d.ts:23 - -___ - -### signPersonalMessage - -▸ **signPersonalMessage**(`address`, `data`): `Promise`\<`string`\> - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address` | `string` | Address of the account to sign with | -| `data` | `string` | Hex string message to sign | - -#### Returns - -`Promise`\<`string`\> - -Signature hex string (order: rsv) - -#### Implementation of - -UnlockableWallet.signPersonalMessage - -#### Inherited from - -RemoteWallet.signPersonalMessage - -#### Defined in - -sdk/wallets/wallet-remote/lib/remote-wallet.d.ts:43 - -___ - -### signTransaction - -▸ **signTransaction**(`txParams`): `Promise`\<`EncodedTransaction`\> - -Gets the signer based on the 'from' field in the tx body - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `txParams` | `CeloTx` | Transaction to sign | - -#### Returns - -`Promise`\<`EncodedTransaction`\> - -**`Dev`** - -overrides WalletBase.signTransaction - -#### Implementation of - -UnlockableWallet.signTransaction - -#### Overrides - -RemoteWallet.signTransaction - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-wallet.ts:66](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.ts#L66) - -___ - -### signTypedData - -▸ **signTypedData**(`address`, `typedData`): `Promise`\<`string`\> - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `address` | `string` | Address of the account to sign with | -| `typedData` | `EIP712TypedData` | the typed data object | - -#### Returns - -`Promise`\<`string`\> - -Signature hex string (order: rsv) - -#### Implementation of - -UnlockableWallet.signTypedData - -#### Inherited from - -RemoteWallet.signTypedData - -#### Defined in - -sdk/wallets/wallet-remote/lib/remote-wallet.d.ts:49 - -___ - -### unlockAccount - -▸ **unlockAccount**(`address`, `passphrase`, `duration`): `Promise`\<`boolean`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `passphrase` | `string` | -| `duration` | `number` | - -#### Returns - -`Promise`\<`boolean`\> - -#### Implementation of - -UnlockableWallet.unlockAccount - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-wallet.ts:51](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.ts#L51) diff --git a/docs/sdk/wallet-rpc/enums/rpc_wallet.RpcWalletErrors.md b/docs/sdk/wallet-rpc/enums/rpc_wallet.RpcWalletErrors.md deleted file mode 100644 index a43e6687ef..0000000000 --- a/docs/sdk/wallet-rpc/enums/rpc_wallet.RpcWalletErrors.md +++ /dev/null @@ -1,32 +0,0 @@ -[@celo/wallet-rpc](../README.md) / [rpc-wallet](../modules/rpc_wallet.md) / RpcWalletErrors - -# Enumeration: RpcWalletErrors - -[rpc-wallet](../modules/rpc_wallet.md).RpcWalletErrors - -## Table of contents - -### Enumeration Members - -- [AccountAlreadyExists](rpc_wallet.RpcWalletErrors.md#accountalreadyexists) -- [FetchAccounts](rpc_wallet.RpcWalletErrors.md#fetchaccounts) - -## Enumeration Members - -### AccountAlreadyExists - -• **AccountAlreadyExists** = ``"RpcWallet: account already exists"`` - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-wallet.ts:10](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.ts#L10) - -___ - -### FetchAccounts - -• **FetchAccounts** = ``"RpcWallet: failed to fetch accounts from server"`` - -#### Defined in - -[sdk/wallets/wallet-rpc/src/rpc-wallet.ts:9](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.ts#L9) diff --git a/docs/sdk/wallet-rpc/modules/index.md b/docs/sdk/wallet-rpc/modules/index.md deleted file mode 100644 index c97688f590..0000000000 --- a/docs/sdk/wallet-rpc/modules/index.md +++ /dev/null @@ -1,29 +0,0 @@ -[@celo/wallet-rpc](../README.md) / index - -# Module: index - -## Table of contents - -### References - -- [RpcSigner](index.md#rpcsigner) -- [RpcWallet](index.md#rpcwallet) -- [RpcWalletErrors](index.md#rpcwalleterrors) - -## References - -### RpcSigner - -Re-exports [RpcSigner](../classes/rpc_signer.RpcSigner.md) - -___ - -### RpcWallet - -Re-exports [RpcWallet](../classes/rpc_wallet.RpcWallet.md) - -___ - -### RpcWalletErrors - -Re-exports [RpcWalletErrors](../enums/rpc_wallet.RpcWalletErrors.md) diff --git a/docs/sdk/wallet-rpc/modules/rpc_signer.md b/docs/sdk/wallet-rpc/modules/rpc_signer.md deleted file mode 100644 index af5626462c..0000000000 --- a/docs/sdk/wallet-rpc/modules/rpc_signer.md +++ /dev/null @@ -1,9 +0,0 @@ -[@celo/wallet-rpc](../README.md) / rpc-signer - -# Module: rpc-signer - -## Table of contents - -### Classes - -- [RpcSigner](../classes/rpc_signer.RpcSigner.md) diff --git a/docs/sdk/wallet-rpc/modules/rpc_wallet.md b/docs/sdk/wallet-rpc/modules/rpc_wallet.md deleted file mode 100644 index 665f326369..0000000000 --- a/docs/sdk/wallet-rpc/modules/rpc_wallet.md +++ /dev/null @@ -1,13 +0,0 @@ -[@celo/wallet-rpc](../README.md) / rpc-wallet - -# Module: rpc-wallet - -## Table of contents - -### Enumerations - -- [RpcWalletErrors](../enums/rpc_wallet.RpcWalletErrors.md) - -### Classes - -- [RpcWallet](../classes/rpc_wallet.RpcWallet.md) diff --git a/docs/sdk/wallet-rpc/modules/test_utils_ganache_setup.md b/docs/sdk/wallet-rpc/modules/test_utils_ganache_setup.md deleted file mode 100644 index ee63449fbe..0000000000 --- a/docs/sdk/wallet-rpc/modules/test_utils_ganache_setup.md +++ /dev/null @@ -1,23 +0,0 @@ -[@celo/wallet-rpc](../README.md) / test-utils/ganache.setup - -# Module: test-utils/ganache.setup - -## Table of contents - -### Functions - -- [default](test_utils_ganache_setup.md#default) - -## Functions - -### default - -▸ **default**(): `Promise`\<`void`\> - -#### Returns - -`Promise`\<`void`\> - -#### Defined in - -[sdk/wallets/wallet-rpc/src/test-utils/ganache.setup.ts:4](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/wallets/wallet-rpc/src/test-utils/ganache.setup.ts#L4) diff --git a/docs/sdk/wallet-rpc/modules/test_utils_ganache_teardown.md b/docs/sdk/wallet-rpc/modules/test_utils_ganache_teardown.md deleted file mode 100644 index b0fbc49193..0000000000 --- a/docs/sdk/wallet-rpc/modules/test_utils_ganache_teardown.md +++ /dev/null @@ -1,23 +0,0 @@ -[@celo/wallet-rpc](../README.md) / test-utils/ganache.teardown - -# Module: test-utils/ganache.teardown - -## Table of contents - -### Functions - -- [default](test_utils_ganache_teardown.md#default) - -## Functions - -### default - -▸ **default**(): `any` - -#### Returns - -`any` - -#### Defined in - -dev-utils/lib/ganache-teardown.d.ts:1 diff --git a/packages/sdk/wallets/wallet-rpc/.eslintrc.js b/packages/sdk/wallets/wallet-rpc/.eslintrc.js deleted file mode 100644 index 8586cb7e24..0000000000 --- a/packages/sdk/wallets/wallet-rpc/.eslintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - extends: '../../../../.eslintrc.js', -} diff --git a/packages/sdk/wallets/wallet-rpc/.gitignore b/packages/sdk/wallets/wallet-rpc/.gitignore deleted file mode 100644 index c3af857904..0000000000 --- a/packages/sdk/wallets/wallet-rpc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -lib/ diff --git a/packages/sdk/wallets/wallet-rpc/.npmignore b/packages/sdk/wallets/wallet-rpc/.npmignore deleted file mode 100644 index 616d8322f4..0000000000 --- a/packages/sdk/wallets/wallet-rpc/.npmignore +++ /dev/null @@ -1,24 +0,0 @@ -/.devchain/ -/.devchain.tar.gz -/coverage/ -/node_modules/ -/src/ -/tmp/ -/.tmp/ - -/tsconfig.* -/jest.config.* -*.tgz - -/src - -/lib/**/*.test.* -/lib/test-utils - - -# exclude ts files and sourcemaps -*.map -*.ts - -# include the .d.ts files -!lib/**/*.d.ts \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-rpc/CHANGELOG.md b/packages/sdk/wallets/wallet-rpc/CHANGELOG.md deleted file mode 100644 index cb76b23716..0000000000 --- a/packages/sdk/wallets/wallet-rpc/CHANGELOG.md +++ /dev/null @@ -1,197 +0,0 @@ -# @celo/wallet-rpc - -## 6.0.1 - -### Patch Changes - -- [#313](https://github.com/celo-org/developer-tooling/pull/313) [`7715590`](https://github.com/celo-org/developer-tooling/commit/7715590b3efda1eb39a2600ffc858905265f5d12) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - chore: Deprecate @celo/wallet-rpc see https://forum.celo.org/t/deprecation-of-celo-wallet-rpc/8452 - -- Updated dependencies [[`d245703`](https://github.com/celo-org/developer-tooling/commit/d245703fa71ad24c88982fc6566e4d2865f586a4)]: - - @celo/connect@6.0.1 - - @celo/wallet-base@6.0.1 - - @celo/wallet-remote@6.0.1 - -## 6.0.1-beta.0 - -### Patch Changes - -- [#313](https://github.com/celo-org/developer-tooling/pull/313) [`7715590`](https://github.com/celo-org/developer-tooling/commit/7715590b3efda1eb39a2600ffc858905265f5d12) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Deprecate @celo/wallet-rpc see https://forum.celo.org/t/deprecation-of-celo-wallet-rpc/8452 - -- Updated dependencies [[`d245703`](https://github.com/celo-org/developer-tooling/commit/d245703fa71ad24c88982fc6566e4d2865f586a4)]: - - @celo/connect@6.0.1-beta.0 - - @celo/wallet-base@6.0.1-beta.0 - - @celo/wallet-remote@6.0.1-beta.0 - -## 6.0.0 - -### Minor Changes - -- [#264](https://github.com/celo-org/developer-tooling/pull/264) [`59f4b42`](https://github.com/celo-org/developer-tooling/commit/59f4b42029699861e91dd2214c40173f70de279e) Thanks [@nicolasbrugneaux](https://github.com/nicolasbrugneaux)! - Add support for serializing, sending, parsing and deserializing cip66 transactions. This tx type is preffered over cip64 when paying for gas with tokens. Like eip1559 maxFeePerGass and maxPriorityFeePerGas are denominated in CELO. To create an cip66 transaction with Contractkit call the `kit.populateMaxFeeInToken` method with your transaction and then send it. - -### Patch Changes - -- [#59](https://github.com/celo-org/developer-tooling/pull/59) [`38b2631`](https://github.com/celo-org/developer-tooling/commit/38b26316d615e836e21bbfe2f44853f7e8220e03) Thanks [@nicolasbrugneaux](https://github.com/nicolasbrugneaux)! - CHANGE - Update the code to match @celo/wallet-base changes - -- Updated dependencies [[`38b2631`](https://github.com/celo-org/developer-tooling/commit/38b26316d615e836e21bbfe2f44853f7e8220e03), [`38b2631`](https://github.com/celo-org/developer-tooling/commit/38b26316d615e836e21bbfe2f44853f7e8220e03), [`59f4b42`](https://github.com/celo-org/developer-tooling/commit/59f4b42029699861e91dd2214c40173f70de279e), [`182bf73`](https://github.com/celo-org/developer-tooling/commit/182bf73209e6b7de0d9ea1fedaf91c9ec80299f5), [`38b2631`](https://github.com/celo-org/developer-tooling/commit/38b26316d615e836e21bbfe2f44853f7e8220e03), [`7b93642`](https://github.com/celo-org/developer-tooling/commit/7b93642803261b37971dd3c07f8748b6bc8f3378), [`38b2631`](https://github.com/celo-org/developer-tooling/commit/38b26316d615e836e21bbfe2f44853f7e8220e03), [`66972eb`](https://github.com/celo-org/developer-tooling/commit/66972ebf0dfabc845ae309c2f794fe015ac49a86)]: - - @celo/wallet-base@6.0.0 - - @celo/utils@7.0.0 - - @celo/connect@6.0.0 - - @celo/base@6.1.0 - - @celo/wallet-remote@6.0.0 - -## 6.0.0-beta.3 - -### Patch Changes - -- Updated dependencies []: - - @celo/wallet-base@6.0.0-beta.3 - - @celo/wallet-remote@6.0.0-beta.3 - -## 6.0.0-beta.2 - -### Minor Changes - -- [#264](https://github.com/celo-org/developer-tooling/pull/264) [`59f4b42`](https://github.com/celo-org/developer-tooling/commit/59f4b42029699861e91dd2214c40173f70de279e) Thanks [@nicolasbrugneaux](https://github.com/nicolasbrugneaux)! - Add support for serializing, sending, parsing and deserializing cip66 transactions. This tx type is preffered over cip64 when paying for gas with tokens. Like eip1559 maxFeePerGass and maxPriorityFeePerGas are denominated in CELO. To create an cip66 transaction with Contractkit call the `kit.populateMaxFeeInToken` method with your transaction and then send it. - -### Patch Changes - -- Updated dependencies [[`59f4b42`](https://github.com/celo-org/developer-tooling/commit/59f4b42029699861e91dd2214c40173f70de279e)]: - - @celo/wallet-base@6.0.0-beta.2 - - @celo/connect@6.0.0-beta.1 - - @celo/wallet-remote@6.0.0-beta.2 - -## 6.0.0-beta.1 - -### Patch Changes - -- Updated dependencies []: - - @celo/wallet-base@6.0.0-beta.1 - - @celo/wallet-remote@6.0.0-beta.1 - -## 6.0.0-beta.0 - -### Patch Changes - -- [#59](https://github.com/celo-org/developer-tooling/pull/59) [`38b2631`](https://github.com/celo-org/developer-tooling/commit/38b26316d615e836e21bbfe2f44853f7e8220e03) Thanks [@nicolasbrugneaux](https://github.com/nicolasbrugneaux)! - CHANGE - Update the code to match @celo/wallet-base changes - -- Updated dependencies [[`38b2631`](https://github.com/celo-org/developer-tooling/commit/38b26316d615e836e21bbfe2f44853f7e8220e03), [`38b2631`](https://github.com/celo-org/developer-tooling/commit/38b26316d615e836e21bbfe2f44853f7e8220e03), [`182bf73`](https://github.com/celo-org/developer-tooling/commit/182bf73209e6b7de0d9ea1fedaf91c9ec80299f5), [`38b2631`](https://github.com/celo-org/developer-tooling/commit/38b26316d615e836e21bbfe2f44853f7e8220e03), [`7b93642`](https://github.com/celo-org/developer-tooling/commit/7b93642803261b37971dd3c07f8748b6bc8f3378), [`38b2631`](https://github.com/celo-org/developer-tooling/commit/38b26316d615e836e21bbfe2f44853f7e8220e03), [`66972eb`](https://github.com/celo-org/developer-tooling/commit/66972ebf0dfabc845ae309c2f794fe015ac49a86)]: - - @celo/wallet-base@6.0.0-beta.0 - - @celo/utils@7.0.0-beta.0 - - @celo/connect@6.0.0-beta.0 - - @celo/base@6.1.0-beta.0 - - @celo/wallet-remote@6.0.0-beta.0 - -## 5.2.0 - -### Patch Changes - -- [#200](https://github.com/celo-org/developer-tooling/pull/200) [`6e3372f`](https://github.com/celo-org/developer-tooling/commit/6e3372f5ada20bb59d88e275170be4dae1e99f01) Thanks [@nicolasbrugneaux](https://github.com/nicolasbrugneaux)! - Bump web3-\* to 1.10.4 -- Some consumers may be forced to upgrade their web3 instance to the same version - -- Updated dependencies [[`6e3372f`](https://github.com/celo-org/developer-tooling/commit/6e3372f5ada20bb59d88e275170be4dae1e99f01), [`6e3372f`](https://github.com/celo-org/developer-tooling/commit/6e3372f5ada20bb59d88e275170be4dae1e99f01), [`6e3372f`](https://github.com/celo-org/developer-tooling/commit/6e3372f5ada20bb59d88e275170be4dae1e99f01), [`6e3372f`](https://github.com/celo-org/developer-tooling/commit/6e3372f5ada20bb59d88e275170be4dae1e99f01), [`6e3372f`](https://github.com/celo-org/developer-tooling/commit/6e3372f5ada20bb59d88e275170be4dae1e99f01)]: - - @celo/wallet-remote@5.2.0 - - @celo/wallet-base@5.2.0 - - @celo/connect@5.3.0 - - @celo/utils@6.0.1 - - @celo/base@6.0.1 - -## 5.2.0-beta.0 - -### Patch Changes - -- [#168](https://github.com/celo-org/developer-tooling/pull/168) [`c42682d`](https://github.com/celo-org/developer-tooling/commit/c42682d8a7e582f0adaa63c833a4c83a0a649f20) Thanks [@renovate](https://github.com/apps/renovate)! - Bump web3-\* to 1.10.4 -- Some consumers may be forced to upgrade their web3 instance to the same version - -- Updated dependencies [[`c42682d`](https://github.com/celo-org/developer-tooling/commit/c42682d8a7e582f0adaa63c833a4c83a0a649f20), [`08b0d6a`](https://github.com/celo-org/developer-tooling/commit/08b0d6a18b73b01c162f6ba4f97d73f3e3708160), [`5335af5`](https://github.com/celo-org/developer-tooling/commit/5335af5808a892c95245624e676cd1952a0cfb42), [`08b0d6a`](https://github.com/celo-org/developer-tooling/commit/08b0d6a18b73b01c162f6ba4f97d73f3e3708160), [`08b0d6a`](https://github.com/celo-org/developer-tooling/commit/08b0d6a18b73b01c162f6ba4f97d73f3e3708160)]: - - @celo/wallet-remote@5.2.0-beta.0 - - @celo/wallet-base@5.2.0-beta.0 - - @celo/connect@5.3.0-beta.0 - - @celo/utils@6.0.1-beta.0 - - @celo/base@6.0.1-beta.0 - -## 5.1.3 - -### Patch Changes - -- Updated dependencies [[`28cd8f8`](https://github.com/celo-org/developer-tooling/commit/28cd8f8c8dd62ecafa01ef7a7fb89117e6db9b56)]: - - @celo/connect@5.2.0 - - @celo/wallet-base@5.1.3 - - @celo/wallet-remote@5.1.3 - -## 5.1.3-beta.0 - -### Patch Changes - -- Updated dependencies [[`28cd8f8`](https://github.com/celo-org/developer-tooling/commit/28cd8f8c8dd62ecafa01ef7a7fb89117e6db9b56)]: - - @celo/connect@5.2.0-beta.0 - - @celo/wallet-base@5.1.3-beta.0 - - @celo/wallet-remote@5.1.3-beta.0 - -## 5.1.2 - -### Patch Changes - -- Updated dependencies [[`6b2e34c`](https://github.com/celo-org/developer-tooling/commit/6b2e34c973290da221aaabdc2bf4c6654ef9f99c)]: - - @celo/utils@6.0.0 - - @celo/wallet-base@5.1.2 - - @celo/wallet-remote@5.1.2 - - @celo/connect@5.1.2 - -## 5.1.2-beta.0 - -### Patch Changes - -- Updated dependencies [[`6b2e34c`](https://github.com/celo-org/developer-tooling/commit/6b2e34c973290da221aaabdc2bf4c6654ef9f99c)]: - - @celo/utils@6.0.0-beta.0 - - @celo/connect@5.1.2-beta.0 - - @celo/wallet-base@5.1.2-beta.0 - - @celo/wallet-remote@5.1.2-beta.0 - -## 5.1.1 - -### Patch Changes - -- Updated dependencies [679ef0c60] -- Updated dependencies [97d5ccf43] - - @celo/connect@5.1.1 - - @celo/base@6.0.0 - - @celo/utils@5.0.6 - - @celo/wallet-base@5.1.1 - - @celo/wallet-remote@5.1.1 - -## 5.1.1-beta.0 - -### Patch Changes - -- Updated dependencies [97d5ccf43] - - @celo/base@6.0.0-beta.0 - - @celo/connect@5.1.1-beta.0 - - @celo/utils@5.0.6-beta.0 - - @celo/wallet-base@5.1.1-beta.0 - - @celo/wallet-remote@5.1.1-beta.0 - -## 5.1.0 - -### Patch Changes - -- 53bbd4958: Note celo sdk packages will no longer be fix bumped (ie will not share the same version always) and will now use ^range when depending on each other -- Updated dependencies [d48c68afc] -- Updated dependencies [53bbd4958] -- Updated dependencies [53bbd4958] - - @celo/connect@5.1.0 - - @celo/wallet-remote@5.1.0 - - @celo/wallet-base@5.1.0 - - @celo/utils@5.0.5 - - @celo/base@5.0.5 - -## 5.1.0-beta.0 - -### Patch Changes - -- 53bbd4958: Note celo sdk packages will no longer be fix bumped (ie will not share the same version always) and will now use ^range when depending on each other -- Updated dependencies [d48c68afc] -- Updated dependencies [53bbd4958] -- Updated dependencies [53bbd4958] - - @celo/connect@5.1.0-beta.0 - - @celo/wallet-remote@5.1.0-beta.0 - - @celo/wallet-base@5.1.0-beta.0 - - @celo/utils@5.0.5-beta.0 - - @celo/base@5.0.5-beta.0 diff --git a/packages/sdk/wallets/wallet-rpc/README.md b/packages/sdk/wallets/wallet-rpc/README.md deleted file mode 100644 index e8e1b55fa1..0000000000 --- a/packages/sdk/wallets/wallet-rpc/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# @celo/wallet-rpc - -Wallet-rpc provides utilities for performing wallet functions via RPC. - -## How we work - -We are a GitHub-first team, wihich means we have a strong preference for communicating via GitHub. -Please use GitHub to: - -🐞 [File a bug report](https://github.com/celo-org/developer-tooling/issues/new/choose) - -💬 [Ask a question](https://github.com/celo-org/developer-tooling/discussions) - -✨ [Suggest a feature](https://github.com/celo-org/developer-tooling/issues/new/choose) - -🧑‍💻 [Contribute!](/CONTRIBUTING.md) - -🚔 [Report a security vulnerability](https://github.com/celo-org/developer-tooling/issues/new/choose) - -> [!TIP] -> -> Please avoid messaging us via Slack, Telegram, or email. We are more likely to respond to you on -> GitHub than if you message us anywhere else. We actively monitor GitHub, and will get back to you shortly 🌟 \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-rpc/eslint.tsconfig.json b/packages/sdk/wallets/wallet-rpc/eslint.tsconfig.json deleted file mode 100644 index a8d4317b49..0000000000 --- a/packages/sdk/wallets/wallet-rpc/eslint.tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig.json", - "exclude": [] -} diff --git a/packages/sdk/wallets/wallet-rpc/jest.config.js b/packages/sdk/wallets/wallet-rpc/jest.config.js deleted file mode 100644 index 16600517d9..0000000000 --- a/packages/sdk/wallets/wallet-rpc/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - testMatch: ['/src/**/?(*.)+(spec|test).ts?(x)'], - globalSetup: '/src/test-utils/ganache.setup.ts', - globalTeardown: '/src/test-utils/ganache.teardown.ts', -} diff --git a/packages/sdk/wallets/wallet-rpc/package.json b/packages/sdk/wallets/wallet-rpc/package.json deleted file mode 100644 index db5cc3dd2c..0000000000 --- a/packages/sdk/wallets/wallet-rpc/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "@celo/wallet-rpc", - "version": "6.0.1", - "description": "Geth RPC wallet implementation", - "author": "Celo", - "license": "Apache-2.0", - "repository": "https://github.com/celo-org/developer-tooling/tree/master/packages/sdk/wallets/", - "homepage": "https://docs.celo.org", - "main": "./lib/index.js", - "types": "./lib/index.d.ts", - "keywords": [ - "celo", - "blockchain", - "sdk" - ], - "scripts": { - "build": "yarn run --top-level tsc -b .", - "clean": "yarn run --top-level tsc -b . --clean", - "docs": "yarn run --top-level typedoc", - "test": "yarn run --top-level jest --runInBand --forceExit", - "lint": "yarn run --top-level eslint -c .eslintrc.js ", - "prepublishOnly": "yarn build" - }, - "dependencies": { - "@celo/base": "^6.1.0", - "@celo/connect": "^6.0.1", - "@celo/utils": "^7.0.0", - "@celo/wallet-base": "^6.0.1", - "@celo/wallet-remote": "^6.0.1", - "@types/bn.js": "^5.1.0", - "bignumber.js": "^9.0.0", - "debug": "^4.1.1" - }, - "devDependencies": { - "@celo/contractkit": "^8.1.1", - "@celo/dev-utils": "0.0.5", - "@celo/typescript": "workspace:^", - "@types/debug": "^4.1.12", - "bn.js": "^5.1.0", - "web3": "1.10.4" - }, - "engines": { - "node": ">=8.14.2" - } -} diff --git a/packages/sdk/wallets/wallet-rpc/src/index.ts b/packages/sdk/wallets/wallet-rpc/src/index.ts deleted file mode 100644 index 0152758343..0000000000 --- a/packages/sdk/wallets/wallet-rpc/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './rpc-signer' -export * from './rpc-wallet' diff --git a/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts b/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts deleted file mode 100644 index 10fe63ef6d..0000000000 --- a/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts +++ /dev/null @@ -1,178 +0,0 @@ -import { ensureLeading0x, normalizeAddressWith0x, trimLeading0x } from '@celo/base/lib/address' -import { CeloTx, EncodedTransaction, Hex, RpcCaller, Signer } from '@celo/connect' -import { EIP712TypedData } from '@celo/utils/lib/sign-typed-data-utils' -import { decodeSig } from '@celo/wallet-base' -import BigNumber from 'bignumber.js' -import type BN from 'bn.js' - -const INCORRECT_PASSWORD_ERROR = 'could not decrypt key with given password' -const currentTimeInSeconds = () => Math.floor(Date.now() / 1000) - -const toRpcHex = (val: string | number | BN | undefined) => { - if (typeof val === 'number' || val instanceof BigNumber) { - return ensureLeading0x(val.toString(16)) - } else if (typeof val === 'string') { - return ensureLeading0x(val) - } else { - return '0x0' - } -} - -// TODO(yorke): move this into rpc-caller and generate typings from RPC spec -enum RpcSignerEndpoint { - ImportAccount = 'personal_importRawKey', - UnlockAccount = 'personal_unlockAccount', - SignTransaction = 'eth_signTransaction', - SignBytes = 'eth_sign', - SignTypedData = 'eth_signTypedData', - Decrypt = 'personal_decrypt', -} - -type RpcSignerEndpointInputs = { - personal_importRawKey: [string, string] - personal_unlockAccount: [string, string, number] - eth_signTransaction: [any] // RpcTx doesn't match Tx because of nonce as string instead of number - eth_sign: [string, string] - eth_signTypedData: [string, EIP712TypedData] - personal_decrypt: [string, string] -} - -type RpcSignerEndpointResult = { - personal_importRawKey: string - personal_unlockAccount: boolean - eth_signTransaction: EncodedTransaction - eth_sign: string - eth_signTypedData: string - personal_decrypt: string -} - -/** - * Implements the signer interface on top of the JSON-RPC interface. - * @deprecated https://forum.celo.org/t/deprecation-of-celo-wallet-rpc/8452 - */ -export class RpcSigner implements Signer { - /** - * Construct a new instance of the RPC signer - * - * @param rpc RPC caller instance - * @param account Account address derived from the private key to be called in init - * @param unlockBufferSeconds Number of seconds to shrink the unlocked duration by to account for - * latency and timing inconsistencies on the node - * @param unlockTime Timestamp in seconds when the signer was last unlocked - * @param unlockDuration Number of seconds that the signer was last unlocked for - * - */ - constructor( - protected rpc: RpcCaller, - protected account: string, - protected unlockBufferSeconds = 5, - protected unlockTime?: number, - protected unlockDuration?: number - ) {} - - init = (privateKey: string, passphrase: string) => - this.callAndCheckResponse(RpcSignerEndpoint.ImportAccount, [ - ensureLeading0x(privateKey), - passphrase, - ]) - - async signRawTransaction(tx: CeloTx) { - if (normalizeAddressWith0x(tx.from! as string) !== this.account) { - throw new Error(`RpcSigner cannot sign tx with 'from' ${tx.from}`) - } - // see geth SendTxArgs type - // https://github.com/celo-org/celo-blockchain/blob/fc20d6921478cda68fc88797078f20053bae8866/internal/ethapi/api.go#L1241C6-L1241C20 - const rpcTx = { - ...tx, - nonce: toRpcHex(tx.nonce), - value: toRpcHex(tx.value), - gas: toRpcHex(tx.gas), - ...(tx.gasPrice - ? { - gasPrice: toRpcHex(tx.gasPrice), - } - : { - maxPriorityFeePerGas: toRpcHex(tx.maxPriorityFeePerGas), - maxFeePerGas: toRpcHex(tx.maxFeePerGas), - }), - } - return this.callAndCheckResponse(RpcSignerEndpoint.SignTransaction, [rpcTx]) - } - - async signTransaction(): Promise<{ v: number; r: Buffer; s: Buffer }> { - throw new Error('signTransaction unimplemented; use signRawTransaction') - } - - async signTypedData(typedData: EIP712TypedData): Promise<{ v: number; r: Buffer; s: Buffer }> { - const result = await this.callAndCheckResponse(RpcSignerEndpoint.SignTypedData, [ - this.account, - typedData, - ]) - - return decodeSig(result as Hex) - } - - async signPersonalMessage(data: string): Promise<{ v: number; r: Buffer; s: Buffer }> { - const result = await this.callAndCheckResponse(RpcSignerEndpoint.SignBytes, [ - this.account, - data, - ]) - return decodeSig(result as Hex) - } - - getNativeKey = () => this.account - - async unlock(passphrase: string, duration: number): Promise { - try { - await this.callAndCheckResponse(RpcSignerEndpoint.UnlockAccount, [ - this.account, - passphrase, - duration, - ]) - } catch (error: any) { - // The callAndCheckResponse will throw an error if the passphrase is incorrect - if (error?.message?.toLowerCase()?.includes(INCORRECT_PASSWORD_ERROR)) { - return false - } - - // Re-throw otherwise - throw error - } - - this.unlockTime = currentTimeInSeconds() - this.unlockDuration = duration - return true - } - - isUnlocked() { - if (this.unlockDuration === undefined || this.unlockTime === undefined) { - return false - } - return this.unlockTime + this.unlockDuration - this.unlockBufferSeconds > currentTimeInSeconds() - } - - private async callAndCheckResponse( - endpoint: T, - params: RpcSignerEndpointInputs[T] - ): Promise { - const response = await this.rpc.call(endpoint, params) - if (response.error) { - throw new Error(`RpcSigner@${endpoint} failed with \n'${(response.error as any).message}'`) - } - return response.result! as RpcSignerEndpointResult[typeof endpoint] - } - - async decrypt(ciphertext: Buffer) { - const resp = await this.callAndCheckResponse(RpcSignerEndpoint.Decrypt, [ - this.account, - ensureLeading0x(ciphertext.toString('hex')), - ]) - - return Buffer.from(trimLeading0x(resp), 'hex') - } - - computeSharedSecret(_publicKey: string) { - throw new Error('Not implemented') - return Promise.resolve(Buffer.from([])) - } -} diff --git a/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.test.ts b/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.test.ts deleted file mode 100644 index dc1e7c0517..0000000000 --- a/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.test.ts +++ /dev/null @@ -1,256 +0,0 @@ -import { CeloTx, Connection, Provider } from '@celo/connect' -import { testWithGanache } from '@celo/dev-utils/lib/ganache-test' -import { normalizeAddressWith0x, privateKeyToAddress } from '@celo/utils/lib/address' -import { verifySignature } from '@celo/utils/lib/signatureUtils' -import { recoverTransaction, verifyEIP712TypedDataSigner } from '@celo/wallet-base' -import net from 'net' -import Web3 from 'web3' -import { RpcWallet } from './rpc-wallet' - -export const CHAIN_ID = 44378 - -// Sample data from the official EIP-712 example: -// https://github.com/ethereum/EIPs/blob/master/assets/eip-712/Example.js -export const TYPED_DATA = { - types: { - EIP712Domain: [ - { name: 'name', type: 'string' }, - { name: 'version', type: 'string' }, - { name: 'chainId', type: 'uint256' }, - { name: 'verifyingContract', type: 'address' }, - ], - Person: [ - { name: 'name', type: 'string' }, - { name: 'wallet', type: 'address' }, - ], - Mail: [ - { name: 'from', type: 'Person' }, - { name: 'to', type: 'Person' }, - { name: 'contents', type: 'string' }, - ], - }, - primaryType: 'Mail', - domain: { - name: 'Ether Mail', - version: '1', - chainId: 1, - verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', - }, - message: { - from: { - name: 'Cow', - wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', - }, - to: { - name: 'Bob', - wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', - }, - contents: 'Hello, Bob!', - }, -} - -export const PRIVATE_KEY1 = '1234567890abcdef1234567890abcdef1234567890abcdef1234567890abbdef' -export const ACCOUNT_ADDRESS1 = normalizeAddressWith0x(privateKeyToAddress(PRIVATE_KEY1)) -export const PRIVATE_KEY2 = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890fdeccc' -export const ACCOUNT_ADDRESS2 = normalizeAddressWith0x(privateKeyToAddress(PRIVATE_KEY2)) - -const PASSPHRASE = 'ce10' -const DURATION = 10000 - -// ./build/bin/geth --datadir=./envs/alfajoresstaging --syncmode=lightest --rpcapi=net,eth,web3,personal --networkid=1101 -describe.skip('rpc-wallet', () => { - it('should work against local geth ipc', async () => { - const ipcUrl = '/Users/yorhodes/celo/blockchain/envs/alfajoresstaging/geth.ipc' - const ipcProvider = new Web3.providers.IpcProvider(ipcUrl, net) - const wallet = new RpcWallet(ipcProvider) - await wallet.init() - - const account = await wallet.addAccount(PRIVATE_KEY1, PASSPHRASE) - await wallet.unlockAccount(account, PASSPHRASE, DURATION) - - const tx = { - from: ACCOUNT_ADDRESS1, - to: ACCOUNT_ADDRESS2, - value: 1000, - } - - const result = await wallet.signTransaction(tx) - console.log(result) - - const connection = new Connection(new Web3(ipcUrl), wallet) - const txResult = await connection.sendSignedTransaction(result.raw) - console.log(txResult) - }) -}) - -// It uses personal_importKey RPC call which is not supported in anvil -testWithGanache('rpc-wallet', (web3) => { - const provider = web3.currentProvider - const rpcWallet = new RpcWallet(provider as Provider) - - describe('with ganache web3 provider', () => { - let ganacheAccounts: string[] - beforeAll(async () => { - await rpcWallet.init() - ganacheAccounts = await web3.eth.getAccounts() - ganacheAccounts = ganacheAccounts.map(normalizeAddressWith0x) - }) - - test('initalizes with provider accounts', async () => { - const accounts = rpcWallet.getAccounts() - expect(accounts).toEqual(ganacheAccounts) - }) - - test('fails if you add an invalid private key', async () => { - try { - await rpcWallet.addAccount('this is not a valid private key', PASSPHRASE) - throw new Error('Expected exception to be thrown') - } catch (e: any) { - expect(e.message).toBe('Expected 32 bytes of private key') - } - }) - - test('succeeds if you add a private key without 0x', async () => { - await rpcWallet.addAccount(PRIVATE_KEY1, PASSPHRASE) - expect(rpcWallet.hasAccount(ACCOUNT_ADDRESS1)).toBeTruthy() - }) - - test('fails if you add a private key twice', async () => { - try { - await rpcWallet.addAccount(PRIVATE_KEY1, PASSPHRASE) - throw new Error('Expected exception to be thrown') - } catch (e: any) { - expect(e.message).toBe(`RpcWallet: account already exists`) - } - }) - - test('succeeds if you add a private key with 0x', async () => { - await rpcWallet.addAccount(PRIVATE_KEY2, PASSPHRASE) - expect(rpcWallet.hasAccount(ACCOUNT_ADDRESS2)).toBeTruthy() - }) - - describe('with added accounts', () => { - test('all addresses can be retrieved', () => { - expect(rpcWallet.getAccounts()).toEqual( - ganacheAccounts.concat([ACCOUNT_ADDRESS1, ACCOUNT_ADDRESS2]) - ) - }) - - describe('unlocking', () => { - test('fails if you use an invalid passphrase', async () => { - try { - await rpcWallet.unlockAccount(ACCOUNT_ADDRESS1, 'wrong_passphrase', DURATION) - } catch (e: any) { - expect(e.message).toContain('could not decrypt key with given passphrase') - } - }) - - test('succeeds if you use the correct passphrase', async () => { - await rpcWallet.unlockAccount(ACCOUNT_ADDRESS1, PASSPHRASE, DURATION) - const unlocked = rpcWallet.isAccountUnlocked(ACCOUNT_ADDRESS1) - expect(unlocked).toBeTruthy() - }) - }) - - describe('signing', () => { - describe('using an unlocked address', () => { - beforeAll(async () => { - await rpcWallet.unlockAccount(ACCOUNT_ADDRESS1, PASSPHRASE, DURATION) - }) - - describe('when calling signTransaction', () => { - let celoTransaction: CeloTx - - beforeEach(() => { - celoTransaction = { - from: ACCOUNT_ADDRESS1, - to: ACCOUNT_ADDRESS2, - chainId: CHAIN_ID, - value: web3.utils.toWei('1', 'ether'), - nonce: 0, - gas: '10', - gasPrice: '99', - feeCurrency: '0x', - data: '0xabcdef', - } - }) - - test('succeeds with old school pricing', async () => { - await expect( - rpcWallet.signTransaction(celoTransaction) - ).resolves.toMatchInlineSnapshot( - `"0xf86b8081991094588e4b68193001e4d10928660ab4165b813717c08a0100000000000000000083abcdef25a073bb7eaa60c810af1fad0f68fa15d4714f9990d0202b62797f6134493ec9f6fba046c13e92017228c2c8f0fae74ddd735021817f2f9757cd66debed078daf4070e"` - ) - }) - - test('succeeds with with FeeMarketFields', async () => { - const feeMarketTransaction = { - ...celoTransaction, - gasPrice: undefined, - maxFeePerGas: '1500000000', - maxPriorityFeePerGas: '1500000000', - } - await expect( - rpcWallet.signTransaction(feeMarketTransaction) - ).resolves.toMatchInlineSnapshot( - `"0xf86a80801094588e4b68193001e4d10928660ab4165b813717c08a0100000000000000000083abcdef26a05e9c1e7690d05f3e1433c824fbd948643ff6c618e347ea8c23a6363f3b17cdffa072dc1c22d6147be7b4b7b3cf51eb73b8bedd7940d7b668dcd7ef688a2354a631"` - ) - }) - - // TODO(yorke): enable once fixed: https://github.com/celo-org/celo-monorepo/issues/4077 - test.skip('with same signer', async () => { - const signedTx = await rpcWallet.signTransaction(celoTransaction) - const [, recoveredSigner] = recoverTransaction(signedTx.raw) - expect(normalizeAddressWith0x(recoveredSigner)).toBe( - normalizeAddressWith0x(ACCOUNT_ADDRESS1) - ) - }) - - // https://github.com/ethereum/go-ethereum/blob/38aab0aa831594f31d02c9f02bfacc0bef48405d/rlp/decode.go#L664 - test.skip('signature with 0x00 prefix is canonicalized', async () => { - // This tx is carefully constructed to produce an S value with the first byte as 0x00 - const celoTransactionZeroPrefix = { - from: ACCOUNT_ADDRESS1, - to: ACCOUNT_ADDRESS2, - chainId: CHAIN_ID, - value: web3.utils.toWei('1', 'ether'), - nonce: 65, - gas: '10', - gasPrice: '99', - feeCurrency: '0x' as const, - data: '0xabcdef', - } - - const signedTx = await rpcWallet.signTransaction(celoTransactionZeroPrefix) - expect(signedTx.tx.s.startsWith('0x00')).toBeFalsy() - const [, recoveredSigner] = recoverTransaction(signedTx.raw) - expect(normalizeAddressWith0x(recoveredSigner)).toBe( - normalizeAddressWith0x(ACCOUNT_ADDRESS1) - ) - }) - }) - - // ganache - describe.skip('when calling signPersonalMessage', () => { - test('succeeds', async () => { - const hexStr: string = ACCOUNT_ADDRESS2 - const signedMessage = await rpcWallet.signPersonalMessage(ACCOUNT_ADDRESS1, hexStr) - expect(signedMessage).not.toBeUndefined() - const valid = verifySignature(hexStr, signedMessage, ACCOUNT_ADDRESS1) - expect(valid).toBeTruthy() - }) - }) - - describe.skip('when calling signTypedData', () => { - test('succeeds', async () => { - const signedMessage = await rpcWallet.signTypedData(ACCOUNT_ADDRESS1, TYPED_DATA) - expect(signedMessage).not.toBeUndefined() - const valid = verifyEIP712TypedDataSigner(TYPED_DATA, signedMessage, ACCOUNT_ADDRESS1) - expect(valid).toBeTruthy() - }) - }) - }) - }) - }) - }) -}) diff --git a/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.ts b/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.ts deleted file mode 100644 index 8a98b59aa8..0000000000 --- a/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { ensureLeading0x, normalizeAddressWith0x } from '@celo/base/lib/address' -import { CeloTx, HttpRpcCaller, Provider, RpcCaller } from '@celo/connect' -import { privateKeyToAddress } from '@celo/utils/lib/address' -import { UnlockableWallet } from '@celo/wallet-base' -import { RemoteWallet } from '@celo/wallet-remote' -import { RpcSigner } from './rpc-signer' - -export enum RpcWalletErrors { - FetchAccounts = 'RpcWallet: failed to fetch accounts from server', - AccountAlreadyExists = 'RpcWallet: account already exists', -} - -/** - * WARNING: This class should only be used with well-permissioned providers (ie IPC) - * to avoid sensitive user 'privateKey' and 'passphrase' information being exposed - * - * @deprecated https://forum.celo.org/t/deprecation-of-celo-wallet-rpc/8452 - */ -export class RpcWallet extends RemoteWallet implements UnlockableWallet { - protected readonly rpc: RpcCaller - - constructor(protected _provider: Provider) { - super() - this.rpc = new HttpRpcCaller(_provider) - } - - async loadAccountSigners(): Promise> { - const addressToSigner = new Map() - const resp = await this.rpc.call('eth_accounts', []) - if (resp.error) { - throw new Error(RpcWalletErrors.FetchAccounts) - } - const accounts: string[] = resp.result! - accounts.forEach((account) => { - addressToSigner.set(account, new RpcSigner(this.rpc, account)) - }) - return addressToSigner - } - - async addAccount(privateKey: string, passphrase: string): Promise { - const address = normalizeAddressWith0x(privateKeyToAddress(ensureLeading0x(privateKey))) - if (this.hasAccount(address)) { - throw new Error(RpcWalletErrors.AccountAlreadyExists) - } - const signer = new RpcSigner(this.rpc, address) - const resultantAddress = await signer.init(privateKey, passphrase) - this.addSigner(resultantAddress, signer) - return resultantAddress - } - - async unlockAccount(address: string, passphrase: string, duration: number) { - const signer = this.getSigner(address) - return signer.unlock(passphrase, duration) - } - - isAccountUnlocked(address: string) { - const signer = this.getSigner(address) - return signer.isUnlocked() - } - - /** - * Gets the signer based on the 'from' field in the tx body - * @param txParams Transaction to sign - * @dev overrides WalletBase.signTransaction - */ - async signTransaction(txParams: CeloTx) { - // Get the signer from the 'from' field - const fromAddress = txParams.from!.toString() - const signer = this.getSigner(fromAddress) - return signer.signRawTransaction(txParams) - } -} diff --git a/packages/sdk/wallets/wallet-rpc/src/test-utils/ganache.setup.ts b/packages/sdk/wallets/wallet-rpc/src/test-utils/ganache.setup.ts deleted file mode 100644 index cad7a5e9fa..0000000000 --- a/packages/sdk/wallets/wallet-rpc/src/test-utils/ganache.setup.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { emptySetup } from '@celo/dev-utils/lib/ganache-setup' -import { waitForPortOpen } from '@celo/dev-utils/lib/network' - -export default async function setup() { - console.log('\nstarting ganache...') - await emptySetup({}) - await waitForPortOpen('localhost', 8545, 60) - console.log('...ganache started') -} diff --git a/packages/sdk/wallets/wallet-rpc/src/test-utils/ganache.teardown.ts b/packages/sdk/wallets/wallet-rpc/src/test-utils/ganache.teardown.ts deleted file mode 100644 index c37e9bb00a..0000000000 --- a/packages/sdk/wallets/wallet-rpc/src/test-utils/ganache.teardown.ts +++ /dev/null @@ -1,2 +0,0 @@ -import teardown from '@celo/dev-utils/lib/ganache-teardown' -export default teardown diff --git a/packages/sdk/wallets/wallet-rpc/tsconfig.json b/packages/sdk/wallets/wallet-rpc/tsconfig.json deleted file mode 100644 index 5e02869e36..0000000000 --- a/packages/sdk/wallets/wallet-rpc/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@celo/typescript/tsconfig.library.json", - "compilerOptions": { - "rootDir": "src", - "outDir": "lib" - }, - "include": ["src", "src/test-utils"], - "references": [{ "path": "../../utils" }] -} diff --git a/packages/sdk/wallets/wallet-rpc/typedoc.json b/packages/sdk/wallets/wallet-rpc/typedoc.json deleted file mode 100644 index 421adcff95..0000000000 --- a/packages/sdk/wallets/wallet-rpc/typedoc.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "exclude": [ - "**/*+(index|.test).ts" - ], - "excludePrivate": true, - "excludeProtected": true, - "hideGenerator": true, - "out": "../../../../docs/sdk/wallet-rpc", - "gitRevision": "master", - "readme": "none", - "entryPoints": [ - "./src" - ], - "githubPages": false, - "plugin": [ - "typedoc-plugin-markdown" - ], - "entryPointStrategy": "expand" -} \ No newline at end of file From 87223ba93ab79f43ae6884282d30a420eb09c23c Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Tue, 1 Oct 2024 15:05:08 +0200 Subject: [PATCH 02/54] Remove support for reserve commands. (#339) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Description Penultimate step of sunsetting the reserve commands. https://forum.celo.org/t/sunset-of-reserve-commands/8454 ### Other changes n/a ### Tested n/a ### Related issues - Fixes https://github.com/celo-org/celo-blockchain-planning/issues/439 ### Backwards compatibility nope ### Documentation docs for commands removed --- ## PR-Codex overview This PR removes the support for `reserve:*` commands in the CLI as part of the deprecation process outlined in a forum discussion. ### Detailed summary - Deleted the following files: - `packages/cli/src/commands/reserve/status.ts` - `packages/cli/src/commands/reserve/transfergold.ts` - `packages/cli/src/commands/reserve/transfergold.test.ts` - Updated the `changeset/gold-pumas-fry.md` to reflect the major version change for `@celo/celocli` and document the removal of `reserve:*` commands. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- .changeset/gold-pumas-fry.md | 5 + packages/cli/src/commands/reserve/status.ts | 28 ----- .../src/commands/reserve/transfergold.test.ts | 107 ------------------ .../cli/src/commands/reserve/transfergold.ts | 62 ---------- 4 files changed, 5 insertions(+), 197 deletions(-) create mode 100644 .changeset/gold-pumas-fry.md delete mode 100644 packages/cli/src/commands/reserve/status.ts delete mode 100644 packages/cli/src/commands/reserve/transfergold.test.ts delete mode 100644 packages/cli/src/commands/reserve/transfergold.ts diff --git a/.changeset/gold-pumas-fry.md b/.changeset/gold-pumas-fry.md new file mode 100644 index 0000000000..c06ee3719f --- /dev/null +++ b/.changeset/gold-pumas-fry.md @@ -0,0 +1,5 @@ +--- +'@celo/celocli': major +--- + +Remove support for reserve:\* commands. As foretold by https://forum.celo.org/t/sunset-of-reserve-commands/8454 diff --git a/packages/cli/src/commands/reserve/status.ts b/packages/cli/src/commands/reserve/status.ts deleted file mode 100644 index d29d9ecda5..0000000000 --- a/packages/cli/src/commands/reserve/status.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { BaseCommand } from '../../base' -import { printValueMapRecursive } from '../../utils/cli' - -/** - * @deprecated https://forum.celo.org/t/sunset-of-reserve-commands/8454 - */ -export default class ReserveStatus extends BaseCommand { - static description = 'Shows information about reserve' - - static flags = { - ...BaseCommand.flags, - } - - static examples = ['status'] - - async run() { - const kit = await this.getKit() - const reserve = await kit.contracts.getReserve() - const data = { - 'Reserve address': reserve.address, - Spenders: await reserve.getSpenders(), - 'Other reserves': await reserve.getOtherReserveAddresses(), - Frozen: await reserve.frozenReserveGoldStartBalance(), - 'Gold balance': await reserve.getReserveGoldBalance(), - } - printValueMapRecursive(data) - } -} diff --git a/packages/cli/src/commands/reserve/transfergold.test.ts b/packages/cli/src/commands/reserve/transfergold.test.ts deleted file mode 100644 index 5e3c256ba0..0000000000 --- a/packages/cli/src/commands/reserve/transfergold.test.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { newReserve } from '@celo/abis/web3/mento/Reserve' -import { newMultiSig } from '@celo/abis/web3/MultiSig' -import { StrongAddress } from '@celo/base' -import { CeloContract, newKitFromWeb3 } from '@celo/contractkit' -import { GoldTokenWrapper } from '@celo/contractkit/lib/wrappers/GoldTokenWrapper' -import { - asCoreContractsOwner, - DEFAULT_OWNER_ADDRESS, - setBalance, - testWithAnvilL1, - withImpersonatedAccount, -} from '@celo/dev-utils/lib/anvil-test' -import BigNumber from 'bignumber.js' -import Web3 from 'web3' -import { testLocallyWithWeb3Node } from '../../test-utils/cliUtils' -import TransferGold from './transfergold' - -process.env.NO_SYNCCHECK = 'true' - -testWithAnvilL1('reserve:transfergold cmd', (web3: Web3) => { - const transferAmt = new BigNumber(100000) - const kit = newKitFromWeb3(web3) - - let accounts: StrongAddress[] = [] - let otherReserveAddress: StrongAddress - let otherSpender: StrongAddress - let goldToken: GoldTokenWrapper - - beforeEach(async () => { - accounts = (await web3.eth.getAccounts()) as StrongAddress[] - goldToken = await kit.contracts.getGoldToken() - - otherReserveAddress = accounts[9] - otherSpender = accounts[7] - const multiSigAddress = await kit.registry.addressFor('ReserveSpenderMultiSig' as CeloContract) - const reserveSpenderMultiSig = await kit.contracts.getMultiSig(multiSigAddress) - const reserve = await kit.contracts.getReserve() - - const reserveContract = newReserve(web3, reserve.address) - const reserveSpenderMultiSigContract = newMultiSig(web3, reserveSpenderMultiSig.address) - - await withImpersonatedAccount( - web3, - multiSigAddress, - async () => { - await reserveSpenderMultiSig - .replaceOwner(DEFAULT_OWNER_ADDRESS, accounts[0]) - .sendAndWaitForReceipt({ from: multiSigAddress }) - await reserveSpenderMultiSigContract.methods - .addOwner(otherSpender) - .send({ from: multiSigAddress }) - await reserveSpenderMultiSigContract.methods - .changeRequirement(2) - .send({ from: multiSigAddress }) - }, - new BigNumber(web3.utils.toWei('1', 'ether')) - ) - - await asCoreContractsOwner(web3, async (ownerAdress: StrongAddress) => { - await reserveContract.methods.addSpender(multiSigAddress).send({ from: ownerAdress }) - await reserveContract.methods - .addOtherReserveAddress(otherReserveAddress) - .send({ from: ownerAdress }) - }) - - await setBalance(web3, reserve.address, new BigNumber(web3.utils.toWei('1', 'ether'))) - }) - test('transferGold fails if spender not passed in', async () => { - await expect( - testLocallyWithWeb3Node( - TransferGold, - ['--from', accounts[0], '--value', transferAmt.toString(10), '--to', otherReserveAddress], - web3 - ) - ).rejects.toThrow("Some checks didn't pass!") - }) - test('can transferGold with multisig option', async () => { - const initialBalance = await goldToken.balanceOf(otherReserveAddress) - await testLocallyWithWeb3Node( - TransferGold, - [ - '--from', - accounts[0], - '--value', - transferAmt.toString(10), - '--to', - otherReserveAddress, - '--useMultiSig', - ], - web3 - ) - await testLocallyWithWeb3Node( - TransferGold, - [ - '--from', - otherSpender, - '--value', - transferAmt.toString(10), - '--to', - otherReserveAddress, - '--useMultiSig', - ], - web3 - ) - expect(await goldToken.balanceOf(accounts[9])).toEqual(initialBalance.plus(transferAmt)) - }) -}) diff --git a/packages/cli/src/commands/reserve/transfergold.ts b/packages/cli/src/commands/reserve/transfergold.ts deleted file mode 100644 index e5b0a85522..0000000000 --- a/packages/cli/src/commands/reserve/transfergold.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { Flags } from '@oclif/core' -import { BaseCommand } from '../../base' -import { newCheckBuilder } from '../../utils/checks' -import { displaySendTx } from '../../utils/cli' -import { CustomFlags } from '../../utils/command' - -/** - @deprecated https://forum.celo.org/t/sunset-of-reserve-commands/8454 -*/ -export default class TransferGold extends BaseCommand { - static description = 'Transfers reserve celo to other reserve address' - - static flags = { - ...BaseCommand.flags, - value: Flags.string({ required: true, description: 'The unit amount of CELO' }), - to: CustomFlags.address({ required: true, description: 'Receiving address' }), - from: CustomFlags.address({ required: true, description: "Spender's address" }), - useMultiSig: Flags.boolean({ - description: 'True means the request will be sent through multisig.', - }), - } - - static examples = [ - 'transfergold --value 9000 --to 0x91c987bf62D25945dB517BDAa840A6c661374402 --from 0x5409ed021d9299bf6814279a6a1411a7e866a631', - 'transfergold --value 9000 --to 0x91c987bf62D25945dB517BDAa840A6c661374402 --from 0x5409ed021d9299bf6814279a6a1411a7e866a631 --useMultiSig', - ] - - async run() { - const kit = await this.getKit() - const res = await this.parse(TransferGold) - const value = res.flags.value - const to = res.flags.to - const account = res.flags.from - const useMultiSig = res.flags.useMultiSig - kit.defaultAccount = account - const reserve = await kit.contracts.getReserve() - const spenders = useMultiSig ? await reserve.getSpenders() : [] - // assumes that the multisig is the most recent spender in the spenders array - const multiSigAddress = spenders.length > 0 ? spenders[spenders.length - 1] : '' - const reserveSpenderMultiSig = useMultiSig - ? await kit.contracts.getMultiSig(multiSigAddress) - : undefined - const spender = useMultiSig ? multiSigAddress : account - - await newCheckBuilder(this) - .addCheck(`${spender} is a reserve spender`, async () => reserve.isSpender(spender)) - .addConditionalCheck(`${account} is a multisig signatory`, useMultiSig, async () => - reserveSpenderMultiSig !== undefined - ? reserveSpenderMultiSig.isOwner(account) - : new Promise(() => false) - ) - .addCheck(`${to} is another reserve address`, async () => reserve.isOtherReserveAddress(to)) - .runChecks() - - const reserveTx = await reserve.transferGold(to, value) - const tx = - reserveSpenderMultiSig === undefined - ? reserveTx - : await reserveSpenderMultiSig.submitOrConfirmTransaction(reserve.address, reserveTx.txo) - await displaySendTx('transferGoldTx', tx) - } -} From 33ad4aaf6b9edc33d1ce19833dbea626798cfb88 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Wed, 2 Oct 2024 11:50:45 +0200 Subject: [PATCH 03/54] Create metadata claims package / remove from contractkit (#340) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Description @celo/contractkit has for a long time basically had within it a subpackage under /identity that really didnt have anything to do with contractkit. Removing it will make it easier to build social connect tools as they use the IdentityMetadataMapper contained in here. However this is not social connect tool so it will remain in the developer tooling repo. This is a prereq to remove contractkit as a dependency for social connect. a long term aim. ### Other changes ### Tested uses existing tests ### Related issues - Fixes https://github.com/celo-org/developer-tooling/issues/15 ### Backwards compatibility nope exports moved to a new package. file structure slightly altered. parameter for IdentityMetadataMapper changes to take an object with specific functions rather than a kit ### Documentation --- ## PR-Codex overview This PR introduces the `@celo/metadata-claims` package, extracting identity-related functionality from `@celo/contractkit`. This allows developers to use the `IdentityMetadataWrapper` independently of `ContractKit`, enhancing modularity and usability. ### Detailed summary - Created `@celo/metadata-claims` package. - Moved identity and claims-related functionality from `@celo/contractkit`. - Updated imports in CLI commands and SDK files to use the new package. - Introduced types like `AccountMetadataSignerGetters`. - Removed identity-related exports from `@celo/contractkit`. - Added tests for new functionality in the `metadata-claims` package. > The following files were skipped due to too many changes: `packages/sdk/wallets/wallet-rpc/lib/rpc-signer.js.map`, `packages/sdk/wallets/wallet-rpc/lib/rpc-signer.js`, `packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.test.js.map`, `docs/sdk/metadata-claims/modules/claim.md`, `packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.test.js`, `docs/sdk/metadata-claims/classes/metadata.IdentityMetadataWrapper.md` > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- .changeset/hot-pugs-nail.md | 42 +++ .changeset/thirty-pugs-smile.md | 26 ++ .gitignore | 1 + ...entity_metadata.IdentityMetadataWrapper.md | 321 ------------------ .../enums/identity_claims_types.ClaimTypes.md | 87 ----- docs/sdk/contractkit/modules.md | 7 - docs/sdk/contractkit/modules/identity.md | 36 -- .../modules/identity_claims_account.md | 78 ----- .../modules/identity_claims_claim.md | 314 ----------------- .../modules/identity_claims_keybase.md | 125 ------- .../modules/identity_claims_types.md | 74 ---- .../modules/identity_claims_verify.md | 94 ----- .../contractkit/modules/identity_metadata.md | 47 --- docs/sdk/contractkit/modules/index.md | 7 - docs/sdk/metadata-claims/README.md | 15 + .../metadata.IdentityMetadataWrapper.md | 321 ++++++++++++++++++ .../metadata-claims/enums/types.ClaimTypes.md | 87 +++++ docs/sdk/metadata-claims/modules/account.md | 78 +++++ docs/sdk/metadata-claims/modules/claim.md | 314 +++++++++++++++++ docs/sdk/metadata-claims/modules/index.md | 50 +++ docs/sdk/metadata-claims/modules/keybase.md | 125 +++++++ docs/sdk/metadata-claims/modules/metadata.md | 47 +++ docs/sdk/metadata-claims/modules/types.md | 108 ++++++ docs/sdk/metadata-claims/modules/verify.md | 94 +++++ packages/cli/package.json | 1 + .../cli/src/commands/account/claim-account.ts | 2 +- .../cli/src/commands/account/claim-domain.ts | 2 +- .../cli/src/commands/account/claim-keybase.ts | 9 +- .../cli/src/commands/account/claim-name.ts | 2 +- .../cli/src/commands/account/claim-storage.ts | 2 +- .../cli/src/commands/account/claims.test.ts | 4 +- .../src/commands/account/create-metadata.ts | 2 +- .../cli/src/commands/account/get-metadata.ts | 2 +- .../src/commands/account/register-metadata.ts | 2 +- .../commands/account/show-claimed-accounts.ts | 13 +- .../cli/src/commands/account/show-metadata.ts | 2 +- packages/cli/src/utils/identity.ts | 31 +- packages/sdk/contractkit/package.json | 3 +- .../sdk/contractkit/src/identity/index.ts | 1 - packages/sdk/contractkit/src/index.ts | 3 +- packages/sdk/metadata-claims/.eslintrc.js | 3 + packages/sdk/metadata-claims/README.md | 1 + .../sdk/metadata-claims/eslint.tsconfig.json | 4 + packages/sdk/metadata-claims/jest.config.js | 8 + packages/sdk/metadata-claims/jestSetup.ts | 12 + packages/sdk/metadata-claims/package.json | 46 +++ .../src}/account.test.ts | 21 +- .../claims => metadata-claims/src}/account.ts | 0 .../claims => metadata-claims/src}/claim.ts | 0 .../src}/domain.test.ts | 30 +- packages/sdk/metadata-claims/src/index.ts | 2 + .../claims => metadata-claims/src}/keybase.ts | 11 +- .../src}/metadata.test.ts | 4 +- .../src}/metadata.ts | 33 +- .../claims => metadata-claims/src}/types.ts | 13 + .../claims => metadata-claims/src}/verify.ts | 38 +-- packages/sdk/metadata-claims/tsconfig.json | 9 + packages/sdk/metadata-claims/typedoc.json | 19 ++ .../sdk/wallets/wallet-rpc/lib/index.d.ts | 2 + packages/sdk/wallets/wallet-rpc/lib/index.js | 19 ++ .../sdk/wallets/wallet-rpc/lib/index.js.map | 1 + .../wallets/wallet-rpc/lib/rpc-signer.d.ts | 49 +++ .../sdk/wallets/wallet-rpc/lib/rpc-signer.js | 164 +++++++++ .../wallets/wallet-rpc/lib/rpc-signer.js.map | 1 + .../wallets/wallet-rpc/lib/rpc-wallet.d.ts | 29 ++ .../sdk/wallets/wallet-rpc/lib/rpc-wallet.js | 86 +++++ .../wallets/wallet-rpc/lib/rpc-wallet.js.map | 1 + .../wallet-rpc/lib/rpc-wallet.test.d.ts | 39 +++ .../wallets/wallet-rpc/lib/rpc-wallet.test.js | 227 +++++++++++++ .../wallet-rpc/lib/rpc-wallet.test.js.map | 1 + .../lib/test-utils/ganache.setup.d.ts | 1 + .../lib/test-utils/ganache.setup.js | 23 ++ .../lib/test-utils/ganache.setup.js.map | 1 + .../lib/test-utils/ganache.teardown.d.ts | 2 + .../lib/test-utils/ganache.teardown.js | 8 + .../lib/test-utils/ganache.teardown.js.map | 1 + yarn.lock | 33 +- 77 files changed, 2252 insertions(+), 1269 deletions(-) create mode 100644 .changeset/hot-pugs-nail.md create mode 100644 .changeset/thirty-pugs-smile.md delete mode 100644 docs/sdk/contractkit/classes/identity_metadata.IdentityMetadataWrapper.md delete mode 100644 docs/sdk/contractkit/enums/identity_claims_types.ClaimTypes.md delete mode 100644 docs/sdk/contractkit/modules/identity.md delete mode 100644 docs/sdk/contractkit/modules/identity_claims_account.md delete mode 100644 docs/sdk/contractkit/modules/identity_claims_claim.md delete mode 100644 docs/sdk/contractkit/modules/identity_claims_keybase.md delete mode 100644 docs/sdk/contractkit/modules/identity_claims_types.md delete mode 100644 docs/sdk/contractkit/modules/identity_claims_verify.md delete mode 100644 docs/sdk/contractkit/modules/identity_metadata.md create mode 100644 docs/sdk/metadata-claims/README.md create mode 100644 docs/sdk/metadata-claims/classes/metadata.IdentityMetadataWrapper.md create mode 100644 docs/sdk/metadata-claims/enums/types.ClaimTypes.md create mode 100644 docs/sdk/metadata-claims/modules/account.md create mode 100644 docs/sdk/metadata-claims/modules/claim.md create mode 100644 docs/sdk/metadata-claims/modules/index.md create mode 100644 docs/sdk/metadata-claims/modules/keybase.md create mode 100644 docs/sdk/metadata-claims/modules/metadata.md create mode 100644 docs/sdk/metadata-claims/modules/types.md create mode 100644 docs/sdk/metadata-claims/modules/verify.md delete mode 100644 packages/sdk/contractkit/src/identity/index.ts create mode 100644 packages/sdk/metadata-claims/.eslintrc.js create mode 100644 packages/sdk/metadata-claims/README.md create mode 100644 packages/sdk/metadata-claims/eslint.tsconfig.json create mode 100644 packages/sdk/metadata-claims/jest.config.js create mode 100644 packages/sdk/metadata-claims/jestSetup.ts create mode 100644 packages/sdk/metadata-claims/package.json rename packages/sdk/{contractkit/src/identity/claims => metadata-claims/src}/account.test.ts (81%) rename packages/sdk/{contractkit/src/identity/claims => metadata-claims/src}/account.ts (100%) rename packages/sdk/{contractkit/src/identity/claims => metadata-claims/src}/claim.ts (100%) rename packages/sdk/{contractkit/src/identity/claims => metadata-claims/src}/domain.test.ts (70%) create mode 100644 packages/sdk/metadata-claims/src/index.ts rename packages/sdk/{contractkit/src/identity/claims => metadata-claims/src}/keybase.ts (89%) rename packages/sdk/{contractkit/src/identity => metadata-claims/src}/metadata.test.ts (97%) rename packages/sdk/{contractkit/src/identity => metadata-claims/src}/metadata.ts (88%) rename packages/sdk/{contractkit/src/identity/claims => metadata-claims/src}/types.ts (52%) rename packages/sdk/{contractkit/src/identity/claims => metadata-claims/src}/verify.ts (73%) create mode 100644 packages/sdk/metadata-claims/tsconfig.json create mode 100644 packages/sdk/metadata-claims/typedoc.json create mode 100644 packages/sdk/wallets/wallet-rpc/lib/index.d.ts create mode 100644 packages/sdk/wallets/wallet-rpc/lib/index.js create mode 100644 packages/sdk/wallets/wallet-rpc/lib/index.js.map create mode 100644 packages/sdk/wallets/wallet-rpc/lib/rpc-signer.d.ts create mode 100644 packages/sdk/wallets/wallet-rpc/lib/rpc-signer.js create mode 100644 packages/sdk/wallets/wallet-rpc/lib/rpc-signer.js.map create mode 100644 packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.d.ts create mode 100644 packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.js create mode 100644 packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.js.map create mode 100644 packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.test.d.ts create mode 100644 packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.test.js create mode 100644 packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.test.js.map create mode 100644 packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.setup.d.ts create mode 100644 packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.setup.js create mode 100644 packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.setup.js.map create mode 100644 packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.teardown.d.ts create mode 100644 packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.teardown.js create mode 100644 packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.teardown.js.map diff --git a/.changeset/hot-pugs-nail.md b/.changeset/hot-pugs-nail.md new file mode 100644 index 0000000000..1ac80cec46 --- /dev/null +++ b/.changeset/hot-pugs-nail.md @@ -0,0 +1,42 @@ +--- +'@celo/contractkit': major +--- + +Removes all exports under the lib/identity folder. These have been move to a new @celo/metadata-claims package and should be imported from there. + +Note that folder structure is also flattened slightly. so replace `@celo/contractkit/lib/identity/claims/` with `@celo/metadata-claims/lib/` + +example + +```diff +- import { createAccountClaim } from '@celo/contractkit/lib/identity/claims/account' ++ import { createAccountClaim } from '@celo/metadata-claims/lib/account' +``` + +```diff +- import { ContractKit, IdentityMetadataWrapper, newKitFromWeb3 } from '@celo/contractkit' +- import { ClaimTypes } from '@celo/contractkit/lib/identity' ++ import { ContractKit, newKitFromWeb3 } from '@celo/contractkit' ++ import { ClaimTypes, IdentityMetadataWrapper } from '@celo/metadata-claims' + +``` + +Note that Contractkit is Not a dependency. Instead when using `IdentityMetadataWrapper` you should make an object that satisfis the `AccountMetadataSignerGetters` type + +```typescript +import { AccountMetadataSignerGetters } from '@celo/metadata-claims/lib/types'; + +``` +using viem it would be like + +```typescript +const accountsMetaDataSignerGetters: AccountMetadataSignerGetters = { + isAccount: async (address: string) => accounts.read.isAccount([address as Address]), + getValidatorSigner: async (address: string) => + accounts.read.getValidatorSigner([address as Address]), + getVoteSigner: async (address: string) => + accounts.read.getValidatorSigner([address as Address]), + getAttestationSigner: async (address: string) => + accounts.read.getValidatorSigner([address as Address]), + } +``` diff --git a/.changeset/thirty-pugs-smile.md b/.changeset/thirty-pugs-smile.md new file mode 100644 index 0000000000..5b9db67881 --- /dev/null +++ b/.changeset/thirty-pugs-smile.md @@ -0,0 +1,26 @@ +--- +'@celo/metadata-claims': major +--- + +Introducing @celo/metadata-claims These are a series of functions extracted from @celo/contractkit since they didnt strictly need depend on contractkit itsefl. Developers can now use IdentityMetadataWrapper with any js rpc library like ethers or viem or web3js without being forced to import ContractKit. + + +Instead when using `IdentityMetadataWrapper` you should make an object that satisfis the `AccountMetadataSignerGetters` type + +```typescript +import { AccountMetadataSignerGetters } from '@celo/metadata-claims/lib/types'; + +``` +using viem it would be like + +```typescript +const accountsMetaDataSignerGetters: AccountMetadataSignerGetters = { + isAccount: async (address: string) => accounts.read.isAccount([address as Address]), + getValidatorSigner: async (address: string) => + accounts.read.getValidatorSigner([address as Address]), + getVoteSigner: async (address: string) => + accounts.read.getValidatorSigner([address as Address]), + getAttestationSigner: async (address: string) => + accounts.read.getValidatorSigner([address as Address]), + } +``` \ No newline at end of file diff --git a/.gitignore b/.gitignore index 11d572ad76..2f05077250 100644 --- a/.gitignore +++ b/.gitignore @@ -91,3 +91,4 @@ package.json-e # Ignore generated credentials from google-github-actions/auth gha-creds-*.json transactions.json +packages/sdk/metadata-claims/lib diff --git a/docs/sdk/contractkit/classes/identity_metadata.IdentityMetadataWrapper.md b/docs/sdk/contractkit/classes/identity_metadata.IdentityMetadataWrapper.md deleted file mode 100644 index 03690465a8..0000000000 --- a/docs/sdk/contractkit/classes/identity_metadata.IdentityMetadataWrapper.md +++ /dev/null @@ -1,321 +0,0 @@ -[@celo/contractkit](../README.md) / [Exports](../modules.md) / [identity/metadata](../modules/identity_metadata.md) / IdentityMetadataWrapper - -# Class: IdentityMetadataWrapper - -[identity/metadata](../modules/identity_metadata.md).IdentityMetadataWrapper - -## Table of contents - -### Constructors - -- [constructor](identity_metadata.IdentityMetadataWrapper.md#constructor) - -### Properties - -- [data](identity_metadata.IdentityMetadataWrapper.md#data) - -### Accessors - -- [claims](identity_metadata.IdentityMetadataWrapper.md#claims) - -### Methods - -- [addClaim](identity_metadata.IdentityMetadataWrapper.md#addclaim) -- [filterClaims](identity_metadata.IdentityMetadataWrapper.md#filterclaims) -- [findClaim](identity_metadata.IdentityMetadataWrapper.md#findclaim) -- [hashOfClaims](identity_metadata.IdentityMetadataWrapper.md#hashofclaims) -- [toString](identity_metadata.IdentityMetadataWrapper.md#tostring) -- [fetchFromURL](identity_metadata.IdentityMetadataWrapper.md#fetchfromurl) -- [fromEmpty](identity_metadata.IdentityMetadataWrapper.md#fromempty) -- [fromFile](identity_metadata.IdentityMetadataWrapper.md#fromfile) -- [fromRawString](identity_metadata.IdentityMetadataWrapper.md#fromrawstring) -- [verifySigner](identity_metadata.IdentityMetadataWrapper.md#verifysigner) -- [verifySignerForAddress](identity_metadata.IdentityMetadataWrapper.md#verifysignerforaddress) - -## Constructors - -### constructor - -• **new IdentityMetadataWrapper**(`data`): [`IdentityMetadataWrapper`](identity_metadata.IdentityMetadataWrapper.md) - -#### Parameters - -| Name | Type | Default value | -| :------ | :------ | :------ | -| `data` | `Object` | `undefined` | -| `data.claims` | (\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/identity_claims_types.ClaimTypes.md#account) } \| \{ `timestamp`: `number` = TimestampType; `type`: [`KEYBASE`](../enums/identity_claims_types.ClaimTypes.md#keybase) ; `username`: `string` = t.string } \| \{ `domain`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`DOMAIN`](../enums/identity_claims_types.ClaimTypes.md#domain) } \| \{ `name`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`NAME`](../enums/identity_claims_types.ClaimTypes.md#name) } \| \{ `address`: `string` = t.string; `filteredDataPaths`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`STORAGE`](../enums/identity_claims_types.ClaimTypes.md#storage) })[] | `undefined` | -| `data.meta` | `Object` | `MetaType` | -| `data.meta.address` | `string` | `AddressType` | -| `data.meta.signature` | `string` | `SignatureType` | - -#### Returns - -[`IdentityMetadataWrapper`](identity_metadata.IdentityMetadataWrapper.md) - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:154](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L154) - -## Properties - -### data - -• **data**: `Object` - -#### Type declaration - -| Name | Type | -| :------ | :------ | -| `claims` | (\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/identity_claims_types.ClaimTypes.md#account) } \| \{ `timestamp`: `number` = TimestampType; `type`: [`KEYBASE`](../enums/identity_claims_types.ClaimTypes.md#keybase) ; `username`: `string` = t.string } \| \{ `domain`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`DOMAIN`](../enums/identity_claims_types.ClaimTypes.md#domain) } \| \{ `name`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`NAME`](../enums/identity_claims_types.ClaimTypes.md#name) } \| \{ `address`: `string` = t.string; `filteredDataPaths`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`STORAGE`](../enums/identity_claims_types.ClaimTypes.md#storage) })[] | -| `meta` | \{ `address`: `string` = AddressType; `signature`: `string` = SignatureType } | -| `meta.address` | `string` | -| `meta.signature` | `string` | - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:32](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L32) - -## Accessors - -### claims - -• `get` **claims**(): (\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/identity_claims_types.ClaimTypes.md#account) } \| \{ `timestamp`: `number` = TimestampType; `type`: [`KEYBASE`](../enums/identity_claims_types.ClaimTypes.md#keybase) ; `username`: `string` = t.string } \| \{ `domain`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`DOMAIN`](../enums/identity_claims_types.ClaimTypes.md#domain) } \| \{ `name`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`NAME`](../enums/identity_claims_types.ClaimTypes.md#name) } \| \{ `address`: `string` = t.string; `filteredDataPaths`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`STORAGE`](../enums/identity_claims_types.ClaimTypes.md#storage) })[] - -#### Returns - -(\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/identity_claims_types.ClaimTypes.md#account) } \| \{ `timestamp`: `number` = TimestampType; `type`: [`KEYBASE`](../enums/identity_claims_types.ClaimTypes.md#keybase) ; `username`: `string` = t.string } \| \{ `domain`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`DOMAIN`](../enums/identity_claims_types.ClaimTypes.md#domain) } \| \{ `name`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`NAME`](../enums/identity_claims_types.ClaimTypes.md#name) } \| \{ `address`: `string` = t.string; `filteredDataPaths`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`STORAGE`](../enums/identity_claims_types.ClaimTypes.md#storage) })[] - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:158](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L158) - -## Methods - -### addClaim - -▸ **addClaim**(`claim`, `signer`): `Promise`\<[`Claim`](../modules/identity_claims_claim.md#claim)\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `claim` | [`Claim`](../modules/identity_claims_claim.md#claim) | -| `signer` | `Signer` | - -#### Returns - -`Promise`\<[`Claim`](../modules/identity_claims_claim.md#claim)\> - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:173](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L173) - -___ - -### filterClaims - -▸ **filterClaims**\<`K`\>(`type`): [`ClaimPayload`](../modules/identity_claims_claim.md#claimpayload)\<`K`\>[] - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends [`ClaimTypes`](../enums/identity_claims_types.ClaimTypes.md) | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `type` | `K` | - -#### Returns - -[`ClaimPayload`](../modules/identity_claims_claim.md#claimpayload)\<`K`\>[] - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:213](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L213) - -___ - -### findClaim - -▸ **findClaim**\<`K`\>(`type`): `undefined` \| [`ClaimPayload`](../modules/identity_claims_claim.md#claimpayload)\<`K`\> - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends [`ClaimTypes`](../enums/identity_claims_types.ClaimTypes.md) | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `type` | `K` | - -#### Returns - -`undefined` \| [`ClaimPayload`](../modules/identity_claims_claim.md#claimpayload)\<`K`\> - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:209](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L209) - -___ - -### hashOfClaims - -▸ **hashOfClaims**(): `string` - -#### Returns - -`string` - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:162](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L162) - -___ - -### toString - -▸ **toString**(): `string` - -#### Returns - -`string` - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:166](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L166) - -___ - -### fetchFromURL - -▸ **fetchFromURL**(`contractKitOrAccountsWrapper`, `url`, `tries?`): `Promise`\<[`IdentityMetadataWrapper`](identity_metadata.IdentityMetadataWrapper.md)\> - -#### Parameters - -| Name | Type | Default value | -| :------ | :------ | :------ | -| `contractKitOrAccountsWrapper` | `KitOrAccountsWrapper` | `undefined` | -| `url` | `string` | `undefined` | -| `tries` | `number` | `3` | - -#### Returns - -`Promise`\<[`IdentityMetadataWrapper`](identity_metadata.IdentityMetadataWrapper.md)\> - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:44](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L44) - -___ - -### fromEmpty - -▸ **fromEmpty**(`address`): [`IdentityMetadataWrapper`](identity_metadata.IdentityMetadataWrapper.md) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -[`IdentityMetadataWrapper`](identity_metadata.IdentityMetadataWrapper.md) - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:34](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L34) - -___ - -### fromFile - -▸ **fromFile**(`contractKitOrAccountsWrapper`, `path`): `Promise`\<[`IdentityMetadataWrapper`](identity_metadata.IdentityMetadataWrapper.md)\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `contractKitOrAccountsWrapper` | `KitOrAccountsWrapper` | -| `path` | `string` | - -#### Returns - -`Promise`\<[`IdentityMetadataWrapper`](identity_metadata.IdentityMetadataWrapper.md)\> - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:63](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L63) - -___ - -### fromRawString - -▸ **fromRawString**(`contractKitOrAccountsWrapper`, `rawData`): `Promise`\<[`IdentityMetadataWrapper`](identity_metadata.IdentityMetadataWrapper.md)\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `contractKitOrAccountsWrapper` | `KitOrAccountsWrapper` | -| `rawData` | `string` | - -#### Returns - -`Promise`\<[`IdentityMetadataWrapper`](identity_metadata.IdentityMetadataWrapper.md)\> - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:111](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L111) - -___ - -### verifySigner - -▸ **verifySigner**(`contractKitOrAccountsWrapper`, `hash`, `signature`, `metadata`): `Promise`\<`boolean`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `contractKitOrAccountsWrapper` | `KitOrAccountsWrapper` | -| `hash` | `any` | -| `signature` | `any` | -| `metadata` | `any` | - -#### Returns - -`Promise`\<`boolean`\> - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:74](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L74) - -___ - -### verifySignerForAddress - -▸ **verifySignerForAddress**(`contractKitOrAccountsWrapper`, `hash`, `signature`, `address`): `Promise`\<`boolean`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `contractKitOrAccountsWrapper` | `KitOrAccountsWrapper` | -| `hash` | `any` | -| `signature` | `any` | -| `address` | `string` | - -#### Returns - -`Promise`\<`boolean`\> - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:88](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L88) diff --git a/docs/sdk/contractkit/enums/identity_claims_types.ClaimTypes.md b/docs/sdk/contractkit/enums/identity_claims_types.ClaimTypes.md deleted file mode 100644 index 56ba5d5c24..0000000000 --- a/docs/sdk/contractkit/enums/identity_claims_types.ClaimTypes.md +++ /dev/null @@ -1,87 +0,0 @@ -[@celo/contractkit](../README.md) / [Exports](../modules.md) / [identity/claims/types](../modules/identity_claims_types.md) / ClaimTypes - -# Enumeration: ClaimTypes - -[identity/claims/types](../modules/identity_claims_types.md).ClaimTypes - -## Table of contents - -### Enumeration Members - -- [ACCOUNT](identity_claims_types.ClaimTypes.md#account) -- [DOMAIN](identity_claims_types.ClaimTypes.md#domain) -- [KEYBASE](identity_claims_types.ClaimTypes.md#keybase) -- [NAME](identity_claims_types.ClaimTypes.md#name) -- [PROFILE\_PICTURE](identity_claims_types.ClaimTypes.md#profile_picture) -- [STORAGE](identity_claims_types.ClaimTypes.md#storage) -- [TWITTER](identity_claims_types.ClaimTypes.md#twitter) - -## Enumeration Members - -### ACCOUNT - -• **ACCOUNT** = ``"ACCOUNT"`` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/types.ts:10](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/types.ts#L10) - -___ - -### DOMAIN - -• **DOMAIN** = ``"DOMAIN"`` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/types.ts:11](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/types.ts#L11) - -___ - -### KEYBASE - -• **KEYBASE** = ``"KEYBASE"`` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/types.ts:12](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/types.ts#L12) - -___ - -### NAME - -• **NAME** = ``"NAME"`` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/types.ts:13](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/types.ts#L13) - -___ - -### PROFILE\_PICTURE - -• **PROFILE\_PICTURE** = ``"PROFILE_PICTURE"`` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/types.ts:14](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/types.ts#L14) - -___ - -### STORAGE - -• **STORAGE** = ``"STORAGE"`` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/types.ts:15](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/types.ts#L15) - -___ - -### TWITTER - -• **TWITTER** = ``"TWITTER"`` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/types.ts:16](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/types.ts#L16) diff --git a/docs/sdk/contractkit/modules.md b/docs/sdk/contractkit/modules.md index a8e5e19ab8..e6f42afe63 100644 --- a/docs/sdk/contractkit/modules.md +++ b/docs/sdk/contractkit/modules.md @@ -12,13 +12,6 @@ - [celo-tokens](modules/celo_tokens.md) - [contract-cache](modules/contract_cache.md) - [globals](modules/globals.md) -- [identity](modules/identity.md) -- [identity/claims/account](modules/identity_claims_account.md) -- [identity/claims/claim](modules/identity_claims_claim.md) -- [identity/claims/keybase](modules/identity_claims_keybase.md) -- [identity/claims/types](modules/identity_claims_types.md) -- [identity/claims/verify](modules/identity_claims_verify.md) -- [identity/metadata](modules/identity_metadata.md) - [index](modules/index.md) - [kit](modules/kit.md) - [mini-contract-cache](modules/mini_contract_cache.md) diff --git a/docs/sdk/contractkit/modules/identity.md b/docs/sdk/contractkit/modules/identity.md deleted file mode 100644 index 52a056622e..0000000000 --- a/docs/sdk/contractkit/modules/identity.md +++ /dev/null @@ -1,36 +0,0 @@ -[@celo/contractkit](../README.md) / [Exports](../modules.md) / identity - -# Module: identity - -## Table of contents - -### References - -- [ClaimTypes](identity.md#claimtypes) -- [IdentityMetadata](identity.md#identitymetadata) -- [IdentityMetadataType](identity.md#identitymetadatatype) -- [IdentityMetadataWrapper](identity.md#identitymetadatawrapper) - -## References - -### ClaimTypes - -Re-exports [ClaimTypes](../enums/identity_claims_types.ClaimTypes.md) - -___ - -### IdentityMetadata - -Re-exports [IdentityMetadata](identity_metadata.md#identitymetadata) - -___ - -### IdentityMetadataType - -Re-exports [IdentityMetadataType](identity_metadata.md#identitymetadatatype) - -___ - -### IdentityMetadataWrapper - -Re-exports [IdentityMetadataWrapper](../classes/identity_metadata.IdentityMetadataWrapper.md) diff --git a/docs/sdk/contractkit/modules/identity_claims_account.md b/docs/sdk/contractkit/modules/identity_claims_account.md deleted file mode 100644 index 8d1d5fde62..0000000000 --- a/docs/sdk/contractkit/modules/identity_claims_account.md +++ /dev/null @@ -1,78 +0,0 @@ -[@celo/contractkit](../README.md) / [Exports](../modules.md) / identity/claims/account - -# Module: identity/claims/account - -## Table of contents - -### Type Aliases - -- [AccountClaim](identity_claims_account.md#accountclaim) - -### Variables - -- [AccountClaimType](identity_claims_account.md#accountclaimtype) -- [AccountClaimTypeH](identity_claims_account.md#accountclaimtypeh) - -### Functions - -- [createAccountClaim](identity_claims_account.md#createaccountclaim) - -## Type Aliases - -### AccountClaim - -Ƭ **AccountClaim**: `t.TypeOf`\ - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/account.ts:35](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/account.ts#L35) - -## Variables - -### AccountClaimType - -• `Const` **AccountClaimType**: `Type`\<\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/identity_claims_types.ClaimTypes.md#account) }, `any`, `unknown`\> - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/account.ts:19](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/account.ts#L19) - -___ - -### AccountClaimTypeH - -• `Const` **AccountClaimTypeH**: `TypeC`\<\{ `address`: `Type`\<`string`, `string`, `unknown`\> = AddressType; `publicKey`: `UnionC`\<[`UndefinedC`, `Type`\<`string`, `string`, `unknown`\>]\> ; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`ACCOUNT`](../enums/identity_claims_types.ClaimTypes.md#account)\> }\> - -Provide the type minus the validation that the public key and address are derived from the same private key - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/account.ts:11](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/account.ts#L11) - -## Functions - -### createAccountClaim - -▸ **createAccountClaim**(`address`, `publicKey?`): `Object` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `publicKey?` | `string` | - -#### Returns - -`Object` - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `publicKey` | `undefined` \| `string` | -| `timestamp` | `number` | -| `type` | [`ACCOUNT`](../enums/identity_claims_types.ClaimTypes.md#account) | - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/account.ts:37](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/account.ts#L37) diff --git a/docs/sdk/contractkit/modules/identity_claims_claim.md b/docs/sdk/contractkit/modules/identity_claims_claim.md deleted file mode 100644 index 051f8fd8b4..0000000000 --- a/docs/sdk/contractkit/modules/identity_claims_claim.md +++ /dev/null @@ -1,314 +0,0 @@ -[@celo/contractkit](../README.md) / [Exports](../modules.md) / identity/claims/claim - -# Module: identity/claims/claim - -## Table of contents - -### Type Aliases - -- [Claim](identity_claims_claim.md#claim) -- [ClaimPayload](identity_claims_claim.md#claimpayload) -- [DomainClaim](identity_claims_claim.md#domainclaim) -- [KeybaseClaim](identity_claims_claim.md#keybaseclaim) -- [NameClaim](identity_claims_claim.md#nameclaim) -- [StorageClaim](identity_claims_claim.md#storageclaim) - -### Variables - -- [ClaimType](identity_claims_claim.md#claimtype) -- [DOMAIN\_TXT\_HEADER](identity_claims_claim.md#domain_txt_header) -- [KeybaseClaimType](identity_claims_claim.md#keybaseclaimtype) -- [SignedClaimType](identity_claims_claim.md#signedclaimtype) - -### Functions - -- [createDomainClaim](identity_claims_claim.md#createdomainclaim) -- [createNameClaim](identity_claims_claim.md#createnameclaim) -- [createStorageClaim](identity_claims_claim.md#createstorageclaim) -- [hashOfClaim](identity_claims_claim.md#hashofclaim) -- [hashOfClaims](identity_claims_claim.md#hashofclaims) -- [isOfType](identity_claims_claim.md#isoftype) -- [serializeClaim](identity_claims_claim.md#serializeclaim) - -## Type Aliases - -### Claim - -Ƭ **Claim**: [`DomainClaim`](identity_claims_claim.md#domainclaim) \| [`KeybaseClaim`](identity_claims_claim.md#keybaseclaim) \| [`NameClaim`](identity_claims_claim.md#nameclaim) \| [`AccountClaim`](identity_claims_account.md#accountclaim) \| [`StorageClaim`](identity_claims_claim.md#storageclaim) - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:50](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L50) - -___ - -### ClaimPayload - -Ƭ **ClaimPayload**\<`K`\>: `K` extends typeof [`DOMAIN`](../enums/identity_claims_types.ClaimTypes.md#domain) ? [`DomainClaim`](identity_claims_claim.md#domainclaim) : `K` extends typeof [`NAME`](../enums/identity_claims_types.ClaimTypes.md#name) ? [`NameClaim`](identity_claims_claim.md#nameclaim) : `K` extends typeof [`KEYBASE`](../enums/identity_claims_types.ClaimTypes.md#keybase) ? [`KeybaseClaim`](identity_claims_claim.md#keybaseclaim) : `K` extends typeof [`ACCOUNT`](../enums/identity_claims_types.ClaimTypes.md#account) ? [`AccountClaim`](identity_claims_account.md#accountclaim) : [`StorageClaim`](identity_claims_claim.md#storageclaim) - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends [`ClaimTypes`](../enums/identity_claims_types.ClaimTypes.md) | - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:52](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L52) - -___ - -### DomainClaim - -Ƭ **DomainClaim**: `t.TypeOf`\ - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:47](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L47) - -___ - -### KeybaseClaim - -Ƭ **KeybaseClaim**: `t.TypeOf`\ - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:12](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L12) - -___ - -### NameClaim - -Ƭ **NameClaim**: `t.TypeOf`\ - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:48](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L48) - -___ - -### StorageClaim - -Ƭ **StorageClaim**: `t.TypeOf`\ - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:49](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L49) - -## Variables - -### ClaimType - -• `Const` **ClaimType**: `UnionC`\<[`Type`\<\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/identity_claims_types.ClaimTypes.md#account) }, `any`, `unknown`\>, `TypeC`\<\{ `domain`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`DOMAIN`](../enums/identity_claims_types.ClaimTypes.md#domain)\> }\>, `TypeC`\<\{ `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`KEYBASE`](../enums/identity_claims_types.ClaimTypes.md#keybase)\> ; `username`: `StringC` = t.string }\>, `TypeC`\<\{ `name`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`NAME`](../enums/identity_claims_types.ClaimTypes.md#name)\> }\>, `TypeC`\<\{ `address`: `StringC` = t.string; `filteredDataPaths`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`STORAGE`](../enums/identity_claims_types.ClaimTypes.md#storage)\> }\>]\> - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:33](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L33) - -___ - -### DOMAIN\_TXT\_HEADER - -• `Const` **DOMAIN\_TXT\_HEADER**: ``"celo-site-verification"`` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:46](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L46) - -___ - -### KeybaseClaimType - -• `Const` **KeybaseClaimType**: `TypeC`\<\{ `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`KEYBASE`](../enums/identity_claims_types.ClaimTypes.md#keybase)\> ; `username`: `StringC` = t.string }\> - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:6](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L6) - -___ - -### SignedClaimType - -• `Const` **SignedClaimType**: `TypeC`\<\{ `claim`: `UnionC`\<[`Type`\<\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/identity_claims_types.ClaimTypes.md#account) }, `any`, `unknown`\>, `TypeC`\<\{ `domain`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`DOMAIN`](../enums/identity_claims_types.ClaimTypes.md#domain)\> }\>, `TypeC`\<\{ `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`KEYBASE`](../enums/identity_claims_types.ClaimTypes.md#keybase)\> ; `username`: `StringC` = t.string }\>, `TypeC`\<\{ `name`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`NAME`](../enums/identity_claims_types.ClaimTypes.md#name)\> }\>, `TypeC`\<\{ `address`: `StringC` = t.string; `filteredDataPaths`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`STORAGE`](../enums/identity_claims_types.ClaimTypes.md#storage)\> }\>]\> = ClaimType; `signature`: `StringC` = SignatureType }\> - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:41](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L41) - -## Functions - -### createDomainClaim - -▸ **createDomainClaim**(`domain`): `Object` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `domain` | `string` | - -#### Returns - -`Object` - -| Name | Type | -| :------ | :------ | -| `domain` | `string` | -| `timestamp` | `number` | -| `type` | [`DOMAIN`](../enums/identity_claims_types.ClaimTypes.md#domain) | - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:87](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L87) - -___ - -### createNameClaim - -▸ **createNameClaim**(`name`): `Object` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `name` | `string` | - -#### Returns - -`Object` - -| Name | Type | -| :------ | :------ | -| `name` | `string` | -| `timestamp` | `number` | -| `type` | [`NAME`](../enums/identity_claims_types.ClaimTypes.md#name) | - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:81](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L81) - -___ - -### createStorageClaim - -▸ **createStorageClaim**(`storageURL`): `Object` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `storageURL` | `string` | - -#### Returns - -`Object` - -| Name | Type | -| :------ | :------ | -| `address` | `string` | -| `filteredDataPaths` | `string` | -| `timestamp` | `number` | -| `type` | [`STORAGE`](../enums/identity_claims_types.ClaimTypes.md#storage) | - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:93](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L93) - -___ - -### hashOfClaim - -▸ **hashOfClaim**(`claim`): `string` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `claim` | [`Claim`](identity_claims_claim.md#claim) | - -#### Returns - -`string` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:68](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L68) - -___ - -### hashOfClaims - -▸ **hashOfClaims**(`claims`): `string` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `claims` | [`Claim`](identity_claims_claim.md#claim)[] | - -#### Returns - -`string` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:72](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L72) - -___ - -### isOfType - -▸ **isOfType**\<`K`\>(`type`): (`data`: [`Claim`](identity_claims_claim.md#claim)) => data is ClaimPayload\ - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `K` | extends [`ClaimTypes`](../enums/identity_claims_types.ClaimTypes.md) | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `type` | `K` | - -#### Returns - -`fn` - -▸ (`data`): data is ClaimPayload\ - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `data` | [`Claim`](identity_claims_claim.md#claim) | - -##### Returns - -data is ClaimPayload\ - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:64](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L64) - -___ - -### serializeClaim - -▸ **serializeClaim**(`claim`): `string` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `claim` | [`Claim`](identity_claims_claim.md#claim) | - -#### Returns - -`string` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/claim.ts:77](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/claim.ts#L77) diff --git a/docs/sdk/contractkit/modules/identity_claims_keybase.md b/docs/sdk/contractkit/modules/identity_claims_keybase.md deleted file mode 100644 index 6db0b2f1db..0000000000 --- a/docs/sdk/contractkit/modules/identity_claims_keybase.md +++ /dev/null @@ -1,125 +0,0 @@ -[@celo/contractkit](../README.md) / [Exports](../modules.md) / identity/claims/keybase - -# Module: identity/claims/keybase - -## Table of contents - -### Variables - -- [keybaseFilePathToProof](identity_claims_keybase.md#keybasefilepathtoproof) - -### Functions - -- [createKeybaseClaim](identity_claims_keybase.md#createkeybaseclaim) -- [proofFileName](identity_claims_keybase.md#prooffilename) -- [targetURL](identity_claims_keybase.md#targeturl) -- [verifyKeybaseClaim](identity_claims_keybase.md#verifykeybaseclaim) - -## Variables - -### keybaseFilePathToProof - -• `Const` **keybaseFilePathToProof**: ``".well-known/celo/"`` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/keybase.ts:9](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/keybase.ts#L9) - -## Functions - -### createKeybaseClaim - -▸ **createKeybaseClaim**(`username`): `Object` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `username` | `string` | - -#### Returns - -`Object` - -| Name | Type | -| :------ | :------ | -| `timestamp` | `number` | -| `type` | [`KEYBASE`](../enums/identity_claims_types.ClaimTypes.md#keybase) | -| `username` | `string` | - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/keybase.ts:72](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/keybase.ts#L72) - -___ - -### proofFileName - -▸ **proofFileName**(`address`): `string` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `address` | `string` | - -#### Returns - -`string` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/keybase.ts:10](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/keybase.ts#L10) - -___ - -### targetURL - -▸ **targetURL**(`username`, `address`): `string` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `username` | `string` | -| `address` | `string` | - -#### Returns - -`string` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/keybase.ts:11](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/keybase.ts#L11) - -___ - -### verifyKeybaseClaim - -▸ **verifyKeybaseClaim**(`kit`, `claim`, `signer`): `Promise`\<`string` \| `undefined`\> - -#### Parameters - -| Name | Type | Default value | -| :------ | :------ | :------ | -| `kit` | [`ContractKit`](../classes/kit.ContractKit.md) | `undefined` | -| `claim` | `Object` | `undefined` | -| `claim.timestamp` | `number` | `TimestampType` | -| `claim.type` | [`KEYBASE`](../enums/identity_claims_types.ClaimTypes.md#keybase) | `undefined` | -| `claim.username` | `string` | `t.string` | -| `signer` | `string` | `undefined` | - -#### Returns - -`Promise`\<`string` \| `undefined`\> - -a human readable string with claims (non)verifiability or undefined - -**`Remarks`** - -If verification encounters an error, returns the error message as a string -otherwise returns undefined when successful - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/keybase.ts:26](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/keybase.ts#L26) diff --git a/docs/sdk/contractkit/modules/identity_claims_types.md b/docs/sdk/contractkit/modules/identity_claims_types.md deleted file mode 100644 index ddfb3dca53..0000000000 --- a/docs/sdk/contractkit/modules/identity_claims_types.md +++ /dev/null @@ -1,74 +0,0 @@ -[@celo/contractkit](../README.md) / [Exports](../modules.md) / identity/claims/types - -# Module: identity/claims/types - -## Table of contents - -### Enumerations - -- [ClaimTypes](../enums/identity_claims_types.ClaimTypes.md) - -### Variables - -- [SINGULAR\_CLAIM\_TYPES](identity_claims_types.md#singular_claim_types) -- [SignatureType](identity_claims_types.md#signaturetype) -- [TimestampType](identity_claims_types.md#timestamptype) -- [VERIFIABLE\_CLAIM\_TYPES](identity_claims_types.md#verifiable_claim_types) - -### Functions - -- [now](identity_claims_types.md#now) - -## Variables - -### SINGULAR\_CLAIM\_TYPES - -• `Const` **SINGULAR\_CLAIM\_TYPES**: [`ClaimTypes`](../enums/identity_claims_types.ClaimTypes.md)[] - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/types.ts:20](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/types.ts#L20) - -___ - -### SignatureType - -• `Const` **SignatureType**: `StringC` = `t.string` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/types.ts:3](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/types.ts#L3) - -___ - -### TimestampType - -• `Const` **TimestampType**: `NumberC` = `t.number` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/types.ts:4](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/types.ts#L4) - -___ - -### VERIFIABLE\_CLAIM\_TYPES - -• `Const` **VERIFIABLE\_CLAIM\_TYPES**: [`ClaimTypes`](../enums/identity_claims_types.ClaimTypes.md)[] - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/types.ts:19](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/types.ts#L19) - -## Functions - -### now - -▸ **now**(): `number` - -#### Returns - -`number` - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/types.ts:7](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/types.ts#L7) diff --git a/docs/sdk/contractkit/modules/identity_claims_verify.md b/docs/sdk/contractkit/modules/identity_claims_verify.md deleted file mode 100644 index f46fe860ac..0000000000 --- a/docs/sdk/contractkit/modules/identity_claims_verify.md +++ /dev/null @@ -1,94 +0,0 @@ -[@celo/contractkit](../README.md) / [Exports](../modules.md) / identity/claims/verify - -# Module: identity/claims/verify - -## Table of contents - -### Functions - -- [verifyAccountClaim](identity_claims_verify.md#verifyaccountclaim) -- [verifyClaim](identity_claims_verify.md#verifyclaim) -- [verifyDomainRecord](identity_claims_verify.md#verifydomainrecord) - -## Functions - -### verifyAccountClaim - -▸ **verifyAccountClaim**(`kit`, `claim`, `address`, `tries?`): `Promise`\<`undefined` \| `string`\> - -#### Parameters - -| Name | Type | Default value | -| :------ | :------ | :------ | -| `kit` | [`ContractKit`](../classes/kit.ContractKit.md) | `undefined` | -| `claim` | `Object` | `undefined` | -| `claim.address` | `string` | `AddressType` | -| `claim.publicKey` | `undefined` \| `string` | `undefined` | -| `claim.timestamp` | `number` | `TimestampType` | -| `claim.type` | [`ACCOUNT`](../enums/identity_claims_types.ClaimTypes.md#account) | `undefined` | -| `address` | `string` | `undefined` | -| `tries` | `number` | `3` | - -#### Returns - -`Promise`\<`undefined` \| `string`\> - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/verify.ts:33](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/verify.ts#L33) - -___ - -### verifyClaim - -▸ **verifyClaim**(`kit`, `claim`, `address`, `tries?`): `Promise`\<`undefined` \| `string`\> - -Verifies a claim made by an account, i.e. whether a claim can be verified to be correct - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `kit` | [`ContractKit`](../classes/kit.ContractKit.md) | `undefined` | ContractKit object | -| `claim` | [`Claim`](identity_claims_claim.md#claim) | `undefined` | The claim to verify | -| `address` | `string` | `undefined` | The address that is making the claim | -| `tries` | `number` | `3` | - | - -#### Returns - -`Promise`\<`undefined` \| `string`\> - -If valid, returns undefined. If invalid or unable to verify, returns a string with the error - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/verify.ts:19](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/verify.ts#L19) - -___ - -### verifyDomainRecord - -▸ **verifyDomainRecord**(`kit`, `claim`, `address`, `dnsResolver?`): `Promise`\<`undefined` \| `string`\> - -It verifies if a DNS domain includes in the TXT records an entry with name -`celo-site-verification` and a valid signature in base64 - -#### Parameters - -| Name | Type | Default value | -| :------ | :------ | :------ | -| `kit` | [`ContractKit`](../classes/kit.ContractKit.md) | `undefined` | -| `claim` | `Object` | `undefined` | -| `claim.domain` | `string` | `t.string` | -| `claim.timestamp` | `number` | `TimestampType` | -| `claim.type` | [`DOMAIN`](../enums/identity_claims_types.ClaimTypes.md#domain) | `undefined` | -| `address` | `string` | `undefined` | -| `dnsResolver` | `dnsResolverFunction` | `undefined` | - -#### Returns - -`Promise`\<`undefined` \| `string`\> - -#### Defined in - -[packages/sdk/contractkit/src/identity/claims/verify.ts:76](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/claims/verify.ts#L76) diff --git a/docs/sdk/contractkit/modules/identity_metadata.md b/docs/sdk/contractkit/modules/identity_metadata.md deleted file mode 100644 index 1266d1ee1f..0000000000 --- a/docs/sdk/contractkit/modules/identity_metadata.md +++ /dev/null @@ -1,47 +0,0 @@ -[@celo/contractkit](../README.md) / [Exports](../modules.md) / identity/metadata - -# Module: identity/metadata - -## Table of contents - -### References - -- [ClaimTypes](identity_metadata.md#claimtypes) - -### Classes - -- [IdentityMetadataWrapper](../classes/identity_metadata.IdentityMetadataWrapper.md) - -### Type Aliases - -- [IdentityMetadata](identity_metadata.md#identitymetadata) - -### Variables - -- [IdentityMetadataType](identity_metadata.md#identitymetadatatype) - -## References - -### ClaimTypes - -Re-exports [ClaimTypes](../enums/identity_claims_types.ClaimTypes.md) - -## Type Aliases - -### IdentityMetadata - -Ƭ **IdentityMetadata**: `t.TypeOf`\ - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:29](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L29) - -## Variables - -### IdentityMetadataType - -• `Const` **IdentityMetadataType**: `TypeC`\<\{ `claims`: `ArrayC`\<`UnionC`\<[`Type`\<\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/identity_claims_types.ClaimTypes.md#account) }, `any`, `unknown`\>, `TypeC`\<\{ `domain`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`DOMAIN`](../enums/identity_claims_types.ClaimTypes.md#domain)\> }\>, `TypeC`\<\{ `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`KEYBASE`](../enums/identity_claims_types.ClaimTypes.md#keybase)\> ; `username`: `StringC` = t.string }\>, `TypeC`\<\{ `name`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`NAME`](../enums/identity_claims_types.ClaimTypes.md#name)\> }\>, `TypeC`\<\{ `address`: `StringC` = t.string; `filteredDataPaths`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`STORAGE`](../enums/identity_claims_types.ClaimTypes.md#storage)\> }\>]\>\> ; `meta`: `TypeC`\<\{ `address`: `Type`\<`string`, `string`, `unknown`\> = AddressType; `signature`: `StringC` = SignatureType }\> = MetaType }\> - -#### Defined in - -[packages/sdk/contractkit/src/identity/metadata.ts:24](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/identity/metadata.ts#L24) diff --git a/docs/sdk/contractkit/modules/index.md b/docs/sdk/contractkit/modules/index.md index 9aa49df9b1..4539901ccf 100644 --- a/docs/sdk/contractkit/modules/index.md +++ b/docs/sdk/contractkit/modules/index.md @@ -16,7 +16,6 @@ - [ContractKit](index.md#contractkit) - [GET\_IMPLEMENTATION\_ABI](index.md#get_implementation_abi) - [HttpProviderOptions](index.md#httpprovideroptions) -- [IdentityMetadataWrapper](index.md#identitymetadatawrapper) - [NetworkConfig](index.md#networkconfig) - [PROXY\_ABI](index.md#proxy_abi) - [PROXY\_SET\_AND\_INITIALIZE\_IMPLEMENTATION\_SIGNATURE](index.md#proxy_set_and_initialize_implementation_signature) @@ -103,12 +102,6 @@ Re-exports [HttpProviderOptions](setupForKits.md#httpprovideroptions) ___ -### IdentityMetadataWrapper - -Re-exports [IdentityMetadataWrapper](../classes/identity_metadata.IdentityMetadataWrapper.md) - -___ - ### NetworkConfig Re-exports [NetworkConfig](../interfaces/kit.NetworkConfig.md) diff --git a/docs/sdk/metadata-claims/README.md b/docs/sdk/metadata-claims/README.md new file mode 100644 index 0000000000..b363d7ef32 --- /dev/null +++ b/docs/sdk/metadata-claims/README.md @@ -0,0 +1,15 @@ +@celo/metadata-claims + +# @celo/metadata-claims + +## Table of contents + +### Modules + +- [account](modules/account.md) +- [claim](modules/claim.md) +- [index](modules/index.md) +- [keybase](modules/keybase.md) +- [metadata](modules/metadata.md) +- [types](modules/types.md) +- [verify](modules/verify.md) diff --git a/docs/sdk/metadata-claims/classes/metadata.IdentityMetadataWrapper.md b/docs/sdk/metadata-claims/classes/metadata.IdentityMetadataWrapper.md new file mode 100644 index 0000000000..589bc54178 --- /dev/null +++ b/docs/sdk/metadata-claims/classes/metadata.IdentityMetadataWrapper.md @@ -0,0 +1,321 @@ +[@celo/metadata-claims](../README.md) / [metadata](../modules/metadata.md) / IdentityMetadataWrapper + +# Class: IdentityMetadataWrapper + +[metadata](../modules/metadata.md).IdentityMetadataWrapper + +## Table of contents + +### Constructors + +- [constructor](metadata.IdentityMetadataWrapper.md#constructor) + +### Properties + +- [data](metadata.IdentityMetadataWrapper.md#data) + +### Accessors + +- [claims](metadata.IdentityMetadataWrapper.md#claims) + +### Methods + +- [addClaim](metadata.IdentityMetadataWrapper.md#addclaim) +- [filterClaims](metadata.IdentityMetadataWrapper.md#filterclaims) +- [findClaim](metadata.IdentityMetadataWrapper.md#findclaim) +- [hashOfClaims](metadata.IdentityMetadataWrapper.md#hashofclaims) +- [toString](metadata.IdentityMetadataWrapper.md#tostring) +- [fetchFromURL](metadata.IdentityMetadataWrapper.md#fetchfromurl) +- [fromEmpty](metadata.IdentityMetadataWrapper.md#fromempty) +- [fromFile](metadata.IdentityMetadataWrapper.md#fromfile) +- [fromRawString](metadata.IdentityMetadataWrapper.md#fromrawstring) +- [verifySigner](metadata.IdentityMetadataWrapper.md#verifysigner) +- [verifySignerForAddress](metadata.IdentityMetadataWrapper.md#verifysignerforaddress) + +## Constructors + +### constructor + +• **new IdentityMetadataWrapper**(`data`): [`IdentityMetadataWrapper`](metadata.IdentityMetadataWrapper.md) + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `data` | `Object` | `undefined` | +| `data.claims` | (\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/types.ClaimTypes.md#account) } \| \{ `timestamp`: `number` = TimestampType; `type`: [`KEYBASE`](../enums/types.ClaimTypes.md#keybase) ; `username`: `string` = t.string } \| \{ `domain`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`DOMAIN`](../enums/types.ClaimTypes.md#domain) } \| \{ `name`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`NAME`](../enums/types.ClaimTypes.md#name) } \| \{ `address`: `string` = t.string; `filteredDataPaths`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`STORAGE`](../enums/types.ClaimTypes.md#storage) })[] | `undefined` | +| `data.meta` | `Object` | `MetaType` | +| `data.meta.address` | `string` | `AddressType` | +| `data.meta.signature` | `string` | `SignatureType` | + +#### Returns + +[`IdentityMetadataWrapper`](metadata.IdentityMetadataWrapper.md) + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:157](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L157) + +## Properties + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `claims` | (\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/types.ClaimTypes.md#account) } \| \{ `timestamp`: `number` = TimestampType; `type`: [`KEYBASE`](../enums/types.ClaimTypes.md#keybase) ; `username`: `string` = t.string } \| \{ `domain`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`DOMAIN`](../enums/types.ClaimTypes.md#domain) } \| \{ `name`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`NAME`](../enums/types.ClaimTypes.md#name) } \| \{ `address`: `string` = t.string; `filteredDataPaths`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`STORAGE`](../enums/types.ClaimTypes.md#storage) })[] | +| `meta` | \{ `address`: `string` = AddressType; `signature`: `string` = SignatureType } | +| `meta.address` | `string` | +| `meta.signature` | `string` | + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:35](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L35) + +## Accessors + +### claims + +• `get` **claims**(): (\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/types.ClaimTypes.md#account) } \| \{ `timestamp`: `number` = TimestampType; `type`: [`KEYBASE`](../enums/types.ClaimTypes.md#keybase) ; `username`: `string` = t.string } \| \{ `domain`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`DOMAIN`](../enums/types.ClaimTypes.md#domain) } \| \{ `name`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`NAME`](../enums/types.ClaimTypes.md#name) } \| \{ `address`: `string` = t.string; `filteredDataPaths`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`STORAGE`](../enums/types.ClaimTypes.md#storage) })[] + +#### Returns + +(\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/types.ClaimTypes.md#account) } \| \{ `timestamp`: `number` = TimestampType; `type`: [`KEYBASE`](../enums/types.ClaimTypes.md#keybase) ; `username`: `string` = t.string } \| \{ `domain`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`DOMAIN`](../enums/types.ClaimTypes.md#domain) } \| \{ `name`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`NAME`](../enums/types.ClaimTypes.md#name) } \| \{ `address`: `string` = t.string; `filteredDataPaths`: `string` = t.string; `timestamp`: `number` = TimestampType; `type`: [`STORAGE`](../enums/types.ClaimTypes.md#storage) })[] + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:161](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L161) + +## Methods + +### addClaim + +▸ **addClaim**(`claim`, `signer`): `Promise`\<[`Claim`](../modules/claim.md#claim)\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `claim` | [`Claim`](../modules/claim.md#claim) | +| `signer` | `Signer` | + +#### Returns + +`Promise`\<[`Claim`](../modules/claim.md#claim)\> + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:176](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L176) + +___ + +### filterClaims + +▸ **filterClaims**\<`K`\>(`type`): [`ClaimPayload`](../modules/claim.md#claimpayload)\<`K`\>[] + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `K` | extends [`ClaimTypes`](../enums/types.ClaimTypes.md) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `type` | `K` | + +#### Returns + +[`ClaimPayload`](../modules/claim.md#claimpayload)\<`K`\>[] + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:216](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L216) + +___ + +### findClaim + +▸ **findClaim**\<`K`\>(`type`): `undefined` \| [`ClaimPayload`](../modules/claim.md#claimpayload)\<`K`\> + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `K` | extends [`ClaimTypes`](../enums/types.ClaimTypes.md) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `type` | `K` | + +#### Returns + +`undefined` \| [`ClaimPayload`](../modules/claim.md#claimpayload)\<`K`\> + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:212](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L212) + +___ + +### hashOfClaims + +▸ **hashOfClaims**(): `string` + +#### Returns + +`string` + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:165](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L165) + +___ + +### toString + +▸ **toString**(): `string` + +#### Returns + +`string` + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:169](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L169) + +___ + +### fetchFromURL + +▸ **fetchFromURL**(`contractKitOrAccountsWrapper`, `url`, `tries?`): `Promise`\<[`IdentityMetadataWrapper`](metadata.IdentityMetadataWrapper.md)\> + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `contractKitOrAccountsWrapper` | [`AccountMetadataSignerGetters`](../modules/types.md#accountmetadatasignergetters) | `undefined` | +| `url` | `string` | `undefined` | +| `tries` | `number` | `3` | + +#### Returns + +`Promise`\<[`IdentityMetadataWrapper`](metadata.IdentityMetadataWrapper.md)\> + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:47](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L47) + +___ + +### fromEmpty + +▸ **fromEmpty**(`address`): [`IdentityMetadataWrapper`](metadata.IdentityMetadataWrapper.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `address` | `string` | + +#### Returns + +[`IdentityMetadataWrapper`](metadata.IdentityMetadataWrapper.md) + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:37](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L37) + +___ + +### fromFile + +▸ **fromFile**(`contractKitOrAccountsWrapper`, `path`): `Promise`\<[`IdentityMetadataWrapper`](metadata.IdentityMetadataWrapper.md)\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `contractKitOrAccountsWrapper` | [`AccountMetadataSignerGetters`](../modules/types.md#accountmetadatasignergetters) | +| `path` | `string` | + +#### Returns + +`Promise`\<[`IdentityMetadataWrapper`](metadata.IdentityMetadataWrapper.md)\> + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:66](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L66) + +___ + +### fromRawString + +▸ **fromRawString**(`contractKitOrAccountsWrapper`, `rawData`): `Promise`\<[`IdentityMetadataWrapper`](metadata.IdentityMetadataWrapper.md)\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `contractKitOrAccountsWrapper` | [`AccountMetadataSignerGetters`](../modules/types.md#accountmetadatasignergetters) | +| `rawData` | `string` | + +#### Returns + +`Promise`\<[`IdentityMetadataWrapper`](metadata.IdentityMetadataWrapper.md)\> + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:114](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L114) + +___ + +### verifySigner + +▸ **verifySigner**(`contractKitOrAccountsWrapper`, `hash`, `signature`, `metadata`): `Promise`\<`boolean`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `contractKitOrAccountsWrapper` | [`AccountMetadataSignerGetters`](../modules/types.md#accountmetadatasignergetters) | +| `hash` | `any` | +| `signature` | `any` | +| `metadata` | `any` | + +#### Returns + +`Promise`\<`boolean`\> + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:77](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L77) + +___ + +### verifySignerForAddress + +▸ **verifySignerForAddress**(`contractKitOrAccountsWrapper`, `hash`, `signature`, `address`): `Promise`\<`boolean`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `contractKitOrAccountsWrapper` | [`AccountMetadataSignerGetters`](../modules/types.md#accountmetadatasignergetters) | +| `hash` | `any` | +| `signature` | `any` | +| `address` | `string` | + +#### Returns + +`Promise`\<`boolean`\> + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:91](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L91) diff --git a/docs/sdk/metadata-claims/enums/types.ClaimTypes.md b/docs/sdk/metadata-claims/enums/types.ClaimTypes.md new file mode 100644 index 0000000000..3d49491162 --- /dev/null +++ b/docs/sdk/metadata-claims/enums/types.ClaimTypes.md @@ -0,0 +1,87 @@ +[@celo/metadata-claims](../README.md) / [types](../modules/types.md) / ClaimTypes + +# Enumeration: ClaimTypes + +[types](../modules/types.md).ClaimTypes + +## Table of contents + +### Enumeration Members + +- [ACCOUNT](types.ClaimTypes.md#account) +- [DOMAIN](types.ClaimTypes.md#domain) +- [KEYBASE](types.ClaimTypes.md#keybase) +- [NAME](types.ClaimTypes.md#name) +- [PROFILE\_PICTURE](types.ClaimTypes.md#profile_picture) +- [STORAGE](types.ClaimTypes.md#storage) +- [TWITTER](types.ClaimTypes.md#twitter) + +## Enumeration Members + +### ACCOUNT + +• **ACCOUNT** = ``"ACCOUNT"`` + +#### Defined in + +[packages/sdk/metadata-claims/src/types.ts:12](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/types.ts#L12) + +___ + +### DOMAIN + +• **DOMAIN** = ``"DOMAIN"`` + +#### Defined in + +[packages/sdk/metadata-claims/src/types.ts:13](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/types.ts#L13) + +___ + +### KEYBASE + +• **KEYBASE** = ``"KEYBASE"`` + +#### Defined in + +[packages/sdk/metadata-claims/src/types.ts:14](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/types.ts#L14) + +___ + +### NAME + +• **NAME** = ``"NAME"`` + +#### Defined in + +[packages/sdk/metadata-claims/src/types.ts:15](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/types.ts#L15) + +___ + +### PROFILE\_PICTURE + +• **PROFILE\_PICTURE** = ``"PROFILE_PICTURE"`` + +#### Defined in + +[packages/sdk/metadata-claims/src/types.ts:16](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/types.ts#L16) + +___ + +### STORAGE + +• **STORAGE** = ``"STORAGE"`` + +#### Defined in + +[packages/sdk/metadata-claims/src/types.ts:17](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/types.ts#L17) + +___ + +### TWITTER + +• **TWITTER** = ``"TWITTER"`` + +#### Defined in + +[packages/sdk/metadata-claims/src/types.ts:18](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/types.ts#L18) diff --git a/docs/sdk/metadata-claims/modules/account.md b/docs/sdk/metadata-claims/modules/account.md new file mode 100644 index 0000000000..e08eb69e82 --- /dev/null +++ b/docs/sdk/metadata-claims/modules/account.md @@ -0,0 +1,78 @@ +[@celo/metadata-claims](../README.md) / account + +# Module: account + +## Table of contents + +### Type Aliases + +- [AccountClaim](account.md#accountclaim) + +### Variables + +- [AccountClaimType](account.md#accountclaimtype) +- [AccountClaimTypeH](account.md#accountclaimtypeh) + +### Functions + +- [createAccountClaim](account.md#createaccountclaim) + +## Type Aliases + +### AccountClaim + +Ƭ **AccountClaim**: `t.TypeOf`\ + +#### Defined in + +[packages/sdk/metadata-claims/src/account.ts:35](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/account.ts#L35) + +## Variables + +### AccountClaimType + +• `Const` **AccountClaimType**: `Type`\<\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/types.ClaimTypes.md#account) }, `any`, `unknown`\> + +#### Defined in + +[packages/sdk/metadata-claims/src/account.ts:19](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/account.ts#L19) + +___ + +### AccountClaimTypeH + +• `Const` **AccountClaimTypeH**: `TypeC`\<\{ `address`: `Type`\<`string`, `string`, `unknown`\> = AddressType; `publicKey`: `UnionC`\<[`UndefinedC`, `Type`\<`string`, `string`, `unknown`\>]\> ; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`ACCOUNT`](../enums/types.ClaimTypes.md#account)\> }\> + +Provide the type minus the validation that the public key and address are derived from the same private key + +#### Defined in + +[packages/sdk/metadata-claims/src/account.ts:11](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/account.ts#L11) + +## Functions + +### createAccountClaim + +▸ **createAccountClaim**(`address`, `publicKey?`): `Object` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `address` | `string` | +| `publicKey?` | `string` | + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `address` | `string` | +| `publicKey` | `undefined` \| `string` | +| `timestamp` | `number` | +| `type` | [`ACCOUNT`](../enums/types.ClaimTypes.md#account) | + +#### Defined in + +[packages/sdk/metadata-claims/src/account.ts:37](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/account.ts#L37) diff --git a/docs/sdk/metadata-claims/modules/claim.md b/docs/sdk/metadata-claims/modules/claim.md new file mode 100644 index 0000000000..8bfc752c44 --- /dev/null +++ b/docs/sdk/metadata-claims/modules/claim.md @@ -0,0 +1,314 @@ +[@celo/metadata-claims](../README.md) / claim + +# Module: claim + +## Table of contents + +### Type Aliases + +- [Claim](claim.md#claim) +- [ClaimPayload](claim.md#claimpayload) +- [DomainClaim](claim.md#domainclaim) +- [KeybaseClaim](claim.md#keybaseclaim) +- [NameClaim](claim.md#nameclaim) +- [StorageClaim](claim.md#storageclaim) + +### Variables + +- [ClaimType](claim.md#claimtype) +- [DOMAIN\_TXT\_HEADER](claim.md#domain_txt_header) +- [KeybaseClaimType](claim.md#keybaseclaimtype) +- [SignedClaimType](claim.md#signedclaimtype) + +### Functions + +- [createDomainClaim](claim.md#createdomainclaim) +- [createNameClaim](claim.md#createnameclaim) +- [createStorageClaim](claim.md#createstorageclaim) +- [hashOfClaim](claim.md#hashofclaim) +- [hashOfClaims](claim.md#hashofclaims) +- [isOfType](claim.md#isoftype) +- [serializeClaim](claim.md#serializeclaim) + +## Type Aliases + +### Claim + +Ƭ **Claim**: [`DomainClaim`](claim.md#domainclaim) \| [`KeybaseClaim`](claim.md#keybaseclaim) \| [`NameClaim`](claim.md#nameclaim) \| [`AccountClaim`](account.md#accountclaim) \| [`StorageClaim`](claim.md#storageclaim) + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:50](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L50) + +___ + +### ClaimPayload + +Ƭ **ClaimPayload**\<`K`\>: `K` extends typeof [`DOMAIN`](../enums/types.ClaimTypes.md#domain) ? [`DomainClaim`](claim.md#domainclaim) : `K` extends typeof [`NAME`](../enums/types.ClaimTypes.md#name) ? [`NameClaim`](claim.md#nameclaim) : `K` extends typeof [`KEYBASE`](../enums/types.ClaimTypes.md#keybase) ? [`KeybaseClaim`](claim.md#keybaseclaim) : `K` extends typeof [`ACCOUNT`](../enums/types.ClaimTypes.md#account) ? [`AccountClaim`](account.md#accountclaim) : [`StorageClaim`](claim.md#storageclaim) + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `K` | extends [`ClaimTypes`](../enums/types.ClaimTypes.md) | + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:52](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L52) + +___ + +### DomainClaim + +Ƭ **DomainClaim**: `t.TypeOf`\ + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:47](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L47) + +___ + +### KeybaseClaim + +Ƭ **KeybaseClaim**: `t.TypeOf`\ + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:12](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L12) + +___ + +### NameClaim + +Ƭ **NameClaim**: `t.TypeOf`\ + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:48](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L48) + +___ + +### StorageClaim + +Ƭ **StorageClaim**: `t.TypeOf`\ + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:49](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L49) + +## Variables + +### ClaimType + +• `Const` **ClaimType**: `UnionC`\<[`Type`\<\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/types.ClaimTypes.md#account) }, `any`, `unknown`\>, `TypeC`\<\{ `domain`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`DOMAIN`](../enums/types.ClaimTypes.md#domain)\> }\>, `TypeC`\<\{ `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`KEYBASE`](../enums/types.ClaimTypes.md#keybase)\> ; `username`: `StringC` = t.string }\>, `TypeC`\<\{ `name`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`NAME`](../enums/types.ClaimTypes.md#name)\> }\>, `TypeC`\<\{ `address`: `StringC` = t.string; `filteredDataPaths`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`STORAGE`](../enums/types.ClaimTypes.md#storage)\> }\>]\> + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:33](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L33) + +___ + +### DOMAIN\_TXT\_HEADER + +• `Const` **DOMAIN\_TXT\_HEADER**: ``"celo-site-verification"`` + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:46](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L46) + +___ + +### KeybaseClaimType + +• `Const` **KeybaseClaimType**: `TypeC`\<\{ `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`KEYBASE`](../enums/types.ClaimTypes.md#keybase)\> ; `username`: `StringC` = t.string }\> + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:6](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L6) + +___ + +### SignedClaimType + +• `Const` **SignedClaimType**: `TypeC`\<\{ `claim`: `UnionC`\<[`Type`\<\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/types.ClaimTypes.md#account) }, `any`, `unknown`\>, `TypeC`\<\{ `domain`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`DOMAIN`](../enums/types.ClaimTypes.md#domain)\> }\>, `TypeC`\<\{ `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`KEYBASE`](../enums/types.ClaimTypes.md#keybase)\> ; `username`: `StringC` = t.string }\>, `TypeC`\<\{ `name`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`NAME`](../enums/types.ClaimTypes.md#name)\> }\>, `TypeC`\<\{ `address`: `StringC` = t.string; `filteredDataPaths`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`STORAGE`](../enums/types.ClaimTypes.md#storage)\> }\>]\> = ClaimType; `signature`: `StringC` = SignatureType }\> + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:41](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L41) + +## Functions + +### createDomainClaim + +▸ **createDomainClaim**(`domain`): `Object` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `domain` | `string` | + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `domain` | `string` | +| `timestamp` | `number` | +| `type` | [`DOMAIN`](../enums/types.ClaimTypes.md#domain) | + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:87](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L87) + +___ + +### createNameClaim + +▸ **createNameClaim**(`name`): `Object` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `timestamp` | `number` | +| `type` | [`NAME`](../enums/types.ClaimTypes.md#name) | + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:81](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L81) + +___ + +### createStorageClaim + +▸ **createStorageClaim**(`storageURL`): `Object` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `storageURL` | `string` | + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `address` | `string` | +| `filteredDataPaths` | `string` | +| `timestamp` | `number` | +| `type` | [`STORAGE`](../enums/types.ClaimTypes.md#storage) | + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:93](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L93) + +___ + +### hashOfClaim + +▸ **hashOfClaim**(`claim`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `claim` | [`Claim`](claim.md#claim) | + +#### Returns + +`string` + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:68](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L68) + +___ + +### hashOfClaims + +▸ **hashOfClaims**(`claims`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `claims` | [`Claim`](claim.md#claim)[] | + +#### Returns + +`string` + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:72](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L72) + +___ + +### isOfType + +▸ **isOfType**\<`K`\>(`type`): (`data`: [`Claim`](claim.md#claim)) => data is ClaimPayload\ + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `K` | extends [`ClaimTypes`](../enums/types.ClaimTypes.md) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `type` | `K` | + +#### Returns + +`fn` + +▸ (`data`): data is ClaimPayload\ + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `data` | [`Claim`](claim.md#claim) | + +##### Returns + +data is ClaimPayload\ + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:64](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L64) + +___ + +### serializeClaim + +▸ **serializeClaim**(`claim`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `claim` | [`Claim`](claim.md#claim) | + +#### Returns + +`string` + +#### Defined in + +[packages/sdk/metadata-claims/src/claim.ts:77](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/claim.ts#L77) diff --git a/docs/sdk/metadata-claims/modules/index.md b/docs/sdk/metadata-claims/modules/index.md new file mode 100644 index 0000000000..022ba12067 --- /dev/null +++ b/docs/sdk/metadata-claims/modules/index.md @@ -0,0 +1,50 @@ +[@celo/metadata-claims](../README.md) / index + +# Module: index + +## Table of contents + +### References + +- [Claim](index.md#claim) +- [ClaimTypes](index.md#claimtypes) +- [IdentityMetadata](index.md#identitymetadata) +- [IdentityMetadataType](index.md#identitymetadatatype) +- [IdentityMetadataWrapper](index.md#identitymetadatawrapper) +- [createNameClaim](index.md#createnameclaim) + +## References + +### Claim + +Re-exports [Claim](claim.md#claim) + +___ + +### ClaimTypes + +Re-exports [ClaimTypes](../enums/types.ClaimTypes.md) + +___ + +### IdentityMetadata + +Re-exports [IdentityMetadata](metadata.md#identitymetadata) + +___ + +### IdentityMetadataType + +Re-exports [IdentityMetadataType](metadata.md#identitymetadatatype) + +___ + +### IdentityMetadataWrapper + +Re-exports [IdentityMetadataWrapper](../classes/metadata.IdentityMetadataWrapper.md) + +___ + +### createNameClaim + +Re-exports [createNameClaim](claim.md#createnameclaim) diff --git a/docs/sdk/metadata-claims/modules/keybase.md b/docs/sdk/metadata-claims/modules/keybase.md new file mode 100644 index 0000000000..c6c937f614 --- /dev/null +++ b/docs/sdk/metadata-claims/modules/keybase.md @@ -0,0 +1,125 @@ +[@celo/metadata-claims](../README.md) / keybase + +# Module: keybase + +## Table of contents + +### Variables + +- [keybaseFilePathToProof](keybase.md#keybasefilepathtoproof) + +### Functions + +- [createKeybaseClaim](keybase.md#createkeybaseclaim) +- [proofFileName](keybase.md#prooffilename) +- [targetURL](keybase.md#targeturl) +- [verifyKeybaseClaim](keybase.md#verifykeybaseclaim) + +## Variables + +### keybaseFilePathToProof + +• `Const` **keybaseFilePathToProof**: ``".well-known/celo/"`` + +#### Defined in + +[packages/sdk/metadata-claims/src/keybase.ts:8](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/keybase.ts#L8) + +## Functions + +### createKeybaseClaim + +▸ **createKeybaseClaim**(`username`): `Object` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `username` | `string` | + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `timestamp` | `number` | +| `type` | [`KEYBASE`](../enums/types.ClaimTypes.md#keybase) | +| `username` | `string` | + +#### Defined in + +[packages/sdk/metadata-claims/src/keybase.ts:71](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/keybase.ts#L71) + +___ + +### proofFileName + +▸ **proofFileName**(`address`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `address` | `string` | + +#### Returns + +`string` + +#### Defined in + +[packages/sdk/metadata-claims/src/keybase.ts:9](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/keybase.ts#L9) + +___ + +### targetURL + +▸ **targetURL**(`username`, `address`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `username` | `string` | +| `address` | `string` | + +#### Returns + +`string` + +#### Defined in + +[packages/sdk/metadata-claims/src/keybase.ts:10](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/keybase.ts#L10) + +___ + +### verifyKeybaseClaim + +▸ **verifyKeybaseClaim**(`accountsInfoGetters`, `claim`, `signer`): `Promise`\<`string` \| `undefined`\> + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `accountsInfoGetters` | [`AccountMetadataSignerGetters`](types.md#accountmetadatasignergetters) | `undefined` | +| `claim` | `Object` | `undefined` | +| `claim.timestamp` | `number` | `TimestampType` | +| `claim.type` | [`KEYBASE`](../enums/types.ClaimTypes.md#keybase) | `undefined` | +| `claim.username` | `string` | `t.string` | +| `signer` | `string` | `undefined` | + +#### Returns + +`Promise`\<`string` \| `undefined`\> + +a human readable string with claims (non)verifiability or undefined + +**`Remarks`** + +If verification encounters an error, returns the error message as a string +otherwise returns undefined when successful + +#### Defined in + +[packages/sdk/metadata-claims/src/keybase.ts:25](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/keybase.ts#L25) diff --git a/docs/sdk/metadata-claims/modules/metadata.md b/docs/sdk/metadata-claims/modules/metadata.md new file mode 100644 index 0000000000..4a3f6d7659 --- /dev/null +++ b/docs/sdk/metadata-claims/modules/metadata.md @@ -0,0 +1,47 @@ +[@celo/metadata-claims](../README.md) / metadata + +# Module: metadata + +## Table of contents + +### References + +- [ClaimTypes](metadata.md#claimtypes) + +### Classes + +- [IdentityMetadataWrapper](../classes/metadata.IdentityMetadataWrapper.md) + +### Type Aliases + +- [IdentityMetadata](metadata.md#identitymetadata) + +### Variables + +- [IdentityMetadataType](metadata.md#identitymetadatatype) + +## References + +### ClaimTypes + +Re-exports [ClaimTypes](../enums/types.ClaimTypes.md) + +## Type Aliases + +### IdentityMetadata + +Ƭ **IdentityMetadata**: `t.TypeOf`\ + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:32](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L32) + +## Variables + +### IdentityMetadataType + +• `Const` **IdentityMetadataType**: `TypeC`\<\{ `claims`: `ArrayC`\<`UnionC`\<[`Type`\<\{ `address`: `string` = AddressType; `publicKey`: `undefined` \| `string` ; `timestamp`: `number` = TimestampType; `type`: [`ACCOUNT`](../enums/types.ClaimTypes.md#account) }, `any`, `unknown`\>, `TypeC`\<\{ `domain`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`DOMAIN`](../enums/types.ClaimTypes.md#domain)\> }\>, `TypeC`\<\{ `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`KEYBASE`](../enums/types.ClaimTypes.md#keybase)\> ; `username`: `StringC` = t.string }\>, `TypeC`\<\{ `name`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`NAME`](../enums/types.ClaimTypes.md#name)\> }\>, `TypeC`\<\{ `address`: `StringC` = t.string; `filteredDataPaths`: `StringC` = t.string; `timestamp`: `NumberC` = TimestampType; `type`: `LiteralC`\<[`STORAGE`](../enums/types.ClaimTypes.md#storage)\> }\>]\>\> ; `meta`: `TypeC`\<\{ `address`: `Type`\<`string`, `string`, `unknown`\> = AddressType; `signature`: `StringC` = SignatureType }\> = MetaType }\> + +#### Defined in + +[packages/sdk/metadata-claims/src/metadata.ts:27](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/metadata.ts#L27) diff --git a/docs/sdk/metadata-claims/modules/types.md b/docs/sdk/metadata-claims/modules/types.md new file mode 100644 index 0000000000..18e4607ffe --- /dev/null +++ b/docs/sdk/metadata-claims/modules/types.md @@ -0,0 +1,108 @@ +[@celo/metadata-claims](../README.md) / types + +# Module: types + +## Table of contents + +### Enumerations + +- [ClaimTypes](../enums/types.ClaimTypes.md) + +### Type Aliases + +- [AccountMetadataSignerGetters](types.md#accountmetadatasignergetters) +- [AccountSignerGetters](types.md#accountsignergetters) + +### Variables + +- [SINGULAR\_CLAIM\_TYPES](types.md#singular_claim_types) +- [SignatureType](types.md#signaturetype) +- [TimestampType](types.md#timestamptype) +- [VERIFIABLE\_CLAIM\_TYPES](types.md#verifiable_claim_types) + +### Functions + +- [now](types.md#now) + +## Type Aliases + +### AccountMetadataSignerGetters + +Ƭ **AccountMetadataSignerGetters**: \{ `getMetadataURL`: (`address`: `string`) => `Promise`\<`string`\> } & [`AccountSignerGetters`](types.md#accountsignergetters) + +#### Defined in + +[packages/sdk/metadata-claims/src/types.ts:31](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/types.ts#L31) + +___ + +### AccountSignerGetters + +Ƭ **AccountSignerGetters**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `getAttestationSigner` | (`address`: `Address`) => `Promise`\<`StrongAddress`\> | +| `getValidatorSigner` | (`address`: `Address`) => `Promise`\<`StrongAddress`\> | +| `getVoteSigner` | (`address`: `Address`) => `Promise`\<`StrongAddress`\> | +| `isAccount` | (`address`: `Address`) => `Promise`\<`boolean`\> | + +#### Defined in + +[packages/sdk/metadata-claims/src/types.ts:24](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/types.ts#L24) + +## Variables + +### SINGULAR\_CLAIM\_TYPES + +• `Const` **SINGULAR\_CLAIM\_TYPES**: [`ClaimTypes`](../enums/types.ClaimTypes.md)[] + +#### Defined in + +[packages/sdk/metadata-claims/src/types.ts:22](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/types.ts#L22) + +___ + +### SignatureType + +• `Const` **SignatureType**: `StringC` = `t.string` + +#### Defined in + +[packages/sdk/metadata-claims/src/types.ts:5](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/types.ts#L5) + +___ + +### TimestampType + +• `Const` **TimestampType**: `NumberC` = `t.number` + +#### Defined in + +[packages/sdk/metadata-claims/src/types.ts:6](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/types.ts#L6) + +___ + +### VERIFIABLE\_CLAIM\_TYPES + +• `Const` **VERIFIABLE\_CLAIM\_TYPES**: [`ClaimTypes`](../enums/types.ClaimTypes.md)[] + +#### Defined in + +[packages/sdk/metadata-claims/src/types.ts:21](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/types.ts#L21) + +## Functions + +### now + +▸ **now**(): `number` + +#### Returns + +`number` + +#### Defined in + +[packages/sdk/metadata-claims/src/types.ts:9](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/types.ts#L9) diff --git a/docs/sdk/metadata-claims/modules/verify.md b/docs/sdk/metadata-claims/modules/verify.md new file mode 100644 index 0000000000..e4d45ece35 --- /dev/null +++ b/docs/sdk/metadata-claims/modules/verify.md @@ -0,0 +1,94 @@ +[@celo/metadata-claims](../README.md) / verify + +# Module: verify + +## Table of contents + +### Functions + +- [verifyAccountClaim](verify.md#verifyaccountclaim) +- [verifyClaim](verify.md#verifyclaim) +- [verifyDomainRecord](verify.md#verifydomainrecord) + +## Functions + +### verifyAccountClaim + +▸ **verifyAccountClaim**(`accountMeta`, `claim`, `address`, `tries?`): `Promise`\<`undefined` \| `string`\> + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `accountMeta` | [`AccountMetadataSignerGetters`](types.md#accountmetadatasignergetters) | `undefined` | +| `claim` | `Object` | `undefined` | +| `claim.address` | `string` | `AddressType` | +| `claim.publicKey` | `undefined` \| `string` | `undefined` | +| `claim.timestamp` | `number` | `TimestampType` | +| `claim.type` | [`ACCOUNT`](../enums/types.ClaimTypes.md#account) | `undefined` | +| `address` | `string` | `undefined` | +| `tries` | `number` | `3` | + +#### Returns + +`Promise`\<`undefined` \| `string`\> + +#### Defined in + +[packages/sdk/metadata-claims/src/verify.ts:37](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/verify.ts#L37) + +___ + +### verifyClaim + +▸ **verifyClaim**(`accountMeta`, `claim`, `address`, `tries?`): `Promise`\<`undefined` \| `string`\> + +Verifies a claim made by an account, i.e. whether a claim can be verified to be correct + +#### Parameters + +| Name | Type | Default value | Description | +| :------ | :------ | :------ | :------ | +| `accountMeta` | [`AccountMetadataSignerGetters`](types.md#accountmetadatasignergetters) | `undefined` | - | +| `claim` | [`Claim`](claim.md#claim) | `undefined` | The claim to verify | +| `address` | `string` | `undefined` | The address that is making the claim | +| `tries` | `number` | `3` | - | + +#### Returns + +`Promise`\<`undefined` \| `string`\> + +If valid, returns undefined. If invalid or unable to verify, returns a string with the error + +#### Defined in + +[packages/sdk/metadata-claims/src/verify.ts:18](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/verify.ts#L18) + +___ + +### verifyDomainRecord + +▸ **verifyDomainRecord**(`accountMeta`, `claim`, `address`, `dnsResolver?`): `Promise`\<`undefined` \| `string`\> + +It verifies if a DNS domain includes in the TXT records an entry with name +`celo-site-verification` and a valid signature in base64 + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `accountMeta` | [`AccountMetadataSignerGetters`](types.md#accountmetadatasignergetters) | `undefined` | +| `claim` | `Object` | `undefined` | +| `claim.domain` | `string` | `t.string` | +| `claim.timestamp` | `number` | `TimestampType` | +| `claim.type` | [`DOMAIN`](../enums/types.ClaimTypes.md#domain) | `undefined` | +| `address` | `string` | `undefined` | +| `dnsResolver` | `dnsResolverFunction` | `undefined` | + +#### Returns + +`Promise`\<`undefined` \| `string`\> + +#### Defined in + +[packages/sdk/metadata-claims/src/verify.ts:76](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/metadata-claims/src/verify.ts#L76) diff --git a/packages/cli/package.json b/packages/cli/package.json index 0aa0f82e74..03c41a2b42 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -46,6 +46,7 @@ "@celo/explorer": "^5.0.12", "@celo/governance": "^5.1.3", "@celo/identity": "^5.1.2", + "@celo/metadata-claims": "^0.0.1", "@celo/phone-utils": "^6.0.3", "@celo/utils": "^7.0.0", "@celo/wallet-hsm-azure": "^6.0.1", diff --git a/packages/cli/src/commands/account/claim-account.ts b/packages/cli/src/commands/account/claim-account.ts index af67004edb..a02bea7908 100644 --- a/packages/cli/src/commands/account/claim-account.ts +++ b/packages/cli/src/commands/account/claim-account.ts @@ -1,4 +1,4 @@ -import { createAccountClaim } from '@celo/contractkit/lib/identity/claims/account' +import { createAccountClaim } from '@celo/metadata-claims/lib/account' import { Flags } from '@oclif/core' import { ClaimCommand } from '../../utils/identity' diff --git a/packages/cli/src/commands/account/claim-domain.ts b/packages/cli/src/commands/account/claim-domain.ts index 78098db383..5bc845a11b 100644 --- a/packages/cli/src/commands/account/claim-domain.ts +++ b/packages/cli/src/commands/account/claim-domain.ts @@ -1,4 +1,4 @@ -import { createDomainClaim, serializeClaim } from '@celo/contractkit/lib/identity/claims/claim' +import { createDomainClaim, serializeClaim } from '@celo/metadata-claims/lib/claim' import { Flags } from '@oclif/core' import { ClaimCommand } from '../../utils/identity' export default class ClaimDomain extends ClaimCommand { diff --git a/packages/cli/src/commands/account/claim-keybase.ts b/packages/cli/src/commands/account/claim-keybase.ts index d49c8696c6..6b1ec7aca3 100644 --- a/packages/cli/src/commands/account/claim-keybase.ts +++ b/packages/cli/src/commands/account/claim-keybase.ts @@ -1,11 +1,11 @@ -import { hashOfClaim, KeybaseClaim } from '@celo/contractkit/lib/identity/claims/claim' +import { hashOfClaim, KeybaseClaim } from '@celo/metadata-claims/lib/claim' import { createKeybaseClaim, keybaseFilePathToProof, proofFileName, targetURL, verifyKeybaseClaim, -} from '@celo/contractkit/lib/identity/claims/keybase' +} from '@celo/metadata-claims/lib/keybase' import { sleep } from '@celo/utils/lib/async' import { toChecksumAddress } from '@ethereumjs/util' @@ -14,7 +14,7 @@ import { writeFileSync } from 'fs' import { tmpdir } from 'os' import { binaryPrompt } from '../../utils/cli' import { commandExists, execCmdWithError, execWith0Exit } from '../../utils/exec' -import { ClaimCommand } from '../../utils/identity' +import { ClaimCommand, kitToAccountMetaSigners } from '../../utils/identity' export default class ClaimKeybase extends ClaimCommand { static description = 'Claim a keybase username and add the claim to a local metadata file' static flags = { @@ -73,7 +73,8 @@ export default class ClaimKeybase extends ClaimCommand { // Wait for changes to propagate await sleep(3000) const kit = await this.getKit() - const verificationError = await verifyKeybaseClaim(kit, claim, address) + const accountsInfoGetters = await kitToAccountMetaSigners(kit) + const verificationError = await verifyKeybaseClaim(accountsInfoGetters, claim, address) if (verificationError) { throw new Error(`Claim is not verifiable: ${verificationError}`) } diff --git a/packages/cli/src/commands/account/claim-name.ts b/packages/cli/src/commands/account/claim-name.ts index b6f8c6f27a..9b4f040a5a 100644 --- a/packages/cli/src/commands/account/claim-name.ts +++ b/packages/cli/src/commands/account/claim-name.ts @@ -1,4 +1,4 @@ -import { createNameClaim } from '@celo/contractkit/lib/identity/claims/claim' +import { createNameClaim } from '@celo/metadata-claims' import { Flags } from '@oclif/core' import { ClaimCommand } from '../../utils/identity' export default class ClaimName extends ClaimCommand { diff --git a/packages/cli/src/commands/account/claim-storage.ts b/packages/cli/src/commands/account/claim-storage.ts index 32fcffcf04..e2587ba460 100644 --- a/packages/cli/src/commands/account/claim-storage.ts +++ b/packages/cli/src/commands/account/claim-storage.ts @@ -1,4 +1,4 @@ -import { createStorageClaim } from '@celo/contractkit/lib/identity/claims/claim' +import { createStorageClaim } from '@celo/metadata-claims/lib/claim' import { CustomFlags } from '../../utils/command' import { ClaimCommand } from '../../utils/identity' export default class ClaimStorage extends ClaimCommand { diff --git a/packages/cli/src/commands/account/claims.test.ts b/packages/cli/src/commands/account/claims.test.ts index 514ff4dca3..212ee31d22 100644 --- a/packages/cli/src/commands/account/claims.test.ts +++ b/packages/cli/src/commands/account/claims.test.ts @@ -1,6 +1,6 @@ -import { ContractKit, IdentityMetadataWrapper, newKitFromWeb3 } from '@celo/contractkit' -import { ClaimTypes } from '@celo/contractkit/lib/identity' +import { ContractKit, newKitFromWeb3 } from '@celo/contractkit' import { testWithAnvilL1 } from '@celo/dev-utils/lib/anvil-test' +import { ClaimTypes, IdentityMetadataWrapper } from '@celo/metadata-claims' import { readFileSync, writeFileSync } from 'fs' import { tmpdir } from 'os' import Web3 from 'web3' diff --git a/packages/cli/src/commands/account/create-metadata.ts b/packages/cli/src/commands/account/create-metadata.ts index 9c0fc73c77..0a8cdaefd6 100644 --- a/packages/cli/src/commands/account/create-metadata.ts +++ b/packages/cli/src/commands/account/create-metadata.ts @@ -1,4 +1,4 @@ -import { IdentityMetadataWrapper } from '@celo/contractkit' +import { IdentityMetadataWrapper } from '@celo/metadata-claims' import { writeFileSync } from 'fs' import { CustomArgs } from '../../utils/command' import { ClaimCommand } from '../../utils/identity' diff --git a/packages/cli/src/commands/account/get-metadata.ts b/packages/cli/src/commands/account/get-metadata.ts index 8a7c1f597c..ee8c0d43d4 100644 --- a/packages/cli/src/commands/account/get-metadata.ts +++ b/packages/cli/src/commands/account/get-metadata.ts @@ -1,4 +1,4 @@ -import { IdentityMetadataWrapper } from '@celo/contractkit' +import { IdentityMetadataWrapper } from '@celo/metadata-claims' import { ux } from '@oclif/core' import { BaseCommand } from '../../base' diff --git a/packages/cli/src/commands/account/register-metadata.ts b/packages/cli/src/commands/account/register-metadata.ts index e884b52c6f..35c1340b4c 100644 --- a/packages/cli/src/commands/account/register-metadata.ts +++ b/packages/cli/src/commands/account/register-metadata.ts @@ -1,4 +1,4 @@ -import { IdentityMetadataWrapper } from '@celo/contractkit' +import { IdentityMetadataWrapper } from '@celo/metadata-claims' import { Flags, ux } from '@oclif/core' import { BaseCommand } from '../../base' diff --git a/packages/cli/src/commands/account/show-claimed-accounts.ts b/packages/cli/src/commands/account/show-claimed-accounts.ts index c33c4220bf..5d6e6673b2 100644 --- a/packages/cli/src/commands/account/show-claimed-accounts.ts +++ b/packages/cli/src/commands/account/show-claimed-accounts.ts @@ -1,12 +1,13 @@ -import { ContractKit, IdentityMetadataWrapper } from '@celo/contractkit' -import { ClaimTypes } from '@celo/contractkit/lib/identity' -import { AccountClaim } from '@celo/contractkit/lib/identity/claims/account' -import { verifyAccountClaim } from '@celo/contractkit/lib/identity/claims/verify' +import { ContractKit } from '@celo/contractkit' +import { ClaimTypes, IdentityMetadataWrapper } from '@celo/metadata-claims' +import { AccountClaim } from '@celo/metadata-claims/lib/account' +import { verifyAccountClaim } from '@celo/metadata-claims/lib/verify' import { ensureLeading0x } from '@celo/utils/lib/address' import { notEmpty } from '@celo/utils/lib/collections' import { BaseCommand } from '../../base' import { printValueMap } from '../../utils/cli' import { CustomArgs } from '../../utils/command' +import { kitToAccountMetaSigners } from '../../utils/identity' async function getMetadata(kit: ContractKit, address: string) { const accounts = await kit.contracts.getAccounts() @@ -26,8 +27,10 @@ async function getClaims( address: string, data: IdentityMetadataWrapper ): Promise { + const accountsInfoGetters = await kitToAccountMetaSigners(kit) + const getClaim = async (claim: AccountClaim) => { - const error = await verifyAccountClaim(kit, claim, ensureLeading0x(address)) + const error = await verifyAccountClaim(accountsInfoGetters, claim, ensureLeading0x(address)) return error ? null : claim.address.toLowerCase() } const res = (await Promise.all(data.filterClaims(ClaimTypes.ACCOUNT).map(getClaim))).filter( diff --git a/packages/cli/src/commands/account/show-metadata.ts b/packages/cli/src/commands/account/show-metadata.ts index aceeb2285d..baf7da3b9f 100644 --- a/packages/cli/src/commands/account/show-metadata.ts +++ b/packages/cli/src/commands/account/show-metadata.ts @@ -1,4 +1,4 @@ -import { IdentityMetadataWrapper } from '@celo/contractkit' +import { IdentityMetadataWrapper } from '@celo/metadata-claims' import { ux } from '@oclif/core' import { BaseCommand } from '../../base' diff --git a/packages/cli/src/utils/identity.ts b/packages/cli/src/utils/identity.ts index e86e85c44b..e03a77d12b 100644 --- a/packages/cli/src/utils/identity.ts +++ b/packages/cli/src/utils/identity.ts @@ -1,8 +1,12 @@ import { ContractKit } from '@celo/contractkit' -import { ClaimTypes, IdentityMetadataWrapper } from '@celo/contractkit/lib/identity' -import { Claim } from '@celo/contractkit/lib/identity/claims/claim' -import { now, VERIFIABLE_CLAIM_TYPES } from '@celo/contractkit/lib/identity/claims/types' -import { verifyClaim } from '@celo/contractkit/lib/identity/claims/verify' +import { ClaimTypes, IdentityMetadataWrapper } from '@celo/metadata-claims' +import { Claim } from '@celo/metadata-claims/lib/claim' +import { + AccountMetadataSignerGetters, + now, + VERIFIABLE_CLAIM_TYPES, +} from '@celo/metadata-claims/lib/types' +import { verifyClaim } from '@celo/metadata-claims/lib/verify' import { eqAddress } from '@celo/utils/lib/address' import { concurrentMap } from '@celo/utils/lib/async' import { NativeSigner } from '@celo/utils/lib/signatureUtils' @@ -104,14 +108,31 @@ const fromNow = (timeInSeconds: number) => { return `${humanizeDuration((now() - timeInSeconds) * 1000)} ago` } +export async function kitToAccountMetaSigners( + kit: ContractKit +): Promise { + const accountsWrapper = await kit.contracts.getAccounts() + + return { + isAccount: (address) => accountsWrapper.isAccount(address), + getMetadataURL: (address) => accountsWrapper.getMetadataURL(address) as Promise, + getVoteSigner: (address) => accountsWrapper.getVoteSigner(address), + getValidatorSigner: (address) => accountsWrapper.getValidatorSigner(address), + getAttestationSigner: (address) => accountsWrapper.getAttestationSigner(address), + } +} + export const displayMetadata = async ( metadata: IdentityMetadataWrapper, kit: ContractKit, tableFlags: object = {} ) => { + const accountsInfoGetters = await kitToAccountMetaSigners(kit) const data = await concurrentMap(5, metadata.claims, async (claim) => { const verifiable = VERIFIABLE_CLAIM_TYPES.includes(claim.type) - const status = verifiable ? await verifyClaim(kit, claim, metadata.data.meta.address) : 'N/A' + const status = verifiable + ? await verifyClaim(accountsInfoGetters, claim, metadata.data.meta.address) + : 'N/A' let extra = '' switch (claim.type) { case ClaimTypes.DOMAIN: diff --git a/packages/sdk/contractkit/package.json b/packages/sdk/contractkit/package.json index 88626d89dd..d6583f07df 100644 --- a/packages/sdk/contractkit/package.json +++ b/packages/sdk/contractkit/package.json @@ -35,10 +35,8 @@ "@types/bn.js": "^5.1.0", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", - "cross-fetch": "3.1.5", "debug": "^4.1.1", "fp-ts": "2.1.1", - "io-ts": "2.0.1", "semver": "^7.3.5", "web3": "1.10.4", "web3-core-helpers": "1.10.4" @@ -52,6 +50,7 @@ "@types/debug": "^4.1.5", "@types/node": "18.7.16", "bn.js": "^5.1.0", + "cross-fetch": "3.1.5", "fetch-mock": "^10.0.7", "ganache": "npm:@celo/ganache@7.8.0-unofficial.0", "jest": "^29.7.0", diff --git a/packages/sdk/contractkit/src/identity/index.ts b/packages/sdk/contractkit/src/identity/index.ts deleted file mode 100644 index 1402164045..0000000000 --- a/packages/sdk/contractkit/src/identity/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './metadata' diff --git a/packages/sdk/contractkit/src/index.ts b/packages/sdk/contractkit/src/index.ts index 2d650761cb..36785b180a 100644 --- a/packages/sdk/contractkit/src/index.ts +++ b/packages/sdk/contractkit/src/index.ts @@ -7,7 +7,6 @@ export { CeloTokenContract, RegisteredContracts, } from './base' -export { CeloTokens, CeloTokenType, StableToken, Token } from './celo-tokens' -export { IdentityMetadataWrapper } from './identity' +export { CeloTokenType, CeloTokens, StableToken, Token } from './celo-tokens' export * from './kit' export * from './proxy' diff --git a/packages/sdk/metadata-claims/.eslintrc.js b/packages/sdk/metadata-claims/.eslintrc.js new file mode 100644 index 0000000000..cce34ed29b --- /dev/null +++ b/packages/sdk/metadata-claims/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: '../../../.eslintrc.js', +} diff --git a/packages/sdk/metadata-claims/README.md b/packages/sdk/metadata-claims/README.md new file mode 100644 index 0000000000..bcdf1f75d6 --- /dev/null +++ b/packages/sdk/metadata-claims/README.md @@ -0,0 +1 @@ +# metadata-claims diff --git a/packages/sdk/metadata-claims/eslint.tsconfig.json b/packages/sdk/metadata-claims/eslint.tsconfig.json new file mode 100644 index 0000000000..a8d4317b49 --- /dev/null +++ b/packages/sdk/metadata-claims/eslint.tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": [] +} diff --git a/packages/sdk/metadata-claims/jest.config.js b/packages/sdk/metadata-claims/jest.config.js new file mode 100644 index 0000000000..cee0882178 --- /dev/null +++ b/packages/sdk/metadata-claims/jest.config.js @@ -0,0 +1,8 @@ +module.exports = { + preset: 'ts-jest', + testMatch: ['/src/**/?(*.)test.ts'], + setupFilesAfterEnv: ['@celo/dev-utils/lib/matchers', '/jestSetup.ts'], + // globalSetup: '/src/test-utils/setup.global.ts', + // globalTeardown: '/src/test-utils/teardown.global.ts', + verbose: true, +} diff --git a/packages/sdk/metadata-claims/jestSetup.ts b/packages/sdk/metadata-claims/jestSetup.ts new file mode 100644 index 0000000000..69170cbb36 --- /dev/null +++ b/packages/sdk/metadata-claims/jestSetup.ts @@ -0,0 +1,12 @@ +import { URL } from 'node:url' +// @ts-ignore +global.URL = URL + +// @ts-ignore +const fetchMock = require('fetch-mock') + +const fetchMockSandbox = fetchMock.sandbox() +jest.mock('cross-fetch', () => fetchMockSandbox) + +// @ts-ignore +global.fetchMock = fetchMockSandbox diff --git a/packages/sdk/metadata-claims/package.json b/packages/sdk/metadata-claims/package.json new file mode 100644 index 0000000000..2b707ca9cd --- /dev/null +++ b/packages/sdk/metadata-claims/package.json @@ -0,0 +1,46 @@ +{ + "name": "@celo/metadata-claims", + "version": "0.0.1", + "author": "cLabs", + "license": "Apache-2.0", + "repository": "https://github.com/celo-org/developer-tooling/tree/master/packages/sdk/metadata-claims", + "keywords": [ + "celo", + "identity", + "metadata", + "claims", + "identifiers" + ], + "main": "./lib/index.js", + "types": "./lib/index.d.ts", + "sideEffects": false, + "scripts": { + "build": "yarn tsc -b .", + "clean": "rm -rf lib ; yarn run tsc -b . --clean", + "prepublishOnly": "yarn build", + "docs": "yarn run --top-level typedoc", + "test": "NODE_OPTIONS=--experimental-vm-modules yarn run --top-level jest --runInBand --forceExit", + "test-anvil": "RUN_GANACHE_TESTS=false RUN_ANVIL_TESTS=true NODE_OPTIONS=--experimental-vm-modules yarn run --top-level jest --forceExit", + "lint": "yarn run --top-level eslint -c .eslintrc.js " + }, + "dependencies": { + "@celo/base": "^6.1.0", + "@celo/utils": "^7.0.0", + "cross-fetch": "3.1.5", + "fp-ts": "2.1.1", + "io-ts": "2.0.1" + }, + "devDependencies": { + "@celo/celo-devchain": "^7.0.0", + "@celo/contractkit": "workspace:^", + "@celo/dev-utils": "0.0.5", + "@celo/odis-identifiers": "^1.0.1", + "@celo/typescript": "workspace:^", + "@types/node": "18.7.6", + "fetch-mock": "^10.0.7", + "jest": "^29.7.0", + "ts-node": "^10.9.1", + "typescript": "5.3.3" + }, + "packageManager": "yarn@4.0.2" +} diff --git a/packages/sdk/contractkit/src/identity/claims/account.test.ts b/packages/sdk/metadata-claims/src/account.test.ts similarity index 81% rename from packages/sdk/contractkit/src/identity/claims/account.test.ts rename to packages/sdk/metadata-claims/src/account.test.ts index 0b204dac8e..597cfac0fc 100644 --- a/packages/sdk/contractkit/src/identity/claims/account.test.ts +++ b/packages/sdk/metadata-claims/src/account.test.ts @@ -1,11 +1,12 @@ +import { newKitFromWeb3 } from '@celo/contractkit' import { testWithAnvilL1 } from '@celo/dev-utils/lib/anvil-test' import { ACCOUNT_ADDRESSES, ACCOUNT_PRIVATE_KEYS } from '@celo/dev-utils/lib/ganache-setup' import { privateKeyToAddress, privateKeyToPublicKey } from '@celo/utils/lib/address' import { NativeSigner } from '@celo/utils/lib/signatureUtils' -import { newKitFromWeb3 } from '../../kit' -import { IdentityMetadataWrapper } from '../metadata' import { createAccountClaim } from './account' import { Claim } from './claim' +import { IdentityMetadataWrapper } from './metadata' +import { AccountMetadataSignerGetters } from './types' import { verifyClaim } from './verify' testWithAnvilL1('Account claims', (web3) => { @@ -55,6 +56,7 @@ testWithAnvilL1('Account claims', (web3) => { describe('verifying', () => { let claim: Claim let otherMetadata: IdentityMetadataWrapper + let addressInfoGetters: AccountMetadataSignerGetters // Mocking static function calls was too difficult, so manually mocking it const originalFetchFromURLImplementation = IdentityMetadataWrapper.fetchFromURL @@ -74,6 +76,15 @@ testWithAnvilL1('Account claims', (web3) => { const metadata = IdentityMetadataWrapper.fromEmpty(address) claim = createAccountClaim(otherAddress) await metadata.addClaim(claim, NativeSigner(kit.connection.sign, address)) + + const accountsContract = await kit.contracts.getAccounts() + addressInfoGetters = { + isAccount: (address) => accountsContract.isAccount(address), + getMetadataURL: (address) => accountsContract.getMetadataURL(address) as Promise, + getVoteSigner: (address) => accountsContract.getVoteSigner(address), + getValidatorSigner: (address) => accountsContract.getValidatorSigner(address), + getAttestationSigner: (address) => accountsContract.getAttestationSigner(address), + } }) afterEach(() => { @@ -88,14 +99,14 @@ testWithAnvilL1('Account claims', (web3) => { }) it('indicates that the metadata url could not be retrieved', async () => { - const error = await verifyClaim(kit, claim, address) + const error = await verifyClaim(addressInfoGetters, claim, address) expect(error).toContain('could not be retrieved') }) }) describe('when the metadata URL is set, but does not contain the address claim', () => { it('indicates that the metadata does not contain the counter claim', async () => { - const error = await verifyClaim(kit, claim, address) + const error = await verifyClaim(addressInfoGetters, claim, address) expect(error).toContain('did not claim') }) }) @@ -109,7 +120,7 @@ testWithAnvilL1('Account claims', (web3) => { }) it('returns undefined succesfully', async () => { - const error = await verifyClaim(kit, claim, address) + const error = await verifyClaim(addressInfoGetters, claim, address) expect(error).toBeUndefined() }) }) diff --git a/packages/sdk/contractkit/src/identity/claims/account.ts b/packages/sdk/metadata-claims/src/account.ts similarity index 100% rename from packages/sdk/contractkit/src/identity/claims/account.ts rename to packages/sdk/metadata-claims/src/account.ts diff --git a/packages/sdk/contractkit/src/identity/claims/claim.ts b/packages/sdk/metadata-claims/src/claim.ts similarity index 100% rename from packages/sdk/contractkit/src/identity/claims/claim.ts rename to packages/sdk/metadata-claims/src/claim.ts diff --git a/packages/sdk/contractkit/src/identity/claims/domain.test.ts b/packages/sdk/metadata-claims/src/domain.test.ts similarity index 70% rename from packages/sdk/contractkit/src/identity/claims/domain.test.ts rename to packages/sdk/metadata-claims/src/domain.test.ts index 076e703f42..975d27906b 100644 --- a/packages/sdk/contractkit/src/identity/claims/domain.test.ts +++ b/packages/sdk/metadata-claims/src/domain.test.ts @@ -1,13 +1,16 @@ +import { NULL_ADDRESS } from '@celo/base' +import { newKitFromWeb3 } from '@celo/contractkit' import { testWithAnvilL1 } from '@celo/dev-utils/lib/anvil-test' import { ACCOUNT_ADDRESSES } from '@celo/dev-utils/lib/ganache-setup' import { NativeSigner, Signer, verifySignature } from '@celo/utils/lib/signatureUtils' -import { newKitFromWeb3 } from '../../kit' -import { IdentityMetadataWrapper } from '../metadata' import { DomainClaim, createDomainClaim, serializeClaim } from './claim' +import { IdentityMetadataWrapper } from './metadata' +import type { AccountMetadataSignerGetters } from './types' import { verifyDomainRecord } from './verify' testWithAnvilL1('Domain claims', (web3) => { const kit = newKitFromWeb3(web3) + const address = ACCOUNT_ADDRESSES[0] const secondAddress = ACCOUNT_ADDRESSES[1] @@ -36,7 +39,6 @@ testWithAnvilL1('Domain claims', (web3) => { ]) }, 100) } - beforeEach(async () => { signer = NativeSigner(kit.connection.sign, address) metadata = IdentityMetadataWrapper.fromEmpty(address) @@ -79,13 +81,31 @@ testWithAnvilL1('Domain claims', (web3) => { }) describe('when the metadata URL is set', () => { + let addressInfoGetters: AccountMetadataSignerGetters = { + isAccount: async (_) => false, + getVoteSigner: async (_) => NULL_ADDRESS, + getValidatorSigner: async (_) => NULL_ADDRESS, + getAttestationSigner: async (_) => NULL_ADDRESS, + getMetadataURL: async (address) => `https://example.com/${address}.json`, + } + + beforeEach(async () => { + const accountsContract = await kit.contracts.getAccounts() + addressInfoGetters = { + isAccount: (address) => accountsContract.isAccount(address), + getMetadataURL: (address) => accountsContract.getMetadataURL(address), + getVoteSigner: (address) => accountsContract.getVoteSigner(address), + getValidatorSigner: (address) => accountsContract.getValidatorSigner(address), + getAttestationSigner: (address) => accountsContract.getAttestationSigner(address), + } + }) it('indicates that the metadata contain the right claim', async () => { - const output = await verifyDomainRecord(kit, claim, address, dnsResolver) + const output = await verifyDomainRecord(addressInfoGetters, claim, address, dnsResolver) expect(output).toBeUndefined() }) it('indicates that the metadata does not contain the proper domain claim', async () => { - const error = await verifyDomainRecord(kit, claim, address) + const error = await verifyDomainRecord(addressInfoGetters, claim, address) expect(error).toContain('Unable to verify domain claim') }) }) diff --git a/packages/sdk/metadata-claims/src/index.ts b/packages/sdk/metadata-claims/src/index.ts new file mode 100644 index 0000000000..668469e41a --- /dev/null +++ b/packages/sdk/metadata-claims/src/index.ts @@ -0,0 +1,2 @@ +export { Claim, createNameClaim } from './claim' +export * from './metadata' diff --git a/packages/sdk/contractkit/src/identity/claims/keybase.ts b/packages/sdk/metadata-claims/src/keybase.ts similarity index 89% rename from packages/sdk/contractkit/src/identity/claims/keybase.ts rename to packages/sdk/metadata-claims/src/keybase.ts index 25ed806760..118bf419be 100644 --- a/packages/sdk/contractkit/src/identity/claims/keybase.ts +++ b/packages/sdk/metadata-claims/src/keybase.ts @@ -1,10 +1,9 @@ import { Address } from '@celo/base/lib/address' import fetch from 'cross-fetch' import { isLeft } from 'fp-ts/lib/Either' -import { ContractKit } from '../../kit' -import { IdentityMetadataWrapper } from '../metadata' import { hashOfClaim, KeybaseClaim, KeybaseClaimType, SignedClaimType } from './claim' -import { ClaimTypes, now } from './types' +import { IdentityMetadataWrapper } from './metadata' +import { AccountMetadataSignerGetters, ClaimTypes, now } from './types' export const keybaseFilePathToProof = `.well-known/celo/` export const proofFileName = (address: Address) => `verify-${address}.json` @@ -17,14 +16,14 @@ export const targetURL = (username: string, address: Address) => * If verification encounters an error, returns the error message as a string * otherwise returns undefined when successful * - * @param kit + * @param accountsInfoGetters * @param claim * @param signer * @returns a human readable string with claims (non)verifiability or undefined */ export async function verifyKeybaseClaim( - kit: ContractKit, + accountsInfoGetters: AccountMetadataSignerGetters, claim: KeybaseClaim, signer: Address ): Promise { @@ -44,7 +43,7 @@ export async function verifyKeybaseClaim( } const hasValidSignature = await IdentityMetadataWrapper.verifySignerForAddress( - await kit.contracts.getAccounts(), + accountsInfoGetters, hashOfClaim(parsedClaim.right.claim), parsedClaim.right.signature, signer diff --git a/packages/sdk/contractkit/src/identity/metadata.test.ts b/packages/sdk/metadata-claims/src/metadata.test.ts similarity index 97% rename from packages/sdk/contractkit/src/identity/metadata.test.ts rename to packages/sdk/metadata-claims/src/metadata.test.ts index ff01ba4404..0e2c44d165 100644 --- a/packages/sdk/contractkit/src/identity/metadata.test.ts +++ b/packages/sdk/metadata-claims/src/metadata.test.ts @@ -1,9 +1,9 @@ +import { newKitFromWeb3 } from '@celo/contractkit' import { testWithAnvilL1 } from '@celo/dev-utils/lib/anvil-test' import { ACCOUNT_ADDRESSES } from '@celo/dev-utils/lib/ganache-setup' import { Address } from '@celo/utils/lib/address' import { NativeSigner } from '@celo/utils/lib/signatureUtils' -import { newKitFromWeb3 } from '../kit' -import { createNameClaim } from './claims/claim' +import { createNameClaim } from './claim' import { ClaimTypes, IdentityMetadataWrapper } from './metadata' testWithAnvilL1('Metadata', (web3) => { diff --git a/packages/sdk/contractkit/src/identity/metadata.ts b/packages/sdk/metadata-claims/src/metadata.ts similarity index 88% rename from packages/sdk/contractkit/src/identity/metadata.ts rename to packages/sdk/metadata-claims/src/metadata.ts index f1bd0977ec..e02fb20be6 100644 --- a/packages/sdk/contractkit/src/identity/metadata.ts +++ b/packages/sdk/metadata-claims/src/metadata.ts @@ -7,14 +7,17 @@ import fetch from 'cross-fetch' import { isLeft } from 'fp-ts/lib/Either' import * as t from 'io-ts' import { PathReporter } from 'io-ts/lib/PathReporter' -import { ContractKit } from '../kit' -import { AccountsWrapper } from '../wrappers/Accounts' -import { Claim, ClaimPayload, ClaimType, hashOfClaims, isOfType } from './claims/claim' -import { ClaimTypes, SINGULAR_CLAIM_TYPES } from './claims/types' +import { Claim, ClaimPayload, ClaimType, hashOfClaims, isOfType } from './claim' +import { + AccountMetadataSignerGetters, + AccountSignerGetters, + ClaimTypes, + SINGULAR_CLAIM_TYPES, +} from './types' -export { ClaimTypes } from './claims/types' +export { ClaimTypes } from './types' -type KitOrAccountsWrapper = ContractKit | AccountsWrapper +type KitOrAccountsWrapper = AccountMetadataSignerGetters const MetaType = t.type({ address: AddressType, @@ -216,13 +219,21 @@ export class IdentityMetadataWrapper { } // at first these functions required a `kit` but thats a bit heavy -// as all that is used is the Accounts Wrapper so allow either. +// as all that is used are functions on the accounts contract so allow just those functions to be passed async function getAccounts( contractKitOrAccountsWrapper: KitOrAccountsWrapper -): Promise { - if (contractKitOrAccountsWrapper instanceof AccountsWrapper) { +): Promise { + if ( + 'getVoteSigner' in contractKitOrAccountsWrapper && + 'isAccount' in contractKitOrAccountsWrapper && + 'getValidatorSigner' in contractKitOrAccountsWrapper && + 'getAttestationSigner' in contractKitOrAccountsWrapper + ) { return contractKitOrAccountsWrapper - } else { - return contractKitOrAccountsWrapper.contracts.getAccounts() } + throw new Error( + `Must pass object with the required functions: getVoteSigner, isAccount, getValidatorSigner, getAttestationSigner. Received ${JSON.stringify( + contractKitOrAccountsWrapper + )}` + ) } diff --git a/packages/sdk/contractkit/src/identity/claims/types.ts b/packages/sdk/metadata-claims/src/types.ts similarity index 52% rename from packages/sdk/contractkit/src/identity/claims/types.ts rename to packages/sdk/metadata-claims/src/types.ts index 3f9eea780f..17aa3d4928 100644 --- a/packages/sdk/contractkit/src/identity/claims/types.ts +++ b/packages/sdk/metadata-claims/src/types.ts @@ -1,5 +1,7 @@ import * as t from 'io-ts' +import type { Address, StrongAddress } from '@celo/base/lib/address' + export const SignatureType = t.string export const TimestampType = t.number @@ -18,3 +20,14 @@ export enum ClaimTypes { export const VERIFIABLE_CLAIM_TYPES = [ClaimTypes.KEYBASE, ClaimTypes.ACCOUNT, ClaimTypes.DOMAIN] export const SINGULAR_CLAIM_TYPES = [ClaimTypes.NAME] + +export type AccountSignerGetters = { + isAccount: (address: Address) => Promise + getVoteSigner: (address: Address) => Promise + getValidatorSigner: (address: Address) => Promise + getAttestationSigner: (address: Address) => Promise +} + +export type AccountMetadataSignerGetters = { + getMetadataURL: (address: string) => Promise +} & AccountSignerGetters diff --git a/packages/sdk/contractkit/src/identity/claims/verify.ts b/packages/sdk/metadata-claims/src/verify.ts similarity index 73% rename from packages/sdk/contractkit/src/identity/claims/verify.ts rename to packages/sdk/metadata-claims/src/verify.ts index 5d966c52c8..d01f1e5ae9 100644 --- a/packages/sdk/contractkit/src/identity/claims/verify.ts +++ b/packages/sdk/metadata-claims/src/verify.ts @@ -1,29 +1,33 @@ import { eqAddress } from '@celo/base/lib/address' import { isValidUrl } from '@celo/base/lib/io' -import { resolveTxt } from 'dns' -import { promisify } from 'util' -import { ContractKit } from '../..' -import { IdentityMetadataWrapper } from '../metadata' +import { resolveTxt } from 'node:dns' // TODO replace with non node specifc package +import { promisify } from 'node:util' // TODO replace with non node specifc package import { AccountClaim } from './account' import { Claim, DOMAIN_TXT_HEADER, DomainClaim, serializeClaim } from './claim' import { verifyKeybaseClaim } from './keybase' -import { ClaimTypes } from './types' +import { IdentityMetadataWrapper } from './metadata' +import { AccountMetadataSignerGetters, ClaimTypes } from './types' /** * Verifies a claim made by an account, i.e. whether a claim can be verified to be correct - * @param kit ContractKit object + * @param kit AccountMetadataSignerGetters object * @param claim The claim to verify * @param address The address that is making the claim * @returns If valid, returns undefined. If invalid or unable to verify, returns a string with the error */ -export async function verifyClaim(kit: ContractKit, claim: Claim, address: string, tries = 3) { +export async function verifyClaim( + accountMeta: AccountMetadataSignerGetters, + claim: Claim, + address: string, + tries = 3 +) { switch (claim.type) { case ClaimTypes.KEYBASE: - return verifyKeybaseClaim(kit, claim, address) + return verifyKeybaseClaim(accountMeta, claim, address) case ClaimTypes.ACCOUNT: - return verifyAccountClaim(kit, claim, address, tries) + return verifyAccountClaim(accountMeta, claim, address, tries) case ClaimTypes.DOMAIN: - return verifyDomainRecord(kit, claim, address) + return verifyDomainRecord(accountMeta, claim, address) default: break } @@ -31,12 +35,12 @@ export async function verifyClaim(kit: ContractKit, claim: Claim, address: strin } export const verifyAccountClaim = async ( - kit: ContractKit, + accountMeta: AccountMetadataSignerGetters, claim: AccountClaim, address: string, tries = 3 ) => { - const metadataURL = await (await kit.contracts.getAccounts()).getMetadataURL(claim.address) + const metadataURL = await accountMeta.getMetadataURL(claim.address) if (!isValidUrl(metadataURL)) { return `Metadata URL of ${claim.address} could not be retrieved` @@ -44,11 +48,7 @@ export const verifyAccountClaim = async ( let metadata: IdentityMetadataWrapper try { - metadata = await IdentityMetadataWrapper.fetchFromURL( - await kit.contracts.getAccounts(), - metadataURL, - tries - ) + metadata = await IdentityMetadataWrapper.fetchFromURL(accountMeta, metadataURL, tries) } catch (error: any) { return `Metadata could not be fetched for ${ claim.address @@ -74,7 +74,7 @@ type dnsResolverFunction = ( * `celo-site-verification` and a valid signature in base64 */ export const verifyDomainRecord = async ( - kit: ContractKit, + accountMeta: AccountMetadataSignerGetters, claim: DomainClaim, address: string, dnsResolver: dnsResolverFunction = resolveTxt as any @@ -89,7 +89,7 @@ export const verifyDomainRecord = async ( const signature = Buffer.from(signatureBase64, 'base64').toString('binary') if ( await IdentityMetadataWrapper.verifySignerForAddress( - await kit.contracts.getAccounts(), + accountMeta, serializeClaim(claim), signature, address diff --git a/packages/sdk/metadata-claims/tsconfig.json b/packages/sdk/metadata-claims/tsconfig.json new file mode 100644 index 0000000000..48263c9914 --- /dev/null +++ b/packages/sdk/metadata-claims/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@celo/typescript/tsconfig.library.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "lib" + }, + "include": ["src/**/*"], + "exclude": ["**/*.test.ts"] +} diff --git a/packages/sdk/metadata-claims/typedoc.json b/packages/sdk/metadata-claims/typedoc.json new file mode 100644 index 0000000000..67eadcaca4 --- /dev/null +++ b/packages/sdk/metadata-claims/typedoc.json @@ -0,0 +1,19 @@ +{ + "exclude": [ + "**/*+(index|.test).ts" + ], + "excludePrivate": true, + "excludeProtected": true, + "hideGenerator": true, + "out": "../../../docs/sdk/metadata-claims", + "gitRevision": "master", + "readme": "none", + "entryPoints": [ + "./src" + ], + "githubPages": false, + "plugin": [ + "typedoc-plugin-markdown" + ], + "entryPointStrategy": "expand" +} \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-rpc/lib/index.d.ts b/packages/sdk/wallets/wallet-rpc/lib/index.d.ts new file mode 100644 index 0000000000..e3de2bfe56 --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/index.d.ts @@ -0,0 +1,2 @@ +export * from './rpc-signer'; +export * from './rpc-wallet'; diff --git a/packages/sdk/wallets/wallet-rpc/lib/index.js b/packages/sdk/wallets/wallet-rpc/lib/index.js new file mode 100644 index 0000000000..8f88dc8f3e --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/index.js @@ -0,0 +1,19 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./rpc-signer"), exports); +__exportStar(require("./rpc-wallet"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-rpc/lib/index.js.map b/packages/sdk/wallets/wallet-rpc/lib/index.js.map new file mode 100644 index 0000000000..6d4e2d7465 --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,+CAA4B"} \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-rpc/lib/rpc-signer.d.ts b/packages/sdk/wallets/wallet-rpc/lib/rpc-signer.d.ts new file mode 100644 index 0000000000..99bcf31b6a --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/rpc-signer.d.ts @@ -0,0 +1,49 @@ +/// +import { CeloTx, EncodedTransaction, RpcCaller, Signer } from '@celo/connect'; +import { EIP712TypedData } from '@celo/utils/lib/sign-typed-data-utils'; +/** + * Implements the signer interface on top of the JSON-RPC interface. + * @deprecated https://forum.celo.org/t/deprecation-of-celo-wallet-rpc/8452 + */ +export declare class RpcSigner implements Signer { + protected rpc: RpcCaller; + protected account: string; + protected unlockBufferSeconds: number; + protected unlockTime?: number | undefined; + protected unlockDuration?: number | undefined; + /** + * Construct a new instance of the RPC signer + * + * @param rpc RPC caller instance + * @param account Account address derived from the private key to be called in init + * @param unlockBufferSeconds Number of seconds to shrink the unlocked duration by to account for + * latency and timing inconsistencies on the node + * @param unlockTime Timestamp in seconds when the signer was last unlocked + * @param unlockDuration Number of seconds that the signer was last unlocked for + * + */ + constructor(rpc: RpcCaller, account: string, unlockBufferSeconds?: number, unlockTime?: number | undefined, unlockDuration?: number | undefined); + init: (privateKey: string, passphrase: string) => Promise; + signRawTransaction(tx: CeloTx): Promise; + signTransaction(): Promise<{ + v: number; + r: Buffer; + s: Buffer; + }>; + signTypedData(typedData: EIP712TypedData): Promise<{ + v: number; + r: Buffer; + s: Buffer; + }>; + signPersonalMessage(data: string): Promise<{ + v: number; + r: Buffer; + s: Buffer; + }>; + getNativeKey: () => string; + unlock(passphrase: string, duration: number): Promise; + isUnlocked(): boolean; + private callAndCheckResponse; + decrypt(ciphertext: Buffer): Promise; + computeSharedSecret(_publicKey: string): Promise; +} diff --git a/packages/sdk/wallets/wallet-rpc/lib/rpc-signer.js b/packages/sdk/wallets/wallet-rpc/lib/rpc-signer.js new file mode 100644 index 0000000000..7b945f0be0 --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/rpc-signer.js @@ -0,0 +1,164 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RpcSigner = void 0; +const address_1 = require("@celo/base/lib/address"); +const wallet_base_1 = require("@celo/wallet-base"); +const bignumber_js_1 = __importDefault(require("bignumber.js")); +const INCORRECT_PASSWORD_ERROR = 'could not decrypt key with given password'; +const currentTimeInSeconds = () => Math.floor(Date.now() / 1000); +const toRpcHex = (val) => { + if (typeof val === 'number' || val instanceof bignumber_js_1.default) { + return (0, address_1.ensureLeading0x)(val.toString(16)); + } + else if (typeof val === 'string') { + return (0, address_1.ensureLeading0x)(val); + } + else { + return '0x0'; + } +}; +// TODO(yorke): move this into rpc-caller and generate typings from RPC spec +var RpcSignerEndpoint; +(function (RpcSignerEndpoint) { + RpcSignerEndpoint["ImportAccount"] = "personal_importRawKey"; + RpcSignerEndpoint["UnlockAccount"] = "personal_unlockAccount"; + RpcSignerEndpoint["SignTransaction"] = "eth_signTransaction"; + RpcSignerEndpoint["SignBytes"] = "eth_sign"; + RpcSignerEndpoint["SignTypedData"] = "eth_signTypedData"; + RpcSignerEndpoint["Decrypt"] = "personal_decrypt"; +})(RpcSignerEndpoint || (RpcSignerEndpoint = {})); +/** + * Implements the signer interface on top of the JSON-RPC interface. + * @deprecated https://forum.celo.org/t/deprecation-of-celo-wallet-rpc/8452 + */ +class RpcSigner { + /** + * Construct a new instance of the RPC signer + * + * @param rpc RPC caller instance + * @param account Account address derived from the private key to be called in init + * @param unlockBufferSeconds Number of seconds to shrink the unlocked duration by to account for + * latency and timing inconsistencies on the node + * @param unlockTime Timestamp in seconds when the signer was last unlocked + * @param unlockDuration Number of seconds that the signer was last unlocked for + * + */ + constructor(rpc, account, unlockBufferSeconds = 5, unlockTime, unlockDuration) { + this.rpc = rpc; + this.account = account; + this.unlockBufferSeconds = unlockBufferSeconds; + this.unlockTime = unlockTime; + this.unlockDuration = unlockDuration; + this.init = (privateKey, passphrase) => this.callAndCheckResponse(RpcSignerEndpoint.ImportAccount, [ + (0, address_1.ensureLeading0x)(privateKey), + passphrase, + ]); + this.getNativeKey = () => this.account; + } + signRawTransaction(tx) { + return __awaiter(this, void 0, void 0, function* () { + if ((0, address_1.normalizeAddressWith0x)(tx.from) !== this.account) { + throw new Error(`RpcSigner cannot sign tx with 'from' ${tx.from}`); + } + // see geth SendTxArgs type + // https://github.com/celo-org/celo-blockchain/blob/fc20d6921478cda68fc88797078f20053bae8866/internal/ethapi/api.go#L1241C6-L1241C20 + const rpcTx = Object.assign(Object.assign(Object.assign({}, tx), { nonce: toRpcHex(tx.nonce), value: toRpcHex(tx.value), gas: toRpcHex(tx.gas) }), (tx.gasPrice + ? { + gasPrice: toRpcHex(tx.gasPrice), + } + : { + maxPriorityFeePerGas: toRpcHex(tx.maxPriorityFeePerGas), + maxFeePerGas: toRpcHex(tx.maxFeePerGas), + })); + return this.callAndCheckResponse(RpcSignerEndpoint.SignTransaction, [rpcTx]); + }); + } + signTransaction() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('signTransaction unimplemented; use signRawTransaction'); + }); + } + signTypedData(typedData) { + return __awaiter(this, void 0, void 0, function* () { + const result = yield this.callAndCheckResponse(RpcSignerEndpoint.SignTypedData, [ + this.account, + typedData, + ]); + return (0, wallet_base_1.decodeSig)(result); + }); + } + signPersonalMessage(data) { + return __awaiter(this, void 0, void 0, function* () { + const result = yield this.callAndCheckResponse(RpcSignerEndpoint.SignBytes, [ + this.account, + data, + ]); + return (0, wallet_base_1.decodeSig)(result); + }); + } + unlock(passphrase, duration) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + try { + yield this.callAndCheckResponse(RpcSignerEndpoint.UnlockAccount, [ + this.account, + passphrase, + duration, + ]); + } + catch (error) { + // The callAndCheckResponse will throw an error if the passphrase is incorrect + if ((_b = (_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.includes(INCORRECT_PASSWORD_ERROR)) { + return false; + } + // Re-throw otherwise + throw error; + } + this.unlockTime = currentTimeInSeconds(); + this.unlockDuration = duration; + return true; + }); + } + isUnlocked() { + if (this.unlockDuration === undefined || this.unlockTime === undefined) { + return false; + } + return this.unlockTime + this.unlockDuration - this.unlockBufferSeconds > currentTimeInSeconds(); + } + callAndCheckResponse(endpoint, params) { + return __awaiter(this, void 0, void 0, function* () { + const response = yield this.rpc.call(endpoint, params); + if (response.error) { + throw new Error(`RpcSigner@${endpoint} failed with \n'${response.error.message}'`); + } + return response.result; + }); + } + decrypt(ciphertext) { + return __awaiter(this, void 0, void 0, function* () { + const resp = yield this.callAndCheckResponse(RpcSignerEndpoint.Decrypt, [ + this.account, + (0, address_1.ensureLeading0x)(ciphertext.toString('hex')), + ]); + return Buffer.from((0, address_1.trimLeading0x)(resp), 'hex'); + }); + } + computeSharedSecret(_publicKey) { + throw new Error('Not implemented'); + return Promise.resolve(Buffer.from([])); + } +} +exports.RpcSigner = RpcSigner; +//# sourceMappingURL=rpc-signer.js.map \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-rpc/lib/rpc-signer.js.map b/packages/sdk/wallets/wallet-rpc/lib/rpc-signer.js.map new file mode 100644 index 0000000000..5f6a980c46 --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/rpc-signer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"rpc-signer.js","sourceRoot":"","sources":["../src/rpc-signer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oDAA+F;AAG/F,mDAA6C;AAC7C,gEAAoC;AAGpC,MAAM,wBAAwB,GAAG,2CAA2C,CAAA;AAC5E,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;AAEhE,MAAM,QAAQ,GAAG,CAAC,GAAqC,EAAE,EAAE;IACzD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,sBAAS,EAAE,CAAC;QACxD,OAAO,IAAA,yBAAe,EAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,IAAA,yBAAe,EAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED,4EAA4E;AAC5E,IAAK,iBAOJ;AAPD,WAAK,iBAAiB;IACpB,4DAAuC,CAAA;IACvC,6DAAwC,CAAA;IACxC,4DAAuC,CAAA;IACvC,2CAAsB,CAAA;IACtB,wDAAmC,CAAA;IACnC,iDAA4B,CAAA;AAC9B,CAAC,EAPI,iBAAiB,KAAjB,iBAAiB,QAOrB;AAoBD;;;GAGG;AACH,MAAa,SAAS;IACpB;;;;;;;;;;OAUG;IACH,YACY,GAAc,EACd,OAAe,EACf,sBAAsB,CAAC,EACvB,UAAmB,EACnB,cAAuB;QAJvB,QAAG,GAAH,GAAG,CAAW;QACd,YAAO,GAAP,OAAO,CAAQ;QACf,wBAAmB,GAAnB,mBAAmB,CAAI;QACvB,eAAU,GAAV,UAAU,CAAS;QACnB,mBAAc,GAAd,cAAc,CAAS;QAGnC,SAAI,GAAG,CAAC,UAAkB,EAAE,UAAkB,EAAE,EAAE,CAChD,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,aAAa,EAAE;YACzD,IAAA,yBAAe,EAAC,UAAU,CAAC;YAC3B,UAAU;SACX,CAAC,CAAA;QA8CJ,iBAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAA;IApD9B,CAAC;IAQE,kBAAkB,CAAC,EAAU;;YACjC,IAAI,IAAA,gCAAsB,EAAC,EAAE,CAAC,IAAe,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChE,MAAM,IAAI,KAAK,CAAC,wCAAwC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;YACpE,CAAC;YACD,2BAA2B;YAC3B,oIAAoI;YACpI,MAAM,KAAK,iDACN,EAAE,KACL,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EACzB,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EACzB,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAClB,CAAC,EAAE,CAAC,QAAQ;gBACb,CAAC,CAAC;oBACE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC;iBAChC;gBACH,CAAC,CAAC;oBACE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,CAAC,oBAAoB,CAAC;oBACvD,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC;iBACxC,CAAC,CACP,CAAA;YACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QAC9E,CAAC;KAAA;IAEK,eAAe;;YACnB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;QAC1E,CAAC;KAAA;IAEK,aAAa,CAAC,SAA0B;;YAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,aAAa,EAAE;gBAC9E,IAAI,CAAC,OAAO;gBACZ,SAAS;aACV,CAAC,CAAA;YAEF,OAAO,IAAA,uBAAS,EAAC,MAAa,CAAC,CAAA;QACjC,CAAC;KAAA;IAEK,mBAAmB,CAAC,IAAY;;YACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,SAAS,EAAE;gBAC1E,IAAI,CAAC,OAAO;gBACZ,IAAI;aACL,CAAC,CAAA;YACF,OAAO,IAAA,uBAAS,EAAC,MAAa,CAAC,CAAA;QACjC,CAAC;KAAA;IAIK,MAAM,CAAC,UAAkB,EAAE,QAAgB;;;YAC/C,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,aAAa,EAAE;oBAC/D,IAAI,CAAC,OAAO;oBACZ,UAAU;oBACV,QAAQ;iBACT,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,8EAA8E;gBAC9E,IAAI,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,WAAW,EAAE,0CAAE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;oBACtE,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,qBAAqB;gBACrB,MAAM,KAAK,CAAA;YACb,CAAC;YAED,IAAI,CAAC,UAAU,GAAG,oBAAoB,EAAE,CAAA;YACxC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAA;YAC9B,OAAO,IAAI,CAAA;;KACZ;IAED,UAAU;QACR,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACvE,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,GAAG,oBAAoB,EAAE,CAAA;IAClG,CAAC;IAEa,oBAAoB,CAChC,QAAW,EACX,MAAkC;;YAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACtD,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,mBAAoB,QAAQ,CAAC,KAAa,CAAC,OAAO,GAAG,CAAC,CAAA;YAC7F,CAAC;YACD,OAAO,QAAQ,CAAC,MAAmD,CAAA;QACrE,CAAC;KAAA;IAEK,OAAO,CAAC,UAAkB;;YAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,OAAO,EAAE;gBACtE,IAAI,CAAC,OAAO;gBACZ,IAAA,yBAAe,EAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC5C,CAAC,CAAA;YAEF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAA,uBAAa,EAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;QAChD,CAAC;KAAA;IAED,mBAAmB,CAAC,UAAkB;QACpC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;QAClC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IACzC,CAAC;CACF;AA7HD,8BA6HC"} \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.d.ts b/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.d.ts new file mode 100644 index 0000000000..7e77f38805 --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.d.ts @@ -0,0 +1,29 @@ +import { CeloTx, Provider, RpcCaller } from '@celo/connect'; +import { UnlockableWallet } from '@celo/wallet-base'; +import { RemoteWallet } from '@celo/wallet-remote'; +import { RpcSigner } from './rpc-signer'; +export declare enum RpcWalletErrors { + FetchAccounts = "RpcWallet: failed to fetch accounts from server", + AccountAlreadyExists = "RpcWallet: account already exists" +} +/** + * WARNING: This class should only be used with well-permissioned providers (ie IPC) + * to avoid sensitive user 'privateKey' and 'passphrase' information being exposed + * + * @deprecated https://forum.celo.org/t/deprecation-of-celo-wallet-rpc/8452 + */ +export declare class RpcWallet extends RemoteWallet implements UnlockableWallet { + protected _provider: Provider; + protected readonly rpc: RpcCaller; + constructor(_provider: Provider); + loadAccountSigners(): Promise>; + addAccount(privateKey: string, passphrase: string): Promise; + unlockAccount(address: string, passphrase: string, duration: number): Promise; + isAccountUnlocked(address: string): boolean; + /** + * Gets the signer based on the 'from' field in the tx body + * @param txParams Transaction to sign + * @dev overrides WalletBase.signTransaction + */ + signTransaction(txParams: CeloTx): Promise; +} diff --git a/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.js b/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.js new file mode 100644 index 0000000000..ac45d89096 --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.js @@ -0,0 +1,86 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RpcWallet = exports.RpcWalletErrors = void 0; +const address_1 = require("@celo/base/lib/address"); +const connect_1 = require("@celo/connect"); +const address_2 = require("@celo/utils/lib/address"); +const wallet_remote_1 = require("@celo/wallet-remote"); +const rpc_signer_1 = require("./rpc-signer"); +var RpcWalletErrors; +(function (RpcWalletErrors) { + RpcWalletErrors["FetchAccounts"] = "RpcWallet: failed to fetch accounts from server"; + RpcWalletErrors["AccountAlreadyExists"] = "RpcWallet: account already exists"; +})(RpcWalletErrors || (exports.RpcWalletErrors = RpcWalletErrors = {})); +/** + * WARNING: This class should only be used with well-permissioned providers (ie IPC) + * to avoid sensitive user 'privateKey' and 'passphrase' information being exposed + * + * @deprecated https://forum.celo.org/t/deprecation-of-celo-wallet-rpc/8452 + */ +class RpcWallet extends wallet_remote_1.RemoteWallet { + constructor(_provider) { + super(); + this._provider = _provider; + this.rpc = new connect_1.HttpRpcCaller(_provider); + } + loadAccountSigners() { + return __awaiter(this, void 0, void 0, function* () { + const addressToSigner = new Map(); + const resp = yield this.rpc.call('eth_accounts', []); + if (resp.error) { + throw new Error(RpcWalletErrors.FetchAccounts); + } + const accounts = resp.result; + accounts.forEach((account) => { + addressToSigner.set(account, new rpc_signer_1.RpcSigner(this.rpc, account)); + }); + return addressToSigner; + }); + } + addAccount(privateKey, passphrase) { + return __awaiter(this, void 0, void 0, function* () { + const address = (0, address_1.normalizeAddressWith0x)((0, address_2.privateKeyToAddress)((0, address_1.ensureLeading0x)(privateKey))); + if (this.hasAccount(address)) { + throw new Error(RpcWalletErrors.AccountAlreadyExists); + } + const signer = new rpc_signer_1.RpcSigner(this.rpc, address); + const resultantAddress = yield signer.init(privateKey, passphrase); + this.addSigner(resultantAddress, signer); + return resultantAddress; + }); + } + unlockAccount(address, passphrase, duration) { + return __awaiter(this, void 0, void 0, function* () { + const signer = this.getSigner(address); + return signer.unlock(passphrase, duration); + }); + } + isAccountUnlocked(address) { + const signer = this.getSigner(address); + return signer.isUnlocked(); + } + /** + * Gets the signer based on the 'from' field in the tx body + * @param txParams Transaction to sign + * @dev overrides WalletBase.signTransaction + */ + signTransaction(txParams) { + return __awaiter(this, void 0, void 0, function* () { + // Get the signer from the 'from' field + const fromAddress = txParams.from.toString(); + const signer = this.getSigner(fromAddress); + return signer.signRawTransaction(txParams); + }); + } +} +exports.RpcWallet = RpcWallet; +//# sourceMappingURL=rpc-wallet.js.map \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.js.map b/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.js.map new file mode 100644 index 0000000000..032c019b69 --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.js.map @@ -0,0 +1 @@ +{"version":3,"file":"rpc-wallet.js","sourceRoot":"","sources":["../src/rpc-wallet.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAgF;AAChF,2CAA0E;AAC1E,qDAA6D;AAE7D,uDAAkD;AAClD,6CAAwC;AAExC,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oFAAiE,CAAA;IACjE,6EAA0D,CAAA;AAC5D,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B;AAED;;;;;GAKG;AACH,MAAa,SAAU,SAAQ,4BAAuB;IAGpD,YAAsB,SAAmB;QACvC,KAAK,EAAE,CAAA;QADa,cAAS,GAAT,SAAS,CAAU;QAEvC,IAAI,CAAC,GAAG,GAAG,IAAI,uBAAa,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC;IAEK,kBAAkB;;YACtB,MAAM,eAAe,GAAG,IAAI,GAAG,EAAqB,CAAA;YACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;YACpD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;YAChD,CAAC;YACD,MAAM,QAAQ,GAAa,IAAI,CAAC,MAAO,CAAA;YACvC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC3B,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,sBAAS,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;YAChE,CAAC,CAAC,CAAA;YACF,OAAO,eAAe,CAAA;QACxB,CAAC;KAAA;IAEK,UAAU,CAAC,UAAkB,EAAE,UAAkB;;YACrD,MAAM,OAAO,GAAG,IAAA,gCAAsB,EAAC,IAAA,6BAAmB,EAAC,IAAA,yBAAe,EAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YACxF,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAA;YACvD,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC/C,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;YAClE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;YACxC,OAAO,gBAAgB,CAAA;QACzB,CAAC;KAAA;IAEK,aAAa,CAAC,OAAe,EAAE,UAAkB,EAAE,QAAgB;;YACvE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACtC,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC5C,CAAC;KAAA;IAED,iBAAiB,CAAC,OAAe;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACtC,OAAO,MAAM,CAAC,UAAU,EAAE,CAAA;IAC5B,CAAC;IAED;;;;OAIG;IACG,eAAe,CAAC,QAAgB;;YACpC,uCAAuC;YACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAK,CAAC,QAAQ,EAAE,CAAA;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;YAC1C,OAAO,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QAC5C,CAAC;KAAA;CACF;AArDD,8BAqDC"} \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.test.d.ts b/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.test.d.ts new file mode 100644 index 0000000000..ff9ea3c17b --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.test.d.ts @@ -0,0 +1,39 @@ +export declare const CHAIN_ID = 44378; +export declare const TYPED_DATA: { + types: { + EIP712Domain: { + name: string; + type: string; + }[]; + Person: { + name: string; + type: string; + }[]; + Mail: { + name: string; + type: string; + }[]; + }; + primaryType: string; + domain: { + name: string; + version: string; + chainId: number; + verifyingContract: string; + }; + message: { + from: { + name: string; + wallet: string; + }; + to: { + name: string; + wallet: string; + }; + contents: string; + }; +}; +export declare const PRIVATE_KEY1 = "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abbdef"; +export declare const ACCOUNT_ADDRESS1: `0x${string}`; +export declare const PRIVATE_KEY2 = "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890fdeccc"; +export declare const ACCOUNT_ADDRESS2: `0x${string}`; diff --git a/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.test.js b/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.test.js new file mode 100644 index 0000000000..7aaa5858c8 --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.test.js @@ -0,0 +1,227 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ACCOUNT_ADDRESS2 = exports.PRIVATE_KEY2 = exports.ACCOUNT_ADDRESS1 = exports.PRIVATE_KEY1 = exports.TYPED_DATA = exports.CHAIN_ID = void 0; +const connect_1 = require("@celo/connect"); +const ganache_test_1 = require("@celo/dev-utils/lib/ganache-test"); +const address_1 = require("@celo/utils/lib/address"); +const signatureUtils_1 = require("@celo/utils/lib/signatureUtils"); +const wallet_base_1 = require("@celo/wallet-base"); +const net_1 = __importDefault(require("net")); +const web3_1 = __importDefault(require("web3")); +const rpc_wallet_1 = require("./rpc-wallet"); +exports.CHAIN_ID = 44378; +// Sample data from the official EIP-712 example: +// https://github.com/ethereum/EIPs/blob/master/assets/eip-712/Example.js +exports.TYPED_DATA = { + types: { + EIP712Domain: [ + { name: 'name', type: 'string' }, + { name: 'version', type: 'string' }, + { name: 'chainId', type: 'uint256' }, + { name: 'verifyingContract', type: 'address' }, + ], + Person: [ + { name: 'name', type: 'string' }, + { name: 'wallet', type: 'address' }, + ], + Mail: [ + { name: 'from', type: 'Person' }, + { name: 'to', type: 'Person' }, + { name: 'contents', type: 'string' }, + ], + }, + primaryType: 'Mail', + domain: { + name: 'Ether Mail', + version: '1', + chainId: 1, + verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', + }, + message: { + from: { + name: 'Cow', + wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', + }, + to: { + name: 'Bob', + wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', + }, + contents: 'Hello, Bob!', + }, +}; +exports.PRIVATE_KEY1 = '1234567890abcdef1234567890abcdef1234567890abcdef1234567890abbdef'; +exports.ACCOUNT_ADDRESS1 = (0, address_1.normalizeAddressWith0x)((0, address_1.privateKeyToAddress)(exports.PRIVATE_KEY1)); +exports.PRIVATE_KEY2 = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890fdeccc'; +exports.ACCOUNT_ADDRESS2 = (0, address_1.normalizeAddressWith0x)((0, address_1.privateKeyToAddress)(exports.PRIVATE_KEY2)); +const PASSPHRASE = 'ce10'; +const DURATION = 10000; +// ./build/bin/geth --datadir=./envs/alfajoresstaging --syncmode=lightest --rpcapi=net,eth,web3,personal --networkid=1101 +describe.skip('rpc-wallet', () => { + it('should work against local geth ipc', () => __awaiter(void 0, void 0, void 0, function* () { + const ipcUrl = '/Users/yorhodes/celo/blockchain/envs/alfajoresstaging/geth.ipc'; + const ipcProvider = new web3_1.default.providers.IpcProvider(ipcUrl, net_1.default); + const wallet = new rpc_wallet_1.RpcWallet(ipcProvider); + yield wallet.init(); + const account = yield wallet.addAccount(exports.PRIVATE_KEY1, PASSPHRASE); + yield wallet.unlockAccount(account, PASSPHRASE, DURATION); + const tx = { + from: exports.ACCOUNT_ADDRESS1, + to: exports.ACCOUNT_ADDRESS2, + value: 1000, + }; + const result = yield wallet.signTransaction(tx); + console.log(result); + const connection = new connect_1.Connection(new web3_1.default(ipcUrl), wallet); + const txResult = yield connection.sendSignedTransaction(result.raw); + console.log(txResult); + })); +}); +// It uses personal_importKey RPC call which is not supported in anvil +(0, ganache_test_1.testWithGanache)('rpc-wallet', (web3) => { + const provider = web3.currentProvider; + const rpcWallet = new rpc_wallet_1.RpcWallet(provider); + describe('with ganache web3 provider', () => { + let ganacheAccounts; + beforeAll(() => __awaiter(void 0, void 0, void 0, function* () { + yield rpcWallet.init(); + ganacheAccounts = yield web3.eth.getAccounts(); + ganacheAccounts = ganacheAccounts.map(address_1.normalizeAddressWith0x); + })); + test('initalizes with provider accounts', () => __awaiter(void 0, void 0, void 0, function* () { + const accounts = rpcWallet.getAccounts(); + expect(accounts).toEqual(ganacheAccounts); + })); + test('fails if you add an invalid private key', () => __awaiter(void 0, void 0, void 0, function* () { + try { + yield rpcWallet.addAccount('this is not a valid private key', PASSPHRASE); + throw new Error('Expected exception to be thrown'); + } + catch (e) { + expect(e.message).toBe('Expected 32 bytes of private key'); + } + })); + test('succeeds if you add a private key without 0x', () => __awaiter(void 0, void 0, void 0, function* () { + yield rpcWallet.addAccount(exports.PRIVATE_KEY1, PASSPHRASE); + expect(rpcWallet.hasAccount(exports.ACCOUNT_ADDRESS1)).toBeTruthy(); + })); + test('fails if you add a private key twice', () => __awaiter(void 0, void 0, void 0, function* () { + try { + yield rpcWallet.addAccount(exports.PRIVATE_KEY1, PASSPHRASE); + throw new Error('Expected exception to be thrown'); + } + catch (e) { + expect(e.message).toBe(`RpcWallet: account already exists`); + } + })); + test('succeeds if you add a private key with 0x', () => __awaiter(void 0, void 0, void 0, function* () { + yield rpcWallet.addAccount(exports.PRIVATE_KEY2, PASSPHRASE); + expect(rpcWallet.hasAccount(exports.ACCOUNT_ADDRESS2)).toBeTruthy(); + })); + describe('with added accounts', () => { + test('all addresses can be retrieved', () => { + expect(rpcWallet.getAccounts()).toEqual(ganacheAccounts.concat([exports.ACCOUNT_ADDRESS1, exports.ACCOUNT_ADDRESS2])); + }); + describe('unlocking', () => { + test('fails if you use an invalid passphrase', () => __awaiter(void 0, void 0, void 0, function* () { + try { + yield rpcWallet.unlockAccount(exports.ACCOUNT_ADDRESS1, 'wrong_passphrase', DURATION); + } + catch (e) { + expect(e.message).toContain('could not decrypt key with given passphrase'); + } + })); + test('succeeds if you use the correct passphrase', () => __awaiter(void 0, void 0, void 0, function* () { + yield rpcWallet.unlockAccount(exports.ACCOUNT_ADDRESS1, PASSPHRASE, DURATION); + const unlocked = rpcWallet.isAccountUnlocked(exports.ACCOUNT_ADDRESS1); + expect(unlocked).toBeTruthy(); + })); + }); + describe('signing', () => { + describe('using an unlocked address', () => { + beforeAll(() => __awaiter(void 0, void 0, void 0, function* () { + yield rpcWallet.unlockAccount(exports.ACCOUNT_ADDRESS1, PASSPHRASE, DURATION); + })); + describe('when calling signTransaction', () => { + let celoTransaction; + beforeEach(() => { + celoTransaction = { + from: exports.ACCOUNT_ADDRESS1, + to: exports.ACCOUNT_ADDRESS2, + chainId: exports.CHAIN_ID, + value: web3.utils.toWei('1', 'ether'), + nonce: 0, + gas: '10', + gasPrice: '99', + feeCurrency: '0x', + data: '0xabcdef', + }; + }); + test('succeeds with old school pricing', () => __awaiter(void 0, void 0, void 0, function* () { + yield expect(rpcWallet.signTransaction(celoTransaction)).resolves.toMatchInlineSnapshot(`"0xf86b8081991094588e4b68193001e4d10928660ab4165b813717c08a0100000000000000000083abcdef25a073bb7eaa60c810af1fad0f68fa15d4714f9990d0202b62797f6134493ec9f6fba046c13e92017228c2c8f0fae74ddd735021817f2f9757cd66debed078daf4070e"`); + })); + test('succeeds with with FeeMarketFields', () => __awaiter(void 0, void 0, void 0, function* () { + const feeMarketTransaction = Object.assign(Object.assign({}, celoTransaction), { gasPrice: undefined, maxFeePerGas: '1500000000', maxPriorityFeePerGas: '1500000000' }); + yield expect(rpcWallet.signTransaction(feeMarketTransaction)).resolves.toMatchInlineSnapshot(`"0xf86a80801094588e4b68193001e4d10928660ab4165b813717c08a0100000000000000000083abcdef26a05e9c1e7690d05f3e1433c824fbd948643ff6c618e347ea8c23a6363f3b17cdffa072dc1c22d6147be7b4b7b3cf51eb73b8bedd7940d7b668dcd7ef688a2354a631"`); + })); + // TODO(yorke): enable once fixed: https://github.com/celo-org/celo-monorepo/issues/4077 + test.skip('with same signer', () => __awaiter(void 0, void 0, void 0, function* () { + const signedTx = yield rpcWallet.signTransaction(celoTransaction); + const [, recoveredSigner] = (0, wallet_base_1.recoverTransaction)(signedTx.raw); + expect((0, address_1.normalizeAddressWith0x)(recoveredSigner)).toBe((0, address_1.normalizeAddressWith0x)(exports.ACCOUNT_ADDRESS1)); + })); + // https://github.com/ethereum/go-ethereum/blob/38aab0aa831594f31d02c9f02bfacc0bef48405d/rlp/decode.go#L664 + test.skip('signature with 0x00 prefix is canonicalized', () => __awaiter(void 0, void 0, void 0, function* () { + // This tx is carefully constructed to produce an S value with the first byte as 0x00 + const celoTransactionZeroPrefix = { + from: exports.ACCOUNT_ADDRESS1, + to: exports.ACCOUNT_ADDRESS2, + chainId: exports.CHAIN_ID, + value: web3.utils.toWei('1', 'ether'), + nonce: 65, + gas: '10', + gasPrice: '99', + feeCurrency: '0x', + data: '0xabcdef', + }; + const signedTx = yield rpcWallet.signTransaction(celoTransactionZeroPrefix); + expect(signedTx.tx.s.startsWith('0x00')).toBeFalsy(); + const [, recoveredSigner] = (0, wallet_base_1.recoverTransaction)(signedTx.raw); + expect((0, address_1.normalizeAddressWith0x)(recoveredSigner)).toBe((0, address_1.normalizeAddressWith0x)(exports.ACCOUNT_ADDRESS1)); + })); + }); + // ganache + describe.skip('when calling signPersonalMessage', () => { + test('succeeds', () => __awaiter(void 0, void 0, void 0, function* () { + const hexStr = exports.ACCOUNT_ADDRESS2; + const signedMessage = yield rpcWallet.signPersonalMessage(exports.ACCOUNT_ADDRESS1, hexStr); + expect(signedMessage).not.toBeUndefined(); + const valid = (0, signatureUtils_1.verifySignature)(hexStr, signedMessage, exports.ACCOUNT_ADDRESS1); + expect(valid).toBeTruthy(); + })); + }); + describe.skip('when calling signTypedData', () => { + test('succeeds', () => __awaiter(void 0, void 0, void 0, function* () { + const signedMessage = yield rpcWallet.signTypedData(exports.ACCOUNT_ADDRESS1, exports.TYPED_DATA); + expect(signedMessage).not.toBeUndefined(); + const valid = (0, wallet_base_1.verifyEIP712TypedDataSigner)(exports.TYPED_DATA, signedMessage, exports.ACCOUNT_ADDRESS1); + expect(valid).toBeTruthy(); + })); + }); + }); + }); + }); + }); +}); +//# sourceMappingURL=rpc-wallet.test.js.map \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.test.js.map b/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.test.js.map new file mode 100644 index 0000000000..3f47eaed9b --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/rpc-wallet.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"rpc-wallet.test.js","sourceRoot":"","sources":["../src/rpc-wallet.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4D;AAC5D,mEAAkE;AAClE,qDAAqF;AACrF,mEAAgE;AAChE,mDAAmF;AACnF,8CAAqB;AACrB,gDAAuB;AACvB,6CAAwC;AAE3B,QAAA,QAAQ,GAAG,KAAK,CAAA;AAE7B,iDAAiD;AACjD,yEAAyE;AAC5D,QAAA,UAAU,GAAG;IACxB,KAAK,EAAE;QACL,YAAY,EAAE;YACZ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;YAChC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;YACnC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YACpC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;SAC/C;QACD,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;YAChC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SACpC;QACD,IAAI,EAAE;YACJ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;YAChC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE;SACrC;KACF;IACD,WAAW,EAAE,MAAM;IACnB,MAAM,EAAE;QACN,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,CAAC;QACV,iBAAiB,EAAE,4CAA4C;KAChE;IACD,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,4CAA4C;SACrD;QACD,EAAE,EAAE;YACF,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,4CAA4C;SACrD;QACD,QAAQ,EAAE,aAAa;KACxB;CACF,CAAA;AAEY,QAAA,YAAY,GAAG,kEAAkE,CAAA;AACjF,QAAA,gBAAgB,GAAG,IAAA,gCAAsB,EAAC,IAAA,6BAAmB,EAAC,oBAAY,CAAC,CAAC,CAAA;AAC5E,QAAA,YAAY,GAAG,oEAAoE,CAAA;AACnF,QAAA,gBAAgB,GAAG,IAAA,gCAAsB,EAAC,IAAA,6BAAmB,EAAC,oBAAY,CAAC,CAAC,CAAA;AAEzF,MAAM,UAAU,GAAG,MAAM,CAAA;AACzB,MAAM,QAAQ,GAAG,KAAK,CAAA;AAEtB,yHAAyH;AACzH,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,oCAAoC,EAAE,GAAS,EAAE;QAClD,MAAM,MAAM,GAAG,gEAAgE,CAAA;QAC/E,MAAM,WAAW,GAAG,IAAI,cAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,aAAG,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,IAAI,sBAAS,CAAC,WAAW,CAAC,CAAA;QACzC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QAEnB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,oBAAY,EAAE,UAAU,CAAC,CAAA;QACjE,MAAM,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;QAEzD,MAAM,EAAE,GAAG;YACT,IAAI,EAAE,wBAAgB;YACtB,EAAE,EAAE,wBAAgB;YACpB,KAAK,EAAE,IAAI;SACZ,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;QAC/C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEnB,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC,IAAI,cAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;QAC3D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACnE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACvB,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,sEAAsE;AACtE,IAAA,8BAAe,EAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAA;IACrC,MAAM,SAAS,GAAG,IAAI,sBAAS,CAAC,QAAoB,CAAC,CAAA;IAErD,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,IAAI,eAAyB,CAAA;QAC7B,SAAS,CAAC,GAAS,EAAE;YACnB,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;YACtB,eAAe,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;YAC9C,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,gCAAsB,CAAC,CAAA;QAC/D,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,mCAAmC,EAAE,GAAS,EAAE;YACnD,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAA;YACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QAC3C,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,yCAAyC,EAAE,GAAS,EAAE;YACzD,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,UAAU,CAAC,iCAAiC,EAAE,UAAU,CAAC,CAAA;gBACzE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;YACpD,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,8CAA8C,EAAE,GAAS,EAAE;YAC9D,MAAM,SAAS,CAAC,UAAU,CAAC,oBAAY,EAAE,UAAU,CAAC,CAAA;YACpD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,wBAAgB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC7D,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,sCAAsC,EAAE,GAAS,EAAE;YACtD,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,UAAU,CAAC,oBAAY,EAAE,UAAU,CAAC,CAAA;gBACpD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;YACpD,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;YAC7D,CAAC;QACH,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,2CAA2C,EAAE,GAAS,EAAE;YAC3D,MAAM,SAAS,CAAC,UAAU,CAAC,oBAAY,EAAE,UAAU,CAAC,CAAA;YACpD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,wBAAgB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC7D,CAAC,CAAA,CAAC,CAAA;QAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;YACnC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;gBAC1C,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CACrC,eAAe,CAAC,MAAM,CAAC,CAAC,wBAAgB,EAAE,wBAAgB,CAAC,CAAC,CAC7D,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;gBACzB,IAAI,CAAC,wCAAwC,EAAE,GAAS,EAAE;oBACxD,IAAI,CAAC;wBACH,MAAM,SAAS,CAAC,aAAa,CAAC,wBAAgB,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAA;oBAC/E,CAAC;oBAAC,OAAO,CAAM,EAAE,CAAC;wBAChB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,6CAA6C,CAAC,CAAA;oBAC5E,CAAC;gBACH,CAAC,CAAA,CAAC,CAAA;gBAEF,IAAI,CAAC,4CAA4C,EAAE,GAAS,EAAE;oBAC5D,MAAM,SAAS,CAAC,aAAa,CAAC,wBAAgB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;oBACrE,MAAM,QAAQ,GAAG,SAAS,CAAC,iBAAiB,CAAC,wBAAgB,CAAC,CAAA;oBAC9D,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAA;gBAC/B,CAAC,CAAA,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;gBACvB,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;oBACzC,SAAS,CAAC,GAAS,EAAE;wBACnB,MAAM,SAAS,CAAC,aAAa,CAAC,wBAAgB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;oBACvE,CAAC,CAAA,CAAC,CAAA;oBAEF,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;wBAC5C,IAAI,eAAuB,CAAA;wBAE3B,UAAU,CAAC,GAAG,EAAE;4BACd,eAAe,GAAG;gCAChB,IAAI,EAAE,wBAAgB;gCACtB,EAAE,EAAE,wBAAgB;gCACpB,OAAO,EAAE,gBAAQ;gCACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC;gCACrC,KAAK,EAAE,CAAC;gCACR,GAAG,EAAE,IAAI;gCACT,QAAQ,EAAE,IAAI;gCACd,WAAW,EAAE,IAAI;gCACjB,IAAI,EAAE,UAAU;6BACjB,CAAA;wBACH,CAAC,CAAC,CAAA;wBAEF,IAAI,CAAC,kCAAkC,EAAE,GAAS,EAAE;4BAClD,MAAM,MAAM,CACV,SAAS,CAAC,eAAe,CAAC,eAAe,CAAC,CAC3C,CAAC,QAAQ,CAAC,qBAAqB,CAC9B,gOAAgO,CACjO,CAAA;wBACH,CAAC,CAAA,CAAC,CAAA;wBAEF,IAAI,CAAC,oCAAoC,EAAE,GAAS,EAAE;4BACpD,MAAM,oBAAoB,mCACrB,eAAe,KAClB,QAAQ,EAAE,SAAS,EACnB,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,YAAY,GACnC,CAAA;4BACD,MAAM,MAAM,CACV,SAAS,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAChD,CAAC,QAAQ,CAAC,qBAAqB,CAC9B,8NAA8N,CAC/N,CAAA;wBACH,CAAC,CAAA,CAAC,CAAA;wBAEF,wFAAwF;wBACxF,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAS,EAAE;4BACvC,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;4BACjE,MAAM,CAAC,EAAE,eAAe,CAAC,GAAG,IAAA,gCAAkB,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;4BAC5D,MAAM,CAAC,IAAA,gCAAsB,EAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAClD,IAAA,gCAAsB,EAAC,wBAAgB,CAAC,CACzC,CAAA;wBACH,CAAC,CAAA,CAAC,CAAA;wBAEF,2GAA2G;wBAC3G,IAAI,CAAC,IAAI,CAAC,6CAA6C,EAAE,GAAS,EAAE;4BAClE,qFAAqF;4BACrF,MAAM,yBAAyB,GAAG;gCAChC,IAAI,EAAE,wBAAgB;gCACtB,EAAE,EAAE,wBAAgB;gCACpB,OAAO,EAAE,gBAAQ;gCACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC;gCACrC,KAAK,EAAE,EAAE;gCACT,GAAG,EAAE,IAAI;gCACT,QAAQ,EAAE,IAAI;gCACd,WAAW,EAAE,IAAa;gCAC1B,IAAI,EAAE,UAAU;6BACjB,CAAA;4BAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAA;4BAC3E,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAA;4BACpD,MAAM,CAAC,EAAE,eAAe,CAAC,GAAG,IAAA,gCAAkB,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;4BAC5D,MAAM,CAAC,IAAA,gCAAsB,EAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAClD,IAAA,gCAAsB,EAAC,wBAAgB,CAAC,CACzC,CAAA;wBACH,CAAC,CAAA,CAAC,CAAA;oBACJ,CAAC,CAAC,CAAA;oBAEF,UAAU;oBACV,QAAQ,CAAC,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;wBACrD,IAAI,CAAC,UAAU,EAAE,GAAS,EAAE;4BAC1B,MAAM,MAAM,GAAW,wBAAgB,CAAA;4BACvC,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,mBAAmB,CAAC,wBAAgB,EAAE,MAAM,CAAC,CAAA;4BACnF,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;4BACzC,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,MAAM,EAAE,aAAa,EAAE,wBAAgB,CAAC,CAAA;4BACtE,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAA;wBAC5B,CAAC,CAAA,CAAC,CAAA;oBACJ,CAAC,CAAC,CAAA;oBAEF,QAAQ,CAAC,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE;wBAC/C,IAAI,CAAC,UAAU,EAAE,GAAS,EAAE;4BAC1B,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,wBAAgB,EAAE,kBAAU,CAAC,CAAA;4BACjF,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;4BACzC,MAAM,KAAK,GAAG,IAAA,yCAA2B,EAAC,kBAAU,EAAE,aAAa,EAAE,wBAAgB,CAAC,CAAA;4BACtF,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAA;wBAC5B,CAAC,CAAA,CAAC,CAAA;oBACJ,CAAC,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"} \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.setup.d.ts b/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.setup.d.ts new file mode 100644 index 0000000000..ce70fd2e43 --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.setup.d.ts @@ -0,0 +1 @@ +export default function setup(): Promise; diff --git a/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.setup.js b/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.setup.js new file mode 100644 index 0000000000..1536764351 --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.setup.js @@ -0,0 +1,23 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const ganache_setup_1 = require("@celo/dev-utils/lib/ganache-setup"); +const network_1 = require("@celo/dev-utils/lib/network"); +function setup() { + return __awaiter(this, void 0, void 0, function* () { + console.log('\nstarting ganache...'); + yield (0, ganache_setup_1.emptySetup)({}); + yield (0, network_1.waitForPortOpen)('localhost', 8545, 60); + console.log('...ganache started'); + }); +} +exports.default = setup; +//# sourceMappingURL=ganache.setup.js.map \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.setup.js.map b/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.setup.js.map new file mode 100644 index 0000000000..df79dd2409 --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.setup.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ganache.setup.js","sourceRoot":"","sources":["../../src/test-utils/ganache.setup.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,qEAA8D;AAC9D,yDAA6D;AAE7D,SAA8B,KAAK;;QACjC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;QACpC,MAAM,IAAA,0BAAU,EAAC,EAAE,CAAC,CAAA;QACpB,MAAM,IAAA,yBAAe,EAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QAC5C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IACnC,CAAC;CAAA;AALD,wBAKC"} \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.teardown.d.ts b/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.teardown.d.ts new file mode 100644 index 0000000000..1259f77864 --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.teardown.d.ts @@ -0,0 +1,2 @@ +import teardown from '@celo/dev-utils/lib/ganache-teardown'; +export default teardown; diff --git a/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.teardown.js b/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.teardown.js new file mode 100644 index 0000000000..164ca9ac07 --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.teardown.js @@ -0,0 +1,8 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const ganache_teardown_1 = __importDefault(require("@celo/dev-utils/lib/ganache-teardown")); +exports.default = ganache_teardown_1.default; +//# sourceMappingURL=ganache.teardown.js.map \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.teardown.js.map b/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.teardown.js.map new file mode 100644 index 0000000000..3894c24c47 --- /dev/null +++ b/packages/sdk/wallets/wallet-rpc/lib/test-utils/ganache.teardown.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ganache.teardown.js","sourceRoot":"","sources":["../../src/test-utils/ganache.teardown.ts"],"names":[],"mappings":";;;;;AAAA,4FAA2D;AAC3D,kBAAe,0BAAQ,CAAA"} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 22da4e41f2..ff5c0f79cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1638,6 +1638,7 @@ __metadata: "@celo/explorer": "npm:^5.0.12" "@celo/governance": "npm:^5.1.3" "@celo/identity": "npm:^5.1.2" + "@celo/metadata-claims": "npm:^0.0.1" "@celo/phone-utils": "npm:^6.0.3" "@celo/typescript": "workspace:^" "@celo/utils": "npm:^7.0.0" @@ -1760,7 +1761,7 @@ __metadata: languageName: node linkType: hard -"@celo/contractkit@npm:^8.1.1, @celo/contractkit@npm:^8.3.0, @celo/contractkit@workspace:packages/sdk/contractkit": +"@celo/contractkit@npm:^8.1.1, @celo/contractkit@npm:^8.3.0, @celo/contractkit@workspace:^, @celo/contractkit@workspace:packages/sdk/contractkit": version: 0.0.0-use.local resolution: "@celo/contractkit@workspace:packages/sdk/contractkit" dependencies: @@ -1785,7 +1786,6 @@ __metadata: fetch-mock: "npm:^10.0.7" fp-ts: "npm:2.1.1" ganache: "npm:@celo/ganache@7.8.0-unofficial.0" - io-ts: "npm:2.0.1" jest: "npm:^29.7.0" semver: "npm:^7.3.5" ts-node: "npm:^10.9.1" @@ -1923,6 +1923,28 @@ __metadata: languageName: node linkType: hard +"@celo/metadata-claims@npm:^0.0.1, @celo/metadata-claims@workspace:packages/sdk/metadata-claims": + version: 0.0.0-use.local + resolution: "@celo/metadata-claims@workspace:packages/sdk/metadata-claims" + dependencies: + "@celo/base": "npm:^6.1.0" + "@celo/celo-devchain": "npm:^7.0.0" + "@celo/contractkit": "workspace:^" + "@celo/dev-utils": "npm:0.0.5" + "@celo/odis-identifiers": "npm:^1.0.1" + "@celo/typescript": "workspace:^" + "@celo/utils": "npm:^7.0.0" + "@types/node": "npm:18.7.6" + cross-fetch: "npm:3.1.5" + fetch-mock: "npm:^10.0.7" + fp-ts: "npm:2.1.1" + io-ts: "npm:2.0.1" + jest: "npm:^29.7.0" + ts-node: "npm:^10.9.1" + typescript: "npm:5.3.3" + languageName: unknown + linkType: soft + "@celo/network-utils@workspace:packages/sdk/network-utils": version: 0.0.0-use.local resolution: "@celo/network-utils@workspace:packages/sdk/network-utils" @@ -6003,6 +6025,13 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:18.7.6": + version: 18.7.6 + resolution: "@types/node@npm:18.7.6" + checksum: dd97612eb84ac0576116a906bb17878236439f283d19f4faa1d956d74ce1839f0331694eb955476c68bb7783c4c44c31d4a92246bf2c6e405d44556502cd2c6b + languageName: node + linkType: hard + "@types/node@npm:^12.12.6, @types/node@npm:^12.7.1": version: 12.20.55 resolution: "@types/node@npm:12.20.55" From 4ef76eb174454f60304080d0ef63a859cd8d931b Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Wed, 2 Oct 2024 11:57:16 +0200 Subject: [PATCH 04/54] cleanup old functions from base (#228) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Description these have been either marked deprecated for ages and or are just completely out of scope for the type of functions we should be supporting. ### Other changes nope. ### Tested seem unused internally ### Related issues ### Backwards compatibility nope / removing things ### Documentation --- ## PR-Codex overview This PR focuses on removing deprecated functions and constants from various modules in the `sdk` package, specifically related to `contacts`, `displayFormatting`, `currencies`, and `phoneNumbers`. It also introduces new claim types and metadata handling in the `metadata-claims` module. ### Detailed summary - Removed deprecated functions and constants from: - `contacts` - `displayFormatting` - `currencies` - `phoneNumbers` - Introduced new claim types in `metadata-claims`: - `AccountClaimType` - `KeybaseClaimType` - `DomainClaimType` - `NameClaimType` - `StorageClaimType` - Enhanced `IdentityMetadataWrapper` for improved metadata handling. - Updated documentation to reflect removed exports and new structures. > The following files were skipped due to too many changes: `packages/sdk/metadata-claims/lib/metadata.js` > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- .changeset/rude-parrots-know.md | 17 ++ docs/sdk/base/README.md | 2 - .../base/enums/currencies.CURRENCY_ENUM.md | 47 ---- .../base/enums/currencies.SHORT_CURRENCIES.md | 47 ---- docs/sdk/base/enums/currencies.StableToken.md | 6 +- docs/sdk/base/enums/currencies.Token.md | 2 +- .../interfaces/contacts.ContactPhoneNumber.md | 32 --- .../interfaces/contacts.MinimalContact.md | 54 ----- docs/sdk/base/modules/contacts.md | 55 ----- docs/sdk/base/modules/currencies.md | 67 +----- docs/sdk/base/modules/displayFormatting.md | 29 --- docs/sdk/base/modules/index.md | 77 ------- docs/sdk/base/modules/phoneNumbers.md | 23 +- .../enums/celo_tokens.StableToken.md | 6 +- .../contractkit/enums/celo_tokens.Token.md | 2 +- docs/sdk/contractkit/modules/celo_tokens.md | 2 +- docs/sdk/utils/README.md | 3 - .../utils/enums/currencies.CURRENCY_ENUM.md | 47 ---- .../enums/currencies.SHORT_CURRENCIES.md | 47 ---- .../interfaces/contacts.ContactPhoneNumber.md | 32 --- .../interfaces/contacts.MinimalContact.md | 54 ----- docs/sdk/utils/modules/contacts.md | 80 ------- docs/sdk/utils/modules/currencies.md | 73 ------ docs/sdk/utils/modules/displayFormatting.md | 29 --- docs/sdk/utils/modules/index.md | 70 ------ packages/sdk/base/src/contacts.ts | 31 --- packages/sdk/base/src/currencies.ts | 61 ----- packages/sdk/base/src/displayFormatting.ts | 11 - packages/sdk/base/src/index.ts | 2 - packages/sdk/base/src/phoneNumbers.ts | 4 - packages/sdk/metadata-claims/lib/account.d.ts | 20 ++ packages/sdk/metadata-claims/lib/account.js | 66 ++++++ .../sdk/metadata-claims/lib/account.js.map | 1 + packages/sdk/metadata-claims/lib/claim.d.ts | 89 ++++++++ packages/sdk/metadata-claims/lib/claim.js | 100 +++++++++ packages/sdk/metadata-claims/lib/claim.js.map | 1 + packages/sdk/metadata-claims/lib/index.d.ts | 2 + packages/sdk/metadata-claims/lib/index.js | 21 ++ packages/sdk/metadata-claims/lib/index.js.map | 1 + packages/sdk/metadata-claims/lib/keybase.d.ts | 19 ++ packages/sdk/metadata-claims/lib/keybase.js | 74 ++++++ .../sdk/metadata-claims/lib/keybase.js.map | 1 + .../sdk/metadata-claims/lib/metadata.d.ts | 75 +++++++ packages/sdk/metadata-claims/lib/metadata.js | 212 ++++++++++++++++++ .../sdk/metadata-claims/lib/metadata.js.map | 1 + packages/sdk/metadata-claims/lib/types.d.ts | 26 +++ packages/sdk/metadata-claims/lib/types.js | 45 ++++ packages/sdk/metadata-claims/lib/types.js.map | 1 + packages/sdk/metadata-claims/lib/verify.d.ts | 20 ++ packages/sdk/metadata-claims/lib/verify.js | 89 ++++++++ .../sdk/metadata-claims/lib/verify.js.map | 1 + packages/sdk/utils/src/contacts.ts | 22 -- packages/sdk/utils/src/currencies.ts | 9 - packages/sdk/utils/src/displayFormatting.ts | 3 - packages/sdk/utils/src/index.ts | 3 - 55 files changed, 893 insertions(+), 1021 deletions(-) create mode 100644 .changeset/rude-parrots-know.md delete mode 100644 docs/sdk/base/enums/currencies.CURRENCY_ENUM.md delete mode 100644 docs/sdk/base/enums/currencies.SHORT_CURRENCIES.md delete mode 100644 docs/sdk/base/interfaces/contacts.ContactPhoneNumber.md delete mode 100644 docs/sdk/base/interfaces/contacts.MinimalContact.md delete mode 100644 docs/sdk/base/modules/contacts.md delete mode 100644 docs/sdk/base/modules/displayFormatting.md delete mode 100644 docs/sdk/utils/enums/currencies.CURRENCY_ENUM.md delete mode 100644 docs/sdk/utils/enums/currencies.SHORT_CURRENCIES.md delete mode 100644 docs/sdk/utils/interfaces/contacts.ContactPhoneNumber.md delete mode 100644 docs/sdk/utils/interfaces/contacts.MinimalContact.md delete mode 100644 docs/sdk/utils/modules/contacts.md delete mode 100644 docs/sdk/utils/modules/currencies.md delete mode 100644 docs/sdk/utils/modules/displayFormatting.md delete mode 100644 packages/sdk/base/src/contacts.ts delete mode 100644 packages/sdk/base/src/displayFormatting.ts create mode 100644 packages/sdk/metadata-claims/lib/account.d.ts create mode 100644 packages/sdk/metadata-claims/lib/account.js create mode 100644 packages/sdk/metadata-claims/lib/account.js.map create mode 100644 packages/sdk/metadata-claims/lib/claim.d.ts create mode 100644 packages/sdk/metadata-claims/lib/claim.js create mode 100644 packages/sdk/metadata-claims/lib/claim.js.map create mode 100644 packages/sdk/metadata-claims/lib/index.d.ts create mode 100644 packages/sdk/metadata-claims/lib/index.js create mode 100644 packages/sdk/metadata-claims/lib/index.js.map create mode 100644 packages/sdk/metadata-claims/lib/keybase.d.ts create mode 100644 packages/sdk/metadata-claims/lib/keybase.js create mode 100644 packages/sdk/metadata-claims/lib/keybase.js.map create mode 100644 packages/sdk/metadata-claims/lib/metadata.d.ts create mode 100644 packages/sdk/metadata-claims/lib/metadata.js create mode 100644 packages/sdk/metadata-claims/lib/metadata.js.map create mode 100644 packages/sdk/metadata-claims/lib/types.d.ts create mode 100644 packages/sdk/metadata-claims/lib/types.js create mode 100644 packages/sdk/metadata-claims/lib/types.js.map create mode 100644 packages/sdk/metadata-claims/lib/verify.d.ts create mode 100644 packages/sdk/metadata-claims/lib/verify.js create mode 100644 packages/sdk/metadata-claims/lib/verify.js.map delete mode 100644 packages/sdk/utils/src/contacts.ts delete mode 100644 packages/sdk/utils/src/currencies.ts delete mode 100644 packages/sdk/utils/src/displayFormatting.ts diff --git a/.changeset/rude-parrots-know.md b/.changeset/rude-parrots-know.md new file mode 100644 index 0000000000..020097fa39 --- /dev/null +++ b/.changeset/rude-parrots-know.md @@ -0,0 +1,17 @@ +--- +'@celo/base': major +'@celo/utils': major +--- + +remove deprecated functions and consts exported from ./contacts and ./displayformating. ./currencies and ./phonenumbers. If these are used by your app we recommend to inline the functions from the previous release. + +* https://github.com/celo-org/developer-tooling/blob/%40celo/wallet-base%406.0.1/packages/sdk/base/src/contacts.ts +* https://github.com/celo-org/developer-tooling/blob/%40celo/wallet-base%406.0.1/packages/sdk/base/src/displayFormatting.ts +* https://github.com/celo-org/developer-tooling/blob/%40celo/wallet-base%406.0.1/packages/sdk/base/src/phoneNumbers.ts + +https://github.com/celo-org/developer-tooling/tree/%40celo/wallet-base%406.0.1/packages/sdk/base/src + +Full List of removed exports -- ContactPhoneNumber, MinimalContact, getContactPhoneNumber, isContact, CURRENCY_ENUM, Currency, CURRENCIES, resolveCurrency, SHORT_CURRENCIES, currencyToShortMap | getErrorMessage | anonymizedPhone | getContactNameHash + + + diff --git a/docs/sdk/base/README.md b/docs/sdk/base/README.md index c6e67fab73..a45aff5218 100644 --- a/docs/sdk/base/README.md +++ b/docs/sdk/base/README.md @@ -10,9 +10,7 @@ - [address](modules/address.md) - [async](modules/async.md) - [collections](modules/collections.md) -- [contacts](modules/contacts.md) - [currencies](modules/currencies.md) -- [displayFormatting](modules/displayFormatting.md) - [future](modules/future.md) - [index](modules/index.md) - [inputValidation](modules/inputValidation.md) diff --git a/docs/sdk/base/enums/currencies.CURRENCY_ENUM.md b/docs/sdk/base/enums/currencies.CURRENCY_ENUM.md deleted file mode 100644 index f94a1f9824..0000000000 --- a/docs/sdk/base/enums/currencies.CURRENCY_ENUM.md +++ /dev/null @@ -1,47 +0,0 @@ -[@celo/base](../README.md) / [currencies](../modules/currencies.md) / CURRENCY\_ENUM - -# Enumeration: CURRENCY\_ENUM - -[currencies](../modules/currencies.md).CURRENCY_ENUM - -**`Deprecated`** - -use StableToken and Token - -## Table of contents - -### Enumeration Members - -- [DOLLAR](currencies.CURRENCY_ENUM.md#dollar) -- [EURO](currencies.CURRENCY_ENUM.md#euro) -- [GOLD](currencies.CURRENCY_ENUM.md#gold) - -## Enumeration Members - -### DOLLAR - -• **DOLLAR** = ``"Celo Dollar"`` - -#### Defined in - -[packages/sdk/base/src/currencies.ts:4](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L4) - -___ - -### EURO - -• **EURO** = ``"Celo Euro"`` - -#### Defined in - -[packages/sdk/base/src/currencies.ts:5](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L5) - -___ - -### GOLD - -• **GOLD** = ``"Celo Gold"`` - -#### Defined in - -[packages/sdk/base/src/currencies.ts:3](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L3) diff --git a/docs/sdk/base/enums/currencies.SHORT_CURRENCIES.md b/docs/sdk/base/enums/currencies.SHORT_CURRENCIES.md deleted file mode 100644 index e2420c5306..0000000000 --- a/docs/sdk/base/enums/currencies.SHORT_CURRENCIES.md +++ /dev/null @@ -1,47 +0,0 @@ -[@celo/base](../README.md) / [currencies](../modules/currencies.md) / SHORT\_CURRENCIES - -# Enumeration: SHORT\_CURRENCIES - -[currencies](../modules/currencies.md).SHORT_CURRENCIES - -**`Deprecated`** - -use StableToken and Token - -## Table of contents - -### Enumeration Members - -- [DOLLAR](currencies.SHORT_CURRENCIES.md#dollar) -- [EURO](currencies.SHORT_CURRENCIES.md#euro) -- [GOLD](currencies.SHORT_CURRENCIES.md#gold) - -## Enumeration Members - -### DOLLAR - -• **DOLLAR** = ``"dollar"`` - -#### Defined in - -[packages/sdk/base/src/currencies.ts:62](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L62) - -___ - -### EURO - -• **EURO** = ``"euro"`` - -#### Defined in - -[packages/sdk/base/src/currencies.ts:64](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L64) - -___ - -### GOLD - -• **GOLD** = ``"gold"`` - -#### Defined in - -[packages/sdk/base/src/currencies.ts:63](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L63) diff --git a/docs/sdk/base/enums/currencies.StableToken.md b/docs/sdk/base/enums/currencies.StableToken.md index 5f0ad06230..b6036ab4a0 100644 --- a/docs/sdk/base/enums/currencies.StableToken.md +++ b/docs/sdk/base/enums/currencies.StableToken.md @@ -20,7 +20,7 @@ #### Defined in -[packages/sdk/base/src/currencies.ts:10](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L10) +[packages/sdk/base/src/currencies.ts:3](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L3) ___ @@ -30,7 +30,7 @@ ___ #### Defined in -[packages/sdk/base/src/currencies.ts:11](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L11) +[packages/sdk/base/src/currencies.ts:4](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L4) ___ @@ -40,4 +40,4 @@ ___ #### Defined in -[packages/sdk/base/src/currencies.ts:9](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L9) +[packages/sdk/base/src/currencies.ts:2](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L2) diff --git a/docs/sdk/base/enums/currencies.Token.md b/docs/sdk/base/enums/currencies.Token.md index 7b9fe81a39..ae8b7f8f87 100644 --- a/docs/sdk/base/enums/currencies.Token.md +++ b/docs/sdk/base/enums/currencies.Token.md @@ -18,4 +18,4 @@ #### Defined in -[packages/sdk/base/src/currencies.ts:15](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L15) +[packages/sdk/base/src/currencies.ts:8](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L8) diff --git a/docs/sdk/base/interfaces/contacts.ContactPhoneNumber.md b/docs/sdk/base/interfaces/contacts.ContactPhoneNumber.md deleted file mode 100644 index ca2a19a58a..0000000000 --- a/docs/sdk/base/interfaces/contacts.ContactPhoneNumber.md +++ /dev/null @@ -1,32 +0,0 @@ -[@celo/base](../README.md) / [contacts](../modules/contacts.md) / ContactPhoneNumber - -# Interface: ContactPhoneNumber - -[contacts](../modules/contacts.md).ContactPhoneNumber - -## Table of contents - -### Properties - -- [label](contacts.ContactPhoneNumber.md#label) -- [number](contacts.ContactPhoneNumber.md#number) - -## Properties - -### label - -• `Optional` **label**: `string` - -#### Defined in - -[packages/sdk/base/src/contacts.ts:2](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/contacts.ts#L2) - -___ - -### number - -• `Optional` **number**: `string` - -#### Defined in - -[packages/sdk/base/src/contacts.ts:3](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/contacts.ts#L3) diff --git a/docs/sdk/base/interfaces/contacts.MinimalContact.md b/docs/sdk/base/interfaces/contacts.MinimalContact.md deleted file mode 100644 index ed39fccc1f..0000000000 --- a/docs/sdk/base/interfaces/contacts.MinimalContact.md +++ /dev/null @@ -1,54 +0,0 @@ -[@celo/base](../README.md) / [contacts](../modules/contacts.md) / MinimalContact - -# Interface: MinimalContact - -[contacts](../modules/contacts.md).MinimalContact - -## Table of contents - -### Properties - -- [displayName](contacts.MinimalContact.md#displayname) -- [phoneNumbers](contacts.MinimalContact.md#phonenumbers) -- [recordID](contacts.MinimalContact.md#recordid) -- [thumbnailPath](contacts.MinimalContact.md#thumbnailpath) - -## Properties - -### displayName - -• `Optional` **displayName**: `string` - -#### Defined in - -[packages/sdk/base/src/contacts.ts:8](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/contacts.ts#L8) - -___ - -### phoneNumbers - -• `Optional` **phoneNumbers**: [`ContactPhoneNumber`](contacts.ContactPhoneNumber.md)[] - -#### Defined in - -[packages/sdk/base/src/contacts.ts:9](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/contacts.ts#L9) - -___ - -### recordID - -• **recordID**: `string` - -#### Defined in - -[packages/sdk/base/src/contacts.ts:7](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/contacts.ts#L7) - -___ - -### thumbnailPath - -• `Optional` **thumbnailPath**: `string` - -#### Defined in - -[packages/sdk/base/src/contacts.ts:10](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/contacts.ts#L10) diff --git a/docs/sdk/base/modules/contacts.md b/docs/sdk/base/modules/contacts.md deleted file mode 100644 index f1b1a27ee3..0000000000 --- a/docs/sdk/base/modules/contacts.md +++ /dev/null @@ -1,55 +0,0 @@ -[@celo/base](../README.md) / contacts - -# Module: contacts - -## Table of contents - -### Interfaces - -- [ContactPhoneNumber](../interfaces/contacts.ContactPhoneNumber.md) -- [MinimalContact](../interfaces/contacts.MinimalContact.md) - -### Functions - -- [getContactPhoneNumber](contacts.md#getcontactphonenumber) -- [isContact](contacts.md#iscontact) - -## Functions - -### getContactPhoneNumber - -▸ **getContactPhoneNumber**(`contact`): `undefined` \| ``null`` \| `string` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `contact` | [`MinimalContact`](../interfaces/contacts.MinimalContact.md) | - -#### Returns - -`undefined` \| ``null`` \| `string` - -#### Defined in - -[packages/sdk/base/src/contacts.ts:13](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/contacts.ts#L13) - -___ - -### isContact - -▸ **isContact**(`contactOrNumber`): contactOrNumber is MinimalContact - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `contactOrNumber` | `any` | - -#### Returns - -contactOrNumber is MinimalContact - -#### Defined in - -[packages/sdk/base/src/contacts.ts:26](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/contacts.ts#L26) diff --git a/docs/sdk/base/modules/currencies.md b/docs/sdk/base/modules/currencies.md index cd1492d689..5b8e00c369 100644 --- a/docs/sdk/base/modules/currencies.md +++ b/docs/sdk/base/modules/currencies.md @@ -6,8 +6,6 @@ ### Enumerations -- [CURRENCY\_ENUM](../enums/currencies.CURRENCY_ENUM.md) -- [SHORT\_CURRENCIES](../enums/currencies.SHORT_CURRENCIES.md) - [StableToken](../enums/currencies.StableToken.md) - [Token](../enums/currencies.Token.md) @@ -15,15 +13,6 @@ - [CeloTokenType](currencies.md#celotokentype) -### Variables - -- [CURRENCIES](currencies.md#currencies) -- [currencyToShortMap](currencies.md#currencytoshortmap) - -### Functions - -- [resolveCurrency](currencies.md#resolvecurrency) - ## Type Aliases ### CeloTokenType @@ -32,58 +21,4 @@ #### Defined in -[packages/sdk/base/src/currencies.ts:18](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L18) - -## Variables - -### CURRENCIES - -• `Const` **CURRENCIES**: `CurrencyObject` - -**`Deprecated`** - -#### Defined in - -[packages/sdk/base/src/currencies.ts:29](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L29) - -___ - -### currencyToShortMap - -• `Const` **currencyToShortMap**: `Object` - -**`Deprecated`** - -use StableToken and Token - -#### Type declaration - -| Name | Type | -| :------ | :------ | -| `Celo Dollar` | [`SHORT_CURRENCIES`](../enums/currencies.SHORT_CURRENCIES.md) | -| `Celo Euro` | [`SHORT_CURRENCIES`](../enums/currencies.SHORT_CURRENCIES.md) | -| `Celo Gold` | [`SHORT_CURRENCIES`](../enums/currencies.SHORT_CURRENCIES.md) | - -#### Defined in - -[packages/sdk/base/src/currencies.ts:68](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L68) - -## Functions - -### resolveCurrency - -▸ **resolveCurrency**(`label`): [`CURRENCY_ENUM`](../enums/currencies.CURRENCY_ENUM.md) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `label` | `string` | - -#### Returns - -[`CURRENCY_ENUM`](../enums/currencies.CURRENCY_ENUM.md) - -#### Defined in - -[packages/sdk/base/src/currencies.ts:47](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L47) +[packages/sdk/base/src/currencies.ts:11](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/currencies.ts#L11) diff --git a/docs/sdk/base/modules/displayFormatting.md b/docs/sdk/base/modules/displayFormatting.md deleted file mode 100644 index a93b527394..0000000000 --- a/docs/sdk/base/modules/displayFormatting.md +++ /dev/null @@ -1,29 +0,0 @@ -[@celo/base](../README.md) / displayFormatting - -# Module: displayFormatting - -## Table of contents - -### Functions - -- [getErrorMessage](displayFormatting.md#geterrormessage) - -## Functions - -### getErrorMessage - -▸ **getErrorMessage**(`error`): `string` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `error` | `Error` | - -#### Returns - -`string` - -#### Defined in - -[packages/sdk/base/src/displayFormatting.ts:2](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/displayFormatting.ts#L2) diff --git a/docs/sdk/base/modules/index.md b/docs/sdk/base/modules/index.md index 07cba77905..9fe9db168c 100644 --- a/docs/sdk/base/modules/index.md +++ b/docs/sdk/base/modules/index.md @@ -12,18 +12,14 @@ - [BaseProps](index.md#baseprops) - [Bip39](index.md#bip39) - [CELO\_DERIVATION\_PATH\_BASE](index.md#celo_derivation_path_base) -- [CURRENCIES](index.md#currencies) -- [CURRENCY\_ENUM](index.md#currency_enum) - [CeloTokenType](index.md#celotokentype) - [Comparator](index.md#comparator) -- [ContactPhoneNumber](index.md#contactphonenumber) - [Err](index.md#err) - [ErrorResult](index.md#errorresult) - [Future](index.md#future) - [JSONParseError](index.md#jsonparseerror) - [JSONParseErrorType](index.md#jsonparseerrortype) - [Logger](index.md#logger) -- [MinimalContact](index.md#minimalcontact) - [MnemonicLanguages](index.md#mnemoniclanguages) - [MnemonicStrength](index.md#mnemonicstrength) - [NULL\_ADDRESS](index.md#null_address) @@ -40,7 +36,6 @@ - [RootError](index.md#rooterror) - [RunningTask](index.md#runningtask) - [RunningTaskWithValue](index.md#runningtaskwithvalue) -- [SHORT\_CURRENCIES](index.md#short_currencies) - [Signature](index.md#signature) - [SignatureBase](index.md#signaturebase) - [Signer](index.md#signer) @@ -51,23 +46,18 @@ - [Token](index.md#token) - [URL\_REGEX](index.md#url_regex) - [ValidatorKind](index.md#validatorkind) -- [anonymizedPhone](index.md#anonymizedphone) - [appendPath](index.md#appendpath) - [bufferToHex](index.md#buffertohex) - [concurrentMap](index.md#concurrentmap) - [concurrentValuesMap](index.md#concurrentvaluesmap) - [conditionWatcher](index.md#conditionwatcher) - [consoleLogger](index.md#consolelogger) -- [currencyToShortMap](index.md#currencytoshortmap) - [ensureLeading0x](index.md#ensureleading0x) - [eqAddress](index.md#eqaddress) - [findAddressIndex](index.md#findaddressindex) - [getAddressChunks](index.md#getaddresschunks) -- [getContactPhoneNumber](index.md#getcontactphonenumber) -- [getErrorMessage](index.md#geterrormessage) - [hexToBuffer](index.md#hextobuffer) - [intersection](index.md#intersection) -- [isContact](index.md#iscontact) - [isE164Number](index.md#ise164number) - [isErr](index.md#iserr) - [isHexString](index.md#ishexstring) @@ -90,7 +80,6 @@ - [pipeToFuture](index.md#pipetofuture) - [prefixLogger](index.md#prefixlogger) - [repeatTask](index.md#repeattask) -- [resolveCurrency](index.md#resolvecurrency) - [retryAsync](index.md#retryasync) - [retryAsyncWithBackOff](index.md#retryasyncwithbackoff) - [retryAsyncWithBackOffAndTimeout](index.md#retryasyncwithbackoffandtimeout) @@ -147,18 +136,6 @@ Re-exports [CELO_DERIVATION_PATH_BASE](account.md#celo_derivation_path_base) ___ -### CURRENCIES - -Re-exports [CURRENCIES](currencies.md#currencies) - -___ - -### CURRENCY\_ENUM - -Re-exports [CURRENCY_ENUM](../enums/currencies.CURRENCY_ENUM.md) - -___ - ### CeloTokenType Re-exports [CeloTokenType](currencies.md#celotokentype) @@ -171,12 +148,6 @@ Re-exports [Comparator](collections.md#comparator) ___ -### ContactPhoneNumber - -Re-exports [ContactPhoneNumber](../interfaces/contacts.ContactPhoneNumber.md) - -___ - ### Err Re-exports [Err](result.md#err) @@ -213,12 +184,6 @@ Re-exports [Logger](logger.md#logger) ___ -### MinimalContact - -Re-exports [MinimalContact](../interfaces/contacts.MinimalContact.md) - -___ - ### MnemonicLanguages Re-exports [MnemonicLanguages](../enums/account.MnemonicLanguages.md) @@ -315,12 +280,6 @@ Re-exports [RunningTaskWithValue](../interfaces/task.RunningTaskWithValue.md) ___ -### SHORT\_CURRENCIES - -Re-exports [SHORT_CURRENCIES](../enums/currencies.SHORT_CURRENCIES.md) - -___ - ### Signature Re-exports [Signature](../interfaces/signatureUtils.Signature.md) @@ -381,12 +340,6 @@ Re-exports [ValidatorKind](../enums/inputValidation.ValidatorKind.md) ___ -### anonymizedPhone - -Re-exports [anonymizedPhone](phoneNumbers.md#anonymizedphone) - -___ - ### appendPath Re-exports [appendPath](string.md#appendpath) @@ -423,12 +376,6 @@ Re-exports [consoleLogger](logger.md#consolelogger) ___ -### currencyToShortMap - -Re-exports [currencyToShortMap](currencies.md#currencytoshortmap) - -___ - ### ensureLeading0x Re-exports [ensureLeading0x](address.md#ensureleading0x) @@ -453,18 +400,6 @@ Re-exports [getAddressChunks](address.md#getaddresschunks) ___ -### getContactPhoneNumber - -Re-exports [getContactPhoneNumber](contacts.md#getcontactphonenumber) - -___ - -### getErrorMessage - -Re-exports [getErrorMessage](displayFormatting.md#geterrormessage) - -___ - ### hexToBuffer Re-exports [hexToBuffer](address.md#hextobuffer) @@ -477,12 +412,6 @@ Re-exports [intersection](collections.md#intersection) ___ -### isContact - -Re-exports [isContact](contacts.md#iscontact) - -___ - ### isE164Number Re-exports [isE164Number](phoneNumbers.md#ise164number) @@ -615,12 +544,6 @@ Re-exports [repeatTask](task.md#repeattask) ___ -### resolveCurrency - -Re-exports [resolveCurrency](currencies.md#resolvecurrency) - -___ - ### retryAsync Re-exports [retryAsync](async.md#retryasync) diff --git a/docs/sdk/base/modules/phoneNumbers.md b/docs/sdk/base/modules/phoneNumbers.md index 8e5432b9fb..7688bf5600 100644 --- a/docs/sdk/base/modules/phoneNumbers.md +++ b/docs/sdk/base/modules/phoneNumbers.md @@ -14,7 +14,6 @@ ### Functions -- [anonymizedPhone](phoneNumbers.md#anonymizedphone) - [isE164Number](phoneNumbers.md#ise164number) ## Variables @@ -31,29 +30,9 @@ #### Defined in -[packages/sdk/base/src/phoneNumbers.ts:19](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/phoneNumbers.ts#L19) - -## Functions - -### anonymizedPhone - -▸ **anonymizedPhone**(`phoneNumber`): `string` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `phoneNumber` | `string` | - -#### Returns - -`string` - -#### Defined in - [packages/sdk/base/src/phoneNumbers.ts:15](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/base/src/phoneNumbers.ts#L15) -___ +## Functions ### isE164Number diff --git a/docs/sdk/contractkit/enums/celo_tokens.StableToken.md b/docs/sdk/contractkit/enums/celo_tokens.StableToken.md index bc8cd96f35..ad248682fe 100644 --- a/docs/sdk/contractkit/enums/celo_tokens.StableToken.md +++ b/docs/sdk/contractkit/enums/celo_tokens.StableToken.md @@ -20,7 +20,7 @@ #### Defined in -packages/sdk/base/lib/currencies.d.ts:9 +packages/sdk/base/lib/currencies.d.ts:3 ___ @@ -30,7 +30,7 @@ ___ #### Defined in -packages/sdk/base/lib/currencies.d.ts:10 +packages/sdk/base/lib/currencies.d.ts:4 ___ @@ -40,4 +40,4 @@ ___ #### Defined in -packages/sdk/base/lib/currencies.d.ts:8 +packages/sdk/base/lib/currencies.d.ts:2 diff --git a/docs/sdk/contractkit/enums/celo_tokens.Token.md b/docs/sdk/contractkit/enums/celo_tokens.Token.md index e9825dd94b..642c9fc203 100644 --- a/docs/sdk/contractkit/enums/celo_tokens.Token.md +++ b/docs/sdk/contractkit/enums/celo_tokens.Token.md @@ -18,4 +18,4 @@ #### Defined in -packages/sdk/base/lib/currencies.d.ts:13 +packages/sdk/base/lib/currencies.d.ts:7 diff --git a/docs/sdk/contractkit/modules/celo_tokens.md b/docs/sdk/contractkit/modules/celo_tokens.md index 6b03a3f075..ccaa169fa8 100644 --- a/docs/sdk/contractkit/modules/celo_tokens.md +++ b/docs/sdk/contractkit/modules/celo_tokens.md @@ -41,7 +41,7 @@ #### Defined in -packages/sdk/base/lib/currencies.d.ts:15 +packages/sdk/base/lib/currencies.d.ts:9 ___ diff --git a/docs/sdk/utils/README.md b/docs/sdk/utils/README.md index 3d32832e21..e4981eec4d 100644 --- a/docs/sdk/utils/README.md +++ b/docs/sdk/utils/README.md @@ -10,9 +10,6 @@ - [async](modules/async.md) - [celoHistory](modules/celoHistory.md) - [collections](modules/collections.md) -- [contacts](modules/contacts.md) -- [currencies](modules/currencies.md) -- [displayFormatting](modules/displayFormatting.md) - [ecdh](modules/ecdh.md) - [ecies](modules/ecies.md) - [fixidity](modules/fixidity.md) diff --git a/docs/sdk/utils/enums/currencies.CURRENCY_ENUM.md b/docs/sdk/utils/enums/currencies.CURRENCY_ENUM.md deleted file mode 100644 index 274225def1..0000000000 --- a/docs/sdk/utils/enums/currencies.CURRENCY_ENUM.md +++ /dev/null @@ -1,47 +0,0 @@ -[@celo/utils](../README.md) / [currencies](../modules/currencies.md) / CURRENCY\_ENUM - -# Enumeration: CURRENCY\_ENUM - -[currencies](../modules/currencies.md).CURRENCY_ENUM - -**`Deprecated`** - -use StableToken and Token - -## Table of contents - -### Enumeration Members - -- [DOLLAR](currencies.CURRENCY_ENUM.md#dollar) -- [EURO](currencies.CURRENCY_ENUM.md#euro) -- [GOLD](currencies.CURRENCY_ENUM.md#gold) - -## Enumeration Members - -### DOLLAR - -• **DOLLAR** = ``"Celo Dollar"`` - -#### Defined in - -packages/sdk/base/lib/currencies.d.ts:4 - -___ - -### EURO - -• **EURO** = ``"Celo Euro"`` - -#### Defined in - -packages/sdk/base/lib/currencies.d.ts:5 - -___ - -### GOLD - -• **GOLD** = ``"Celo Gold"`` - -#### Defined in - -packages/sdk/base/lib/currencies.d.ts:3 diff --git a/docs/sdk/utils/enums/currencies.SHORT_CURRENCIES.md b/docs/sdk/utils/enums/currencies.SHORT_CURRENCIES.md deleted file mode 100644 index 3e850e5175..0000000000 --- a/docs/sdk/utils/enums/currencies.SHORT_CURRENCIES.md +++ /dev/null @@ -1,47 +0,0 @@ -[@celo/utils](../README.md) / [currencies](../modules/currencies.md) / SHORT\_CURRENCIES - -# Enumeration: SHORT\_CURRENCIES - -[currencies](../modules/currencies.md).SHORT_CURRENCIES - -**`Deprecated`** - -use StableToken and Token - -## Table of contents - -### Enumeration Members - -- [DOLLAR](currencies.SHORT_CURRENCIES.md#dollar) -- [EURO](currencies.SHORT_CURRENCIES.md#euro) -- [GOLD](currencies.SHORT_CURRENCIES.md#gold) - -## Enumeration Members - -### DOLLAR - -• **DOLLAR** = ``"dollar"`` - -#### Defined in - -packages/sdk/base/lib/currencies.d.ts:29 - -___ - -### EURO - -• **EURO** = ``"euro"`` - -#### Defined in - -packages/sdk/base/lib/currencies.d.ts:31 - -___ - -### GOLD - -• **GOLD** = ``"gold"`` - -#### Defined in - -packages/sdk/base/lib/currencies.d.ts:30 diff --git a/docs/sdk/utils/interfaces/contacts.ContactPhoneNumber.md b/docs/sdk/utils/interfaces/contacts.ContactPhoneNumber.md deleted file mode 100644 index c5a4c9a238..0000000000 --- a/docs/sdk/utils/interfaces/contacts.ContactPhoneNumber.md +++ /dev/null @@ -1,32 +0,0 @@ -[@celo/utils](../README.md) / [contacts](../modules/contacts.md) / ContactPhoneNumber - -# Interface: ContactPhoneNumber - -[contacts](../modules/contacts.md).ContactPhoneNumber - -## Table of contents - -### Properties - -- [label](contacts.ContactPhoneNumber.md#label) -- [number](contacts.ContactPhoneNumber.md#number) - -## Properties - -### label - -• `Optional` **label**: `string` - -#### Defined in - -packages/sdk/base/lib/contacts.d.ts:2 - -___ - -### number - -• `Optional` **number**: `string` - -#### Defined in - -packages/sdk/base/lib/contacts.d.ts:3 diff --git a/docs/sdk/utils/interfaces/contacts.MinimalContact.md b/docs/sdk/utils/interfaces/contacts.MinimalContact.md deleted file mode 100644 index 489b885321..0000000000 --- a/docs/sdk/utils/interfaces/contacts.MinimalContact.md +++ /dev/null @@ -1,54 +0,0 @@ -[@celo/utils](../README.md) / [contacts](../modules/contacts.md) / MinimalContact - -# Interface: MinimalContact - -[contacts](../modules/contacts.md).MinimalContact - -## Table of contents - -### Properties - -- [displayName](contacts.MinimalContact.md#displayname) -- [phoneNumbers](contacts.MinimalContact.md#phonenumbers) -- [recordID](contacts.MinimalContact.md#recordid) -- [thumbnailPath](contacts.MinimalContact.md#thumbnailpath) - -## Properties - -### displayName - -• `Optional` **displayName**: `string` - -#### Defined in - -packages/sdk/base/lib/contacts.d.ts:7 - -___ - -### phoneNumbers - -• `Optional` **phoneNumbers**: [`ContactPhoneNumber`](contacts.ContactPhoneNumber.md)[] - -#### Defined in - -packages/sdk/base/lib/contacts.d.ts:8 - -___ - -### recordID - -• **recordID**: `string` - -#### Defined in - -packages/sdk/base/lib/contacts.d.ts:6 - -___ - -### thumbnailPath - -• `Optional` **thumbnailPath**: `string` - -#### Defined in - -packages/sdk/base/lib/contacts.d.ts:9 diff --git a/docs/sdk/utils/modules/contacts.md b/docs/sdk/utils/modules/contacts.md deleted file mode 100644 index 0bd226a1e7..0000000000 --- a/docs/sdk/utils/modules/contacts.md +++ /dev/null @@ -1,80 +0,0 @@ -[@celo/utils](../README.md) / contacts - -# Module: contacts - -## Table of contents - -### Interfaces - -- [ContactPhoneNumber](../interfaces/contacts.ContactPhoneNumber.md) -- [MinimalContact](../interfaces/contacts.MinimalContact.md) - -### Functions - -- [getContactNameHash](contacts.md#getcontactnamehash) -- [getContactPhoneNumber](contacts.md#getcontactphonenumber) -- [isContact](contacts.md#iscontact) - -## Functions - -### getContactNameHash - -▸ **getContactNameHash**(`contact`): `string` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `contact` | [`MinimalContact`](../interfaces/contacts.MinimalContact.md) | - -#### Returns - -`string` - -**`Deprecated`** - -May be removed in future - -#### Defined in - -[packages/sdk/utils/src/contacts.ts:16](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/utils/src/contacts.ts#L16) - -___ - -### getContactPhoneNumber - -▸ **getContactPhoneNumber**(`contact`): `undefined` \| ``null`` \| `string` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `contact` | [`MinimalContact`](../interfaces/contacts.MinimalContact.md) | - -#### Returns - -`undefined` \| ``null`` \| `string` - -#### Defined in - -packages/sdk/base/lib/contacts.d.ts:11 - -___ - -### isContact - -▸ **isContact**(`contactOrNumber`): contactOrNumber is MinimalContact - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `contactOrNumber` | `any` | - -#### Returns - -contactOrNumber is MinimalContact - -#### Defined in - -packages/sdk/base/lib/contacts.d.ts:12 diff --git a/docs/sdk/utils/modules/currencies.md b/docs/sdk/utils/modules/currencies.md deleted file mode 100644 index 630430779e..0000000000 --- a/docs/sdk/utils/modules/currencies.md +++ /dev/null @@ -1,73 +0,0 @@ -[@celo/utils](../README.md) / currencies - -# Module: currencies - -## Table of contents - -### Enumerations - -- [CURRENCY\_ENUM](../enums/currencies.CURRENCY_ENUM.md) -- [SHORT\_CURRENCIES](../enums/currencies.SHORT_CURRENCIES.md) - -### Variables - -- [CURRENCIES](currencies.md#currencies) -- [currencyToShortMap](currencies.md#currencytoshortmap) - -### Functions - -- [resolveCurrency](currencies.md#resolvecurrency) - -## Variables - -### CURRENCIES - -• `Const` **CURRENCIES**: `CurrencyObject` - -**`Deprecated`** - -#### Defined in - -packages/sdk/base/lib/currencies.d.ts:25 - -___ - -### currencyToShortMap - -• `Const` **currencyToShortMap**: `Object` - -**`Deprecated`** - -use StableToken and Token - -#### Type declaration - -| Name | Type | -| :------ | :------ | -| `Celo Dollar` | [`SHORT_CURRENCIES`](../enums/currencies.SHORT_CURRENCIES.md) | -| `Celo Euro` | [`SHORT_CURRENCIES`](../enums/currencies.SHORT_CURRENCIES.md) | -| `Celo Gold` | [`SHORT_CURRENCIES`](../enums/currencies.SHORT_CURRENCIES.md) | - -#### Defined in - -packages/sdk/base/lib/currencies.d.ts:34 - -## Functions - -### resolveCurrency - -▸ **resolveCurrency**(`label`): [`CURRENCY_ENUM`](../enums/currencies.CURRENCY_ENUM.md) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `label` | `string` | - -#### Returns - -[`CURRENCY_ENUM`](../enums/currencies.CURRENCY_ENUM.md) - -#### Defined in - -packages/sdk/base/lib/currencies.d.ts:26 diff --git a/docs/sdk/utils/modules/displayFormatting.md b/docs/sdk/utils/modules/displayFormatting.md deleted file mode 100644 index e63213b698..0000000000 --- a/docs/sdk/utils/modules/displayFormatting.md +++ /dev/null @@ -1,29 +0,0 @@ -[@celo/utils](../README.md) / displayFormatting - -# Module: displayFormatting - -## Table of contents - -### Functions - -- [getErrorMessage](displayFormatting.md#geterrormessage) - -## Functions - -### getErrorMessage - -▸ **getErrorMessage**(`error`): `string` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `error` | `Error` | - -#### Returns - -`string` - -#### Defined in - -packages/sdk/base/lib/displayFormatting.d.ts:2 diff --git a/docs/sdk/utils/modules/index.md b/docs/sdk/utils/modules/index.md index 2d644b7ec1..70101e96fc 100644 --- a/docs/sdk/utils/modules/index.md +++ b/docs/sdk/utils/modules/index.md @@ -7,20 +7,10 @@ ### References - [AddressUtils](index.md#addressutils) -- [CURRENCIES](index.md#currencies) -- [CURRENCY\_ENUM](index.md#currency_enum) -- [ContactPhoneNumber](index.md#contactphonenumber) - [ECIES](index.md#ecies) - [IstanbulUtils](index.md#istanbulutils) -- [MinimalContact](index.md#minimalcontact) -- [SHORT\_CURRENCIES](index.md#short_currencies) - [SignatureUtils](index.md#signatureutils) - [StringUtils](index.md#stringutils) -- [currencyToShortMap](index.md#currencytoshortmap) -- [getContactNameHash](index.md#getcontactnamehash) -- [getContactPhoneNumber](index.md#getcontactphonenumber) -- [isContact](index.md#iscontact) -- [resolveCurrency](index.md#resolvecurrency) ## References @@ -30,24 +20,6 @@ Renames and re-exports [address](address.md) ___ -### CURRENCIES - -Re-exports [CURRENCIES](currencies.md#currencies) - -___ - -### CURRENCY\_ENUM - -Re-exports [CURRENCY_ENUM](../enums/currencies.CURRENCY_ENUM.md) - -___ - -### ContactPhoneNumber - -Re-exports [ContactPhoneNumber](../interfaces/contacts.ContactPhoneNumber.md) - -___ - ### ECIES Re-exports [ECIES](ecies.md#ecies) @@ -60,18 +32,6 @@ Re-exports [IstanbulUtils](istanbul.md#istanbulutils) ___ -### MinimalContact - -Re-exports [MinimalContact](../interfaces/contacts.MinimalContact.md) - -___ - -### SHORT\_CURRENCIES - -Re-exports [SHORT_CURRENCIES](../enums/currencies.SHORT_CURRENCIES.md) - -___ - ### SignatureUtils Re-exports [SignatureUtils](signatureUtils.md#signatureutils) @@ -81,33 +41,3 @@ ___ ### StringUtils Re-exports [StringUtils](string.md#stringutils) - -___ - -### currencyToShortMap - -Re-exports [currencyToShortMap](currencies.md#currencytoshortmap) - -___ - -### getContactNameHash - -Re-exports [getContactNameHash](contacts.md#getcontactnamehash) - -___ - -### getContactPhoneNumber - -Re-exports [getContactPhoneNumber](contacts.md#getcontactphonenumber) - -___ - -### isContact - -Re-exports [isContact](contacts.md#iscontact) - -___ - -### resolveCurrency - -Re-exports [resolveCurrency](currencies.md#resolvecurrency) diff --git a/packages/sdk/base/src/contacts.ts b/packages/sdk/base/src/contacts.ts deleted file mode 100644 index f655720212..0000000000 --- a/packages/sdk/base/src/contacts.ts +++ /dev/null @@ -1,31 +0,0 @@ -export interface ContactPhoneNumber { - label?: string - number?: string -} - -export interface MinimalContact { - recordID: string - displayName?: string - phoneNumbers?: ContactPhoneNumber[] - thumbnailPath?: string -} - -export const getContactPhoneNumber = (contact: MinimalContact) => { - if (!contact) { - throw new Error('Invalid contact') - } - - if (!contact.phoneNumbers || !contact.phoneNumbers.length) { - return null - } - - // TODO(Rossy) find the right phone number based on the address - return contact.phoneNumbers[0].number -} - -export function isContact(contactOrNumber: any): contactOrNumber is MinimalContact { - if (typeof contactOrNumber === 'object') { - return 'recordID' in contactOrNumber - } - return false -} diff --git a/packages/sdk/base/src/currencies.ts b/packages/sdk/base/src/currencies.ts index 2bfbd87880..19105b8355 100644 --- a/packages/sdk/base/src/currencies.ts +++ b/packages/sdk/base/src/currencies.ts @@ -1,10 +1,3 @@ -/** @deprecated use StableToken and Token */ -export enum CURRENCY_ENUM { - GOLD = 'Celo Gold', - DOLLAR = 'Celo Dollar', - EURO = 'Celo Euro', -} - export enum StableToken { cUSD = 'cUSD', cEUR = 'cEUR', @@ -16,57 +9,3 @@ export enum Token { } export type CeloTokenType = StableToken | Token - -interface Currency { - symbol: string - code: string - displayDecimals: number -} - -type CurrencyObject = { [key in CURRENCY_ENUM]: Currency } - -/** @deprecated */ -export const CURRENCIES: CurrencyObject = { - [CURRENCY_ENUM.GOLD]: { - symbol: '', - code: 'cGLD', - displayDecimals: 3, - }, - [CURRENCY_ENUM.DOLLAR]: { - symbol: '$', - code: 'cUSD', - displayDecimals: 2, - }, - [CURRENCY_ENUM.EURO]: { - symbol: '€', - code: 'cEUR', - displayDecimals: 2, - }, -} - -export const resolveCurrency = (label: string): CURRENCY_ENUM => { - if (label && label.toLowerCase().includes('dollar')) { - return CURRENCY_ENUM.DOLLAR - } else if (label && label.toLowerCase().includes('euro')) { - return CURRENCY_ENUM.EURO - } else if (label && label.toLowerCase().includes('gold')) { - return CURRENCY_ENUM.GOLD - } else { - console.info('Unable to resolve currency from label: ' + label) - return CURRENCY_ENUM.DOLLAR - } -} - -/** @deprecated use StableToken and Token */ -export enum SHORT_CURRENCIES { - DOLLAR = 'dollar', - GOLD = 'gold', - EURO = 'euro', -} - -/** @deprecated use StableToken and Token */ -export const currencyToShortMap = { - [CURRENCY_ENUM.DOLLAR]: SHORT_CURRENCIES.DOLLAR, - [CURRENCY_ENUM.GOLD]: SHORT_CURRENCIES.GOLD, - [CURRENCY_ENUM.EURO]: SHORT_CURRENCIES.EURO, -} diff --git a/packages/sdk/base/src/displayFormatting.ts b/packages/sdk/base/src/displayFormatting.ts deleted file mode 100644 index 6d9a85662b..0000000000 --- a/packages/sdk/base/src/displayFormatting.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** @internal */ -export function getErrorMessage(error: Error) { - // This replacement is because when the error reaches here, it's been wrapped - // by Error: multiple times - let errorMsg = error.message || error.name || 'unknown' - errorMsg = errorMsg.replace(/Error:/g, '') - if (error.stack) { - errorMsg += ' in ' + error.stack.substring(0, 100) - } - return errorMsg -} diff --git a/packages/sdk/base/src/index.ts b/packages/sdk/base/src/index.ts index 716c6645ed..084f00fdff 100644 --- a/packages/sdk/base/src/index.ts +++ b/packages/sdk/base/src/index.ts @@ -2,9 +2,7 @@ export * from './account' export * from './address' export * from './async' export * from './collections' -export * from './contacts' export * from './currencies' -export * from './displayFormatting' export * from './future' export * from './inputValidation' export * from './io' diff --git a/packages/sdk/base/src/phoneNumbers.ts b/packages/sdk/base/src/phoneNumbers.ts index 1334c0f9e2..84bc29f4fa 100644 --- a/packages/sdk/base/src/phoneNumbers.ts +++ b/packages/sdk/base/src/phoneNumbers.ts @@ -12,10 +12,6 @@ export function isE164Number(phoneNumber: string) { return E164_REGEX.test(phoneNumber) } -export function anonymizedPhone(phoneNumber: string) { - return phoneNumber.slice(0, -4) + 'XXXX' -} - export const PhoneNumberBase = { isE164Number, } diff --git a/packages/sdk/metadata-claims/lib/account.d.ts b/packages/sdk/metadata-claims/lib/account.d.ts new file mode 100644 index 0000000000..e124320410 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/account.d.ts @@ -0,0 +1,20 @@ +import * as t from 'io-ts'; +import { ClaimTypes } from './types'; +/** + * + * Provide the type minus the validation that the public key and address are derived from the same private key + */ +export declare const AccountClaimTypeH: t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + address: t.Type; + publicKey: t.UnionC<[t.UndefinedC, t.Type]>; +}>; +export declare const AccountClaimType: t.Type<{ + type: ClaimTypes.ACCOUNT; + timestamp: number; + address: string; + publicKey: string | undefined; +}, any, unknown>; +export type AccountClaim = t.TypeOf; +export declare const createAccountClaim: (address: string, publicKey?: string) => AccountClaim; diff --git a/packages/sdk/metadata-claims/lib/account.js b/packages/sdk/metadata-claims/lib/account.js new file mode 100644 index 0000000000..5363a44403 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/account.js @@ -0,0 +1,66 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createAccountClaim = exports.AccountClaimType = exports.AccountClaimTypeH = void 0; +const address_1 = require("@celo/utils/lib/address"); +const io_1 = require("@celo/utils/lib/io"); +const Either_1 = require("fp-ts/lib/Either"); +const t = __importStar(require("io-ts")); +const types_1 = require("./types"); +/** + * + * Provide the type minus the validation that the public key and address are derived from the same private key + */ +exports.AccountClaimTypeH = t.type({ + type: t.literal(types_1.ClaimTypes.ACCOUNT), + timestamp: types_1.TimestampType, + address: io_1.AddressType, + // io-ts way of defining optional key-value pair + publicKey: t.union([t.undefined, io_1.PublicKeyType]), +}); +exports.AccountClaimType = new t.Type('AccountClaimType', exports.AccountClaimTypeH.is, (unknownValue, context) => Either_1.either.chain(exports.AccountClaimTypeH.validate(unknownValue, context), (claim) => { + if (claim.publicKey === undefined) { + return t.success(claim); + } + const derivedAddress = (0, address_1.publicKeyToAddress)(claim.publicKey); + return derivedAddress === claim.address + ? t.success(claim) + : t.failure(claim, context, 'public key did not match the address in the claim'); +}), (x) => x); +const createAccountClaim = (address, publicKey) => { + const claim = { + timestamp: (0, types_1.now)(), + type: types_1.ClaimTypes.ACCOUNT, + address, + publicKey, + }; + const parsedClaim = exports.AccountClaimType.decode(claim); + if ((0, Either_1.isLeft)(parsedClaim)) { + throw new Error(`A valid claim could not be created`); + } + return parsedClaim.right; +}; +exports.createAccountClaim = createAccountClaim; +//# sourceMappingURL=account.js.map \ No newline at end of file diff --git a/packages/sdk/metadata-claims/lib/account.js.map b/packages/sdk/metadata-claims/lib/account.js.map new file mode 100644 index 0000000000..a132a0119c --- /dev/null +++ b/packages/sdk/metadata-claims/lib/account.js.map @@ -0,0 +1 @@ +{"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAA4D;AAC5D,2CAA+D;AAC/D,6CAAiD;AACjD,yCAA0B;AAC1B,mCAAwD;AAExD;;;GAGG;AACU,QAAA,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAU,CAAC,OAAO,CAAC;IACnC,SAAS,EAAE,qBAAa;IACxB,OAAO,EAAE,gBAAW;IACpB,gDAAgD;IAChD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,kBAAa,CAAC,CAAC;CACjD,CAAC,CAAA;AAEW,QAAA,gBAAgB,GAAG,IAAI,CAAC,CAAC,IAAI,CACxC,kBAAkB,EAClB,yBAAiB,CAAC,EAAE,EACpB,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,CACxB,eAAM,CAAC,KAAK,CAAC,yBAAiB,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;IACxE,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IACD,MAAM,cAAc,GAAG,IAAA,4BAAkB,EAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC1D,OAAO,cAAc,KAAK,KAAK,CAAC,OAAO;QACrC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,mDAAmD,CAAC,CAAA;AACpF,CAAC,CAAC,EACJ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CACT,CAAA;AAIM,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAE,SAAkB,EAAgB,EAAE;IACtF,MAAM,KAAK,GAAG;QACZ,SAAS,EAAE,IAAA,WAAG,GAAE;QAChB,IAAI,EAAE,kBAAU,CAAC,OAAO;QACxB,OAAO;QACP,SAAS;KACV,CAAA;IAED,MAAM,WAAW,GAAG,wBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAElD,IAAI,IAAA,eAAM,EAAC,WAAW,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;IAED,OAAO,WAAW,CAAC,KAAK,CAAA;AAC1B,CAAC,CAAA;AAfY,QAAA,kBAAkB,sBAe9B"} \ No newline at end of file diff --git a/packages/sdk/metadata-claims/lib/claim.d.ts b/packages/sdk/metadata-claims/lib/claim.d.ts new file mode 100644 index 0000000000..2f53fd1880 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/claim.d.ts @@ -0,0 +1,89 @@ +import * as t from 'io-ts'; +import { AccountClaim } from './account'; +import { ClaimTypes } from './types'; +export declare const KeybaseClaimType: t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + username: t.StringC; +}>; +export type KeybaseClaim = t.TypeOf; +declare const DomainClaimType: t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + domain: t.StringC; +}>; +declare const NameClaimType: t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + name: t.StringC; +}>; +declare const StorageClaimType: t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + address: t.StringC; + filteredDataPaths: t.StringC; +}>; +export declare const ClaimType: t.UnionC<[t.Type<{ + type: ClaimTypes.ACCOUNT; + timestamp: number; + address: string; + publicKey: string | undefined; +}, any, unknown>, t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + domain: t.StringC; +}>, t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + username: t.StringC; +}>, t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + name: t.StringC; +}>, t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + address: t.StringC; + filteredDataPaths: t.StringC; +}>]>; +export declare const SignedClaimType: t.TypeC<{ + claim: t.UnionC<[t.Type<{ + type: ClaimTypes.ACCOUNT; + timestamp: number; + address: string; + publicKey: string | undefined; + }, any, unknown>, t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + domain: t.StringC; + }>, t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + username: t.StringC; + }>, t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + name: t.StringC; + }>, t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + address: t.StringC; + filteredDataPaths: t.StringC; + }>]>; + signature: t.StringC; +}>; +export declare const DOMAIN_TXT_HEADER = "celo-site-verification"; +export type DomainClaim = t.TypeOf; +export type NameClaim = t.TypeOf; +export type StorageClaim = t.TypeOf; +export type Claim = DomainClaim | KeybaseClaim | NameClaim | AccountClaim | StorageClaim; +export type ClaimPayload = K extends typeof ClaimTypes.DOMAIN ? DomainClaim : K extends typeof ClaimTypes.NAME ? NameClaim : K extends typeof ClaimTypes.KEYBASE ? KeybaseClaim : K extends typeof ClaimTypes.ACCOUNT ? AccountClaim : StorageClaim; +/** @internal */ +export declare const isOfType: (type: K) => (data: Claim) => data is ClaimPayload; +export declare function hashOfClaim(claim: Claim): string; +export declare function hashOfClaims(claims: Claim[]): string; +export declare function serializeClaim(claim: Claim): string; +export declare const createNameClaim: (name: string) => NameClaim; +export declare const createDomainClaim: (domain: string) => DomainClaim; +export declare const createStorageClaim: (storageURL: string) => StorageClaim; +export {}; diff --git a/packages/sdk/metadata-claims/lib/claim.js b/packages/sdk/metadata-claims/lib/claim.js new file mode 100644 index 0000000000..09e271eddb --- /dev/null +++ b/packages/sdk/metadata-claims/lib/claim.js @@ -0,0 +1,100 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createStorageClaim = exports.createDomainClaim = exports.createNameClaim = exports.serializeClaim = exports.hashOfClaims = exports.hashOfClaim = exports.isOfType = exports.DOMAIN_TXT_HEADER = exports.SignedClaimType = exports.ClaimType = exports.KeybaseClaimType = void 0; +const signatureUtils_1 = require("@celo/utils/lib/signatureUtils"); +const t = __importStar(require("io-ts")); +const account_1 = require("./account"); +const types_1 = require("./types"); +exports.KeybaseClaimType = t.type({ + type: t.literal(types_1.ClaimTypes.KEYBASE), + timestamp: types_1.TimestampType, + // TODO: Validate compliant username before just interpolating + username: t.string, +}); +const DomainClaimType = t.type({ + type: t.literal(types_1.ClaimTypes.DOMAIN), + timestamp: types_1.TimestampType, + domain: t.string, +}); +const NameClaimType = t.type({ + type: t.literal(types_1.ClaimTypes.NAME), + timestamp: types_1.TimestampType, + name: t.string, +}); +const StorageClaimType = t.type({ + type: t.literal(types_1.ClaimTypes.STORAGE), + timestamp: types_1.TimestampType, + address: t.string, + filteredDataPaths: t.string, +}); +exports.ClaimType = t.union([ + account_1.AccountClaimType, + DomainClaimType, + exports.KeybaseClaimType, + NameClaimType, + StorageClaimType, +]); +exports.SignedClaimType = t.type({ + claim: exports.ClaimType, + signature: types_1.SignatureType, +}); +exports.DOMAIN_TXT_HEADER = 'celo-site-verification'; +/** @internal */ +const isOfType = (type) => (data) => data.type === type; +exports.isOfType = isOfType; +function hashOfClaim(claim) { + return (0, signatureUtils_1.hashMessage)(serializeClaim(claim)); +} +exports.hashOfClaim = hashOfClaim; +function hashOfClaims(claims) { + const hashes = claims.map(hashOfClaim); + return (0, signatureUtils_1.hashMessage)(hashes.join('')); +} +exports.hashOfClaims = hashOfClaims; +function serializeClaim(claim) { + return JSON.stringify(claim); +} +exports.serializeClaim = serializeClaim; +const createNameClaim = (name) => ({ + name, + timestamp: (0, types_1.now)(), + type: types_1.ClaimTypes.NAME, +}); +exports.createNameClaim = createNameClaim; +const createDomainClaim = (domain) => ({ + domain, + timestamp: (0, types_1.now)(), + type: types_1.ClaimTypes.DOMAIN, +}); +exports.createDomainClaim = createDomainClaim; +const createStorageClaim = (storageURL) => ({ + address: storageURL, + timestamp: (0, types_1.now)(), + type: types_1.ClaimTypes.STORAGE, + filteredDataPaths: '.*', +}); +exports.createStorageClaim = createStorageClaim; +//# sourceMappingURL=claim.js.map \ No newline at end of file diff --git a/packages/sdk/metadata-claims/lib/claim.js.map b/packages/sdk/metadata-claims/lib/claim.js.map new file mode 100644 index 0000000000..22f7004918 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/claim.js.map @@ -0,0 +1 @@ +{"version":3,"file":"claim.js","sourceRoot":"","sources":["../src/claim.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mEAA4D;AAC5D,yCAA0B;AAC1B,uCAA0D;AAC1D,mCAAuE;AAE1D,QAAA,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAU,CAAC,OAAO,CAAC;IACnC,SAAS,EAAE,qBAAa;IACxB,8DAA8D;IAC9D,QAAQ,EAAE,CAAC,CAAC,MAAM;CACnB,CAAC,CAAA;AAGF,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAU,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,qBAAa;IACxB,MAAM,EAAE,CAAC,CAAC,MAAM;CACjB,CAAC,CAAA;AAEF,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAU,CAAC,IAAI,CAAC;IAChC,SAAS,EAAE,qBAAa;IACxB,IAAI,EAAE,CAAC,CAAC,MAAM;CACf,CAAC,CAAA;AAEF,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAU,CAAC,OAAO,CAAC;IACnC,SAAS,EAAE,qBAAa;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM;IACjB,iBAAiB,EAAE,CAAC,CAAC,MAAM;CAC5B,CAAC,CAAA;AAEW,QAAA,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC;IAC/B,0BAAgB;IAChB,eAAe;IACf,wBAAgB;IAChB,aAAa;IACb,gBAAgB;CACjB,CAAC,CAAA;AAEW,QAAA,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,KAAK,EAAE,iBAAS;IAChB,SAAS,EAAE,qBAAa;CACzB,CAAC,CAAA;AAEW,QAAA,iBAAiB,GAAG,wBAAwB,CAAA;AAgBzD,gBAAgB;AACT,MAAM,QAAQ,GACnB,CAAuB,IAAO,EAAE,EAAE,CAClC,CAAC,IAAW,EAA2B,EAAE,CACvC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAA;AAHT,QAAA,QAAQ,YAGC;AAEtB,SAAgB,WAAW,CAAC,KAAY;IACtC,OAAO,IAAA,4BAAW,EAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;AAC3C,CAAC;AAFD,kCAEC;AAED,SAAgB,YAAY,CAAC,MAAe;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IACtC,OAAO,IAAA,4BAAW,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;AACrC,CAAC;AAHD,oCAGC;AAED,SAAgB,cAAc,CAAC,KAAY;IACzC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAFD,wCAEC;AAEM,MAAM,eAAe,GAAG,CAAC,IAAY,EAAa,EAAE,CAAC,CAAC;IAC3D,IAAI;IACJ,SAAS,EAAE,IAAA,WAAG,GAAE;IAChB,IAAI,EAAE,kBAAU,CAAC,IAAI;CACtB,CAAC,CAAA;AAJW,QAAA,eAAe,mBAI1B;AAEK,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAe,EAAE,CAAC,CAAC;IACjE,MAAM;IACN,SAAS,EAAE,IAAA,WAAG,GAAE;IAChB,IAAI,EAAE,kBAAU,CAAC,MAAM;CACxB,CAAC,CAAA;AAJW,QAAA,iBAAiB,qBAI5B;AAEK,MAAM,kBAAkB,GAAG,CAAC,UAAkB,EAAgB,EAAE,CAAC,CAAC;IACvE,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,IAAA,WAAG,GAAE;IAChB,IAAI,EAAE,kBAAU,CAAC,OAAO;IACxB,iBAAiB,EAAE,IAAI;CACxB,CAAC,CAAA;AALW,QAAA,kBAAkB,sBAK7B"} \ No newline at end of file diff --git a/packages/sdk/metadata-claims/lib/index.d.ts b/packages/sdk/metadata-claims/lib/index.d.ts new file mode 100644 index 0000000000..31b421c8b3 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/index.d.ts @@ -0,0 +1,2 @@ +export { Claim, createNameClaim } from './claim'; +export * from './metadata'; diff --git a/packages/sdk/metadata-claims/lib/index.js b/packages/sdk/metadata-claims/lib/index.js new file mode 100644 index 0000000000..3075c7632b --- /dev/null +++ b/packages/sdk/metadata-claims/lib/index.js @@ -0,0 +1,21 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createNameClaim = void 0; +var claim_1 = require("./claim"); +Object.defineProperty(exports, "createNameClaim", { enumerable: true, get: function () { return claim_1.createNameClaim; } }); +__exportStar(require("./metadata"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/sdk/metadata-claims/lib/index.js.map b/packages/sdk/metadata-claims/lib/index.js.map new file mode 100644 index 0000000000..b795a3c59c --- /dev/null +++ b/packages/sdk/metadata-claims/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iCAAgD;AAAhC,wGAAA,eAAe,OAAA;AAC/B,6CAA0B"} \ No newline at end of file diff --git a/packages/sdk/metadata-claims/lib/keybase.d.ts b/packages/sdk/metadata-claims/lib/keybase.d.ts new file mode 100644 index 0000000000..5ecb73a925 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/keybase.d.ts @@ -0,0 +1,19 @@ +import { Address } from '@celo/base/lib/address'; +import { KeybaseClaim } from './claim'; +import { AccountMetadataSignerGetters } from './types'; +export declare const keybaseFilePathToProof = ".well-known/celo/"; +export declare const proofFileName: (address: Address) => string; +export declare const targetURL: (username: string, address: Address) => string; +/** + * + * @remarks + * If verification encounters an error, returns the error message as a string + * otherwise returns undefined when successful + * + * @param accountsInfoGetters + * @param claim + * @param signer + * @returns a human readable string with claims (non)verifiability or undefined + */ +export declare function verifyKeybaseClaim(accountsInfoGetters: AccountMetadataSignerGetters, claim: KeybaseClaim, signer: Address): Promise; +export declare const createKeybaseClaim: (username: string) => KeybaseClaim; diff --git a/packages/sdk/metadata-claims/lib/keybase.js b/packages/sdk/metadata-claims/lib/keybase.js new file mode 100644 index 0000000000..b327ca9c8c --- /dev/null +++ b/packages/sdk/metadata-claims/lib/keybase.js @@ -0,0 +1,74 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createKeybaseClaim = exports.verifyKeybaseClaim = exports.targetURL = exports.proofFileName = exports.keybaseFilePathToProof = void 0; +const cross_fetch_1 = __importDefault(require("cross-fetch")); +const Either_1 = require("fp-ts/lib/Either"); +const claim_1 = require("./claim"); +const metadata_1 = require("./metadata"); +const types_1 = require("./types"); +exports.keybaseFilePathToProof = `.well-known/celo/`; +const proofFileName = (address) => `verify-${address}.json`; +exports.proofFileName = proofFileName; +const targetURL = (username, address) => `https://${username}.keybase.pub/${exports.keybaseFilePathToProof}${(0, exports.proofFileName)(address)}`; +exports.targetURL = targetURL; +/** + * + * @remarks + * If verification encounters an error, returns the error message as a string + * otherwise returns undefined when successful + * + * @param accountsInfoGetters + * @param claim + * @param signer + * @returns a human readable string with claims (non)verifiability or undefined + */ +function verifyKeybaseClaim(accountsInfoGetters, claim, signer) { + return __awaiter(this, void 0, void 0, function* () { + try { + const resp = yield (0, cross_fetch_1.default)((0, exports.targetURL)(claim.username, signer)); + if (!resp.ok) { + return `Proof of ownership could not be retrieved at ${(0, exports.targetURL)(claim.username, signer)}, request yielded ${resp.status} status code`; + } + const jsonResp = yield resp.json(); + const parsedClaim = claim_1.SignedClaimType.decode(jsonResp); + if ((0, Either_1.isLeft)(parsedClaim)) { + return 'Claim is incorrectly formatted'; + } + const hasValidSignature = yield metadata_1.IdentityMetadataWrapper.verifySignerForAddress(accountsInfoGetters, (0, claim_1.hashOfClaim)(parsedClaim.right.claim), parsedClaim.right.signature, signer); + if (!hasValidSignature) { + return 'Claim does not contain a valid signature'; + } + const parsedKeybaseClaim = claim_1.KeybaseClaimType.decode(parsedClaim.right.claim); + if ((0, Either_1.isLeft)(parsedKeybaseClaim)) { + return 'Hosted claim is not a Keybase claim'; + } + if (parsedKeybaseClaim.right.username !== claim.username) { + return 'Usernames do not match'; + } + return; + } + catch (error) { + return 'Could not verify Keybase claim: ' + error; + } + }); +} +exports.verifyKeybaseClaim = verifyKeybaseClaim; +const createKeybaseClaim = (username) => ({ + username, + timestamp: (0, types_1.now)(), + type: types_1.ClaimTypes.KEYBASE, +}); +exports.createKeybaseClaim = createKeybaseClaim; +//# sourceMappingURL=keybase.js.map \ No newline at end of file diff --git a/packages/sdk/metadata-claims/lib/keybase.js.map b/packages/sdk/metadata-claims/lib/keybase.js.map new file mode 100644 index 0000000000..c916f044f3 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/keybase.js.map @@ -0,0 +1 @@ +{"version":3,"file":"keybase.js","sourceRoot":"","sources":["../src/keybase.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,8DAA+B;AAC/B,6CAAyC;AACzC,mCAAsF;AACtF,yCAAoD;AACpD,mCAAuE;AAE1D,QAAA,sBAAsB,GAAG,mBAAmB,CAAA;AAClD,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,UAAU,OAAO,OAAO,CAAA;AAA9D,QAAA,aAAa,iBAAiD;AACpE,MAAM,SAAS,GAAG,CAAC,QAAgB,EAAE,OAAgB,EAAE,EAAE,CAC9D,WAAW,QAAQ,gBAAgB,8BAAsB,GAAG,IAAA,qBAAa,EAAC,OAAO,CAAC,EAAE,CAAA;AADzE,QAAA,SAAS,aACgE;AAEtF;;;;;;;;;;GAUG;AAEH,SAAsB,kBAAkB,CACtC,mBAAiD,EACjD,KAAmB,EACnB,MAAe;;QAEf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAA,qBAAK,EAAC,IAAA,iBAAS,EAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;YAC3D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,OAAO,gDAAgD,IAAA,iBAAS,EAC9D,KAAK,CAAC,QAAQ,EACd,MAAM,CACP,qBAAqB,IAAI,CAAC,MAAM,cAAc,CAAA;YACjD,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;YAClC,MAAM,WAAW,GAAG,uBAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACpD,IAAI,IAAA,eAAM,EAAC,WAAW,CAAC,EAAE,CAAC;gBACxB,OAAO,gCAAgC,CAAA;YACzC,CAAC;YAED,MAAM,iBAAiB,GAAG,MAAM,kCAAuB,CAAC,sBAAsB,CAC5E,mBAAmB,EACnB,IAAA,mBAAW,EAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EACpC,WAAW,CAAC,KAAK,CAAC,SAAS,EAC3B,MAAM,CACP,CAAA;YAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,OAAO,0CAA0C,CAAA;YACnD,CAAC;YAED,MAAM,kBAAkB,GAAG,wBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAC3E,IAAI,IAAA,eAAM,EAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC/B,OAAO,qCAAqC,CAAA;YAC9C,CAAC;YAED,IAAI,kBAAkB,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACzD,OAAO,wBAAwB,CAAA;YACjC,CAAC;YAED,OAAM;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,kCAAkC,GAAG,KAAK,CAAA;QACnD,CAAC;IACH,CAAC;CAAA;AA5CD,gDA4CC;AAEM,MAAM,kBAAkB,GAAG,CAAC,QAAgB,EAAgB,EAAE,CAAC,CAAC;IACrE,QAAQ;IACR,SAAS,EAAE,IAAA,WAAG,GAAE;IAChB,IAAI,EAAE,kBAAU,CAAC,OAAO;CACzB,CAAC,CAAA;AAJW,QAAA,kBAAkB,sBAI7B"} \ No newline at end of file diff --git a/packages/sdk/metadata-claims/lib/metadata.d.ts b/packages/sdk/metadata-claims/lib/metadata.d.ts new file mode 100644 index 0000000000..ae5bcd7d02 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/metadata.d.ts @@ -0,0 +1,75 @@ +import { Address } from '@celo/base/lib/address'; +import { Signer } from '@celo/base/lib/signatureUtils'; +import * as t from 'io-ts'; +import { Claim, ClaimPayload } from './claim'; +import { AccountMetadataSignerGetters, ClaimTypes } from './types'; +export { ClaimTypes } from './types'; +type KitOrAccountsWrapper = AccountMetadataSignerGetters; +export declare const IdentityMetadataType: t.TypeC<{ + claims: t.ArrayC, t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + domain: t.StringC; + }>, t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + username: t.StringC; + }>, t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + name: t.StringC; + }>, t.TypeC<{ + type: t.LiteralC; + timestamp: t.NumberC; + address: t.StringC; + filteredDataPaths: t.StringC; + }>]>>; + meta: t.TypeC<{ + address: t.Type; + signature: t.StringC; + }>; +}>; +export type IdentityMetadata = t.TypeOf; +export declare class IdentityMetadataWrapper { + data: IdentityMetadata; + static fromEmpty(address: Address): IdentityMetadataWrapper; + static fetchFromURL(contractKitOrAccountsWrapper: KitOrAccountsWrapper, url: string, tries?: number): Promise; + static fromFile(contractKitOrAccountsWrapper: KitOrAccountsWrapper, path: string): Promise; + static verifySigner(contractKitOrAccountsWrapper: KitOrAccountsWrapper, hash: any, signature: any, metadata: any): Promise; + static verifySignerForAddress(contractKitOrAccountsWrapper: KitOrAccountsWrapper, hash: any, signature: any, address: Address): Promise; + static fromRawString(contractKitOrAccountsWrapper: KitOrAccountsWrapper, rawData: string): Promise; + constructor(data: IdentityMetadata); + get claims(): ({ + type: ClaimTypes.ACCOUNT; + timestamp: number; + address: string; + publicKey: string | undefined; + } | { + type: ClaimTypes.KEYBASE; + timestamp: number; + username: string; + } | { + type: ClaimTypes.DOMAIN; + timestamp: number; + domain: string; + } | { + type: ClaimTypes.NAME; + timestamp: number; + name: string; + } | { + type: ClaimTypes.STORAGE; + timestamp: number; + address: string; + filteredDataPaths: string; + })[]; + hashOfClaims(): string; + toString(): string; + addClaim(claim: Claim, signer: Signer): Promise; + findClaim(type: K): ClaimPayload | undefined; + filterClaims(type: K): ClaimPayload[]; +} diff --git a/packages/sdk/metadata-claims/lib/metadata.js b/packages/sdk/metadata-claims/lib/metadata.js new file mode 100644 index 0000000000..41bbfe0f52 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/metadata.js @@ -0,0 +1,212 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IdentityMetadataWrapper = exports.IdentityMetadataType = exports.ClaimTypes = void 0; +const address_1 = require("@celo/base/lib/address"); +const async_1 = require("@celo/base/lib/async"); +const io_1 = require("@celo/utils/lib/io"); +const signatureUtils_1 = require("@celo/utils/lib/signatureUtils"); +const cross_fetch_1 = __importDefault(require("cross-fetch")); +const Either_1 = require("fp-ts/lib/Either"); +const t = __importStar(require("io-ts")); +const PathReporter_1 = require("io-ts/lib/PathReporter"); +const claim_1 = require("./claim"); +const types_1 = require("./types"); +var types_2 = require("./types"); +Object.defineProperty(exports, "ClaimTypes", { enumerable: true, get: function () { return types_2.ClaimTypes; } }); +const MetaType = t.type({ + address: io_1.AddressType, + signature: io_1.SignatureType, +}); +exports.IdentityMetadataType = t.type({ + claims: t.array(claim_1.ClaimType), + meta: MetaType, +}); +class IdentityMetadataWrapper { + static fromEmpty(address) { + return new IdentityMetadataWrapper({ + claims: [], + meta: { + address, + signature: '', + }, + }); + } + static fetchFromURL(contractKitOrAccountsWrapper, url, tries = 3) { + return __awaiter(this, void 0, void 0, function* () { + return (0, async_1.selectiveRetryAsyncWithBackOff)(() => __awaiter(this, void 0, void 0, function* () { + const resp = yield (0, cross_fetch_1.default)(url); + if (!resp.ok) { + throw new Error(`Request failed with status ${resp.status}`); + } + return this.fromRawString(contractKitOrAccountsWrapper, yield resp.text()); + }), tries, ['Request failed with status 404'], []); + }); + } + static fromFile(contractKitOrAccountsWrapper, path) { + let readFileSync; + try { + const fs = require('fs'); + readFileSync = fs.readFileSync; + } + catch (_a) { + console.error('cant read from file in browser or environment without native fs module'); + } + return this.fromRawString(contractKitOrAccountsWrapper, readFileSync(path, 'utf-8')); + } + static verifySigner(contractKitOrAccountsWrapper, hash, signature, metadata) { + return __awaiter(this, void 0, void 0, function* () { + return this.verifySignerForAddress(contractKitOrAccountsWrapper, hash, signature, metadata.address); + }); + } + static verifySignerForAddress(contractKitOrAccountsWrapper, hash, signature, address) { + return __awaiter(this, void 0, void 0, function* () { + // First try to verify on account's address + if (!(0, signatureUtils_1.verifySignature)(hash, signature, address)) { + const accounts = yield getAccounts(contractKitOrAccountsWrapper); + // If this fails, signature may still be one of `address`' signers + if (yield accounts.isAccount(address)) { + const signers = yield Promise.all([ + accounts.getVoteSigner(address), + accounts.getValidatorSigner(address), + accounts.getAttestationSigner(address), + ]); + return signers.some((signer) => (0, signatureUtils_1.verifySignature)(hash, signature, signer)); + } + return false; + } + return true; + }); + } + static fromRawString(contractKitOrAccountsWrapper, rawData) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.parse(rawData); + const validatedData = exports.IdentityMetadataType.decode(data); + if ((0, Either_1.isLeft)(validatedData)) { + // TODO: We could probably return a more useful error in the future + throw new Error(PathReporter_1.PathReporter.report(validatedData).join(', ')); + } + // Verify signature on the data + const claims = validatedData.right.claims; + const hash = (0, claim_1.hashOfClaims)(claims); + if (claims.length > 0 && + !(yield this.verifySigner(contractKitOrAccountsWrapper, hash, validatedData.right.meta.signature, validatedData.right.meta))) { + throw new Error(`Signature could not be validated. Guessing signer: ${(0, signatureUtils_1.guessSigner)(hash, validatedData.right.meta.signature)}`); + } + const res = new IdentityMetadataWrapper(validatedData.right); + // Verify that singular claim types appear at most once + types_1.SINGULAR_CLAIM_TYPES.forEach((claimType) => { + const results = res.filterClaims(claimType); + if (results.length > 1) { + throw new Error(`Found ${results.length} claims of type ${claimType}, should be at most 1`); + } + }); + return res; + }); + } + constructor(data) { + this.data = data; + } + get claims() { + return this.data.claims; + } + hashOfClaims() { + return (0, claim_1.hashOfClaims)(this.data.claims); + } + toString() { + return JSON.stringify({ + claims: this.data.claims, + meta: this.data.meta, + }); + } + addClaim(claim, signer) { + return __awaiter(this, void 0, void 0, function* () { + switch (claim.type) { + case types_1.ClaimTypes.ACCOUNT: + if ((0, address_1.eqAddress)(claim.address, this.data.meta.address)) { + throw new Error("Can't claim self"); + } + break; + case types_1.ClaimTypes.DOMAIN: { + const existingClaims = this.data.claims.filter((el) => el.domain === claim.domain); + if (existingClaims.length > 0) { + return existingClaims[0]; + } + break; + } + case types_1.ClaimTypes.KEYBASE: { + const existingClaims = this.data.claims.filter((el) => el.username === claim.username); + if (existingClaims.length > 0) { + return existingClaims[0]; + } + } + default: + break; + } + if (types_1.SINGULAR_CLAIM_TYPES.includes(claim.type)) { + const index = this.data.claims.findIndex((0, claim_1.isOfType)(claim.type)); + if (index !== -1) { + this.data.claims.splice(index, 1); + } + } + this.data.claims.push(claim); + this.data.meta.signature = yield signer.sign(this.hashOfClaims()); + return claim; + }); + } + findClaim(type) { + return this.data.claims.find((0, claim_1.isOfType)(type)); + } + filterClaims(type) { + return this.data.claims.filter((0, claim_1.isOfType)(type)); + } +} +exports.IdentityMetadataWrapper = IdentityMetadataWrapper; +// at first these functions required a `kit` but thats a bit heavy +// as all that is used are functions on the accounts contract so allow just those functions to be passed +function getAccounts(contractKitOrAccountsWrapper) { + return __awaiter(this, void 0, void 0, function* () { + if ('getVoteSigner' in contractKitOrAccountsWrapper && + 'isAccount' in contractKitOrAccountsWrapper && + 'getValidatorSigner' in contractKitOrAccountsWrapper && + 'getAttestationSigner' in contractKitOrAccountsWrapper) { + return contractKitOrAccountsWrapper; + } + throw new Error(`Must pass object with the required functions: getVoteSigner, isAccount, getValidatorSigner, getAttestationSigner. Received ${JSON.stringify(contractKitOrAccountsWrapper)}`); + }); +} +//# sourceMappingURL=metadata.js.map \ No newline at end of file diff --git a/packages/sdk/metadata-claims/lib/metadata.js.map b/packages/sdk/metadata-claims/lib/metadata.js.map new file mode 100644 index 0000000000..8d8b4654a7 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/metadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA2D;AAC3D,gDAAqE;AAErE,2CAA+D;AAC/D,mEAA6E;AAC7E,8DAA+B;AAC/B,6CAAyC;AACzC,yCAA0B;AAC1B,yDAAqD;AACrD,mCAAgF;AAChF,mCAKgB;AAEhB,iCAAoC;AAA3B,mGAAA,UAAU,OAAA;AAInB,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;IACtB,OAAO,EAAE,gBAAW;IACpB,SAAS,EAAE,kBAAa;CACzB,CAAC,CAAA;AAEW,QAAA,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAS,CAAC;IAC1B,IAAI,EAAE,QAAQ;CACf,CAAC,CAAA;AAIF,MAAa,uBAAuB;IAGlC,MAAM,CAAC,SAAS,CAAC,OAAgB;QAC/B,OAAO,IAAI,uBAAuB,CAAC;YACjC,MAAM,EAAE,EAAE;YACV,IAAI,EAAE;gBACJ,OAAO;gBACP,SAAS,EAAE,EAAE;aACd;SACF,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAO,YAAY,CACvB,4BAAkD,EAClD,GAAW,EACX,KAAK,GAAG,CAAC;;YAET,OAAO,IAAA,sCAA8B,EACnC,GAAS,EAAE;gBACT,MAAM,IAAI,GAAG,MAAM,IAAA,qBAAK,EAAC,GAAG,CAAC,CAAA;gBAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;gBAC9D,CAAC;gBACD,OAAO,IAAI,CAAC,aAAa,CAAC,4BAA4B,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAC5E,CAAC,CAAA,EACD,KAAK,EACL,CAAC,gCAAgC,CAAC,EAClC,EAAE,CACH,CAAA;QACH,CAAC;KAAA;IAED,MAAM,CAAC,QAAQ,CAAC,4BAAkD,EAAE,IAAY;QAC9E,IAAI,YAAY,CAAA;QAChB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;YACxB,YAAY,GAAG,EAAE,CAAC,YAAY,CAAA;QAChC,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAA;QACzF,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,4BAA4B,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;IACtF,CAAC;IAED,MAAM,CAAO,YAAY,CACvB,4BAAkD,EAClD,IAAS,EACT,SAAc,EACd,QAAa;;YAEb,OAAO,IAAI,CAAC,sBAAsB,CAChC,4BAA4B,EAC5B,IAAI,EACJ,SAAS,EACT,QAAQ,CAAC,OAAO,CACjB,CAAA;QACH,CAAC;KAAA;IAED,MAAM,CAAO,sBAAsB,CACjC,4BAAkD,EAClD,IAAS,EACT,SAAc,EACd,OAAgB;;YAEhB,2CAA2C;YAC3C,IAAI,CAAC,IAAA,gCAAe,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC/C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,4BAA4B,CAAC,CAAA;gBAChE,kEAAkE;gBAClE,IAAI,MAAM,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;wBAChC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;wBAC/B,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC;wBACpC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC;qBACvC,CAAC,CAAA;oBACF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,gCAAe,EAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;gBAC3E,CAAC;gBACD,OAAO,KAAK,CAAA;YACd,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;IAED,MAAM,CAAO,aAAa,CAAC,4BAAkD,EAAE,OAAe;;YAC5F,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAEhC,MAAM,aAAa,GAAG,4BAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAEvD,IAAI,IAAA,eAAM,EAAC,aAAa,CAAC,EAAE,CAAC;gBAC1B,mEAAmE;gBACnE,MAAM,IAAI,KAAK,CAAC,2BAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAChE,CAAC;YAED,+BAA+B;YAC/B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAA;YACzC,MAAM,IAAI,GAAG,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAA;YACjC,IACE,MAAM,CAAC,MAAM,GAAG,CAAC;gBACjB,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CACvB,4BAA4B,EAC5B,IAAI,EACJ,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAClC,aAAa,CAAC,KAAK,CAAC,IAAI,CACzB,CAAC,EACF,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,sDAAsD,IAAA,4BAAW,EAC/D,IAAI,EACJ,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CACnC,EAAE,CACJ,CAAA;YACH,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,uBAAuB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;YAE5D,uDAAuD;YACvD,4BAAoB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;gBACzC,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;gBAC3C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,CAAC,MAAM,mBAAmB,SAAS,uBAAuB,CAAC,CAAA;gBAC7F,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,GAAG,CAAA;QACZ,CAAC;KAAA;IAED,YAAY,IAAsB;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;IACzB,CAAC;IAED,YAAY;QACV,OAAO,IAAA,oBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;SACrB,CAAC,CAAA;IACJ,CAAC;IAEK,QAAQ,CAAC,KAAY,EAAE,MAAc;;YACzC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,kBAAU,CAAC,OAAO;oBACrB,IAAI,IAAA,mBAAS,EAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBACrD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;oBACrC,CAAC;oBACD,MAAK;gBACP,KAAK,kBAAU,CAAC,MAAM,CAAC,CAAC,CAAC;oBACvB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAA;oBACvF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC9B,OAAO,cAAc,CAAC,CAAC,CAAC,CAAA;oBAC1B,CAAC;oBACD,MAAK;gBACP,CAAC;gBACD,KAAK,kBAAU,CAAC,OAAO,CAAC,CAAC,CAAC;oBACxB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAA;oBAC3F,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC9B,OAAO,cAAc,CAAC,CAAC,CAAC,CAAA;oBAC1B,CAAC;gBACH,CAAC;gBACD;oBACE,MAAK;YACT,CAAC;YAED,IAAI,4BAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAA,gBAAQ,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC9D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;gBACnC,CAAC;YACH,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;YACjE,OAAO,KAAK,CAAA;QACd,CAAC;KAAA;IAED,SAAS,CAAuB,IAAO;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,CAAA;IAC9C,CAAC;IAED,YAAY,CAAuB,IAAO;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,CAAA;IAChD,CAAC;CACF;AAzLD,0DAyLC;AAED,kEAAkE;AAClE,wGAAwG;AACxG,SAAe,WAAW,CACxB,4BAAkD;;QAElD,IACE,eAAe,IAAI,4BAA4B;YAC/C,WAAW,IAAI,4BAA4B;YAC3C,oBAAoB,IAAI,4BAA4B;YACpD,sBAAsB,IAAI,4BAA4B,EACtD,CAAC;YACD,OAAO,4BAA4B,CAAA;QACrC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,8HAA8H,IAAI,CAAC,SAAS,CAC1I,4BAA4B,CAC7B,EAAE,CACJ,CAAA;IACH,CAAC;CAAA"} \ No newline at end of file diff --git a/packages/sdk/metadata-claims/lib/types.d.ts b/packages/sdk/metadata-claims/lib/types.d.ts new file mode 100644 index 0000000000..d21e1e654c --- /dev/null +++ b/packages/sdk/metadata-claims/lib/types.d.ts @@ -0,0 +1,26 @@ +import * as t from 'io-ts'; +import type { Address, StrongAddress } from '@celo/base/lib/address'; +export declare const SignatureType: t.StringC; +export declare const TimestampType: t.NumberC; +/** @internal */ +export declare const now: () => number; +export declare enum ClaimTypes { + ACCOUNT = "ACCOUNT", + DOMAIN = "DOMAIN", + KEYBASE = "KEYBASE", + NAME = "NAME", + PROFILE_PICTURE = "PROFILE_PICTURE", + STORAGE = "STORAGE", + TWITTER = "TWITTER" +} +export declare const VERIFIABLE_CLAIM_TYPES: ClaimTypes[]; +export declare const SINGULAR_CLAIM_TYPES: ClaimTypes[]; +export type AccountSignerGetters = { + isAccount: (address: Address) => Promise; + getVoteSigner: (address: Address) => Promise; + getValidatorSigner: (address: Address) => Promise; + getAttestationSigner: (address: Address) => Promise; +}; +export type AccountMetadataSignerGetters = { + getMetadataURL: (address: string) => Promise; +} & AccountSignerGetters; diff --git a/packages/sdk/metadata-claims/lib/types.js b/packages/sdk/metadata-claims/lib/types.js new file mode 100644 index 0000000000..4058c986c5 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/types.js @@ -0,0 +1,45 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SINGULAR_CLAIM_TYPES = exports.VERIFIABLE_CLAIM_TYPES = exports.ClaimTypes = exports.now = exports.TimestampType = exports.SignatureType = void 0; +const t = __importStar(require("io-ts")); +exports.SignatureType = t.string; +exports.TimestampType = t.number; +/** @internal */ +const now = () => Math.round(new Date().getTime() / 1000); +exports.now = now; +var ClaimTypes; +(function (ClaimTypes) { + ClaimTypes["ACCOUNT"] = "ACCOUNT"; + ClaimTypes["DOMAIN"] = "DOMAIN"; + ClaimTypes["KEYBASE"] = "KEYBASE"; + ClaimTypes["NAME"] = "NAME"; + ClaimTypes["PROFILE_PICTURE"] = "PROFILE_PICTURE"; + ClaimTypes["STORAGE"] = "STORAGE"; + ClaimTypes["TWITTER"] = "TWITTER"; +})(ClaimTypes || (exports.ClaimTypes = ClaimTypes = {})); +exports.VERIFIABLE_CLAIM_TYPES = [ClaimTypes.KEYBASE, ClaimTypes.ACCOUNT, ClaimTypes.DOMAIN]; +exports.SINGULAR_CLAIM_TYPES = [ClaimTypes.NAME]; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/packages/sdk/metadata-claims/lib/types.js.map b/packages/sdk/metadata-claims/lib/types.js.map new file mode 100644 index 0000000000..9deb63c887 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA0B;AAIb,QAAA,aAAa,GAAG,CAAC,CAAC,MAAM,CAAA;AACxB,QAAA,aAAa,GAAG,CAAC,CAAC,MAAM,CAAA;AAErC,gBAAgB;AACT,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAA;AAAnD,QAAA,GAAG,OAAgD;AAEhE,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,+BAAiB,CAAA;IACjB,iCAAmB,CAAA;IACnB,2BAAa,CAAA;IACb,iDAAmC,CAAA;IACnC,iCAAmB,CAAA;IACnB,iCAAmB,CAAA;AACrB,CAAC,EARW,UAAU,0BAAV,UAAU,QAQrB;AAEY,QAAA,sBAAsB,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;AACpF,QAAA,oBAAoB,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA"} \ No newline at end of file diff --git a/packages/sdk/metadata-claims/lib/verify.d.ts b/packages/sdk/metadata-claims/lib/verify.d.ts new file mode 100644 index 0000000000..6a87b44895 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/verify.d.ts @@ -0,0 +1,20 @@ +/// +import { AccountClaim } from './account'; +import { Claim, DomainClaim } from './claim'; +import { AccountMetadataSignerGetters } from './types'; +/** + * Verifies a claim made by an account, i.e. whether a claim can be verified to be correct + * @param kit AccountMetadataSignerGetters object + * @param claim The claim to verify + * @param address The address that is making the claim + * @returns If valid, returns undefined. If invalid or unable to verify, returns a string with the error + */ +export declare function verifyClaim(accountMeta: AccountMetadataSignerGetters, claim: Claim, address: string, tries?: number): Promise; +export declare const verifyAccountClaim: (accountMeta: AccountMetadataSignerGetters, claim: AccountClaim, address: string, tries?: number) => Promise; +type dnsResolverFunction = (hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void) => void; +/** + * It verifies if a DNS domain includes in the TXT records an entry with name + * `celo-site-verification` and a valid signature in base64 + */ +export declare const verifyDomainRecord: (accountMeta: AccountMetadataSignerGetters, claim: DomainClaim, address: string, dnsResolver?: dnsResolverFunction) => Promise; +export {}; diff --git a/packages/sdk/metadata-claims/lib/verify.js b/packages/sdk/metadata-claims/lib/verify.js new file mode 100644 index 0000000000..0b8fa8f1f8 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/verify.js @@ -0,0 +1,89 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.verifyDomainRecord = exports.verifyAccountClaim = exports.verifyClaim = void 0; +const address_1 = require("@celo/base/lib/address"); +const io_1 = require("@celo/base/lib/io"); +const node_dns_1 = require("node:dns"); // TODO replace with non node specifc package +const node_util_1 = require("node:util"); // TODO replace with non node specifc package +const claim_1 = require("./claim"); +const keybase_1 = require("./keybase"); +const metadata_1 = require("./metadata"); +const types_1 = require("./types"); +/** + * Verifies a claim made by an account, i.e. whether a claim can be verified to be correct + * @param kit AccountMetadataSignerGetters object + * @param claim The claim to verify + * @param address The address that is making the claim + * @returns If valid, returns undefined. If invalid or unable to verify, returns a string with the error + */ +function verifyClaim(accountMeta, claim, address, tries = 3) { + return __awaiter(this, void 0, void 0, function* () { + switch (claim.type) { + case types_1.ClaimTypes.KEYBASE: + return (0, keybase_1.verifyKeybaseClaim)(accountMeta, claim, address); + case types_1.ClaimTypes.ACCOUNT: + return (0, exports.verifyAccountClaim)(accountMeta, claim, address, tries); + case types_1.ClaimTypes.DOMAIN: + return (0, exports.verifyDomainRecord)(accountMeta, claim, address); + default: + break; + } + return; + }); +} +exports.verifyClaim = verifyClaim; +const verifyAccountClaim = (accountMeta, claim, address, tries = 3) => __awaiter(void 0, void 0, void 0, function* () { + const metadataURL = yield accountMeta.getMetadataURL(claim.address); + if (!(0, io_1.isValidUrl)(metadataURL)) { + return `Metadata URL of ${claim.address} could not be retrieved`; + } + let metadata; + try { + metadata = yield metadata_1.IdentityMetadataWrapper.fetchFromURL(accountMeta, metadataURL, tries); + } + catch (error) { + return `Metadata could not be fetched for ${claim.address} at ${metadataURL}: ${error.toString()}`; + } + const accountClaims = metadata.filterClaims(types_1.ClaimTypes.ACCOUNT); + if (accountClaims.find((x) => (0, address_1.eqAddress)(x.address, address)) === undefined) { + return `${claim.address} did not claim ${address}`; + } + return; +}); +exports.verifyAccountClaim = verifyAccountClaim; +/** + * It verifies if a DNS domain includes in the TXT records an entry with name + * `celo-site-verification` and a valid signature in base64 + */ +const verifyDomainRecord = (accountMeta, claim, address, dnsResolver = node_dns_1.resolveTxt) => __awaiter(void 0, void 0, void 0, function* () { + try { + const getRecords = (0, node_util_1.promisify)(dnsResolver); + const domainRecords = yield getRecords(claim.domain); + for (const record of domainRecords) { + for (const entry of record) { + if (entry.startsWith(claim_1.DOMAIN_TXT_HEADER)) { + const signatureBase64 = entry.substring(claim_1.DOMAIN_TXT_HEADER.length + 1); + const signature = Buffer.from(signatureBase64, 'base64').toString('binary'); + if (yield metadata_1.IdentityMetadataWrapper.verifySignerForAddress(accountMeta, (0, claim_1.serializeClaim)(claim), signature, address)) { + return; + } + } + } + } + return `Unable to verify domain claim with address ${address}`; + } + catch (error) { + return `Unable to fetch domain TXT records: ${error.toString()}`; + } +}); +exports.verifyDomainRecord = verifyDomainRecord; +//# sourceMappingURL=verify.js.map \ No newline at end of file diff --git a/packages/sdk/metadata-claims/lib/verify.js.map b/packages/sdk/metadata-claims/lib/verify.js.map new file mode 100644 index 0000000000..5f301444a3 --- /dev/null +++ b/packages/sdk/metadata-claims/lib/verify.js.map @@ -0,0 +1 @@ +{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAkD;AAClD,0CAA8C;AAC9C,uCAAqC,CAAC,6CAA6C;AACnF,yCAAqC,CAAC,6CAA6C;AAEnF,mCAA+E;AAC/E,uCAA8C;AAC9C,yCAAoD;AACpD,mCAAkE;AAElE;;;;;;GAMG;AACH,SAAsB,WAAW,CAC/B,WAAyC,EACzC,KAAY,EACZ,OAAe,EACf,KAAK,GAAG,CAAC;;QAET,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,kBAAU,CAAC,OAAO;gBACrB,OAAO,IAAA,4BAAkB,EAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;YACxD,KAAK,kBAAU,CAAC,OAAO;gBACrB,OAAO,IAAA,0BAAkB,EAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;YAC/D,KAAK,kBAAU,CAAC,MAAM;gBACpB,OAAO,IAAA,0BAAkB,EAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;YACxD;gBACE,MAAK;QACT,CAAC;QACD,OAAM;IACR,CAAC;CAAA;AAjBD,kCAiBC;AAEM,MAAM,kBAAkB,GAAG,CAChC,WAAyC,EACzC,KAAmB,EACnB,OAAe,EACf,KAAK,GAAG,CAAC,EACT,EAAE;IACF,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAEnE,IAAI,CAAC,IAAA,eAAU,EAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,OAAO,mBAAmB,KAAK,CAAC,OAAO,yBAAyB,CAAA;IAClE,CAAC;IAED,IAAI,QAAiC,CAAA;IACrC,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,kCAAuB,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;IACxF,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,qCACL,KAAK,CAAC,OACR,OAAO,WAAW,KAAK,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAA;IAC3C,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC,kBAAU,CAAC,OAAO,CAAC,CAAA;IAE/D,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,mBAAS,EAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC3E,OAAO,GAAG,KAAK,CAAC,OAAO,kBAAkB,OAAO,EAAE,CAAA;IACpD,CAAC;IAED,OAAM;AACR,CAAC,CAAA,CAAA;AA5BY,QAAA,kBAAkB,sBA4B9B;AAOD;;;GAGG;AACI,MAAM,kBAAkB,GAAG,CAChC,WAAyC,EACzC,KAAkB,EAClB,OAAe,EACf,cAAmC,qBAAiB,EACpD,EAAE;IACF,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAA,qBAAS,EAAC,WAAW,CAAC,CAAA;QACzC,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACpD,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,UAAU,CAAC,yBAAiB,CAAC,EAAE,CAAC;oBACxC,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,yBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBACrE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;oBAC3E,IACE,MAAM,kCAAuB,CAAC,sBAAsB,CAClD,WAAW,EACX,IAAA,sBAAc,EAAC,KAAK,CAAC,EACrB,SAAS,EACT,OAAO,CACR,EACD,CAAC;wBACD,OAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,8CAA8C,OAAO,EAAE,CAAA;IAChE,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,uCAAuC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAA;IAClE,CAAC;AACH,CAAC,CAAA,CAAA;AA/BY,QAAA,kBAAkB,sBA+B9B"} \ No newline at end of file diff --git a/packages/sdk/utils/src/contacts.ts b/packages/sdk/utils/src/contacts.ts deleted file mode 100644 index c5b85babaf..0000000000 --- a/packages/sdk/utils/src/contacts.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { MinimalContact } from '@celo/base/lib/contacts' -import { keccak256 } from 'web3-utils' - -// Exports moved to @celo/base, forwarding them -// here for backwards compatibility -export { - ContactPhoneNumber, - getContactPhoneNumber, - isContact, - MinimalContact, -} from '@celo/base/lib/contacts' - -/** - * @deprecated May be removed in future - */ -export const getContactNameHash = (contact: MinimalContact) => { - if (!contact) { - throw new Error('Invalid contact') - } - - return keccak256(contact.displayName || '') -} diff --git a/packages/sdk/utils/src/currencies.ts b/packages/sdk/utils/src/currencies.ts deleted file mode 100644 index eaba79f5ef..0000000000 --- a/packages/sdk/utils/src/currencies.ts +++ /dev/null @@ -1,9 +0,0 @@ -// Exports moved to @celo/base, forwarding them -// here for backwards compatibility -export { - CURRENCIES, - currencyToShortMap, - CURRENCY_ENUM, - resolveCurrency, - SHORT_CURRENCIES, -} from '@celo/base/lib/currencies' diff --git a/packages/sdk/utils/src/displayFormatting.ts b/packages/sdk/utils/src/displayFormatting.ts deleted file mode 100644 index 9b612e3cc5..0000000000 --- a/packages/sdk/utils/src/displayFormatting.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Exports moved to @celo/base, forwarding them -// here for backwards compatibility -export { getErrorMessage } from '@celo/base/lib/displayFormatting' diff --git a/packages/sdk/utils/src/index.ts b/packages/sdk/utils/src/index.ts index f1699972c8..ad903fba49 100644 --- a/packages/sdk/utils/src/index.ts +++ b/packages/sdk/utils/src/index.ts @@ -1,7 +1,4 @@ import * as AddressUtils from './address' - -export * from './contacts' -export * from './currencies' export { ECIES } from './ecies' export { IstanbulUtils } from './istanbul' export { SignatureUtils } from './signatureUtils' From 54741cc01ef0a6716bdd45a955ac65c7ecced6c1 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Wed, 2 Oct 2024 11:57:37 +0200 Subject: [PATCH 05/54] remove identity commands from cli (#343) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Description As proposed in https://forum.celo.org/c/announcements/5 we are removing these identity related commands. Wait to merge till October ### Tested n.a ### Related issues - Fixes https://github.com/celo-org/celo-blockchain-planning/issues/432 ### Backwards compatibility a breaking change ### Documentation hopefully not --- ## PR-Codex overview This PR focuses on the removal of the `identity:identifier` and `identity:get-attestations` commands from the CLI, along with updates to the documentation reflecting these changes. ### Detailed summary - Deleted files: - `packages/cli/src/commands/identity/identifier.ts` - `packages/cli/src/commands/identity/get-attestations.ts` - `packages/cli/src/commands/identity/get-attestations.test.ts` - Updated `docs/command-line-interface/identity.md` to remove references to the deleted commands. - Added a note about the deprecation of these commands with a link to the relevant forum discussion. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- .changeset/moody-falcons-remain.md | 8 ++ docs/command-line-interface/identity.md | 85 -------------- .../identity/get-attestations.test.ts | 62 ---------- .../src/commands/identity/get-attestations.ts | 106 ------------------ .../cli/src/commands/identity/identifier.ts | 63 ----------- 5 files changed, 8 insertions(+), 316 deletions(-) create mode 100644 .changeset/moody-falcons-remain.md delete mode 100644 packages/cli/src/commands/identity/get-attestations.test.ts delete mode 100644 packages/cli/src/commands/identity/get-attestations.ts delete mode 100644 packages/cli/src/commands/identity/identifier.ts diff --git a/.changeset/moody-falcons-remain.md b/.changeset/moody-falcons-remain.md new file mode 100644 index 0000000000..02ec211be7 --- /dev/null +++ b/.changeset/moody-falcons-remain.md @@ -0,0 +1,8 @@ +--- +'@celo/celocli': major +--- +Remove commands identity:identifier, identity:get-attestations + +See https://forum.celo.org/t/rfc-deprecation-of-celocli-identity-commands/8676 + + diff --git a/docs/command-line-interface/identity.md b/docs/command-line-interface/identity.md index c9b458a233..19f654b554 100644 --- a/docs/command-line-interface/identity.md +++ b/docs/command-line-interface/identity.md @@ -3,93 +3,8 @@ Interact with ODIS and the attestations service -* [`celocli identity:get-attestations`](#celocli-identityget-attestations) -* [`celocli identity:identifier`](#celocli-identityidentifier) * [`celocli identity:withdraw-attestation-rewards`](#celocli-identitywithdraw-attestation-rewards) -## `celocli identity:get-attestations` - -Looks up attestations associated with the provided phone number. If a pepper is not provided, it uses the --from account's balance to query the pepper. - -``` -USAGE - $ celocli identity:get-attestations [--gasCurrency - 0x1234567890123456789012345678901234567890] [--globalHelp] [--phoneNumber ] - [--from 0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d] [--pepper ] [--identifier - ] [--network ] - -FLAGS - --from=0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d Account whose balance to use - for querying ODIS for the - pepper lookup - --gasCurrency=0x1234567890123456789012345678901234567890 Use a specific gas currency - for transaction fees - (defaults to CELO if no gas - currency is supplied). It - must be a whitelisted token. - --globalHelp View all available global - flags - --identifier= On-chain identifier - --network= The ODIS service to hit: - mainnet, alfajores, - alfajoresstaging - --pepper= ODIS phone number pepper - --phoneNumber= Phone number to check - attestations for - -DESCRIPTION - Looks up attestations associated with the provided phone number. If a pepper is not - provided, it uses the --from account's balance to query the pepper. - -EXAMPLES - get-attestations --phoneNumber +15555555555 --from 0x47e172F6CfB6c7D01C1574fa3E2Be7CC73269D95 - - get-attestations --phoneNumber +15555555555 --pepper XgnKVpplZc0p1 - - get-attestations --identifier 0x4952c9db9c283a62721b13f56c4b5e84a438e2569af3de21cb3440efa8840872 -``` - -_See code: [src/commands/identity/get-attestations.ts](https://github.com/celo-org/developer-tooling/tree/master/packages/cli/src/commands/identity/get-attestations.ts)_ - -## `celocli identity:identifier` - -Queries ODIS for the on-chain identifier and pepper corresponding to a given phone number. - -``` -USAGE - $ celocli identity:identifier --from 0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d - --phoneNumber +14152223333 [--gasCurrency - 0x1234567890123456789012345678901234567890] [--globalHelp] [--context ] - -FLAGS - --context= mainnet (default), - alfajores, or - alfajoresstaging - --from=0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d (required) The address from - which to perform the query - --gasCurrency=0x1234567890123456789012345678901234567890 Use a specific gas currency - for transaction fees - (defaults to CELO if no gas - currency is supplied). It - must be a whitelisted token. - --globalHelp View all available global - flags - --phoneNumber=+14152223333 (required) The phone number - for which to query the - identifier. Should be in - e164 format with country - code. - -DESCRIPTION - Queries ODIS for the on-chain identifier and pepper corresponding to a given phone - number. - -EXAMPLES - identifier --phoneNumber +14151231234 --from 0x5409ed021d9299bf6814279a6a1411a7e866a631 --context alfajores -``` - -_See code: [src/commands/identity/identifier.ts](https://github.com/celo-org/developer-tooling/tree/master/packages/cli/src/commands/identity/identifier.ts)_ - ## `celocli identity:withdraw-attestation-rewards` Withdraw accumulated attestation rewards for a given currency diff --git a/packages/cli/src/commands/identity/get-attestations.test.ts b/packages/cli/src/commands/identity/get-attestations.test.ts deleted file mode 100644 index 27c71b9387..0000000000 --- a/packages/cli/src/commands/identity/get-attestations.test.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { newAttestations } from '@celo/abis/web3/Attestations' -import { StrongAddress } from '@celo/base' -import { newKitFromWeb3 } from '@celo/contractkit' -import { WrapperCache } from '@celo/contractkit/lib/contract-cache' -import { AttestationsWrapper } from '@celo/contractkit/lib/wrappers/Attestations' -import { testWithAnvilL1 } from '@celo/dev-utils/lib/anvil-test' -import { deployAttestationsContract } from '@celo/dev-utils/lib/contracts' -import Web3 from 'web3' -import { testLocallyWithWeb3Node } from '../../test-utils/cliUtils' -import GetAttestations from './get-attestations' - -process.env.NO_SYNCCHECK = 'true' - -testWithAnvilL1('identity:get-attetstations', (web3: Web3) => { - beforeEach(async () => { - const kit = newKitFromWeb3(web3) - const accounts = (await web3.eth.getAccounts()) as StrongAddress[] - const attestationsContractAddress = await deployAttestationsContract(web3, accounts[0]) - - jest.spyOn(WrapperCache.prototype, 'getAttestations').mockImplementation(async () => { - return new AttestationsWrapper( - kit.connection, - newAttestations(web3, attestationsContractAddress), - newKitFromWeb3(web3).contracts - ) - }) - }) - - describe('input validation correctly outputs errors', () => { - const consoleOutput: string[] = [] - const mockedError = (output: string) => consoleOutput.push(output) - beforeEach(() => (console.error = mockedError)) - - it('Fails when neither from, pepper, nor identifier are specified', async () => { - await expect( - testLocallyWithWeb3Node(GetAttestations, ['--phoneNumber', '+15555555555'], web3) - ).rejects.toThrow('Must specify either --from or --pepper or --identifier') - }) - - it('Fails when neither phone number nor identifier are specified', async () => { - await expect( - testLocallyWithWeb3Node( - GetAttestations, - ['--from', '0x47e172F6CfB6c7D01C1574fa3E2Be7CC73269D95'], - web3 - ) - ).rejects.toThrow('Must specify phoneNumber if identifier not provided') - }) - - it('Successfully prints identifier when given pepper and number', async () => { - console.log = jest.fn() - await testLocallyWithWeb3Node( - GetAttestations, - ['--phoneNumber', '+15555555555', '--pepper', 'XQke2bjvN7mPt'], - web3 - ) - expect(console.log).toHaveBeenCalledWith( - 'Identifier: 0xd9460ae529b2889716c8f1ccebb5efec945adc46fe1e9cd16f6242463e81f37c' - ) - }) - }) -}) diff --git a/packages/cli/src/commands/identity/get-attestations.ts b/packages/cli/src/commands/identity/get-attestations.ts deleted file mode 100644 index 223b752c0f..0000000000 --- a/packages/cli/src/commands/identity/get-attestations.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { ContractKit } from '@celo/contractkit' -import { OdisUtils } from '@celo/identity' -import { AuthSigner, OdisContextName } from '@celo/identity/lib/odis/query' -import { Flags } from '@oclif/core' -import { BaseCommand } from '../../base' -import { CustomFlags } from '../../utils/command' - -export default class GetAttestations extends BaseCommand { - static description = - "Looks up attestations associated with the provided phone number. If a pepper is not provided, it uses the --from account's balance to query the pepper." - - static flags = { - ...BaseCommand.flags, - phoneNumber: Flags.string({ - required: false, - description: 'Phone number to check attestations for', - }), - from: CustomFlags.address({ - required: false, - description: 'Account whose balance to use for querying ODIS for the pepper lookup', - }), - pepper: Flags.string({ - required: false, - description: 'ODIS phone number pepper', - }), - identifier: Flags.string({ - required: false, - description: 'On-chain identifier', - }), - network: Flags.string({ - required: false, - description: 'The ODIS service to hit: mainnet, alfajores, alfajoresstaging', - }), - } - - static examples = [ - 'get-attestations --phoneNumber +15555555555 --from 0x47e172F6CfB6c7D01C1574fa3E2Be7CC73269D95', - 'get-attestations --phoneNumber +15555555555 --pepper XgnKVpplZc0p1', - 'get-attestations --identifier 0x4952c9db9c283a62721b13f56c4b5e84a438e2569af3de21cb3440efa8840872', - ] - - async run() { - const kit = await this.getKit() - const res = await this.parse(GetAttestations) - const phoneNumber = res.flags.phoneNumber - const account = res.flags.from - let identifier = res.flags.identifier - let pepper = res.flags.pepper - if (!account && !pepper && !identifier) { - throw Error('Must specify either --from or --pepper or --identifier') - } - const network = res.flags.network - const attestationsContract = await kit.contracts.getAttestations() - const accountsContract = await kit.contracts.getAccounts() - - if (!identifier) { - if (!phoneNumber) { - throw Error('Must specify phoneNumber if identifier not provided') - } - // Get Phone number pepper - // Needs a balance to perform query - if (!pepper) { - pepper = await this.getPhoneNumberPepper(kit, phoneNumber!, account!, network) - console.log('Pepper: ' + pepper) - } - - const computedIdentifier = kit.connection.web3.utils.soliditySha3({ - type: 'string', - value: 'tel://' + phoneNumber + '__' + pepper, - }) - identifier = computedIdentifier! - console.log('Identifier: ' + identifier) - } - const accounts = await attestationsContract.lookupAccountsForIdentifier(identifier) - accounts.forEach(async (accountAddress) => { - console.log('Account address: ' + accountAddress) - console.log('\tWallet address: ' + (await accountsContract.getWalletAddress(accountAddress))) - console.log( - '\tData-Encryption Key: ' + (await accountsContract.getDataEncryptionKey(accountAddress)) - ) - }) - } - - async getPhoneNumberPepper( - kit: ContractKit, - phoneNumber: string, - account: string, - network: string = 'mainnet' - ): Promise { - console.log('Using network: ' + network) - const authSigner: AuthSigner = { - authenticationMethod: OdisUtils.Query.AuthenticationMethod.WALLET_KEY, - // @ts-ignore -- TODO: if identity depends on diff version of ck which has a slightly different type this complains - contractKit: kit, - } - - const ret = await OdisUtils.PhoneNumberIdentifier.getPhoneNumberIdentifier( - phoneNumber, - account, - authSigner, - OdisUtils.Query.getServiceContext(network as OdisContextName) - ) - - return ret.pepper - } -} diff --git a/packages/cli/src/commands/identity/identifier.ts b/packages/cli/src/commands/identity/identifier.ts deleted file mode 100644 index 879f516f20..0000000000 --- a/packages/cli/src/commands/identity/identifier.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { OdisUtils } from '@celo/identity' -import { AuthSigner, OdisContextName } from '@celo/identity/lib/odis/query' -import { Flags, ux } from '@oclif/core' -import { BaseCommand } from '../../base' -import { newCheckBuilder } from '../../utils/checks' -import { printValueMap } from '../../utils/cli' -import { CustomFlags } from '../../utils/command' - -export default class IdentifierQuery extends BaseCommand { - static description = - 'Queries ODIS for the on-chain identifier and pepper corresponding to a given phone number.' - - static flags = { - ...BaseCommand.flags, - from: CustomFlags.address({ - required: true, - description: 'The address from which to perform the query', - }), - phoneNumber: CustomFlags.phoneNumber({ - required: true, - description: - 'The phone number for which to query the identifier. Should be in e164 format with country code.', - }), - context: Flags.string({ - required: false, - description: 'mainnet (default), alfajores, or alfajoresstaging', - }), - } - - static examples = [ - 'identifier --phoneNumber +14151231234 --from 0x5409ed021d9299bf6814279a6a1411a7e866a631 --context alfajores', - ] - - async run() { - const kit = await this.getKit() - const { flags } = await this.parse(IdentifierQuery) - const { phoneNumber, from, context } = flags - - await newCheckBuilder(this).isValidAddress(flags.from).runChecks() - - ux.action.start('Querying ODIS for identifier') - - const authSigner: AuthSigner = { - authenticationMethod: OdisUtils.Query.AuthenticationMethod.WALLET_KEY, - // @ts-ignore -- TODO: if identity depends on diff version of ck which has a slightly differnt type this complains - contractKit: kit, - } - - const res = await OdisUtils.PhoneNumberIdentifier.getPhoneNumberIdentifier( - phoneNumber, - from, - authSigner, - OdisUtils.Query.getServiceContext(context as OdisContextName) - ) - - ux.action.stop() - - printValueMap({ - identifier: res.phoneHash, - pepper: res.pepper, - }) - } -} From d3b88fd4aca95f02a26efdf2d2e196c4306bb23d Mon Sep 17 00:00:00 2001 From: Leszek Stachowski Date: Fri, 4 Oct 2024 09:54:10 +0200 Subject: [PATCH 06/54] Fix master (#354) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes master --- ## PR-Codex overview This PR updates the `yarn.lock` file by removing the block for `@celo/wallet-rpc` and its associated dependencies, while retaining the entry for `@chainsafe/as-sha256`. ### Detailed summary - Removed block for `@celo/wallet-rpc@workspace:packages/sdk/wallets/wallet-rpc` including: - Version and resolution details - Dependencies such as `@celo/base`, `@celo/connect`, and others - Retained entry for `@chainsafe/as-sha256@npm:^0.3.1` with version 0.3.1. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- yarn.lock | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/yarn.lock b/yarn.lock index ff5c0f79cd..651bc7e4d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2282,27 +2282,6 @@ __metadata: languageName: unknown linkType: soft -"@celo/wallet-rpc@workspace:packages/sdk/wallets/wallet-rpc": - version: 0.0.0-use.local - resolution: "@celo/wallet-rpc@workspace:packages/sdk/wallets/wallet-rpc" - dependencies: - "@celo/base": "npm:^6.1.0" - "@celo/connect": "npm:^6.0.1" - "@celo/contractkit": "npm:^8.1.1" - "@celo/dev-utils": "npm:0.0.5" - "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" - "@celo/wallet-base": "npm:^6.0.1" - "@celo/wallet-remote": "npm:^6.0.1" - "@types/bn.js": "npm:^5.1.0" - "@types/debug": "npm:^4.1.12" - bignumber.js: "npm:^9.0.0" - bn.js: "npm:^5.1.0" - debug: "npm:^4.1.1" - web3: "npm:1.10.4" - languageName: unknown - linkType: soft - "@chainsafe/as-sha256@npm:^0.3.1": version: 0.3.1 resolution: "@chainsafe/as-sha256@npm:0.3.1" From 6bba5e377cded1c8216c5cd1cadeb4b8b764df55 Mon Sep 17 00:00:00 2001 From: Nicolas Brugneaux Date: Fri, 4 Oct 2024 18:41:40 +0200 Subject: [PATCH 07/54] feat @celo/viem-accounts/ledger (#344) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## PR-Codex overview This PR introduces the `@celo/viem-account-ledger` library, facilitating interactions between Ledger devices and the `viem` framework. It includes type definitions, configurations, and initial implementations for ledger account management. ### Detailed summary - Added `Hex` type definition in `src/types.ts`. - Created initial release notes in `CHANGELOG.md`. - Configured ESLint and TypeScript settings. - Implemented `ledgerToAccount` function in `src/ledger-to-account.ts`. - Added utility functions in `src/utils.ts`. - Created test files for ledger interactions. - Updated `README.md` with installation and usage instructions. > The following files were skipped due to too many changes: `yarn.lock` > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- .changeset/dry-gifts-love.md | 5 + packages/viem-account-ledger/.eslintrc.cjs | 3 + packages/viem-account-ledger/.gitignore | 4 + packages/viem-account-ledger/.npmignore | 16 + packages/viem-account-ledger/CHANGELOG.md | 0 packages/viem-account-ledger/README.md | 55 + .../viem-account-ledger/eslint.tsconfig.json | 4 + packages/viem-account-ledger/package.json | 54 + packages/viem-account-ledger/src/data.ts | 19 + packages/viem-account-ledger/src/index.ts | 5 + .../src/ledger-to-account.test.ts | 100 ++ .../src/ledger-to-account.ts | 68 + .../viem-account-ledger/src/test-utils.ts | 206 +++ packages/viem-account-ledger/src/tokens.ts | 83 ++ packages/viem-account-ledger/src/types.ts | 1 + .../viem-account-ledger/src/utils.test.ts | 110 ++ packages/viem-account-ledger/src/utils.ts | 67 + packages/viem-account-ledger/tsconfig.json | 13 + packages/viem-account-ledger/typedoc.json | 13 + packages/viem-account-ledger/vitest.config.ts | 11 + yarn.lock | 1289 ++++++++++++++++- 21 files changed, 2114 insertions(+), 12 deletions(-) create mode 100644 .changeset/dry-gifts-love.md create mode 100644 packages/viem-account-ledger/.eslintrc.cjs create mode 100644 packages/viem-account-ledger/.gitignore create mode 100644 packages/viem-account-ledger/.npmignore create mode 100644 packages/viem-account-ledger/CHANGELOG.md create mode 100644 packages/viem-account-ledger/README.md create mode 100644 packages/viem-account-ledger/eslint.tsconfig.json create mode 100644 packages/viem-account-ledger/package.json create mode 100644 packages/viem-account-ledger/src/data.ts create mode 100644 packages/viem-account-ledger/src/index.ts create mode 100644 packages/viem-account-ledger/src/ledger-to-account.test.ts create mode 100644 packages/viem-account-ledger/src/ledger-to-account.ts create mode 100644 packages/viem-account-ledger/src/test-utils.ts create mode 100644 packages/viem-account-ledger/src/tokens.ts create mode 100644 packages/viem-account-ledger/src/types.ts create mode 100644 packages/viem-account-ledger/src/utils.test.ts create mode 100644 packages/viem-account-ledger/src/utils.ts create mode 100644 packages/viem-account-ledger/tsconfig.json create mode 100644 packages/viem-account-ledger/typedoc.json create mode 100644 packages/viem-account-ledger/vitest.config.ts diff --git a/.changeset/dry-gifts-love.md b/.changeset/dry-gifts-love.md new file mode 100644 index 0000000000..05f30b04a6 --- /dev/null +++ b/.changeset/dry-gifts-love.md @@ -0,0 +1,5 @@ +--- +'@celo/viem-account-ledger': major +--- + +Initial release diff --git a/packages/viem-account-ledger/.eslintrc.cjs b/packages/viem-account-ledger/.eslintrc.cjs new file mode 100644 index 0000000000..bfd2057be8 --- /dev/null +++ b/packages/viem-account-ledger/.eslintrc.cjs @@ -0,0 +1,3 @@ +module.exports = { + extends: '../../.eslintrc.js', +} diff --git a/packages/viem-account-ledger/.gitignore b/packages/viem-account-ledger/.gitignore new file mode 100644 index 0000000000..7fabe89f61 --- /dev/null +++ b/packages/viem-account-ledger/.gitignore @@ -0,0 +1,4 @@ +lib/ +tmp/ +.tmp/ +.env \ No newline at end of file diff --git a/packages/viem-account-ledger/.npmignore b/packages/viem-account-ledger/.npmignore new file mode 100644 index 0000000000..600437e220 --- /dev/null +++ b/packages/viem-account-ledger/.npmignore @@ -0,0 +1,16 @@ +/.devchain/ +/.devchain.tar.gz +/coverage/ +/node_modules/ +/src/ +/tmp/ +/.tmp/ + +/tsconfig.* +/jest.config.* +*.tgz + +/src + +/lib/**/*.test.* +/lib/test-utils \ No newline at end of file diff --git a/packages/viem-account-ledger/CHANGELOG.md b/packages/viem-account-ledger/CHANGELOG.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/viem-account-ledger/README.md b/packages/viem-account-ledger/README.md new file mode 100644 index 0000000000..5df60f8ba1 --- /dev/null +++ b/packages/viem-account-ledger/README.md @@ -0,0 +1,55 @@ +# @celo/viem-account-ledger + +This library aims to ease the usage of a ledger device with (viem)[https://viem.sh/]. + +## Installation + +```bash +npm install @celo/viem-account-ledger viem@2 @ledgerhq/transport-node-hid@6.x +# or yarn or bun or ... +``` + +> [!IMPORTANT] > `viem` is a peer dependency and MUST be installed alongside this library. +> `@ledgerhq/transport-node-hid` is a peer dependency and MUST be installed alongside this library. + +## Usage + +```ts +import TransportNodeHid from '@ledgerhq/hw-transport-node-hid' +import { createWalletClient } from 'viem' +import { celo, celoAlfajores } from 'viem/chains' +import { ledgerToAccount } from '@celo/viem-account-ledger' + +async function main() => { + const account = await ledgerToAccount({ + transport: await TransportNodeHid.open(''), + }) + const client = createWalletClient({ + account, + chain: celo, + transport: http() + }); + await client.sendTransaction({ + to: '0x123...', + value: 10n, + feeCurrency: '0x123...' + }); +} +``` + +You can also use the `account` directly eg: + +```ts +const account = await ledgerToAccount({ + transport: await TransportNodeHid.open(''), +}) +account.signTransaction({ + to: '0x123...', + value: 123n, + chainId: celoAlfajores.id, + nonce: 42, + maxFeePerGas: 100n, + maxPriorityFeePerGas: 100n, + feeCurrency: '0x123...', +}) +``` diff --git a/packages/viem-account-ledger/eslint.tsconfig.json b/packages/viem-account-ledger/eslint.tsconfig.json new file mode 100644 index 0000000000..a8d4317b49 --- /dev/null +++ b/packages/viem-account-ledger/eslint.tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": [] +} diff --git a/packages/viem-account-ledger/package.json b/packages/viem-account-ledger/package.json new file mode 100644 index 0000000000..0dbe02670e --- /dev/null +++ b/packages/viem-account-ledger/package.json @@ -0,0 +1,54 @@ +{ + "name": "@celo/viem-account-ledger", + "version": "0.0.1", + "description": "Helper library to make ledger<->viem interactions easier", + "type": "module", + "exports": { + ".": "./lib/index.js" + }, + "types": "./lib/index.d.ts", + "author": "cLabs", + "license": "Apache-2.0", + "homepage": "https://docs.celo.org/developer/tools", + "repository": "https://github.com/celo-org/developer-tooling/tree/master/packages/viem-account-ledger", + "keywords": [ + "celo", + "blockchain", + "viem", + "ledger" + ], + "scripts": { + "build": "yarn run --top-level tsc -b .", + "clean": "yarn run --top-level tsc -b . --clean", + "docs": "yarn run --top-level typedoc", + "test": "yarn run vitest", + "lint": "yarn run --top-level eslint -c .eslintrc.cjs ", + "prepublishOnly": "yarn build" + }, + "peerDependencies": { + "@ledgerhq/hw-transport-node-hid": "^6.x", + "viem": "2.x" + }, + "dependencies": { + "@celo/base": "^6.1.0", + "@celo/ledger-token-signer": "^0.4.0", + "@ledgerhq/errors": "^6.16.4", + "@ledgerhq/hw-app-eth": "git+https://github.com:celo-org/ledgerjs-hw-app-eth.git", + "semver": "^7.6.0" + }, + "devDependencies": { + "@celo/typescript": "workspace:^", + "@celo/utils": "workspace:^", + "@celo/wallet-base": "workspace:^", + "@celo/wallet-remote": "workspace:^", + "@ethereumjs/util": "8.0.5", + "@ledgerhq/hw-transport-node-hid": "^6.29.5", + "@vitest/coverage-v8": "2.1.2", + "dotenv": "^8.2.0", + "viem": "^2.21.14", + "vitest": "^2.1.2" + }, + "engines": { + "node": ">=18" + } +} diff --git a/packages/viem-account-ledger/src/data.ts b/packages/viem-account-ledger/src/data.ts new file mode 100644 index 0000000000..d348d97953 --- /dev/null +++ b/packages/viem-account-ledger/src/data.ts @@ -0,0 +1,19 @@ +// export default 'AAAAaARDRUxPRx7ON1DaI3+TuOM5xTaYm4l4pDgAAAASAACk7DBFAiEA5rECRg94+fCoIvoG9/5qWh62zl2C6Y+aFuuZrFe4CtcCIEJbRrkL3gqwT/Jj+7L3neazgpVCCTZZ3HX9JXXg5vleAAAAaARjVVNEdl3oFoRYYedaJfyhIrtomLixKCoAAAASAACk7DBFAiEApwQFHNBKXp+V2jq8BMD2y/5AwC9bhPQ2H4hT/vMl/B4CIFalOVtBFGREUKMU/F5vDlJLeQrTn6GQeDertpB2FpMvAAAAaARjRVVS2HY8uidqNzjm3oW0s79f3tbWynMAAAASAACk7DBFAiEAh2UeP1+SI2Ed5SiAjpJF6MkMrVa94gUwjJztyBlzhWMCIHfaOrEsxdxAGx+P+hxuSNO4zcw6KRLfJkkuic1V/CrHAAAAagZiIENFTE/dyb5X9VP+dXUtYWBrlMvX4CZO+AAAABIAAPNwMEUCIQCi62KsBfuNcfX0MriiRZ7a5DKERhtIz7sZ1SqBT7ruhgIgVrfmavyWzxzDW4AQeHn++A4qPjB1pQKoHvNXo8Hf1SMAAABpBmIgY1VTRGJJKmRKWI/ZBCcL7QatUrmr/qGuAAAAEgAA83AwRAIgGDYx4oB/gkYUqLeXqvEZXx9nOxVHzTe2ajyd2wnehxgCICQBe/rBPcXiaQJj3pdoXxroct/hV6r3G2G7y79EOEAPAAAAaQZiIGNFVVL57OMBJHrSziGJSUGDCiRw9Od0ygAAABIAAPNwMEQCIEdcFWP+HxEUoF1sCGVd34QGS0hL5cVUdrWdqVm3bYTgAiBCMA+Rg3Ubc3xla/35wzZesPlbeSMEPcr4uqL+8PeydwAAAGoGYSBDRUxP8ZSv31CwPmm9fQV8GqnhDJlU5MkAAAASAACu8zBFAiEAk/o0FBus2/QCrunFGEyoneQIRaMRC+y5L6Dvar8MU/kCIByJt2ziRhDG3AAbyXBIuJfZQujSHFcSJL3xF0xIlcPdAAAAaQZhIGNVU0SHQGn6HrFtRNYi8uDKJe6hcjabwQAAABIAAK7zMEQCIClrH2xgE3WMbD+hgQ7t5SiAcVG5WiUZ655voqCszKEoAiA/cO8UVgNY891MNJ5yeDk8w47WO0E1DQecrK71LR8g8gAAAGoGYSBjRVVSEMiSpuxDpT5F0LkWtLfTg7G3jA8AAAASAACu8zBFAiEAgpktbB1ZxyAwMJwKTSbZ30n8zgRuW0twbXoZxlsUAswCIHek4l4CIbjVMG2HVr0Ml9/8kA4F9dr69JBMaoSUkdKl' + +// This was signed by Marek Olszewski on Wed 18 June 2024 +export default 'AAAAZwRVU0RUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAACk7DBEAiA45AhZco0/POPgpuUPBqRnGG1SfGPpXE8+Hckw0dZLCQIgWteUoWhghs0KwxfgX2P0jJ2gYQEAbq6J+mWfSs9yWzcAAABnBFVTRFQOKj4FvJoW9SkqYXBFanEMuJxvcgAAABIAAKTsMEQCIAl/QSQA3JAF4c+otYCNG+JghDIV17habVFg/kLOLG9UAiAY+PSK6WBYObKt8OObZHKiAVWHOaI0E26OC61ytGCN4wAAAGgEVVNEQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAApOwwRQIhAJAwutARDDU/EgrpV1SYRuLsKR/JjkYP4rRT6InIlo8GAiAgyuHrUNUuEdfijlmY8UWzR/jzLzycmkjEjL8qV06GvwAAAGcEVVNEQy8l3rOEjCB/yODDQDWzun/BV2ArAAAAEgAApOwwRAIgVYSG4e4JD7mbHMdOd29i5c4872THYeVWqDsb6ZE0JA4CIGVsHMurIGTBw1WUJqmOsBXUBlP5bhljUufw9jgQKq7JAAAAaARlWE9Gc/k9zEnLiiOeIDJmPpR13V7ymggAAAASAACk7DBFAiEA31wGJ9NfYN5Ujs3qkNxXowT73iNAxrBw7SdHTfLn47UCIH0fhGCTysFEdN31WIVCvkgoB2VKaF7Q6i8sZFOj++4XAAAAaARjVVNEdl3oFoRYYedaJfyhIrtomLixKCoAAAASAACk7DBFAiEApwQFHNBKXp+V2jq8BMD2y/5AwC9bhPQ2H4hT/vMl/B4CIFalOVtBFGREUKMU/F5vDlJLeQrTn6GQeDertpB2FpMvAAAAaARjRVVS2HY8uidqNzjm3oW0s79f3tbWynMAAAASAACk7DBFAiEAh2UeP1+SI2Ed5SiAjpJF6MkMrVa94gUwjJztyBlzhWMCIHfaOrEsxdxAGx+P+hxuSNO4zcw6KRLfJkkuic1V/CrHAAAAaAVjUkVBTOhTej0FbaRGZ3uenWxdtwTqq0eHAAAAEgAApOwwRAIgKq0LIfD4D+gU3xANTkNfCrpo8CBBZlpasrsjd/E3YuoCICU2CvRG4xPmFzmmDLIjvN2ARrjqtkwAjLeQ8jUxRbZIAAAAaQZiIGNVU0RiSSpkSliP2QQnC+0GrVK5q/6hrgAAABIAAPNwMEQCIBg2MeKAf4JGFKi3l6rxGV8fZzsVR803tmo8ndsJ3ocYAiAkAXv6wT3F4mkCY96XaF8a6HLf4Veq9xthu8u/RDhADwAAAGkGYiBlWE9GZMHYEmc+k7wDatw9VH2ZUGltpa8AAAASAADzcDBEAiAL0g/ZekAf2Zok/7GXeIcwKMibuiLprWKUDIxl8BcLRwIgJBOEVGXOISlfVmuqdUWrbR2xR9DNYafBO4wCxQN2mUEAAABqB2IgY1JFQUxqDu8r7Uww3Cy0L+bF8B+A9+8W0QAAABIAAPNwMEQCIAuSOFoyw6PPiuegcqMLtpvPU5ip23jlQKvjcggLxT0UAiAiVDv5VON1+peijMemQCD3Gvcz+BtCAgC60z76+mm2xQAAAGkGYiBjRVVS+ezjASR60s4hiUlBgwokcPTndMoAAAASAADzcDBEAiBHXBVj/h8RFKBdbAhlXd+EBktIS+XFVHa1nalZt22E4AIgQjAPkYN1G3N8ZWv9+cM2XrD5W3kjBD3K+Lqi/vD3sncAAABoBGEgRyQD09q4Q+bAOz0nHv+ReOapbCjSXwAAABIAAK7zMEUCIQCZTGG2AjD7sgxeavTx9xhfi8TEkEGv83Es3sl31NVjwwIgdUpDy6iaoiJbHxT/0/tiHs8FGYYdKRE1EPzMUIcm2+oAAABqBmEgY0VVUhDIkqbsQ6U+RdC5FrS304Oxt4wPAAAAEgAArvMwRQIhAIKZLWwdWccgMDCcCk0m2d9J/M4EbltLcG16GcZbFALMAiB3pOJeAiG41TBth1a9DJff/JAOBfXa+vSQTGqElJHSpQAAAGkFYSBFRkMa17YXy2xRVqbepuR1FNFkdrmfOAAAAAYAAK7zMEUCIQDIjpFbbedbDHebk1HaK2VoxHzTe8Tkn5VrB2KCne0i5QIgF8g1CYG9jclyquUUxC+vPprZPnCSSroJxMWhYIxgRtAAAABqBmEgVVNEQ0gi5Y3m9eSF75DfUcQc4BchMx3AAAAABgAArvMwRQIhANOSBnG6FiIl0EprRvWagcC7r8EJyzkC0XKum71zUQXAAiASh91Kt5m0jm7BVXRZou1xV+8DwCs4Nn3oT+Ogb1NRdAAAAGgFYSBFRkN9AneQmY9xSylMlv2p4nr1htHrtQAAAAYAAK7zMEQCICnuUijiwCApPFmsqpFcI3KdDgI4ueArA6Xgc9pd31ROAiBMr8ljj6A7N3vgklG8sSNAvbCB+WujFTtZFWYGwYHFrwAAAGkGYSBjVVNEh0Bp+h6xbUTWIvLgyiXuoXI2m8EAAAASAACu8zBEAiApax9sYBN1jGw/oYEO7eUogHFRuVolGeueb6KgrMyhKAIgP3DvFFYDWPPdTDSecng5PMOO1jtBNQ0HnKyu9S0fIPIAAABpBmEgZVhPRrD6FeACUW0DAYhAWcCqwPDHKwGdAAAAEgAArvMwRAIgIBy2pPKNIi1HG3FrxikDxfZL0NZQcKhUKMFiaiu0cxsCIDyeMa3QZM71diszR3uNso9U+mmB9AxMzVL6RLHmjRlbAAAAagZhIFVTRFTE+G6bSliNUBwcPiVijf1QvI1hXgAAABIAAK7zMEUCIQDX0yUA7NuyMcn52Q3o4f5aouT7hqLRDK05zaSapCT3qAIgDW3F0IpF386QYNiGqThC4a5OsgII7Kfz/qW6EYq1+VQAAABrB2EgY1JFQUzk1Rd4XQkdPFSBiDLbYJS8wnRFRQAAABIAAK7zMEUCIQDVjhKnLdzKU84vV/13nvvshLsaCC4IfzLFmieUNniSMAIgMCRja6R+GcT2OFVF8ClIx/7ZBlIHEIqooo/8Bnpy1sc=' + +// How did we get this? By following these steps: +// 1 - get pubkey from https://github.com/blooo-io/app-celo-spender/pull/7/files#diff-e0cf5b28d9b6b600f0af2bc78e8fd30ec675fd731a5da86f0c4283ffc0e40176L75-L83 +// 2 - now you've got to trust me +// 3 - run `ASN1_PREFIX=3056301006072a8648ce3d020106052b8104000a034200` +// 4 - remove spaces, colons, 0xs from the pubkey of step 1, I've done that for you :) +// 5 - and store it in key `KEY=04b06cf5d8f7ed71d8bd9b9dc37944a1c6d240f69bb0be3621dddbb6ac0eccd1508bcc2ea46227e43b941e2c6f1b1cd0ae68e54b185e2cabef3455580604bd45b8` +// 5 - finally run `echo $ASN1_PREFIX$KEY | xxd -r -p - | openssl ec -inform der -pubin -pubout` +// 6 - enjoy +export const legacyLedgerPublicKeyHex = [ + `-----BEGIN PUBLIC KEY-----`, + `MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEsGz12Pftcdi9m53DeUShxtJA9puwvjYh`, + `3du2rA7M0VCLzC6kYifkO5QeLG8bHNCuaOVLGF4sq+80VVgGBL1FuA==`, + `-----END PUBLIC KEY-----`, +].join('\n') diff --git a/packages/viem-account-ledger/src/index.ts b/packages/viem-account-ledger/src/index.ts new file mode 100644 index 0000000000..58daeaf321 --- /dev/null +++ b/packages/viem-account-ledger/src/index.ts @@ -0,0 +1,5 @@ +export { + CELO_BASE_DERIVATION_PATH, + DEFAULT_DERIVATION_PATH, + ledgerToAccount, +} from './ledger-to-account.js' diff --git a/packages/viem-account-ledger/src/ledger-to-account.test.ts b/packages/viem-account-ledger/src/ledger-to-account.test.ts new file mode 100644 index 0000000000..1dce8f0fa2 --- /dev/null +++ b/packages/viem-account-ledger/src/ledger-to-account.test.ts @@ -0,0 +1,100 @@ +import TransportNodeHid from '@ledgerhq/hw-transport-node-hid' +import { describe, expect, it, test, vi } from 'vitest' +import { ledgerToAccount } from './ledger-to-account.js' +import { mockLedger, TEST_CHAIN_ID } from './test-utils.js' + +vi.mock('./utils.js', async () => { + const module = await vi.importActual('./utils.js') + + return { + ...module, + generateLedger: vi.fn(() => Promise.resolve(mockLedger())), + } +}) + +const transport = + process.env.USE_PHYSICAL_LEDGER === 'true' + ? TransportNodeHid.open('') + : Promise.resolve(undefined as unknown as TransportNodeHid) + +describe('ledgerToAccount', () => { + it('can be setup', async () => { + await expect( + ledgerToAccount({ + transport: await transport, + }) + ).resolves.not.toBe(undefined) + // expect((generateLedger as ReturnType<(typeof jest)['fn']>).mock.calls.length).toBe(1) + }) + + describe('signs txs', () => { + const txData = { + to: '0x1234567890123456789012345678901234567890', + value: BigInt(123), + chainId: TEST_CHAIN_ID, + nonce: 42, + maxFeePerGas: BigInt(100), + maxPriorityFeePerGas: BigInt(100), + } as const + + test('eip1559', async () => { + const account = await ledgerToAccount({ + transport: await transport, + }) + await expect(account.signTransaction(txData)).resolves.toMatchInlineSnapshot( + `"0x02f86282aef32a6464809412345678901234567890123456789012345678907b80c080a05e130d8edb38e3ee8ab283af7c03a2579598b9a77807d7d796060358787d4707a07219dd22fe3bf3fe57682041d8f80dc9909cd70d903163b077d19625c4cd6e67"` + ) + }) + + test('cip64', async () => { + const account = await ledgerToAccount({ + transport: await transport, + }) + const cUSDa = '0x874069fa1eb16d44d622f2e0ca25eea172369bc1' + await expect( + account.signTransaction({ + ...txData, + + feeCurrency: cUSDa, + }) + ).resolves.toMatchInlineSnapshot( + `"0x7bf87782aef32a6464809412345678901234567890123456789012345678907b80c094874069fa1eb16d44d622f2e0ca25eea172369bc180a017d8df83b40dc645b60142280613467ca92438ff5aa0811a6ceff399fe66d661a02efe4eea14146f41d4f776bec1ededc486ddee37cea8304d297a69dbf27c4089"` + ) + }) + }) + + it('signs messages', async () => { + const account = await ledgerToAccount({ + transport: await transport, + }) + await expect(account.signMessage({ message: 'Hello World' })).resolves.toMatchInlineSnapshot( + `"0x2f9a547e69592e98114263c08c6f7a6e6cd2f991fc29f442947179419233fe9641c8e4c86975a2722b54313e47768d2ffe2608c497ff9fe7f8c61b12e6257e571c"` + ) + }) + + it('signs typed data', async () => { + const account = await ledgerToAccount({ + transport: await transport, + }) + + await expect( + account.signTypedData({ + domain: { + name: 'foo', + version: '0.0.0', + chainId: BigInt(42), + verifyingContract: '0x123', + }, + primaryType: 'EIP712Domain', + types: { + EIP712Domain: [ + { name: 'name', type: 'string' }, + { name: 'version', type: 'string' }, + { name: 'chainId', type: 'uint256' }, + { name: 'verifyingContract', type: 'address' }, + ], + }, + }) + ).rejects.toMatchInlineSnapshot(`[Error: Not implemented as of this release.]`) + }, 20_000) +}) diff --git a/packages/viem-account-ledger/src/ledger-to-account.ts b/packages/viem-account-ledger/src/ledger-to-account.ts new file mode 100644 index 0000000000..3c8e1df056 --- /dev/null +++ b/packages/viem-account-ledger/src/ledger-to-account.ts @@ -0,0 +1,68 @@ +import { CELO_DERIVATION_PATH_BASE, trimLeading0x } from '@celo/base' +import { ensureLeading0x } from '@celo/base/lib/address.js' +import TransportNodeHid from '@ledgerhq/hw-transport-node-hid' +import { hashMessage, serializeSignature } from 'viem' +import { LocalAccount, toAccount } from 'viem/accounts' +import { CeloTransactionSerializable, serializeTransaction } from 'viem/celo' + +import { checkForKnownToken, generateLedger } from './utils.js' + +type LedgerAccount = LocalAccount<'ledger'> + +export const ETH_DERIVATION_PATH_BASE = "m/44'/60'/0'" as const +export const CELO_BASE_DERIVATION_PATH = `${CELO_DERIVATION_PATH_BASE.slice(2)}/0` +export const DEFAULT_DERIVATION_PATH = `${ETH_DERIVATION_PATH_BASE.slice(2)}/0` + +export async function ledgerToAccount({ + transport, + derivationPathIndex = 0, + baseDerivationPath = DEFAULT_DERIVATION_PATH, +}: { + transport: TransportNodeHid.default + derivationPathIndex?: number | string + baseDerivationPath?: string +}): Promise { + const derivationPath = `${baseDerivationPath}/${derivationPathIndex}` + const ledger = await generateLedger(transport) + const { address, publicKey } = await ledger.getAddress(derivationPath, true) + + const account = toAccount({ + address: ensureLeading0x(address), + + async signTransaction(transaction: CeloTransactionSerializable) { + await checkForKnownToken(ledger, { + to: transaction.to!, + chainId: transaction.chainId!, + feeCurrency: transaction.feeCurrency, + }) + + const hash = serializeTransaction(transaction) + const { r, s, v } = await ledger!.signTransaction(derivationPath, trimLeading0x(hash), null) + return serializeTransaction(transaction, { + r: ensureLeading0x(r), + s: ensureLeading0x(s), + v: BigInt(ensureLeading0x(v)), + }) + }, + + async signMessage({ message }) { + const hash = hashMessage(message) + const { r, s, v } = await ledger!.signPersonalMessage(derivationPath, trimLeading0x(hash)) + return serializeSignature({ + r: ensureLeading0x(r), + s: ensureLeading0x(s), + v: BigInt(v), + }) + }, + + async signTypedData(_parameters) { + throw new Error('Not implemented as of this release.') + }, + }) + + return { + ...account, + publicKey: ensureLeading0x(publicKey), + source: 'ledger', + } +} diff --git a/packages/viem-account-ledger/src/test-utils.ts b/packages/viem-account-ledger/src/test-utils.ts new file mode 100644 index 0000000000..99eb58395f --- /dev/null +++ b/packages/viem-account-ledger/src/test-utils.ts @@ -0,0 +1,206 @@ +import { ensureLeading0x, normalizeAddressWith0x, trimLeading0x } from '@celo/base' +import { generateTypedDataHash } from '@celo/utils/lib/sign-typed-data-utils.js' +import { getHashFromEncoded, signTransaction } from '@celo/wallet-base' +import * as ethUtil from '@ethereumjs/util' +import Eth from '@ledgerhq/hw-app-eth' +import { createVerify, VerifyPublicKeyInput } from 'node:crypto' +import { readFileSync } from 'node:fs' +import { dirname, join } from 'node:path' +import { Hex } from 'viem' +import { privateKeyToAccount, privateKeyToAddress } from 'viem/accounts' +import { legacyLedgerPublicKeyHex } from './data.js' +import { DEFAULT_DERIVATION_PATH } from './ledger-to-account.js' +import { meetsVersionRequirements, MIN_VERSION_EIP1559 } from './utils.js' + +const PRIVATE_KEY1 = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef' +export const ACCOUNT_ADDRESS1 = normalizeAddressWith0x(privateKeyToAddress(PRIVATE_KEY1)) +const PRIVATE_KEY2 = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890fdeccc' +export const ACCOUNT_ADDRESS2 = normalizeAddressWith0x(privateKeyToAddress(PRIVATE_KEY2)) +const PRIVATE_KEY3 = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890fffff1' +export const ACCOUNT_ADDRESS3 = normalizeAddressWith0x(privateKeyToAddress(PRIVATE_KEY3)) +const PRIVATE_KEY4 = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890fffff2' +export const ACCOUNT_ADDRESS4 = normalizeAddressWith0x(privateKeyToAddress(PRIVATE_KEY4)) +const PRIVATE_KEY5 = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890fffff3' +export const ACCOUNT_ADDRESS5 = normalizeAddressWith0x(privateKeyToAddress(PRIVATE_KEY5)) +const PRIVATE_KEY_NEVER = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890ffffff' +export const ACCOUNT_ADDRESS_NEVER = normalizeAddressWith0x(privateKeyToAddress(PRIVATE_KEY_NEVER)) + +const ledgerAddresses: { [myKey: string]: { address: Hex; privateKey: Hex } } = { + [`${DEFAULT_DERIVATION_PATH}/0`]: { + address: ACCOUNT_ADDRESS1, + privateKey: PRIVATE_KEY1, + }, + [`${DEFAULT_DERIVATION_PATH}/1`]: { + address: ACCOUNT_ADDRESS2, + privateKey: PRIVATE_KEY2, + }, + [`${DEFAULT_DERIVATION_PATH}/2`]: { + address: ACCOUNT_ADDRESS3, + privateKey: PRIVATE_KEY3, + }, + [`${DEFAULT_DERIVATION_PATH}/3`]: { + address: ACCOUNT_ADDRESS4, + privateKey: PRIVATE_KEY4, + }, + [`${DEFAULT_DERIVATION_PATH}/4`]: { + address: ACCOUNT_ADDRESS5, + privateKey: PRIVATE_KEY5, + }, +} + +export const TEST_CHAIN_ID = 44787 + +// Sample data from the official EIP-712 example: +// https://github.com/ethereum/EIPs/blob/master/assets/eip-712/Example.js +const TYPED_DATA = { + types: { + EIP712Domain: [ + { name: 'name', type: 'string' }, + { name: 'version', type: 'string' }, + { name: 'chainId', type: 'uint256' }, + { name: 'verifyingContract', type: 'address' }, + ], + Person: [ + { name: 'name', type: 'string' }, + { name: 'wallet', type: 'address' }, + ], + Mail: [ + { name: 'from', type: 'Person' }, + { name: 'to', type: 'Person' }, + { name: 'contents', type: 'string' }, + ], + }, + primaryType: 'Mail', + domain: { + name: 'Ether Mail', + version: '1', + chainId: 1, + verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', + }, + message: { + from: { + name: 'Cow', + wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', + }, + to: { + name: 'Bob', + wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', + }, + contents: 'Hello, Bob!', + }, +} + +interface Config extends Partial>> {} + +export const mockLedger = (config?: Config) => { + const _ledger = { + getAddress: async (derivationPath: string) => { + if (ledgerAddresses[derivationPath]) { + const { address, privateKey } = ledgerAddresses[derivationPath] + return { + address, + derivationPath, + publicKey: privateKeyToAccount(privateKey).publicKey, + } + } + return { + address: '', + derivationPath, + publicKey: '', + } + }, + signTransaction: async (derivationPath: string, data: string) => { + if (ledgerAddresses[derivationPath]) { + const hash = getHashFromEncoded(ensureLeading0x(data)) + const { r, s, v } = signTransaction(hash, ledgerAddresses[derivationPath].privateKey) + + return { + v: v.toString(16), + r: r.toString('hex'), + s: s.toString('hex'), + } + } + throw new Error('Invalid Path') + }, + signPersonalMessage: async (derivationPath: string, data: string) => { + if (ledgerAddresses[derivationPath]) { + const dataBuff = ethUtil.toBuffer(ensureLeading0x(data)) + const msgHashBuff = ethUtil.hashPersonalMessage(dataBuff) + + const trimmedKey = trimLeading0x(ledgerAddresses[derivationPath].privateKey) + const pkBuffer = Buffer.from(trimmedKey, 'hex') + const signature = ethUtil.ecsign(msgHashBuff, pkBuffer) + return { + v: Number(signature.v), + r: signature.r.toString('hex'), + s: signature.s.toString('hex'), + } + } + throw new Error('Invalid Path') + }, + signEIP712HashedMessage: async ( + derivationPath: string, + _domainSeparator: string, + _structHash: string + ) => { + const messageHash = generateTypedDataHash(TYPED_DATA) + + const trimmedKey = trimLeading0x(ledgerAddresses[derivationPath].privateKey) + const pkBuffer = Buffer.from(trimmedKey, 'hex') + const signature = ethUtil.ecsign(messageHash, pkBuffer) + return { + v: Number(signature.v), + r: signature.r.toString('hex'), + s: signature.s.toString('hex'), + } + }, + getAppConfiguration: async () => { + return { + arbitraryDataEnabled: config?.arbitraryDataEnabled ?? 1, + version: config?.version ?? MIN_VERSION_EIP1559, + erc20ProvisioningNecessary: config?.erc20ProvisioningNecessary ?? 1, + starkEnabled: config?.starkEnabled ?? 1, + starkv2Supported: config?.starkv2Supported ?? 1, + } + }, + provideERC20TokenInformation: async (tokenData: string) => { + let pubkey: VerifyPublicKeyInput + const version = (await _ledger.getAppConfiguration()).version + if ( + meetsVersionRequirements(version, { + minimum: MIN_VERSION_EIP1559, + }) + ) { + // verify with new pubkey + const pubDir = dirname(require.resolve('@celo/ledger-token-signer')) + pubkey = { key: readFileSync(join(pubDir, 'pubkey.pem')).toString() } + } else { + // verify with oldpubkey + pubkey = { key: legacyLedgerPublicKeyHex } + } + + const verify = createVerify('sha256') + const tokenDataBuf = Buffer.from(trimLeading0x(tokenData), 'hex') + const BASE_DATA_LENGTH = + 20 + // contract address, 20 bytes + 4 + // decimals, uint32, 4 bytes + 4 // chainId, uint32, 4 bytes + // first byte of data is the ticker length, so we add that to base data length + const dataLen = BASE_DATA_LENGTH + tokenDataBuf.readUint8(0) + + // start at 1 since the first byte was just informative + const data = tokenDataBuf.slice(1, dataLen + 1) + verify.update(data) + verify.end() + // read from end of data til the end + const signature = tokenDataBuf.slice(dataLen + 1) + const verified = verify.verify(pubkey, signature) + + if (!verified) { + throw new Error('couldnt verify data sent to MockLedger') + } + return verified + }, + } as unknown as Eth.default + return _ledger +} diff --git a/packages/viem-account-ledger/src/tokens.ts b/packages/viem-account-ledger/src/tokens.ts new file mode 100644 index 0000000000..01dbf55cb0 --- /dev/null +++ b/packages/viem-account-ledger/src/tokens.ts @@ -0,0 +1,83 @@ +// Copied from '@ledgerhq/hw-app-eth/erc20' because we need to change the path of the blob and support for address+chainId +import { Address, normalizeAddressWith0x } from '@celo/base/lib/address.js' +import { default as blob } from '@celo/ledger-token-signer' +import blobLegacy from './data.js' + +/** + * Retrieve the token information by a given contract address and chainId if any + */ +export const tokenInfoByAddressAndChainId = ( + contract: Address, + chainId: number +): TokenInfo | null | undefined => + get(blob as unknown as string).byContractKey(generateContractKey(contract, chainId)) + +export const legacyTokenInfoByAddressAndChainId = ( + contract: Address, + chainId: number +): TokenInfo | null | undefined => + get(blobLegacy).byContractKey(generateContractKey(contract, chainId)) + +/** + * list all the ERC20 tokens informations + */ +export const list = (): TokenInfo[] => get(blob.default).list() +export const listLegacy = (): TokenInfo[] => get(blobLegacy).list() + +export interface TokenInfo { + contractAddress: Address + ticker: string + decimals: number + chainId: number + signature: Buffer + data: Buffer +} + +export interface API { + byContractKey: (arg0: string) => TokenInfo | null | undefined + list: () => TokenInfo[] +} + +function generateContractKey(contract: Address, chainId: number): string { + return [normalizeAddressWith0x(contract), chainId].join('-') +} + +const get = (data: string): API => { + const buf = Buffer.from(data, 'base64') + const byContract: { [id: string]: TokenInfo } = {} + const entries: TokenInfo[] = [] + let i = 0 + while (i < buf.length) { + const length = buf.readUInt32BE(i) + i += 4 + const item = buf.slice(i, i + length) + let j = 0 + const tickerLength = item.readUInt8(j) + j += 1 + const ticker = item.slice(j, j + tickerLength).toString('ascii') + j += tickerLength + const contractAddress: string = normalizeAddressWith0x(item.slice(j, j + 20).toString('hex')) + j += 20 + const decimals = item.readUInt32BE(j) + j += 4 + const chainId = item.readUInt32BE(j) + j += 4 + const signature = item.slice(j) + const entry: TokenInfo = { + ticker, + contractAddress, + decimals, + chainId, + signature, + data: item, + } + entries.push(entry) + byContract[generateContractKey(contractAddress, chainId)] = entry + i += length + } + const api = { + list: () => entries, + byContractKey: (id: string) => byContract[id], + } + return api +} diff --git a/packages/viem-account-ledger/src/types.ts b/packages/viem-account-ledger/src/types.ts new file mode 100644 index 0000000000..0a1099279c --- /dev/null +++ b/packages/viem-account-ledger/src/types.ts @@ -0,0 +1 @@ +export type Hex = `0x${string}` diff --git a/packages/viem-account-ledger/src/utils.test.ts b/packages/viem-account-ledger/src/utils.test.ts new file mode 100644 index 0000000000..b630919e3c --- /dev/null +++ b/packages/viem-account-ledger/src/utils.test.ts @@ -0,0 +1,110 @@ +import { describe, expect, it, test, vi } from 'vitest' +import { ACCOUNT_ADDRESS1, mockLedger, TEST_CHAIN_ID } from './test-utils' +import { + assertCompat, + checkForKnownToken, + meetsVersionRequirements, + transportErrorFriendlyMessage, +} from './utils.js' + +describe('utils', () => { + describe('transportErrorFriendlyMessage', () => { + test('26368', () => { + const error = new Error('Test error') + // @ts-expect-error + error.statusCode = 26368 + expect(() => transportErrorFriendlyMessage(error)).toThrowErrorMatchingInlineSnapshot( + `[Error: Possible connection lost with the ledger. Check if still on and connected. Test error]` + ) + }) + test('26628', () => { + const error = new Error('Test error') + // @ts-expect-error + error.statusCode = 26628 + expect(() => transportErrorFriendlyMessage(error)).toThrowErrorMatchingInlineSnapshot( + `[Error: Possible connection lost with the ledger. Check if still on and connected. Test error]` + ) + }) + test('NoDevice', () => { + const error = new Error('NoDevice') + expect(() => transportErrorFriendlyMessage(error)).toThrowErrorMatchingInlineSnapshot( + `[Error: Possible connection lost with the ledger. Check if still on and connected. NoDevice]` + ) + }) + test('other', () => { + const error = new Error('Test error') + expect(() => transportErrorFriendlyMessage(error)).toThrowErrorMatchingInlineSnapshot( + `[Error: Test error]` + ) + }) + }) + + describe('meetsVersionRequirements', () => { + it('checks if the version is within bounds', () => { + expect(meetsVersionRequirements('1.1.1', { minimum: '1.0.0', maximum: '2.0.0' })).toBe(true) + expect(meetsVersionRequirements('1.1.1', { minimum: '1.1.1', maximum: '2.0.0' })).toBe(true) + expect(meetsVersionRequirements('1.1.1', { minimum: '1.0.0', maximum: '1.1.1' })).toBe(true) + expect(meetsVersionRequirements('1.1.1', { minimum: '1.0.0' })).toBe(true) + expect(meetsVersionRequirements('0.0.1', { maximum: '2.0.0' })).toBe(true) + expect(meetsVersionRequirements('1.1.1', { minimum: '2.0.0', maximum: '3.0.0' })).toBe(false) + }) + }) + + describe('assertCompat', () => { + it("throws if it doesn't meet the requirements", async () => { + await expect(assertCompat(mockLedger({ version: '1.0.0' }))).rejects.toMatchInlineSnapshot( + `[Error: Due to technical issues, we require the users to update their ledger celo-app to >= 1.2.0. You can do this on ledger-live by updating the celo-app in the app catalog.]` + ) + }) + it('warns if it doesnt enable `arbitraryDataEnabled`', async () => { + const warn = vi.spyOn(console, 'warn').mockImplementation(() => undefined) + await expect(assertCompat(mockLedger({ arbitraryDataEnabled: 0 }))).resolves.toBeTruthy() + expect(warn.mock.lastCall).toMatchInlineSnapshot(` + [ + "Beware, your ledger does not allow the use of contract data. Some features may not work correctly, including token transfers. You can enable it from the ledger app settings.", + ] + `) + }) + it('works', async () => { + await expect(assertCompat(mockLedger())).resolves.toBeTruthy() + }) + }) + + describe('checkForKnownToken', () => { + const ledger = mockLedger() + + it('works', async () => { + const spy = vi.spyOn(ledger, 'provideERC20TokenInformation') + const cUSDa = '0x874069fa1eb16d44d622f2e0ca25eea172369bc1' + const cEURa = '0x10c892a6ec43a53e45d0b916b4b7d383b1b78c0f' + + await expect( + checkForKnownToken(ledger, { + to: ACCOUNT_ADDRESS1, + chainId: TEST_CHAIN_ID, + feeCurrency: cUSDa, + }) + ).resolves.toBeUndefined() + expect(spy.mock.calls.length).toBe(1) + spy.mockClear() + + await expect( + checkForKnownToken(ledger, { + to: cEURa, + chainId: TEST_CHAIN_ID, + }) + ).resolves.toBeUndefined() + expect(spy.mock.calls.length).toBe(1) + spy.mockClear() + + await expect( + checkForKnownToken(ledger, { + to: cUSDa, + chainId: TEST_CHAIN_ID, + feeCurrency: cEURa, + }) + ).resolves.toBeUndefined() + expect(spy.mock.calls.length).toBe(2) + }) + }) +}) diff --git a/packages/viem-account-ledger/src/utils.ts b/packages/viem-account-ledger/src/utils.ts new file mode 100644 index 0000000000..17757e0aee --- /dev/null +++ b/packages/viem-account-ledger/src/utils.ts @@ -0,0 +1,67 @@ +import Eth from '@ledgerhq/hw-app-eth' +import TransportNodeHid from '@ledgerhq/hw-transport-node-hid' +import { SemVer } from 'semver' +import { tokenInfoByAddressAndChainId } from './tokens.js' +import { Hex } from './types.js' + +export const MIN_VERSION_EIP1559 = '1.2.0' + +export function transportErrorFriendlyMessage(error: any) { + if (error.statusCode === 26368 || error.statusCode === 26628 || error.message === 'NoDevice') { + throw new Error( + `Possible connection lost with the ledger. Check if still on and connected. ${error.message}` + ) + } + throw error +} + +export function meetsVersionRequirements( + version: string | SemVer, + { minimum, maximum }: { minimum?: SemVer | string; maximum?: SemVer | string } +) { + const min = minimum ? new SemVer(version).compare(minimum) >= 0 : true + const max = maximum ? new SemVer(version).compare(maximum) <= 0 : true + return min && max +} + +export async function assertCompat(ledger: Eth.default): Promise<{ + arbitraryDataEnabled: number + version: string +}> { + // TODO: check version only for CELO and not ETH if we wanna be eth compatible + const appConfiguration = await ledger.getAppConfiguration() + if (!meetsVersionRequirements(appConfiguration.version, { minimum: MIN_VERSION_EIP1559 })) { + throw new Error( + `Due to technical issues, we require the users to update their ledger celo-app to >= ${MIN_VERSION_EIP1559}. You can do this on ledger-live by updating the celo-app in the app catalog.` + ) + } + if (!appConfiguration.arbitraryDataEnabled) { + console.warn( + 'Beware, your ledger does not allow the use of contract data. Some features may not work correctly, including token transfers. You can enable it from the ledger app settings.' + ) + } + return appConfiguration +} + +export async function checkForKnownToken( + ledger: Eth.default, + { to, chainId, feeCurrency }: { to: string; chainId: number; feeCurrency?: Hex } +) { + const tokenInfo = tokenInfoByAddressAndChainId(to, chainId) + if (tokenInfo) { + await ledger.provideERC20TokenInformation(`0x${tokenInfo.data.toString('hex')}`) + } + + if (!feeCurrency || feeCurrency === '0x') return + + const feeTokenInfo = tokenInfoByAddressAndChainId(feeCurrency, chainId) + if (feeTokenInfo) { + await ledger.provideERC20TokenInformation(`0x${feeTokenInfo.data.toString('hex')}`) + } +} + +export async function generateLedger(transport: TransportNodeHid.default) { + const ledger = new Eth.default(transport) + await assertCompat(ledger) + return ledger +} diff --git a/packages/viem-account-ledger/tsconfig.json b/packages/viem-account-ledger/tsconfig.json new file mode 100644 index 0000000000..bb170fe17e --- /dev/null +++ b/packages/viem-account-ledger/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "@celo/typescript/tsconfig.library.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "lib", + "moduleResolution": "Node16", + "module": "Node16", + "declaration": true, + "types": ["vitest/globals"] + }, + "include": ["src/**/*", "types/**/*"], + "exclude": ["**/*.test.ts"] +} diff --git a/packages/viem-account-ledger/typedoc.json b/packages/viem-account-ledger/typedoc.json new file mode 100644 index 0000000000..27e4b830bd --- /dev/null +++ b/packages/viem-account-ledger/typedoc.json @@ -0,0 +1,13 @@ +{ + "exclude": ["**/generated/*.ts", "**/*+(index|.test).ts"], + "excludePrivate": true, + "excludeProtected": true, + "hideGenerator": true, + "out": "../docs/viem-account-ledger", + "gitRevision": "master", + "readme": "none", + "entryPoints": ["./src"], + "githubPages": false, + "plugin": ["typedoc-plugin-markdown"], + "entryPointStrategy": "expand" +} diff --git a/packages/viem-account-ledger/vitest.config.ts b/packages/viem-account-ledger/vitest.config.ts new file mode 100644 index 0000000000..5b8d2de3f3 --- /dev/null +++ b/packages/viem-account-ledger/vitest.config.ts @@ -0,0 +1,11 @@ +// vitest.config.ts +import { coverageConfigDefaults, defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + coverage: { + reporter: ['json', 'clover', 'lcov'], + exclude: ['**/data**', '**/tokens**', ...coverageConfigDefaults.exclude], + }, + }, +}) diff --git a/yarn.lock b/yarn.lock index 651bc7e4d3..adf2cf9333 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,6 +12,13 @@ __metadata: languageName: node linkType: hard +"@adraffy/ens-normalize@npm:1.10.0": + version: 1.10.0 + resolution: "@adraffy/ens-normalize@npm:1.10.0" + checksum: 5cdb5d2a9c9f8c0a71a7bb830967da0069cae1f1235cd41ae11147e4000f368f6958386e622cd4d52bf45c1ed3f8275056b387cba28902b83354e40ff323ecde + languageName: node + linkType: hard + "@adraffy/ens-normalize@npm:1.9.0": version: 1.9.0 resolution: "@adraffy/ens-normalize@npm:1.9.0" @@ -29,6 +36,16 @@ __metadata: languageName: node linkType: hard +"@ampproject/remapping@npm:^2.3.0": + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: f3451525379c68a73eb0a1e65247fbf28c0cccd126d93af21c75fceff77773d43c0d4a2d51978fb131aff25b5f2cb41a9fe48cc296e61ae65e679c4f6918b0ab + languageName: node + linkType: hard + "@aws-crypto/crc32@npm:5.2.0": version: 5.2.0 resolution: "@aws-crypto/crc32@npm:5.2.0" @@ -1238,6 +1255,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-string-parser@npm:7.25.7" + checksum: 2b8de9fa86c3f3090a349f1ce6e8ee2618a95355cbdafc6f228d82fa4808c84bf3d1d25290c6616d0a18b26b6cfeb6ec2aeebf01404bc8c60051d0094209f0e6 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": version: 7.19.1 resolution: "@babel/helper-validator-identifier@npm:7.19.1" @@ -1252,6 +1276,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-validator-identifier@npm:7.25.7" + checksum: ec6934cc47fc35baaeb968414a372b064f14f7b130cf6489a014c9486b0fd2549b3c6c682cc1fc35080075e8e38d96aeb40342d63d09fc1a62510c8ce25cde1e + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.21.0": version: 7.21.0 resolution: "@babel/helper-validator-option@npm:7.21.0" @@ -1310,6 +1341,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.25.4": + version: 7.25.7 + resolution: "@babel/parser@npm:7.25.7" + dependencies: + "@babel/types": "npm:^7.25.7" + bin: + parser: ./bin/babel-parser.js + checksum: 98eaa81bd378734a5f2790f02c7c076ecaba0839217445b4b84f45a7b391d640c34034253231a5bb2b2daf8204796f03584c3f94c10d46b004369bbb426a418f + languageName: node + linkType: hard + "@babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -1564,6 +1606,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.25.4, @babel/types@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/types@npm:7.25.7" + dependencies: + "@babel/helper-string-parser": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" + to-fast-properties: "npm:^2.0.0" + checksum: 4504e16a95b6a67d50cfaa389bcbc0621019084cff73784ad4797f82d1bb76c870cb0abb6d9881d5776eb06b4607419a2b1205a08c3e87b152d74bd0884b822a + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -2053,7 +2106,7 @@ __metadata: languageName: node linkType: hard -"@celo/utils@npm:^7.0.0, @celo/utils@workspace:packages/sdk/utils": +"@celo/utils@npm:^7.0.0, @celo/utils@workspace:^, @celo/utils@workspace:packages/sdk/utils": version: 0.0.0-use.local resolution: "@celo/utils@workspace:packages/sdk/utils" dependencies: @@ -2074,6 +2127,31 @@ __metadata: languageName: unknown linkType: soft +"@celo/viem-account-ledger@workspace:packages/viem-account-ledger": + version: 0.0.0-use.local + resolution: "@celo/viem-account-ledger@workspace:packages/viem-account-ledger" + dependencies: + "@celo/base": "npm:^6.1.0" + "@celo/ledger-token-signer": "npm:^0.4.0" + "@celo/typescript": "workspace:^" + "@celo/utils": "workspace:^" + "@celo/wallet-base": "workspace:^" + "@celo/wallet-remote": "workspace:^" + "@ethereumjs/util": "npm:8.0.5" + "@ledgerhq/errors": "npm:^6.16.4" + "@ledgerhq/hw-app-eth": "git+https://github.com:celo-org/ledgerjs-hw-app-eth.git" + "@ledgerhq/hw-transport-node-hid": "npm:^6.29.5" + "@vitest/coverage-v8": "npm:2.1.2" + dotenv: "npm:^8.2.0" + semver: "npm:^7.6.0" + viem: "npm:^2.21.14" + vitest: "npm:^2.1.2" + peerDependencies: + "@ledgerhq/hw-transport-node-hid": ^6.x + viem: 2.x + languageName: unknown + linkType: soft + "@celo/wallet-base@npm:^5.1.3": version: 5.1.3 resolution: "@celo/wallet-base@npm:5.1.3" @@ -2094,7 +2172,7 @@ __metadata: languageName: node linkType: hard -"@celo/wallet-base@npm:^6.0.1, @celo/wallet-base@workspace:packages/sdk/wallets/wallet-base": +"@celo/wallet-base@npm:^6.0.1, @celo/wallet-base@workspace:^, @celo/wallet-base@workspace:packages/sdk/wallets/wallet-base": version: 0.0.0-use.local resolution: "@celo/wallet-base@workspace:packages/sdk/wallets/wallet-base" dependencies: @@ -2268,7 +2346,7 @@ __metadata: languageName: unknown linkType: soft -"@celo/wallet-remote@npm:^6.0.1, @celo/wallet-remote@workspace:packages/sdk/wallets/wallet-remote": +"@celo/wallet-remote@npm:^6.0.1, @celo/wallet-remote@workspace:^, @celo/wallet-remote@workspace:packages/sdk/wallets/wallet-remote": version: 0.0.0-use.local resolution: "@celo/wallet-remote@workspace:packages/sdk/wallets/wallet-remote" dependencies: @@ -2640,6 +2718,167 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/aix-ppc64@npm:0.21.5" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm64@npm:0.21.5" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm@npm:0.21.5" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-x64@npm:0.21.5" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-arm64@npm:0.21.5" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-x64@npm:0.21.5" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-arm64@npm:0.21.5" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-x64@npm:0.21.5" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm64@npm:0.21.5" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm@npm:0.21.5" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ia32@npm:0.21.5" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-loong64@npm:0.21.5" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-mips64el@npm:0.21.5" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ppc64@npm:0.21.5" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-riscv64@npm:0.21.5" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-s390x@npm:0.21.5" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-x64@npm:0.21.5" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/netbsd-x64@npm:0.21.5" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/openbsd-x64@npm:0.21.5" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/sunos-x64@npm:0.21.5" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-arm64@npm:0.21.5" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-ia32@npm:0.21.5" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-x64@npm:0.21.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -3598,6 +3837,17 @@ __metadata: languageName: node linkType: hard +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.5 + resolution: "@jridgewell/gen-mapping@npm:0.3.5" + dependencies: + "@jridgewell/set-array": "npm:^1.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 81587b3c4dd8e6c60252122937cea0c637486311f4ed208b52b62aae2e7a87598f63ec330e6cd0984af494bfb16d3f0d60d3b21d7e5b4aedd2602ff3fe9d32e2 + languageName: node + linkType: hard + "@jridgewell/resolve-uri@npm:3.1.0": version: 3.1.0 resolution: "@jridgewell/resolve-uri@npm:3.1.0" @@ -3619,6 +3869,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 832e513a85a588f8ed4f27d1279420d8547743cc37fcad5a5a76fc74bb895b013dfe614d0eed9cb860048e6546b798f8f2652020b4b2ba0561b05caa8c654b10 + languageName: node + linkType: hard + "@jridgewell/sourcemap-codec@npm:1.4.14": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" @@ -3633,6 +3890,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.5.0": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 4ed6123217569a1484419ac53f6ea0d9f3b57e5b57ab30d7c267bdb27792a27eb0e4b08e84a2680aa55cc2f2b411ffd6ec3db01c44fdc6dc43aca4b55f8374fd + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:0.3.9": version: 0.3.9 resolution: "@jridgewell/trace-mapping@npm:0.3.9" @@ -3663,6 +3927,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: dced32160a44b49d531b80a4a2159dceab6b3ddf0c8e95a0deae4b0e894b172defa63d5ac52a19c2068e1fe7d31ea4ba931fbeec103233ecb4208953967120fc + languageName: node + linkType: hard + "@ledgerhq/cryptoassets@npm:^13.1.1": version: 13.1.1 resolution: "@ledgerhq/cryptoassets@npm:13.1.1" @@ -3710,6 +3984,18 @@ __metadata: languageName: node linkType: hard +"@ledgerhq/devices@npm:^8.4.4": + version: 8.4.4 + resolution: "@ledgerhq/devices@npm:8.4.4" + dependencies: + "@ledgerhq/errors": "npm:^6.19.1" + "@ledgerhq/logs": "npm:^6.12.0" + rxjs: "npm:^7.8.1" + semver: "npm:^7.3.5" + checksum: 57136fc45ae2fa42b3cf93eb7cc3542fd84010390b3d0a536d342c7e92f90e475d608b1774f17a547419edddd7df0d0b1b1dbd6d2c778009ebab0fc3ec313f67 + languageName: node + linkType: hard + "@ledgerhq/domain-service@npm:^1.2.1": version: 1.2.1 resolution: "@ledgerhq/domain-service@npm:1.2.1" @@ -3746,6 +4032,13 @@ __metadata: languageName: node linkType: hard +"@ledgerhq/errors@npm:^6.19.1": + version: 6.19.1 + resolution: "@ledgerhq/errors@npm:6.19.1" + checksum: 8265c6d73c314a4aabbe060ec29e2feebb4e904fe811bf7a9c53cde08e713dcbceded9d927ebb2f0ffc47a7b16524379d4a7e9aa3d61945b8a832be7cd5cf69b + languageName: node + linkType: hard + "@ledgerhq/evm-tools@npm:^1.1.1": version: 1.1.1 resolution: "@ledgerhq/evm-tools@npm:1.1.1" @@ -3805,6 +4098,19 @@ __metadata: languageName: node linkType: hard +"@ledgerhq/hw-transport-node-hid-noevents@npm:^6.30.5": + version: 6.30.5 + resolution: "@ledgerhq/hw-transport-node-hid-noevents@npm:6.30.5" + dependencies: + "@ledgerhq/devices": "npm:^8.4.4" + "@ledgerhq/errors": "npm:^6.19.1" + "@ledgerhq/hw-transport": "npm:^6.31.4" + "@ledgerhq/logs": "npm:^6.12.0" + node-hid: "npm:2.1.2" + checksum: 78d9524bcf441d8c8b909b7dd5e2322283dd4c896079bdc3cc9741a29f3798679ef031f497713c54cf3674bbdd6b84d772e6d74f2fda03a86f3450eee373fe9f + languageName: node + linkType: hard + "@ledgerhq/hw-transport-node-hid@npm:^6.28.5": version: 6.28.5 resolution: "@ledgerhq/hw-transport-node-hid@npm:6.28.5" @@ -3821,6 +4127,22 @@ __metadata: languageName: node linkType: hard +"@ledgerhq/hw-transport-node-hid@npm:^6.29.5": + version: 6.29.5 + resolution: "@ledgerhq/hw-transport-node-hid@npm:6.29.5" + dependencies: + "@ledgerhq/devices": "npm:^8.4.4" + "@ledgerhq/errors": "npm:^6.19.1" + "@ledgerhq/hw-transport": "npm:^6.31.4" + "@ledgerhq/hw-transport-node-hid-noevents": "npm:^6.30.5" + "@ledgerhq/logs": "npm:^6.12.0" + lodash: "npm:^4.17.21" + node-hid: "npm:2.1.2" + usb: "npm:2.9.0" + checksum: 60f071ec0582696794c70a884165c11a8f1bae26671f6ecebf66ccf0f6e87976ed762ca403ea0bb51e76355e674d4af2efc14bd1ea58eadb11ba17c3bee1a97a + languageName: node + linkType: hard + "@ledgerhq/hw-transport@npm:^6.30.5": version: 6.30.5 resolution: "@ledgerhq/hw-transport@npm:6.30.5" @@ -3857,6 +4179,18 @@ __metadata: languageName: node linkType: hard +"@ledgerhq/hw-transport@npm:^6.31.4": + version: 6.31.4 + resolution: "@ledgerhq/hw-transport@npm:6.31.4" + dependencies: + "@ledgerhq/devices": "npm:^8.4.4" + "@ledgerhq/errors": "npm:^6.19.1" + "@ledgerhq/logs": "npm:^6.12.0" + events: "npm:^3.3.0" + checksum: cf101e5b818e95e59031241d556dbec24658f54104910e414be493bc4b90b0aea50f5d4b3339a237dd0b12845bb2683c845f3a82f2ea9da4e077b68d1e1f7e48 + languageName: node + linkType: hard + "@ledgerhq/live-env@npm:^2.1.0": version: 2.1.0 resolution: "@ledgerhq/live-env@npm:2.1.0" @@ -3976,7 +4310,7 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:^1.4.0": +"@noble/curves@npm:1.4.0, @noble/curves@npm:^1.4.0": version: 1.4.0 resolution: "@noble/curves@npm:1.4.0" dependencies: @@ -3985,6 +4319,15 @@ __metadata: languageName: node linkType: hard +"@noble/curves@npm:~1.4.0": + version: 1.4.2 + resolution: "@noble/curves@npm:1.4.2" + dependencies: + "@noble/hashes": "npm:1.4.0" + checksum: f433a2e8811ae345109388eadfa18ef2b0004c1f79417553241db4f0ad0d59550be6298a4f43d989c627e9f7551ffae6e402a4edf0173981e6da95fc7cab5123 + languageName: node + linkType: hard + "@noble/hashes@npm:1.2.0, @noble/hashes@npm:~1.2.0": version: 1.2.0 resolution: "@noble/hashes@npm:1.2.0" @@ -4013,13 +4356,20 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.4.0": +"@noble/hashes@npm:1.4.0, @noble/hashes@npm:~1.4.0": version: 1.4.0 resolution: "@noble/hashes@npm:1.4.0" checksum: e156e65794c473794c52fa9d06baf1eb20903d0d96719530f523cc4450f6c721a957c544796e6efd0197b2296e7cd70efeb312f861465e17940a3e3c7e0febc6 languageName: node linkType: hard +"@noble/hashes@npm:^1.4.0, @noble/hashes@npm:~1.5.0": + version: 1.5.0 + resolution: "@noble/hashes@npm:1.5.0" + checksum: da7fc7af52af7afcf59810a7eea6155075464ff462ffda2572dc6d57d53e2669b1ea2ec774e814f6273f1697e567f28d36823776c9bf7068cba2a2855140f26e + languageName: node + linkType: hard + "@noble/hashes@npm:~1.3.0, @noble/hashes@npm:~1.3.1": version: 1.3.2 resolution: "@noble/hashes@npm:1.3.2" @@ -4521,6 +4871,118 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.24.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-android-arm64@npm:4.24.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.24.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.24.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.24.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.24.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.24.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.24.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.24.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.24.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.24.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.24.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.24.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.24.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@scure/base@npm:~1.1.0, @scure/base@npm:~1.1.4": version: 1.1.5 resolution: "@scure/base@npm:1.1.5" @@ -4528,6 +4990,13 @@ __metadata: languageName: node linkType: hard +"@scure/base@npm:~1.1.6, @scure/base@npm:~1.1.8": + version: 1.1.9 + resolution: "@scure/base@npm:1.1.9" + checksum: f0ab7f687bbcdee2a01377fe3cd808bf63977999672751295b6a92625d5322f4754a96d40f6bd579bc367aad48ecf8a4e6d0390e70296e6ded1076f52adb16bb + languageName: node + linkType: hard + "@scure/bip32@npm:1.1.5": version: 1.1.5 resolution: "@scure/bip32@npm:1.1.5" @@ -4561,6 +5030,17 @@ __metadata: languageName: node linkType: hard +"@scure/bip32@npm:1.4.0": + version: 1.4.0 + resolution: "@scure/bip32@npm:1.4.0" + dependencies: + "@noble/curves": "npm:~1.4.0" + "@noble/hashes": "npm:~1.4.0" + "@scure/base": "npm:~1.1.6" + checksum: 6cd5062d902564d9e970597ec8b1adacb415b2eadfbb95aee1a1a0480a52eb0de4d294d3753aa8b48548064c9795ed108d348a31a8ce3fc88785377bb12c63b9 + languageName: node + linkType: hard + "@scure/bip32@npm:^1.3.3": version: 1.3.3 resolution: "@scure/bip32@npm:1.3.3" @@ -4602,6 +5082,16 @@ __metadata: languageName: node linkType: hard +"@scure/bip39@npm:1.4.0": + version: 1.4.0 + resolution: "@scure/bip39@npm:1.4.0" + dependencies: + "@noble/hashes": "npm:~1.5.0" + "@scure/base": "npm:~1.1.8" + checksum: f86e0e79768c95bc684ed6de92892b1a6f228db0f8fab836f091c0ec0f6d1e291b8c4391cfbeaa9ea83f41045613535b1940cd10e7d780a5b73db163b1e7f151 + languageName: node + linkType: hard + "@scure/bip39@npm:^1.2.2": version: 1.2.2 resolution: "@scure/bip39@npm:1.2.2" @@ -5777,6 +6267,13 @@ __metadata: languageName: node linkType: hard +"@types/estree@npm:1.0.6, @types/estree@npm:^1.0.0": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d + languageName: node + linkType: hard + "@types/fs-extra@npm:^8.0.0, @types/fs-extra@npm:^8.1.0": version: 8.1.5 resolution: "@types/fs-extra@npm:8.1.5" @@ -6356,6 +6853,114 @@ __metadata: languageName: node linkType: hard +"@vitest/coverage-v8@npm:2.1.2": + version: 2.1.2 + resolution: "@vitest/coverage-v8@npm:2.1.2" + dependencies: + "@ampproject/remapping": "npm:^2.3.0" + "@bcoe/v8-coverage": "npm:^0.2.3" + debug: "npm:^4.3.6" + istanbul-lib-coverage: "npm:^3.2.2" + istanbul-lib-report: "npm:^3.0.1" + istanbul-lib-source-maps: "npm:^5.0.6" + istanbul-reports: "npm:^3.1.7" + magic-string: "npm:^0.30.11" + magicast: "npm:^0.3.4" + std-env: "npm:^3.7.0" + test-exclude: "npm:^7.0.1" + tinyrainbow: "npm:^1.2.0" + peerDependencies: + "@vitest/browser": 2.1.2 + vitest: 2.1.2 + peerDependenciesMeta: + "@vitest/browser": + optional: true + checksum: 513b96310eacc99f97f8beb95801c725788b5d64434a820d0008dd94731a09250f68d31a84bbb6cdf3110ee9ad86b4c50d02c1d3d4d651bf56bac4b409b95a62 + languageName: node + linkType: hard + +"@vitest/expect@npm:2.1.2": + version: 2.1.2 + resolution: "@vitest/expect@npm:2.1.2" + dependencies: + "@vitest/spy": "npm:2.1.2" + "@vitest/utils": "npm:2.1.2" + chai: "npm:^5.1.1" + tinyrainbow: "npm:^1.2.0" + checksum: 0e2991295a6b9c51e2d074d1185317dcb2d85d1e9b5045299431fd7b84e51a847942911b08efad2379f56bb4dfe2f02442abd267df348751c61c86bc7b3154a3 + languageName: node + linkType: hard + +"@vitest/mocker@npm:2.1.2": + version: 2.1.2 + resolution: "@vitest/mocker@npm:2.1.2" + dependencies: + "@vitest/spy": "npm:^2.1.0-beta.1" + estree-walker: "npm:^3.0.3" + magic-string: "npm:^0.30.11" + peerDependencies: + "@vitest/spy": 2.1.2 + msw: ^2.3.5 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + checksum: f6ec9aa061c21877322bf3f0b12bf4e78eba3f092174a506b2d2d479b78e36b4d46a6458cd23d3bf3cbdcf212276cf5d1a87234ae2014e8362ea2afc23e46bec + languageName: node + linkType: hard + +"@vitest/pretty-format@npm:2.1.2, @vitest/pretty-format@npm:^2.1.2": + version: 2.1.2 + resolution: "@vitest/pretty-format@npm:2.1.2" + dependencies: + tinyrainbow: "npm:^1.2.0" + checksum: 5866fb3c45e794b695a9f62f76b886a8a8d07d711f7187e9e769fd614bc62df1f87d076880c032d5cd8c0272c385fe824c12191b04a3ca44a8bb9fed1a0c3693 + languageName: node + linkType: hard + +"@vitest/runner@npm:2.1.2": + version: 2.1.2 + resolution: "@vitest/runner@npm:2.1.2" + dependencies: + "@vitest/utils": "npm:2.1.2" + pathe: "npm:^1.1.2" + checksum: 60b086e39a31dd664875746b0da3a2402d4088801306e87fe25f20dc660abda50afd3e5ec6ea34ef0849f5652ac05ce2a93a13ea4d5dd16a549d9882941de328 + languageName: node + linkType: hard + +"@vitest/snapshot@npm:2.1.2": + version: 2.1.2 + resolution: "@vitest/snapshot@npm:2.1.2" + dependencies: + "@vitest/pretty-format": "npm:2.1.2" + magic-string: "npm:^0.30.11" + pathe: "npm:^1.1.2" + checksum: acd29f59883899c660eeba5950366e4f9f799cb29e7edd65575a7b6ad319a1df4d7a46a95048f8f9475f4c6f46cea198a7ecfab06e88e435dfd4989b365b917f + languageName: node + linkType: hard + +"@vitest/spy@npm:2.1.2, @vitest/spy@npm:^2.1.0-beta.1": + version: 2.1.2 + resolution: "@vitest/spy@npm:2.1.2" + dependencies: + tinyspy: "npm:^3.0.0" + checksum: 0183ab53b431bd6a08531752113780e15202ebd7579eed25b9bf87c849f75d74d0e4f346d886034cd9dd1381aa8814b3e468f141f41f7539b75f30268df35a79 + languageName: node + linkType: hard + +"@vitest/utils@npm:2.1.2": + version: 2.1.2 + resolution: "@vitest/utils@npm:2.1.2" + dependencies: + "@vitest/pretty-format": "npm:2.1.2" + loupe: "npm:^3.1.1" + tinyrainbow: "npm:^1.2.0" + checksum: fa898ea6312cb62e4027f55b06859d84ba50ac20e583bab2889eeadea41d73baf6022ed87547deec6251cd8021f1df13d2ea4515ab253582c3ca93226acd6313 + languageName: node + linkType: hard + "@wagmi/chains@npm:1.6.0": version: 1.6.0 resolution: "@wagmi/chains@npm:1.6.0" @@ -6390,6 +6995,21 @@ __metadata: languageName: node linkType: hard +"abitype@npm:1.0.5": + version: 1.0.5 + resolution: "abitype@npm:1.0.5" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + checksum: 1acd0d9687945dd78442b71bd84ff3b9dceae27d15f0d8b14b16554a0c8c9518eeb971ff8e94d507f4d9f05a8a8b91eb8fafd735eaecebac37d5c5a4aac06d8e + languageName: node + linkType: hard + "abort-controller@npm:^3.0.0": version: 3.0.0 resolution: "abort-controller@npm:3.0.0" @@ -6827,6 +7447,13 @@ __metadata: languageName: node linkType: hard +"assertion-error@npm:^2.0.1": + version: 2.0.1 + resolution: "assertion-error@npm:2.0.1" + checksum: a0789dd882211b87116e81e2648ccb7f60340b34f19877dd020b39ebb4714e475eb943e14ba3e22201c221ef6645b7bfe10297e76b6ac95b48a9898c1211ce66 + languageName: node + linkType: hard + "astral-regex@npm:^2.0.0": version: 2.0.0 resolution: "astral-regex@npm:2.0.0" @@ -7523,6 +8150,13 @@ __metadata: languageName: node linkType: hard +"cac@npm:^6.7.14": + version: 6.7.14 + resolution: "cac@npm:6.7.14" + checksum: 002769a0fbfc51c062acd2a59df465a2a947916b02ac50b56c69ec6c018ee99ac3e7f4dd7366334ea847f1ecacf4defaa61bcd2ac283db50156ce1f1d8c8ad42 + languageName: node + linkType: hard + "cacache@npm:^18.0.0": version: 18.0.1 resolution: "cacache@npm:18.0.1" @@ -7791,6 +8425,19 @@ __metadata: languageName: unknown linkType: soft +"chai@npm:^5.1.1": + version: 5.1.1 + resolution: "chai@npm:5.1.1" + dependencies: + assertion-error: "npm:^2.0.1" + check-error: "npm:^2.1.1" + deep-eql: "npm:^5.0.1" + loupe: "npm:^3.1.0" + pathval: "npm:^2.0.0" + checksum: ee67279a5613bd36dc1dc13660042429ae2f1dc5a9030a6abcf381345866dfb5bce7bc10b9d74c8de86b6f656489f654bbbef3f3361e06925591e6a00c72afff + languageName: node + linkType: hard + "chalk@npm:^2.0.0, chalk@npm:^2.1.0, chalk@npm:^2.3.2, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" @@ -7879,6 +8526,13 @@ __metadata: languageName: node linkType: hard +"check-error@npm:^2.1.1": + version: 2.1.1 + resolution: "check-error@npm:2.1.1" + checksum: d785ed17b1d4a4796b6e75c765a9a290098cf52ff9728ce0756e8ffd4293d2e419dd30c67200aee34202463b474306913f2fcfaf1890641026d9fc6966fea27a + languageName: node + linkType: hard + "cheerio-select@npm:^2.1.0": version: 2.1.0 resolution: "cheerio-select@npm:2.1.0" @@ -8772,6 +9426,13 @@ __metadata: languageName: node linkType: hard +"deep-eql@npm:^5.0.1": + version: 5.0.2 + resolution: "deep-eql@npm:5.0.2" + checksum: a529b81e2ef8821621d20a36959a0328873a3e49d393ad11f8efe8559f31239494c2eb889b80342808674c475802ba95b9d6c4c27641b9a029405104c1b59fcf + languageName: node + linkType: hard + "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -9365,6 +10026,86 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:^0.21.3": + version: 0.21.5 + resolution: "esbuild@npm:0.21.5" + dependencies: + "@esbuild/aix-ppc64": "npm:0.21.5" + "@esbuild/android-arm": "npm:0.21.5" + "@esbuild/android-arm64": "npm:0.21.5" + "@esbuild/android-x64": "npm:0.21.5" + "@esbuild/darwin-arm64": "npm:0.21.5" + "@esbuild/darwin-x64": "npm:0.21.5" + "@esbuild/freebsd-arm64": "npm:0.21.5" + "@esbuild/freebsd-x64": "npm:0.21.5" + "@esbuild/linux-arm": "npm:0.21.5" + "@esbuild/linux-arm64": "npm:0.21.5" + "@esbuild/linux-ia32": "npm:0.21.5" + "@esbuild/linux-loong64": "npm:0.21.5" + "@esbuild/linux-mips64el": "npm:0.21.5" + "@esbuild/linux-ppc64": "npm:0.21.5" + "@esbuild/linux-riscv64": "npm:0.21.5" + "@esbuild/linux-s390x": "npm:0.21.5" + "@esbuild/linux-x64": "npm:0.21.5" + "@esbuild/netbsd-x64": "npm:0.21.5" + "@esbuild/openbsd-x64": "npm:0.21.5" + "@esbuild/sunos-x64": "npm:0.21.5" + "@esbuild/win32-arm64": "npm:0.21.5" + "@esbuild/win32-ia32": "npm:0.21.5" + "@esbuild/win32-x64": "npm:0.21.5" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: d2ff2ca84d30cce8e871517374d6c2290835380dc7cd413b2d49189ed170d45e407be14de2cb4794cf76f75cf89955c4714726ebd3de7444b3046f5cab23ab6b + languageName: node + linkType: hard + "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" @@ -9598,6 +10339,15 @@ __metadata: languageName: node linkType: hard +"estree-walker@npm:^3.0.3": + version: 3.0.3 + resolution: "estree-walker@npm:3.0.3" + dependencies: + "@types/estree": "npm:^1.0.0" + checksum: a65728d5727b71de172c5df323385755a16c0fdab8234dc756c3854cfee343261ddfbb72a809a5660fac8c75d960bb3e21aa898c2d7e9b19bb298482ca58a3af + languageName: node + linkType: hard + "esutils@npm:^2.0.2": version: 2.0.3 resolution: "esutils@npm:2.0.3" @@ -10491,19 +11241,38 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2": +"fsevents@npm:^2.3.2": + version: 2.3.2 + resolution: "fsevents@npm:2.3.2" + dependencies: + node-gyp: "npm:latest" + checksum: 6b5b6f5692372446ff81cf9501c76e3e0459a4852b3b5f1fc72c103198c125a6b8c72f5f166bdd76ffb2fca261e7f6ee5565daf80dca6e571e55bcc589cc1256 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 4c1ade961ded57cdbfbb5cac5106ec17bc8bccd62e16343c569a0ceeca83b9dfef87550b4dc5cbb89642da412b20c5071f304c8c464b80415446e8e155a038c0 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin": version: 2.3.2 - resolution: "fsevents@npm:2.3.2" + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1" dependencies: node-gyp: "npm:latest" - checksum: 6b5b6f5692372446ff81cf9501c76e3e0459a4852b3b5f1fc72c103198c125a6b8c72f5f166bdd76ffb2fca261e7f6ee5565daf80dca6e571e55bcc589cc1256 conditions: os=darwin languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1" +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: node-gyp: "npm:latest" conditions: os=darwin @@ -10633,6 +11402,13 @@ __metadata: languageName: node linkType: hard +"get-func-name@npm:^2.0.1": + version: 2.0.2 + resolution: "get-func-name@npm:2.0.2" + checksum: 3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b + languageName: node + linkType: hard + "get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2": version: 1.2.2 resolution: "get-intrinsic@npm:1.2.2" @@ -10762,6 +11538,22 @@ __metadata: languageName: node linkType: hard +"glob@npm:^10.4.1": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 698dfe11828b7efd0514cd11e573eaed26b2dff611f0400907281ce3eab0c1e56143ef9b35adc7c77ecc71fba74717b510c7c223d34ca8a98ec81777b293d4ac + languageName: node + linkType: hard + "glob@npm:^6.0.1": version: 6.0.4 resolution: "glob@npm:6.0.4" @@ -12117,6 +12909,15 @@ __metadata: languageName: node linkType: hard +"isows@npm:1.0.4": + version: 1.0.4 + resolution: "isows@npm:1.0.4" + peerDependencies: + ws: "*" + checksum: a3ee62e3d6216abb3adeeb2a551fe2e7835eac87b05a6ecc3e7739259bf5f8e83290501f49e26137390c8093f207fc3378d4a7653aab76ad7bbab4b2dba9c5b9 + languageName: node + linkType: hard + "isstream@npm:~0.1.2": version: 0.1.2 resolution: "isstream@npm:0.1.2" @@ -12131,6 +12932,13 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-coverage@npm:^3.2.2": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 40bbdd1e937dfd8c830fa286d0f665e81b7a78bdabcd4565f6d5667c99828bda3db7fb7ac6b96a3e2e8a2461ddbc5452d9f8bc7d00cb00075fa6a3e99f5b6a81 + languageName: node + linkType: hard + "istanbul-lib-instrument@npm:^5.0.4": version: 5.2.1 resolution: "istanbul-lib-instrument@npm:5.2.1" @@ -12168,6 +12976,17 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-report@npm:^3.0.1": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: "npm:^3.0.0" + make-dir: "npm:^4.0.0" + supports-color: "npm:^7.1.0" + checksum: 86a83421ca1cf2109a9f6d193c06c31ef04a45e72a74579b11060b1e7bb9b6337a4e6f04abfb8857e2d569c271273c65e855ee429376a0d7c91ad91db42accd1 + languageName: node + linkType: hard + "istanbul-lib-source-maps@npm:^4.0.0": version: 4.0.1 resolution: "istanbul-lib-source-maps@npm:4.0.1" @@ -12179,6 +12998,17 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-source-maps@npm:^5.0.6": + version: 5.0.6 + resolution: "istanbul-lib-source-maps@npm:5.0.6" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.23" + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + checksum: 569dd0a392ee3464b1fe1accbaef5cc26de3479eacb5b91d8c67ebb7b425d39fd02247d85649c3a0e9c29b600809fa60b5af5a281a75a89c01f385b1e24823a2 + languageName: node + linkType: hard + "istanbul-reports@npm:^3.1.3": version: 3.1.5 resolution: "istanbul-reports@npm:3.1.5" @@ -12189,6 +13019,16 @@ __metadata: languageName: node linkType: hard +"istanbul-reports@npm:^3.1.7": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" + dependencies: + html-escaper: "npm:^2.0.0" + istanbul-lib-report: "npm:^3.0.0" + checksum: f1faaa4684efaf57d64087776018d7426312a59aa6eeb4e0e3a777347d23cd286ad18f427e98f0e3dee666103d7404c9d7abc5f240406a912fa16bd6695437fa + languageName: node + linkType: hard + "jackspeak@npm:^2.3.5": version: 2.3.6 resolution: "jackspeak@npm:2.3.6" @@ -12202,6 +13042,19 @@ __metadata: languageName: node linkType: hard +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 96f8786eaab98e4bf5b2a5d6d9588ea46c4d06bbc4f2eb861fdd7b6b182b16f71d8a70e79820f335d52653b16d4843b29dd9cdcf38ae80406756db9199497cf3 + languageName: node + linkType: hard + "jake@npm:^10.8.5": version: 10.8.5 resolution: "jake@npm:10.8.5" @@ -13425,6 +14278,15 @@ __metadata: languageName: node linkType: hard +"loupe@npm:^3.1.0, loupe@npm:^3.1.1": + version: 3.1.1 + resolution: "loupe@npm:3.1.1" + dependencies: + get-func-name: "npm:^2.0.1" + checksum: 56d71d64c5af109aaf2b5343668ea5952eed468ed2ff837373810e417bf8331f14491c6e4d38e08ff84a29cb18906e06e58ba660c53bd00f2989e1873fa2f54c + languageName: node + linkType: hard + "lower-case-first@npm:^1.0.0": version: 1.0.2 resolution: "lower-case-first@npm:1.0.2" @@ -13471,6 +14333,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: e6e90267360476720fa8e83cc168aa2bf0311f3f2eea20a6ba78b90a885ae72071d9db132f40fda4129c803e7dcec3a6b6a6fbb44ca90b081630b810b5d6a41a + languageName: node + linkType: hard + "lru-cache@npm:^4.0.1": version: 4.1.5 resolution: "lru-cache@npm:4.1.5" @@ -13506,6 +14375,26 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.30.11": + version: 0.30.11 + resolution: "magic-string@npm:0.30.11" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + checksum: b784d2240252f5b1e755d487354ada4c672cbca16f045144f7185a75b059210e5fcca7be7be03ef1bac2ca754c4428b21d36ae64a9057ba429916f06b8c54eb2 + languageName: node + linkType: hard + +"magicast@npm:^0.3.4": + version: 0.3.5 + resolution: "magicast@npm:0.3.5" + dependencies: + "@babel/parser": "npm:^7.25.4" + "@babel/types": "npm:^7.25.4" + source-map-js: "npm:^1.2.0" + checksum: 3a2dba6b0bdde957797361d09c7931ebdc1b30231705360eeb40ed458d28e1c3112841c3ed4e1b87ceb28f741e333c7673cd961193aa9fdb4f4946b202e6205a + languageName: node + linkType: hard + "make-dir@npm:^3.0.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" @@ -13515,6 +14404,15 @@ __metadata: languageName: node linkType: hard +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a + languageName: node + linkType: hard + "make-error@npm:1.x, make-error@npm:^1.1.1": version: 1.3.6 resolution: "make-error@npm:1.3.6" @@ -13927,6 +14825,13 @@ __metadata: languageName: node linkType: hard +"minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: c25f0ee8196d8e6036661104bacd743785b2599a21de5c516b32b3fa2b83113ac89a2358465bc04956baab37ffb956ae43be679b2262bf7be15fce467ccd7950 + languageName: node + linkType: hard + "minizlib@npm:^1.3.3": version: 1.3.3 resolution: "minizlib@npm:1.3.3" @@ -14158,6 +15063,15 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: ac1eb60f615b272bccb0e2b9cd933720dad30bf9708424f691b8113826bb91aca7e9d14ef5d9415a6ba15c266b37817256f58d8ce980c82b0ba3185352565679 + languageName: node + linkType: hard + "napi-build-utils@npm:^1.0.1": version: 1.0.2 resolution: "napi-build-utils@npm:1.0.2" @@ -14396,7 +15310,7 @@ __metadata: languageName: node linkType: hard -"node-hid@npm:^2.1.2": +"node-hid@npm:2.1.2, node-hid@npm:^2.1.2": version: 2.1.2 resolution: "node-hid@npm:2.1.2" dependencies: @@ -15107,6 +16021,13 @@ __metadata: languageName: node linkType: hard +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 + languageName: node + linkType: hard + "pacote@npm:^17.0.0, pacote@npm:^17.0.4": version: 17.0.5 resolution: "pacote@npm:17.0.5" @@ -15376,6 +16297,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 5e8845c159261adda6f09814d7725683257fcc85a18f329880ab4d7cc1d12830967eae5d5894e453f341710d5484b8fdbbd4d75181b4d6e1eb2f4dc7aeadc434 + languageName: node + linkType: hard + "path-to-regexp@npm:0.1.7": version: 0.1.7 resolution: "path-to-regexp@npm:0.1.7" @@ -15418,6 +16349,20 @@ __metadata: languageName: node linkType: hard +"pathe@npm:^1.1.2": + version: 1.1.2 + resolution: "pathe@npm:1.1.2" + checksum: f201d796351bf7433d147b92c20eb154a4e0ea83512017bf4ec4e492a5d6e738fb45798be4259a61aa81270179fce11026f6ff0d3fa04173041de044defe9d80 + languageName: node + linkType: hard + +"pathval@npm:^2.0.0": + version: 2.0.0 + resolution: "pathval@npm:2.0.0" + checksum: b91575bf9cdf01757afd7b5e521eb8a0b874a49bc972d08e0047cfea0cd3c019f5614521d4bc83d2855e3fcc331db6817dfd533dd8f3d90b16bc76fad2450fc1 + languageName: node + linkType: hard + "pbkdf2@npm:^3.0.17": version: 3.1.2 resolution: "pbkdf2@npm:3.1.2" @@ -15445,6 +16390,13 @@ __metadata: languageName: node linkType: hard +"picocolors@npm:^1.1.0": + version: 1.1.0 + resolution: "picocolors@npm:1.1.0" + checksum: a2ad60d94d185c30f2a140b19c512547713fb89b920d32cc6cf658fa786d63a37ba7b8451872c3d9fc34883971fb6e5878e07a20b60506e0bb2554dce9169ccb + languageName: node + linkType: hard + "picomatch@npm:^2.0.4, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" @@ -15522,6 +16474,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.4.43": + version: 8.4.47 + resolution: "postcss@npm:8.4.47" + dependencies: + nanoid: "npm:^3.3.7" + picocolors: "npm:^1.1.0" + source-map-js: "npm:^1.2.1" + checksum: f2b50ba9b6fcb795232b6bb20de7cdc538c0025989a8ed9c4438d1960196ba3b7eaff41fdb1a5c701b3504651ea87aeb685577707f0ae4d6ce6f3eae5df79a81 + languageName: node + linkType: hard + "prebuild-install@npm:^7.1.1": version: 7.1.1 resolution: "prebuild-install@npm:7.1.1" @@ -16487,6 +17450,69 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.20.0": + version: 4.24.0 + resolution: "rollup@npm:4.24.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.24.0" + "@rollup/rollup-android-arm64": "npm:4.24.0" + "@rollup/rollup-darwin-arm64": "npm:4.24.0" + "@rollup/rollup-darwin-x64": "npm:4.24.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.24.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.24.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.24.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.24.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.24.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.24.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.24.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.24.0" + "@rollup/rollup-linux-x64-musl": "npm:4.24.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.24.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.24.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.24.0" + "@types/estree": "npm:1.0.6" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 291dce8f180628a73d6749119a3e50aa917c416075302bc6f6ac655affc7f0ce9d7f025bef7318d424d0c5623dcb83e360f9ea0125273b6a2285c232172800cc + languageName: node + linkType: hard + "run-async@npm:^2.4.0": version: 2.4.1 resolution: "run-async@npm:2.4.1" @@ -16900,6 +17926,13 @@ __metadata: languageName: node linkType: hard +"siginfo@npm:^2.0.0": + version: 2.0.0 + resolution: "siginfo@npm:2.0.0" + checksum: e93ff66c6531a079af8fb217240df01f980155b5dc408d2d7bebc398dd284e383eb318153bf8acd4db3c4fe799aa5b9a641e38b0ba3b1975700b1c89547ea4e7 + languageName: node + linkType: hard + "signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -17113,6 +18146,13 @@ __metadata: languageName: node linkType: hard +"source-map-js@npm:^1.2.0, source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: ff9d8c8bf096d534a5b7707e0382ef827b4dd360a577d3f34d2b9f48e12c9d230b5747974ee7c607f0df65113732711bb701fe9ece3c7edbd43cb2294d707df3 + languageName: node + linkType: hard + "source-map-support@npm:0.5.13": version: 0.5.13 resolution: "source-map-support@npm:0.5.13" @@ -17229,6 +18269,13 @@ __metadata: languageName: node linkType: hard +"stackback@npm:0.0.2": + version: 0.0.2 + resolution: "stackback@npm:0.0.2" + checksum: 2d4dc4e64e2db796de4a3c856d5943daccdfa3dd092e452a1ce059c81e9a9c29e0b9badba91b43ef0d5ff5c04ee62feb3bcc559a804e16faf447bac2d883aa99 + languageName: node + linkType: hard + "statuses@npm:2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" @@ -17236,6 +18283,13 @@ __metadata: languageName: node linkType: hard +"std-env@npm:^3.7.0": + version: 3.7.0 + resolution: "std-env@npm:3.7.0" + checksum: 6ee0cca1add3fd84656b0002cfbc5bfa20340389d9ba4720569840f1caa34bce74322aef4c93f046391583e50649d0cf81a5f8fe1d411e50b659571690a45f12 + languageName: node + linkType: hard + "stoppable@npm:^1.1.0": version: 1.1.0 resolution: "stoppable@npm:1.1.0" @@ -17730,6 +18784,17 @@ __metadata: languageName: node linkType: hard +"test-exclude@npm:^7.0.1": + version: 7.0.1 + resolution: "test-exclude@npm:7.0.1" + dependencies: + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^10.4.1" + minimatch: "npm:^9.0.4" + checksum: e6f6f4e1df2e7810e082e8d7dfc53be51a931e6e87925f5e1c2ef92cc1165246ba3bf2dae6b5d86251c16925683dba906bd41e40169ebc77120a2d1b5a0dbbe0 + languageName: node + linkType: hard + "testrpc@npm:0.0.1": version: 0.0.1 resolution: "testrpc@npm:0.0.1" @@ -17772,6 +18837,41 @@ __metadata: languageName: node linkType: hard +"tinybench@npm:^2.9.0": + version: 2.9.0 + resolution: "tinybench@npm:2.9.0" + checksum: cfa1e1418e91289219501703c4693c70708c91ffb7f040fd318d24aef419fb5a43e0c0160df9471499191968b2451d8da7f8087b08c3133c251c40d24aced06c + languageName: node + linkType: hard + +"tinyexec@npm:^0.3.0": + version: 0.3.0 + resolution: "tinyexec@npm:0.3.0" + checksum: 317cc536d091ce7e50271287798d91ef53c4dc80088844d890752a2c7387d213004cba83e5e1d9129390ced617625e34f4a8f0ba5779e31c9b6939f9be0d3543 + languageName: node + linkType: hard + +"tinypool@npm:^1.0.0": + version: 1.0.1 + resolution: "tinypool@npm:1.0.1" + checksum: eaceb93784b8e27e60c0e3e2c7d11c29e1e79b2a025b2c232215db73b90fe22bd4753ad53fc8e801c2b5a63b94a823af549555d8361272bc98271de7dd4a9925 + languageName: node + linkType: hard + +"tinyrainbow@npm:^1.2.0": + version: 1.2.0 + resolution: "tinyrainbow@npm:1.2.0" + checksum: 2924444db6804355e5ba2b6e586c7f77329d93abdd7257a069a0f4530dff9f16de484e80479094e3f39273462541b003a65ee3a6afc2d12555aa745132deba5d + languageName: node + linkType: hard + +"tinyspy@npm:^3.0.0": + version: 3.0.2 + resolution: "tinyspy@npm:3.0.2" + checksum: 5db671b2ff5cd309de650c8c4761ca945459d7204afb1776db9a04fb4efa28a75f08517a8620c01ee32a577748802231ad92f7d5b194dc003ee7f987a2a06337 + languageName: node + linkType: hard + "title-case@npm:^2.1.0": version: 2.1.1 resolution: "title-case@npm:2.1.1" @@ -18664,6 +19764,28 @@ __metadata: languageName: node linkType: hard +"viem@npm:^2.21.14": + version: 2.21.14 + resolution: "viem@npm:2.21.14" + dependencies: + "@adraffy/ens-normalize": "npm:1.10.0" + "@noble/curves": "npm:1.4.0" + "@noble/hashes": "npm:1.4.0" + "@scure/bip32": "npm:1.4.0" + "@scure/bip39": "npm:1.4.0" + abitype: "npm:1.0.5" + isows: "npm:1.0.4" + webauthn-p256: "npm:0.0.5" + ws: "npm:8.17.1" + peerDependencies: + typescript: ">=5.0.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: 0de5a87604ff8397ab12da3a05212b999cb86fc9d7ac601ae3c49a0ed039246299e401dbdb0b41b4bbb4006b2bff8a358ec2f44d01268f625666a6ad159e0514 + languageName: node + linkType: hard + "viem@npm:~1.5.4": version: 1.5.4 resolution: "viem@npm:1.5.4" @@ -18687,6 +19809,112 @@ __metadata: languageName: node linkType: hard +"vite-node@npm:2.1.2": + version: 2.1.2 + resolution: "vite-node@npm:2.1.2" + dependencies: + cac: "npm:^6.7.14" + debug: "npm:^4.3.6" + pathe: "npm:^1.1.2" + vite: "npm:^5.0.0" + bin: + vite-node: vite-node.mjs + checksum: 582843800ee968e7edf2cf6e6f1573634122cba74e47ef531a373337f6084c4a394c3c1c2abb210c178c8671200530412c09f5cc2f02a4519f0045a03c3eed02 + languageName: node + linkType: hard + +"vite@npm:^5.0.0": + version: 5.4.8 + resolution: "vite@npm:5.4.8" + dependencies: + esbuild: "npm:^0.21.3" + fsevents: "npm:~2.3.3" + postcss: "npm:^8.4.43" + rollup: "npm:^4.20.0" + peerDependencies: + "@types/node": ^18.0.0 || >=20.0.0 + less: "*" + lightningcss: ^1.21.0 + sass: "*" + sass-embedded: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 17fdffa558abaf854f04ead7d3ddd76e4556a59871f9ac63cca3fc20a79979984837d8dddaae4b171e3d73061f781e4eec0f6d3babdbce2b4d111d29cf474c1c + languageName: node + linkType: hard + +"vitest@npm:^2.1.2": + version: 2.1.2 + resolution: "vitest@npm:2.1.2" + dependencies: + "@vitest/expect": "npm:2.1.2" + "@vitest/mocker": "npm:2.1.2" + "@vitest/pretty-format": "npm:^2.1.2" + "@vitest/runner": "npm:2.1.2" + "@vitest/snapshot": "npm:2.1.2" + "@vitest/spy": "npm:2.1.2" + "@vitest/utils": "npm:2.1.2" + chai: "npm:^5.1.1" + debug: "npm:^4.3.6" + magic-string: "npm:^0.30.11" + pathe: "npm:^1.1.2" + std-env: "npm:^3.7.0" + tinybench: "npm:^2.9.0" + tinyexec: "npm:^0.3.0" + tinypool: "npm:^1.0.0" + tinyrainbow: "npm:^1.2.0" + vite: "npm:^5.0.0" + vite-node: "npm:2.1.2" + why-is-node-running: "npm:^2.3.0" + peerDependencies: + "@edge-runtime/vm": "*" + "@types/node": ^18.0.0 || >=20.0.0 + "@vitest/browser": 2.1.2 + "@vitest/ui": 2.1.2 + happy-dom: "*" + jsdom: "*" + peerDependenciesMeta: + "@edge-runtime/vm": + optional: true + "@types/node": + optional: true + "@vitest/browser": + optional: true + "@vitest/ui": + optional: true + happy-dom: + optional: true + jsdom: + optional: true + bin: + vitest: vitest.mjs + checksum: 3a331a10499f5ed678530594903869e37a0de548598bcf540db9a6e015bb7a38f36c3585376b3aeeb53fee6b20d75b93081f32b1ea09fd8c2098aa541af28491 + languageName: node + linkType: hard + "vscode-oniguruma@npm:^1.7.0": version: 1.7.0 resolution: "vscode-oniguruma@npm:1.7.0" @@ -19223,6 +20451,16 @@ __metadata: languageName: node linkType: hard +"webauthn-p256@npm:0.0.5": + version: 0.0.5 + resolution: "webauthn-p256@npm:0.0.5" + dependencies: + "@noble/curves": "npm:^1.4.0" + "@noble/hashes": "npm:^1.4.0" + checksum: 6bf5d1857dfb99ecb3b318af06eddea874c10135e6ebb9f046270f5cbb162933bc6caf77aedb033e14c09971dda544a5fb367ac545e4ec8001b309ba517555cf + languageName: node + linkType: hard + "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" @@ -19351,6 +20589,18 @@ __metadata: languageName: node linkType: hard +"why-is-node-running@npm:^2.3.0": + version: 2.3.0 + resolution: "why-is-node-running@npm:2.3.0" + dependencies: + siginfo: "npm:^2.0.0" + stackback: "npm:0.0.2" + bin: + why-is-node-running: cli.js + checksum: 0de6e6cd8f2f94a8b5ca44e84cf1751eadcac3ebedcdc6e5fbbe6c8011904afcbc1a2777c53496ec02ced7b81f2e7eda61e76bf8262a8bc3ceaa1f6040508051 + languageName: node + linkType: hard + "wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" @@ -19496,6 +20746,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:8.17.1": + version: 8.17.1 + resolution: "ws@npm:8.17.1" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 4264ae92c0b3e59c7e309001e93079b26937aab181835fb7af79f906b22cd33b6196d96556dafb4e985742dd401e99139572242e9847661fdbc96556b9e6902d + languageName: node + linkType: hard + "ws@npm:8.2.3": version: 8.2.3 resolution: "ws@npm:8.2.3" From 576f90269d265e7a205e119a93fc69c629e95440 Mon Sep 17 00:00:00 2001 From: Nicolas Brugneaux Date: Tue, 8 Oct 2024 15:55:06 +0200 Subject: [PATCH 08/54] chore: enter beta (#385) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enter beta mode --- ## PR-Codex overview This PR introduces a new configuration file, `.changeset/pre.json`, which defines the pre-release mode and specifies version information for various `@celo` packages. ### Detailed summary - Added `.changeset/pre.json` file. - Set `mode` to `"pre"` and `tag` to `"beta"`. - Defined `initialVersions` for multiple `@celo` packages with specified version numbers. - Included an empty `changesets` array. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- .changeset/pre.json | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 0000000000..15e1e31988 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,31 @@ +{ + "mode": "pre", + "tag": "beta", + "initialVersions": { + "@celo/celocli": "5.2.1", + "@celo/dev-utils": "0.0.5", + "@celo/base": "6.1.0", + "@celo/connect": "6.0.2", + "@celo/contractkit": "8.3.0", + "@celo/cryptographic-utils": "5.1.0", + "@celo/explorer": "5.0.12", + "@celo/governance": "5.1.3", + "@celo/keystores": "5.0.11", + "@celo/metadata-claims": "0.0.1", + "@celo/network-utils": "5.0.6", + "@celo/phone-utils": "6.0.3", + "@celo/transactions-uri": "5.0.11", + "@celo/utils": "7.0.0", + "@celo/wallet-base": "6.0.1", + "@celo/wallet-hsm": "6.0.1", + "@celo/wallet-hsm-aws": "6.0.1", + "@celo/wallet-hsm-azure": "6.0.1", + "@celo/wallet-hsm-gcp": "6.0.1", + "@celo/wallet-ledger": "6.0.1", + "@celo/wallet-local": "6.0.1", + "@celo/wallet-remote": "6.0.1", + "@celo/typescript": "0.0.1", + "@celo/viem-account-ledger": "0.0.1" + }, + "changesets": [] +} From 5a0a922f4965336849b33d5f90234766db55b2e5 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Fri, 11 Oct 2024 12:57:24 +0200 Subject: [PATCH 09/54] Derivation Warnings (#389) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Description Add warnings about the derivation path default changing in the future. as per https://forum.celo.org/t/deprecating-the-celo-derivation-path/9229 ### Other changes add derivationPath to the output ### Tested yes new `account:new` tests https://app.warp.dev/block/bYdy5uQ3WsAUT7rj1bT19l ### Related issues Prework for #352 ### Backwards compatibility yes unless you count the output of the command which we do not as it is designed for humans to read. ### Documentation improved! --- ## PR-Codex overview This PR focuses on updates to the `@celo/celocli` and `@celo/cryptographic-utils` packages, including the addition of a warning about the new default ETH derivation path, improvements to the `NewAccount` command, and modifications to key generation functions. ### Detailed summary - `@celo/celocli`: Allow `account:new` command to run without a node. - Added warning about default ETH derivation path in future versions. - Updated `generateKeys`, `generateSeed`, and related functions with parameter documentation. - Adjusted `NewAccount` command to reflect new derivation path logic. - Updated test cases to verify new behavior with derivation paths. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- .changeset/fifty-roses-explain.md | 6 + .changeset/polite-pets-push.md | 5 + docs/command-line-interface/account.md | 3 + .../cryptographic-utils/modules/account.md | 10 +- packages/cli/src/commands/account/new.test.ts | 145 ++++++++++++++++++ packages/cli/src/commands/account/new.ts | 33 +++- packages/sdk/CHANGELOG.md | 2 +- .../sdk/cryptographic-utils/src/account.ts | 27 +++- 8 files changed, 212 insertions(+), 19 deletions(-) create mode 100644 .changeset/fifty-roses-explain.md create mode 100644 .changeset/polite-pets-push.md create mode 100644 packages/cli/src/commands/account/new.test.ts diff --git a/.changeset/fifty-roses-explain.md b/.changeset/fifty-roses-explain.md new file mode 100644 index 0000000000..9376ae647d --- /dev/null +++ b/.changeset/fifty-roses-explain.md @@ -0,0 +1,6 @@ +--- +'@celo/cryptographic-utils': patch +'@celo/celocli': patch +--- + +Add warning that ETH derivation path will be the default in a future major breaking change. diff --git a/.changeset/polite-pets-push.md b/.changeset/polite-pets-push.md new file mode 100644 index 0000000000..c47cea168f --- /dev/null +++ b/.changeset/polite-pets-push.md @@ -0,0 +1,5 @@ +--- +'@celo/celocli': patch +--- + +Fix: account:new can now be called without a node diff --git a/docs/command-line-interface/account.md b/docs/command-line-interface/account.md index 83f395b15e..7692c56891 100644 --- a/docs/command-line-interface/account.md +++ b/docs/command-line-interface/account.md @@ -642,6 +642,9 @@ DESCRIPTION command has been tested swapping mnemonics with the Ledger successfully (only supports english) + WARN: In 7.0 the default derivation path will be Eth ("m/44'/60'/0'") + forum.celo.org/t/deprecating-the-celo-derivation-path/9229 + EXAMPLES new diff --git a/docs/sdk/cryptographic-utils/modules/account.md b/docs/sdk/cryptographic-utils/modules/account.md index 5932c07261..c3dd0a652f 100644 --- a/docs/sdk/cryptographic-utils/modules/account.md +++ b/docs/sdk/cryptographic-utils/modules/account.md @@ -86,7 +86,7 @@ base/lib/account.d.ts:18 #### Defined in -[cryptographic-utils/src/account.ts:455](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/cryptographic-utils/src/account.ts#L455) +[cryptographic-utils/src/account.ts:468](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/cryptographic-utils/src/account.ts#L468) ___ @@ -179,7 +179,7 @@ ___ #### Defined in -[cryptographic-utils/src/account.ts:403](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/cryptographic-utils/src/account.ts#L403) +[cryptographic-utils/src/account.ts:410](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/cryptographic-utils/src/account.ts#L410) ___ @@ -204,7 +204,7 @@ ___ #### Defined in -[cryptographic-utils/src/account.ts:390](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/cryptographic-utils/src/account.ts#L390) +[cryptographic-utils/src/account.ts:397](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/cryptographic-utils/src/account.ts#L397) ___ @@ -233,7 +233,7 @@ ___ #### Defined in -[cryptographic-utils/src/account.ts:431](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/cryptographic-utils/src/account.ts#L431) +[cryptographic-utils/src/account.ts:444](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/cryptographic-utils/src/account.ts#L444) ___ @@ -278,7 +278,7 @@ ___ #### Defined in -[cryptographic-utils/src/account.ts:416](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/cryptographic-utils/src/account.ts#L416) +[cryptographic-utils/src/account.ts:423](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/cryptographic-utils/src/account.ts#L423) ___ diff --git a/packages/cli/src/commands/account/new.test.ts b/packages/cli/src/commands/account/new.test.ts new file mode 100644 index 0000000000..f5cb9bf5b1 --- /dev/null +++ b/packages/cli/src/commands/account/new.test.ts @@ -0,0 +1,145 @@ +import { testWithAnvilL2 } from '@celo/dev-utils/lib/anvil-test' +import fs from 'node:fs' +import path from 'node:path' +import Web3 from 'web3' +import { + stripAnsiCodesAndTxHashes, + stripAnsiCodesFromNestedArray, + testLocallyWithWeb3Node, +} from '../../test-utils/cliUtils' +import NewAccount from './new' + +process.env.NO_SYNCCHECK = 'true' + +testWithAnvilL2('account:set-name cmd', (web3: Web3) => { + const writeMock = jest.spyOn(NewAccount.prototype, 'log') + const consoleMock = jest.spyOn(console, 'log') + + beforeEach(() => { + writeMock.mockClear() + consoleMock.mockClear() + }) + it('generates mnemonic and lets people know which derivation path is being used when called with no flags', async () => { + await testLocallyWithWeb3Node(NewAccount, [], web3) + + expect(stripAnsiCodesFromNestedArray(writeMock.mock.calls)).toMatchInlineSnapshot(` + [ + [ + " + Using celo-legacy path (m/44'/52752'/0') for derivation. This will be switched to eth derivation path (m/44'/60'/0') next major version. + ", + ], + [ + " + This is not being stored anywhere. Save the mnemonic somewhere to use this account at a later point. + ", + ], + ] + `) + + expect(deRandomize(consoleMock.mock.lastCall?.[0])).toMatchInlineSnapshot(` + "mnemonic: *** *** + derivationPath: m/44'/52752'/0' + accountAddress: ADDRESS + privateKey: PUBLIC_KEY + publicKey: PRIVATE_KEY + address: ADDRESS" + `) + }) + it("when called with --derivationPath eth flag generates mnemonic using m/44'/60'/0'", async () => { + await testLocallyWithWeb3Node(NewAccount, ['--derivationPath', 'eth'], web3) + + expect(deRandomize(consoleMock.mock.lastCall?.[0])).toMatchInlineSnapshot(` + "mnemonic: *** *** + derivationPath: m/44'/60'/0' + accountAddress: ADDRESS + privateKey: PUBLIC_KEY + publicKey: PRIVATE_KEY + address: ADDRESS" + `) + }) + + describe('when called with --mnemonicPath', () => { + const MNEMONIC_PATH = path.join(__dirname, 'public_mnemonic') + const TEST_mnemonic = + 'hamster label near volume denial spawn stable orbit trade only crawl learn forest fire test feel bubble found angle also olympic obscure fork venue' + beforeEach(() => { + fs.writeFileSync(MNEMONIC_PATH, TEST_mnemonic, { + flag: 'w', + }) + }) + afterEach(async () => { + fs.rmSync(MNEMONIC_PATH) + }) + + it('generates using celo derivation path', async () => { + await testLocallyWithWeb3Node(NewAccount, [`--mnemonicPath`, MNEMONIC_PATH], web3) + + expect(stripAnsiCodesAndTxHashes(consoleMock.mock.lastCall?.[0])).toMatchInlineSnapshot(` + "mnemonic: hamster label near volume denial spawn stable orbit trade only crawl learn forest fire test feel bubble found angle also olympic obscure fork venue + derivationPath: m/44'/52752'/0' + accountAddress: 0x0a85BeCD036C86faD4Db5519634904be2021fb7d + privateKey: 6346d0cd7cfdb7904f08df48e442169d3333643de0351682f8b79cf714395471 + publicKey: 02269b3efc9c4c6b81037d06e73e936078e625fb0f12b9ea1e0fd14d2cd45775f2 + address: 0x0a85BeCD036C86faD4Db5519634904be2021fb7d" + `) + }) + + it("and --derivationPath m/44'/60'/0' generates using eth derivation path", async () => { + await testLocallyWithWeb3Node( + NewAccount, + [`--mnemonicPath`, MNEMONIC_PATH, '--derivationPath', "m/44'/60'/0'"], + web3 + ) + + expect(stripAnsiCodesAndTxHashes(consoleMock.mock.lastCall?.[0])).toMatchInlineSnapshot(` + "mnemonic: hamster label near volume denial spawn stable orbit trade only crawl learn forest fire test feel bubble found angle also olympic obscure fork venue + derivationPath: m/44'/60'/0' + accountAddress: 0x35A4d54B541fc7b2047fb5357cC706191E105cd3 + privateKey: e4816cbb93346760921264ea38a7fc54903f4dd688ae0923fefd89a43c5f58cc + publicKey: 034b3036d657a6dc2f322db52cca29ae72101a9cf56de4765d17b0507ea1e87b7c + address: 0x35A4d54B541fc7b2047fb5357cC706191E105cd3" + `) + }) + it("and --derivationPath m/44'/60'/0' and --changeIndex generates using eth derivation path", async () => { + await testLocallyWithWeb3Node( + NewAccount, + [`--mnemonicPath`, MNEMONIC_PATH, '--derivationPath', 'eth', '--changeIndex', '2'], + web3 + ) + + expect(stripAnsiCodesAndTxHashes(consoleMock.mock.lastCall?.[0])).toMatchInlineSnapshot(` + "mnemonic: hamster label near volume denial spawn stable orbit trade only crawl learn forest fire test feel bubble found angle also olympic obscure fork venue + derivationPath: m/44'/60'/0' + accountAddress: 0xb3492799c55141e0B3507302F241f1c34c08E1e2 + privateKey: 3abc861ef3e9e31a6a7dc23e5903e41b3fe4a381d4fbb8f9db14e6730abd1c43 + publicKey: 0280df4d09cf8ebcad418327287be3f4ba0054112544ffa290ab3cc0a87949b32a + address: 0xb3492799c55141e0B3507302F241f1c34c08E1e2" + `) + }) + it('and --derivationPath eth and --addressIndex generates using eth derivation path', async () => { + await testLocallyWithWeb3Node( + NewAccount, + [`--mnemonicPath`, MNEMONIC_PATH, '--derivationPath', 'eth', '--addressIndex', '3'], + web3 + ) + + expect(stripAnsiCodesAndTxHashes(consoleMock.mock.lastCall?.[0])).toMatchInlineSnapshot(` + "mnemonic: hamster label near volume denial spawn stable orbit trade only crawl learn forest fire test feel bubble found angle also olympic obscure fork venue + derivationPath: m/44'/60'/0' + accountAddress: 0x336E523118B6091e033F9715257e2E793002964c + privateKey: aa324b2efd0ebe6387c3bcf03387c78047d82a1d2e8b4e132e9e1b9fb93529d0 + publicKey: 0394cc7cc524079c545aef2067c9ea7e69decb4815004afecf215ea1e6f370ce6c + address: 0x336E523118B6091e033F9715257e2E793002964c" + `) + }) + }) +}) + +function deRandomize(rawOutput: string) { + return stripAnsiCodesAndTxHashes(rawOutput) + .replace(/0x[A-Fa-f0-9]{40}/g, 'ADDRESS') + .replace(/ [A-Fa-f0-9]{66}/g, ' PRIVATE_KEY') + .replace(/ [A-Fa-f0-9]{64}/g, ' PUBLIC_KEY') + .replace(/mnemonic: ([a-z]+\s)+/, 'mnemonic: *** *** \n') +} diff --git a/packages/cli/src/commands/account/new.ts b/packages/cli/src/commands/account/new.ts index 312c504f46..9ab1cb6276 100644 --- a/packages/cli/src/commands/account/new.ts +++ b/packages/cli/src/commands/account/new.ts @@ -1,4 +1,5 @@ import { + CELO_DERIVATION_PATH_BASE, generateKeys, generateMnemonic, MnemonicLanguages, @@ -9,6 +10,7 @@ import { import { privateKeyToAddress } from '@celo/utils/lib/address' import { toChecksumAddress } from '@ethereumjs/util' import { Flags } from '@oclif/core' +import chalk from 'chalk' import * as fs from 'fs-extra' import { BaseCommand } from '../../base' import { printValueMap } from '../../utils/cli' @@ -17,7 +19,8 @@ const ETHEREUM_DERIVATION_PATH = "m/44'/60'/0'" export default class NewAccount extends BaseCommand { static description = - "Creates a new account locally using the Celo Derivation Path (m/44'/52752'/0/changeIndex/addressIndex) and print out the key information. Save this information for local transaction signing or import into a Celo node. Ledger: this command has been tested swapping mnemonics with the Ledger successfully (only supports english)" + "Creates a new account locally using the Celo Derivation Path (m/44'/52752'/0/changeIndex/addressIndex) and print out the key information. Save this information for local transaction signing or import into a Celo node. Ledger: this command has been tested swapping mnemonics with the Ledger successfully (only supports english)" + + "\n\nWARN: In 7.0 the default derivation path will be Eth (\"m/44'/60'/0'\") forum.celo.org/t/deprecating-the-celo-derivation-path/9229" static flags = { ...BaseCommand.flags, @@ -66,9 +69,13 @@ export default class NewAccount extends BaseCommand { 'new --passphrasePath some_folder/my_passphrase_file --mnemonicPath some_folder/my_mnemonic_file --addressIndex 5', ] + async init() { + // Dont call super class init because this command does not need to connect to a node + } + static languageOptions(language: string): MnemonicLanguages | undefined { if (language) { - // @ts-ignore + // @ts-expect-error const enumLanguage = MnemonicLanguages[language] return enumLanguage as MnemonicLanguages } @@ -79,7 +86,7 @@ export default class NewAccount extends BaseCommand { if (derivationPath) { derivationPath = derivationPath.endsWith('/') ? derivationPath.slice(0, -1) : derivationPath } - return derivationPath !== 'eth' ? derivationPath : ETHEREUM_DERIVATION_PATH + return derivationPath === 'eth' ? ETHEREUM_DERIVATION_PATH : derivationPath } static readFile(file?: string): string | undefined { @@ -111,7 +118,9 @@ export default class NewAccount extends BaseCommand { NewAccount.languageOptions(res.flags.language!) ) } - const derivationPath = NewAccount.sanitizeDerivationPath(res.flags.derivationPath) + const derivationPath = NewAccount.sanitizeDerivationPath( + res.flags.derivationPath ?? CELO_DERIVATION_PATH_BASE + ) const passphrase = NewAccount.readFile(res.flags.passphrasePath) const keys = await generateKeys( mnemonic, @@ -122,9 +131,21 @@ export default class NewAccount extends BaseCommand { derivationPath ) const accountAddress = toChecksumAddress(privateKeyToAddress(keys.privateKey)) + + if (derivationPath === CELO_DERIVATION_PATH_BASE) { + this.log( + chalk.magenta( + `\nUsing celo-legacy path (${CELO_DERIVATION_PATH_BASE}) for derivation. This will be switched to eth derivation path (${ETHEREUM_DERIVATION_PATH}) next major version.\n` + ) + ) + } + + printValueMap({ mnemonic, derivationPath, accountAddress, ...keys }) + this.log( - 'This is not being stored anywhere. Save the mnemonic somewhere to use this account at a later point.\n' + chalk.green.bold( + '\nThis is not being stored anywhere. Save the mnemonic somewhere to use this account at a later point.\n' + ) ) - printValueMap({ mnemonic, accountAddress, ...keys }) } } diff --git a/packages/sdk/CHANGELOG.md b/packages/sdk/CHANGELOG.md index a1a695d8da..676228e6f5 100644 --- a/packages/sdk/CHANGELOG.md +++ b/packages/sdk/CHANGELOG.md @@ -35,7 +35,7 @@ for detail info see [#9127](https://github.com/celo-org/celo-monorepo/pull/9127) - Removes phone and country related functions from utils. Now in [phone-utils](https://github.com/celo-org/celo-monorepo/pull/8987) - - comment encryption, bls and mneumonic functions moved to @celo/cryptographic-utils + - comment encryption, bls and mnemonic functions moved to @celo/cryptographic-utils Features diff --git a/packages/sdk/cryptographic-utils/src/account.ts b/packages/sdk/cryptographic-utils/src/account.ts index 7f8b99dc4d..ce150657d4 100644 --- a/packages/sdk/cryptographic-utils/src/account.ts +++ b/packages/sdk/cryptographic-utils/src/account.ts @@ -68,7 +68,7 @@ export async function generateMnemonic( export function validateMnemonic( mnemonic: string, - bip39ToUse = bip39Wrapper, + bip39ToUse: Bip39 = bip39Wrapper, language?: MnemonicLanguages ) { if (language !== undefined) { @@ -386,13 +386,20 @@ function wordSuggestions(typo: string, language: MnemonicLanguages): Suggestions return map }, new Map()) } - +/* + * @param mnemonic 12 or 12 BIP39 words + * @param password + * @param changeIndex postion 4 from https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki + * @param addressIndex postion 5 from https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki + * bip39ToUse - bip39 library + * @param derivationPath - This will default to ETH_DERIVATION_PATH in 7.0 forum.celo.org/t/deprecating-the-celo-derivation-path/9229 + */ export async function generateKeys( mnemonic: string, password?: string, changeIndex: number = 0, addressIndex: number = 0, - bip39ToUse = bip39Wrapper, + bip39ToUse: Bip39 = bip39Wrapper, derivationPath: string = CELO_DERIVATION_PATH_BASE ): Promise<{ privateKey: string; publicKey: string; address: string }> { const seed: Buffer = await generateSeed(mnemonic, password, bip39ToUse) @@ -410,13 +417,13 @@ export function generateDeterministicInviteCode( const seed = Buffer.from(keccak_256(utf8ToBytes(recipientPhoneHash + recipientPepper))) return generateKeysFromSeed(seed, changeIndex, addressIndex, derivationPath) } - -// keyByteLength truncates the seed. *Avoid its use* -// It was added only because a backwards compatibility bug +/* + * @param keyByteLength truncates the seed. *Avoid its use* It was added only because a backwards compatibility bug + */ export async function generateSeed( mnemonic: string, password?: string, - bip39ToUse = bip39Wrapper, + bip39ToUse: Bip39 = bip39Wrapper, keyByteLength: number = 64 ): Promise { let seed = Buffer.from(await bip39ToUse.mnemonicToSeed(mnemonic, password)) @@ -428,6 +435,12 @@ export async function generateSeed( return seed } +/* + * @param seed - Buffer created from mnemonic + * @param changeIndex postion 4 from https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki + * @param addressIndex postion 5 from https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki + * @param derivationPath - This will default to ETH_DERIVATION_PATH in 7.0 forum.celo.org/t/deprecating-the-celo-derivation-path/9229 + */ export function generateKeysFromSeed( seed: Buffer, changeIndex: number = 0, From 693f6e7d2fe3034b6d7a3bc4a9719e76229d1981 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Mon, 14 Oct 2024 13:23:44 +0200 Subject: [PATCH 10/54] Fixing Ledger 1.1.10 interacting with whitelisted fee token contracts (#395) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There was a bug where ledgers would return a INVALID DATA error when trying to transfer or interactive with a contract of one of the whitelisted gas fee tokens. or using a gas token to pay for gas. This occured while checking if the token was known in order to display human readble data while confirming on the ledger. The legacy 1.1.10 version of ledger app uses an older blob of signed data. it seems in this case the encoded data should NOT be prefixed by 0x. while in the newer it should be. this was not obvious and as automated tests are difficult when interacting with hw devices was missed. turned off test for cip66. Possibly we will remove later. ## related Issues fixes #394 fixes #353 --- ## PR-Codex overview This PR focuses on fixing issues related to token transfers and gas currency handling in the `celo` ecosystem, particularly with the `@celo/celocli` and `@celo/wallet-ledger` packages. It also improves error messages and adds a new method for providing token information. ### Detailed summary - Updated error messages in `packages/cli/src/transfer-stable-base.ts` for clarity on transfer affordability. - Fixed token information handling in `packages/sdk/wallets/wallet-ledger/src/ledger-signer.ts`. - Added `provideERC20TokenInformation` method to `LedgerSigner`. - Improved tests in `packages/sdk/wallets/wallet-ledger/src/ledger-wallet.test.ts` with mock implementations and inline snapshots. - Updated test suite to skip certain tests related to `cip66`. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- .changeset/fair-points-beg.md | 5 +++ .changeset/hungry-cups-juggle.md | 5 +++ .changeset/many-cobras-live.md | 5 +++ .gitignore | 1 + packages/cli/src/transfer-stable-base.ts | 6 ++-- .../wallet-ledger/src/ledger-signer.ts | 17 ++++++++-- .../wallet-ledger/src/ledger-wallet.test.ts | 32 +++++++++++++++++-- 7 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 .changeset/fair-points-beg.md create mode 100644 .changeset/hungry-cups-juggle.md create mode 100644 .changeset/many-cobras-live.md diff --git a/.changeset/fair-points-beg.md b/.changeset/fair-points-beg.md new file mode 100644 index 0000000000..b55157c548 --- /dev/null +++ b/.changeset/fair-points-beg.md @@ -0,0 +1,5 @@ +--- +'@celo/wallet-ledger': patch +--- + +Fix issue where ledger running celo firmware app 1.1.10 could not send fee token transactions or perform and interactions with those contracts diff --git a/.changeset/hungry-cups-juggle.md b/.changeset/hungry-cups-juggle.md new file mode 100644 index 0000000000..7ea711cda9 --- /dev/null +++ b/.changeset/hungry-cups-juggle.md @@ -0,0 +1,5 @@ +--- +'@celo/celocli': patch +--- + +Fix incorrect message where the transfered token was used as gas token in the messaging but not in actuality diff --git a/.changeset/many-cobras-live.md b/.changeset/many-cobras-live.md new file mode 100644 index 0000000000..4f6b730420 --- /dev/null +++ b/.changeset/many-cobras-live.md @@ -0,0 +1,5 @@ +--- +'@celo/celocli': patch +--- + +Fix Transfering, exchanging cusd (and other fee tokens) and or using gasCurrency flag with ledger devices prior to 1.2 diff --git a/.gitignore b/.gitignore index 2f05077250..9ea5b7afdf 100644 --- a/.gitignore +++ b/.gitignore @@ -92,3 +92,4 @@ package.json-e gha-creds-*.json transactions.json packages/sdk/metadata-claims/lib +packages/cli/key diff --git a/packages/cli/src/transfer-stable-base.ts b/packages/cli/src/transfer-stable-base.ts index ace0ce0da4..7002e6e38e 100644 --- a/packages/cli/src/transfer-stable-base.ts +++ b/packages/cli/src/transfer-stable-base.ts @@ -79,7 +79,7 @@ export abstract class TransferStableBase extends BaseCommand { .isNotSanctioned(from) .isNotSanctioned(to) .addCheck( - `Account can afford transfer in ${this._stableCurrency} and gas paid in ${ + `Account can afford to transfer ${this._stableCurrency} and gas paid in ${ res.flags.gasCurrency || 'CELO' }`, async () => { @@ -103,7 +103,9 @@ export abstract class TransferStableBase extends BaseCommand { } return valueBalance.gte(value.plus(gasValue)) }, - `Cannot afford transfer with ${this._stableCurrency} gasCurrency; try reducing value slightly or using gasCurrency=CELO` + `Cannot afford to transfer ${this._stableCurrency} ${ + res.flags.gasCurrency ? 'with' + ' ' + res.flags.gasCurrency + ' ' + 'gasCurrency' : '' + }; try reducing value slightly or using a different gasCurrency` ) .runChecks() diff --git a/packages/sdk/wallets/wallet-ledger/src/ledger-signer.ts b/packages/sdk/wallets/wallet-ledger/src/ledger-signer.ts index e656b4764d..40e7f21648 100644 --- a/packages/sdk/wallets/wallet-ledger/src/ledger-signer.ts +++ b/packages/sdk/wallets/wallet-ledger/src/ledger-signer.ts @@ -174,7 +174,7 @@ export class LedgerSigner implements Signer { const tokenInfo = getTokenInfo(rlpEncoded.transaction.to!, rlpEncoded.transaction.chainId!) if (tokenInfo) { - await this.ledger!.provideERC20TokenInformation(`0x${tokenInfo.data.toString('hex')}`) + await this.provideERC20TokenInformation(tokenInfo.data) } if (rlpEncoded.transaction.feeCurrency && rlpEncoded.transaction.feeCurrency !== '0x') { const feeTokenInfo = getTokenInfo( @@ -182,7 +182,7 @@ export class LedgerSigner implements Signer { rlpEncoded.transaction.chainId! ) if (feeTokenInfo) { - await this.ledger!.provideERC20TokenInformation(feeTokenInfo.data.toString('hex')) + await this.provideERC20TokenInformation(feeTokenInfo.data) } } } @@ -198,4 +198,17 @@ export class LedgerSigner implements Signer { throw new Error('Not implemented') return Promise.resolve(Buffer.from([])) } + + private provideERC20TokenInformation(tokenInfoData: Buffer) { + // it looks like legacy might need it WITHOUT 0x prefix + const isModern = meetsVersionRequirements(this.appConfiguration.version, { + minimum: LedgerWallet.MIN_VERSION_EIP1559, + }) + + const hexStringTokenInfo = isModern + ? ensureLeading0x(tokenInfoData.toString('hex')) + : trimLeading0x(tokenInfoData.toString('hex')) + + return this.ledger!.provideERC20TokenInformation(hexStringTokenInfo) + } } diff --git a/packages/sdk/wallets/wallet-ledger/src/ledger-wallet.test.ts b/packages/sdk/wallets/wallet-ledger/src/ledger-wallet.test.ts index b70b60c836..cf3bef77f9 100644 --- a/packages/sdk/wallets/wallet-ledger/src/ledger-wallet.test.ts +++ b/packages/sdk/wallets/wallet-ledger/src/ledger-wallet.test.ts @@ -700,12 +700,40 @@ describe('LedgerWallet class', () => { test( 'succeeds', async () => { - await expect(wallet.signTransaction(celoTransaction)).resolves.not.toBeUndefined() + jest + .spyOn(wallet.ledger!, 'provideERC20TokenInformation') + .mockImplementationOnce(async () => true) + await expect(wallet.signTransaction(celoTransaction)).resolves + .toMatchInlineSnapshot(` + { + "raw": "0x7bf87f82aef38063636394588e4b68193001e4d10928660ab4165b813717c0880de0b6b3a764000080c094874069fa1eb16d44d622f2e0ca25eea172369bc101a0254f952c5223c30039f7f845778d7aac558464ce2971fd09883df34913eb6dfca037a78571ae1a44d86bac7269e3a845990a49ad5fb60a5ec1fcaba428693558c0", + "tx": { + "accessList": [], + "feeCurrency": "0x874069fa1eb16d44d622f2e0ca25eea172369bc1", + "gas": "0x63", + "hash": "0xdc8347423b5310ed64e46a9abb49cd455e8049f838f93752afd122ae938e53c9", + "input": "0x", + "maxFeePerGas": "0x63", + "maxPriorityFeePerGas": "0x63", + "nonce": "0", + "r": "0x254f952c5223c30039f7f845778d7aac558464ce2971fd09883df34913eb6dfc", + "s": "0x37a78571ae1a44d86bac7269e3a845990a49ad5fb60a5ec1fcaba428693558c0", + "to": "0x588e4b68193001e4d10928660ab4165b813717c0", + "v": "0x01", + "value": "0x0de0b6b3a7640000", + }, + "type": "cip64", + } + `) + + expect(wallet.ledger!.provideERC20TokenInformation).toHaveBeenCalledWith( + `0x06612063555344874069fa1eb16d44d622f2e0ca25eea172369bc1000000120000aef33045022100a885480c357fd6ec64ed532656a7e988198fdf4e2cf4632408f2d65561189872022009fd78725055fc68af16e151516ba29625e3e1c74ceab3da1bcabd6015e3f6e8` + ) }, TEST_TIMEOUT_IN_MS ) }) - describe('[cip66]', () => { + describe.skip('[cip66]', () => { const kit = newKit('https://alfajores-forno.celo-testnet.org') beforeEach(async () => { celoTransaction = { From 4988c401a4f4ed1c547ae0bc015145d4168dd18a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 13:34:27 +0200 Subject: [PATCH 11/54] Version Packages (beta) (#355) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to master, this PR will be updated. ⚠️⚠️⚠️⚠️⚠️⚠️ `master` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run `changeset pre exit` on `master`. ⚠️⚠️⚠️⚠️⚠️⚠️ # Releases ## @celo/celocli@6.0.0-beta.0 ### Major Changes - [#339](https://github.com/celo-org/developer-tooling/pull/339) [`87223ba`](https://github.com/celo-org/developer-tooling/commit/87223ba93ab79f43ae6884282d30a420eb09c23c) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Remove support for reserve:\* commands. As foretold by - [#343](https://github.com/celo-org/developer-tooling/pull/343) [`54741cc`](https://github.com/celo-org/developer-tooling/commit/54741cc01ef0a6716bdd45a955ac65c7ecced6c1) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Remove commands identity:identifier, identity:get-attestations See ### Patch Changes - [#389](https://github.com/celo-org/developer-tooling/pull/389) [`5a0a922`](https://github.com/celo-org/developer-tooling/commit/5a0a922f4965336849b33d5f90234766db55b2e5) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Add warning that ETH derivation path will be the default in a future major breaking change. - [#395](https://github.com/celo-org/developer-tooling/pull/395) [`693f6e7`](https://github.com/celo-org/developer-tooling/commit/693f6e7d2fe3034b6d7a3bc4a9719e76229d1981) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Fix incorrect message where the transfered token was used as gas token in the messaging but not in actuality - [#395](https://github.com/celo-org/developer-tooling/pull/395) [`693f6e7`](https://github.com/celo-org/developer-tooling/commit/693f6e7d2fe3034b6d7a3bc4a9719e76229d1981) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Fix Transfering, exchanging cusd (and other fee tokens) and or using gasCurrency flag with ledger devices prior to 1.2 - [#389](https://github.com/celo-org/developer-tooling/pull/389) [`5a0a922`](https://github.com/celo-org/developer-tooling/commit/5a0a922f4965336849b33d5f90234766db55b2e5) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Fix: account:new can now be called without a node - Updated dependencies \[[`693f6e7`](https://github.com/celo-org/developer-tooling/commit/693f6e7d2fe3034b6d7a3bc4a9719e76229d1981), [`5a0a922`](https://github.com/celo-org/developer-tooling/commit/5a0a922f4965336849b33d5f90234766db55b2e5), [`33ad4aa`](https://github.com/celo-org/developer-tooling/commit/33ad4aaf6b9edc33d1ce19833dbea626798cfb88), [`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b), [`33ad4aa`](https://github.com/celo-org/developer-tooling/commit/33ad4aaf6b9edc33d1ce19833dbea626798cfb88)]: - @celo/wallet-ledger@6.0.2-beta.0 - @celo/cryptographic-utils@5.1.1-beta.0 - @celo/contractkit@9.0.0-beta.0 - @celo/base@7.0.0-beta.0 - @celo/utils@8.0.0-beta.0 - @celo/metadata-claims@1.0.0-beta.0 - @celo/explorer@5.0.13-beta.0 - @celo/governance@5.1.4-beta.0 - @celo/connect@6.0.3-beta.0 - @celo/phone-utils@6.0.4-beta.0 - @celo/wallet-hsm-azure@6.0.2-beta.0 - @celo/wallet-local@6.0.2-beta.0 ## @celo/base@7.0.0-beta.0 ### Major Changes - [#228](https://github.com/celo-org/developer-tooling/pull/228) [`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - remove deprecated functions and consts exported from ./contacts and ./displayformating. ./currencies and ./phonenumbers. If these are used by your app we recommend to inline the functions from the previous release. - - - Full List of removed exports -- ContactPhoneNumber, MinimalContact, getContactPhoneNumber, isContact, CURRENCY_ENUM, Currency, CURRENCIES, resolveCurrency, SHORT_CURRENCIES, currencyToShortMap | getErrorMessage | anonymizedPhone | getContactNameHash ## @celo/contractkit@9.0.0-beta.0 ### Major Changes - [#340](https://github.com/celo-org/developer-tooling/pull/340) [`33ad4aa`](https://github.com/celo-org/developer-tooling/commit/33ad4aaf6b9edc33d1ce19833dbea626798cfb88) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Removes all exports under the lib/identity folder. These have been move to a new @celo/metadata-claims package and should be imported from there. Note that folder structure is also flattened slightly. so replace `@celo/contractkit/lib/identity/claims/` with `@celo/metadata-claims/lib/` example ```diff - import { createAccountClaim } from '@celo/contractkit/lib/identity/claims/account' + import { createAccountClaim } from '@celo/metadata-claims/lib/account' ``` ```diff - import { ContractKit, IdentityMetadataWrapper, newKitFromWeb3 } from '@celo/contractkit' - import { ClaimTypes } from '@celo/contractkit/lib/identity' + import { ContractKit, newKitFromWeb3 } from '@celo/contractkit' + import { ClaimTypes, IdentityMetadataWrapper } from '@celo/metadata-claims' ``` Note that Contractkit is Not a dependency. Instead when using `IdentityMetadataWrapper` you should make an object that satisfis the `AccountMetadataSignerGetters` type ```typescript import { AccountMetadataSignerGetters } from '@celo/metadata-claims/lib/types' ``` using viem it would be like ```typescript const accountsMetaDataSignerGetters: AccountMetadataSignerGetters = { isAccount: async (address: string) => accounts.read.isAccount([address as Address]), getValidatorSigner: async (address: string) => accounts.read.getValidatorSigner([address as Address]), getVoteSigner: async (address: string) => accounts.read.getValidatorSigner([address as Address]), getAttestationSigner: async (address: string) => accounts.read.getValidatorSigner([address as Address]), } ``` ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/base@7.0.0-beta.0 - @celo/utils@8.0.0-beta.0 - @celo/connect@6.0.3-beta.0 - @celo/wallet-local@6.0.2-beta.0 ## @celo/metadata-claims@1.0.0-beta.0 ### Major Changes - [#340](https://github.com/celo-org/developer-tooling/pull/340) [`33ad4aa`](https://github.com/celo-org/developer-tooling/commit/33ad4aaf6b9edc33d1ce19833dbea626798cfb88) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Introducing @celo/metadata-claims These are a series of functions extracted from @celo/contractkit since they didnt strictly need depend on contractkit itsefl. Developers can now use IdentityMetadataWrapper with any js rpc library like ethers or viem or web3js without being forced to import ContractKit. Instead when using `IdentityMetadataWrapper` you should make an object that satisfis the `AccountMetadataSignerGetters` type ```typescript import { AccountMetadataSignerGetters } from '@celo/metadata-claims/lib/types' ``` using viem it would be like ```typescript const accountsMetaDataSignerGetters: AccountMetadataSignerGetters = { isAccount: async (address: string) => accounts.read.isAccount([address as Address]), getValidatorSigner: async (address: string) => accounts.read.getValidatorSigner([address as Address]), getVoteSigner: async (address: string) => accounts.read.getValidatorSigner([address as Address]), getAttestationSigner: async (address: string) => accounts.read.getValidatorSigner([address as Address]), } ``` ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/base@7.0.0-beta.0 - @celo/utils@8.0.0-beta.0 ## @celo/utils@8.0.0-beta.0 ### Major Changes - [#228](https://github.com/celo-org/developer-tooling/pull/228) [`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - remove deprecated functions and consts exported from ./contacts and ./displayformating. ./currencies and ./phonenumbers. If these are used by your app we recommend to inline the functions from the previous release. - - - Full List of removed exports -- ContactPhoneNumber, MinimalContact, getContactPhoneNumber, isContact, CURRENCY_ENUM, Currency, CURRENCIES, resolveCurrency, SHORT_CURRENCIES, currencyToShortMap | getErrorMessage | anonymizedPhone | getContactNameHash ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/base@7.0.0-beta.0 ## @celo/viem-account-ledger@1.0.0-beta.0 ### Major Changes - [#344](https://github.com/celo-org/developer-tooling/pull/344) [`6bba5e3`](https://github.com/celo-org/developer-tooling/commit/6bba5e377cded1c8216c5cd1cadeb4b8b764df55) Thanks [@nicolasbrugneaux](https://github.com/nicolasbrugneaux)! - Initial release ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/base@7.0.0-beta.0 ## @celo/dev-utils@0.0.6-beta.0 ### Patch Changes - Updated dependencies \[]: - @celo/connect@6.0.3-beta.0 ## @celo/connect@6.0.3-beta.0 ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/base@7.0.0-beta.0 - @celo/utils@8.0.0-beta.0 ## @celo/cryptographic-utils@5.1.1-beta.0 ### Patch Changes - [#389](https://github.com/celo-org/developer-tooling/pull/389) [`5a0a922`](https://github.com/celo-org/developer-tooling/commit/5a0a922f4965336849b33d5f90234766db55b2e5) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Add warning that ETH derivation path will be the default in a future major breaking change. - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/base@7.0.0-beta.0 - @celo/utils@8.0.0-beta.0 ## @celo/explorer@5.0.13-beta.0 ### Patch Changes - Updated dependencies \[[`33ad4aa`](https://github.com/celo-org/developer-tooling/commit/33ad4aaf6b9edc33d1ce19833dbea626798cfb88), [`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/contractkit@9.0.0-beta.0 - @celo/base@7.0.0-beta.0 - @celo/utils@8.0.0-beta.0 - @celo/connect@6.0.3-beta.0 ## @celo/governance@5.1.4-beta.0 ### Patch Changes - Updated dependencies \[[`33ad4aa`](https://github.com/celo-org/developer-tooling/commit/33ad4aaf6b9edc33d1ce19833dbea626798cfb88), [`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/contractkit@9.0.0-beta.0 - @celo/base@7.0.0-beta.0 - @celo/utils@8.0.0-beta.0 - @celo/explorer@5.0.13-beta.0 - @celo/connect@6.0.3-beta.0 ## @celo/keystores@5.0.12-beta.0 ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/utils@8.0.0-beta.0 - @celo/wallet-local@6.0.2-beta.0 ## @celo/phone-utils@6.0.4-beta.0 ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/base@7.0.0-beta.0 - @celo/utils@8.0.0-beta.0 ## @celo/transactions-uri@5.0.12-beta.0 ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/base@7.0.0-beta.0 - @celo/connect@6.0.3-beta.0 ## @celo/wallet-base@6.0.2-beta.0 ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/base@7.0.0-beta.0 - @celo/utils@8.0.0-beta.0 - @celo/connect@6.0.3-beta.0 ## @celo/wallet-hsm@6.0.2-beta.0 ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/base@7.0.0-beta.0 ## @celo/wallet-hsm-aws@6.0.2-beta.0 ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/utils@8.0.0-beta.0 - @celo/connect@6.0.3-beta.0 - @celo/wallet-base@6.0.2-beta.0 - @celo/wallet-hsm@6.0.2-beta.0 - @celo/wallet-remote@6.0.2-beta.0 ## @celo/wallet-hsm-azure@6.0.2-beta.0 ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/base@7.0.0-beta.0 - @celo/utils@8.0.0-beta.0 - @celo/connect@6.0.3-beta.0 - @celo/wallet-base@6.0.2-beta.0 - @celo/wallet-hsm@6.0.2-beta.0 - @celo/wallet-remote@6.0.2-beta.0 ## @celo/wallet-hsm-gcp@6.0.2-beta.0 ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/utils@8.0.0-beta.0 - @celo/connect@6.0.3-beta.0 - @celo/wallet-base@6.0.2-beta.0 - @celo/wallet-hsm@6.0.2-beta.0 - @celo/wallet-remote@6.0.2-beta.0 ## @celo/wallet-ledger@6.0.2-beta.0 ### Patch Changes - [#395](https://github.com/celo-org/developer-tooling/pull/395) [`693f6e7`](https://github.com/celo-org/developer-tooling/commit/693f6e7d2fe3034b6d7a3bc4a9719e76229d1981) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Fix issue where ledger running celo firmware app 1.1.10 could not send fee token transactions or perform and interactions with those contracts - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/base@7.0.0-beta.0 - @celo/utils@8.0.0-beta.0 - @celo/connect@6.0.3-beta.0 - @celo/wallet-base@6.0.2-beta.0 - @celo/wallet-remote@6.0.2-beta.0 ## @celo/wallet-local@6.0.2-beta.0 ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/base@7.0.0-beta.0 - @celo/utils@8.0.0-beta.0 - @celo/connect@6.0.3-beta.0 - @celo/wallet-base@6.0.2-beta.0 ## @celo/wallet-remote@6.0.2-beta.0 ### Patch Changes - Updated dependencies \[[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: - @celo/utils@8.0.0-beta.0 - @celo/connect@6.0.3-beta.0 - @celo/wallet-base@6.0.2-beta.0 --- ## PR-Codex overview This PR focuses on updating various Celo SDK packages to their beta versions, enhancing dependency management and incorporating new features. It includes significant version bumps and updates to changelogs across multiple packages. ### Detailed summary - Updated `@celo/base` to `7.0.0-beta.0` - Updated `@celo/connect` to `6.0.3-beta.0` - Updated `@celo/utils` to `8.0.0-beta.0` - Updated `@celo/dev-utils` to `0.0.6-beta.0` - Added multiple changelog entries for various packages - Introduced new `@celo/metadata-claims` package at `1.0.0-beta.0` - Updated `@celo/contractkit` to `9.0.0-beta.0` - Updated versions in `CHANGELOG.md` files across several packages > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` Co-authored-by: github-actions[bot] --- .changeset/pre.json | 14 +- packages/cli/CHANGELOG.md | 34 +++ packages/cli/package.json | 28 +-- packages/dev-utils/CHANGELOG.md | 7 + packages/dev-utils/package.json | 4 +- packages/sdk/base/CHANGELOG.md | 14 ++ packages/sdk/base/package.json | 2 +- packages/sdk/connect/CHANGELOG.md | 8 + packages/sdk/connect/package.json | 6 +- packages/sdk/contractkit/CHANGELOG.md | 51 +++++ packages/sdk/contractkit/package.json | 12 +- packages/sdk/cryptographic-utils/CHANGELOG.md | 10 + packages/sdk/cryptographic-utils/package.json | 6 +- packages/sdk/explorer/CHANGELOG.md | 10 + packages/sdk/explorer/package.json | 12 +- packages/sdk/governance/CHANGELOG.md | 11 + packages/sdk/governance/package.json | 12 +- packages/sdk/keystores/CHANGELOG.md | 8 + packages/sdk/keystores/package.json | 6 +- packages/sdk/metadata-claims/CHANGELOG.md | 33 +++ packages/sdk/metadata-claims/package.json | 8 +- packages/sdk/network-utils/package.json | 2 +- packages/sdk/phone-utils/CHANGELOG.md | 8 + packages/sdk/phone-utils/package.json | 6 +- packages/sdk/transactions-uri/CHANGELOG.md | 8 + packages/sdk/transactions-uri/package.json | 10 +- packages/sdk/utils/CHANGELOG.md | 19 ++ packages/sdk/utils/package.json | 4 +- packages/sdk/wallets/wallet-base/CHANGELOG.md | 9 + packages/sdk/wallets/wallet-base/package.json | 8 +- .../sdk/wallets/wallet-hsm-aws/CHANGELOG.md | 11 + .../sdk/wallets/wallet-hsm-aws/package.json | 12 +- .../sdk/wallets/wallet-hsm-azure/CHANGELOG.md | 12 ++ .../sdk/wallets/wallet-hsm-azure/package.json | 14 +- .../sdk/wallets/wallet-hsm-gcp/CHANGELOG.md | 11 + .../sdk/wallets/wallet-hsm-gcp/package.json | 12 +- packages/sdk/wallets/wallet-hsm/CHANGELOG.md | 7 + packages/sdk/wallets/wallet-hsm/package.json | 4 +- .../sdk/wallets/wallet-ledger/CHANGELOG.md | 13 ++ .../sdk/wallets/wallet-ledger/package.json | 14 +- .../sdk/wallets/wallet-local/CHANGELOG.md | 10 + .../sdk/wallets/wallet-local/package.json | 10 +- .../sdk/wallets/wallet-remote/CHANGELOG.md | 9 + .../sdk/wallets/wallet-remote/package.json | 8 +- packages/viem-account-ledger/CHANGELOG.md | 12 ++ packages/viem-account-ledger/package.json | 4 +- yarn.lock | 199 +++++++++--------- 47 files changed, 533 insertions(+), 199 deletions(-) create mode 100644 packages/sdk/metadata-claims/CHANGELOG.md diff --git a/.changeset/pre.json b/.changeset/pre.json index 15e1e31988..2d34ab504f 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -27,5 +27,17 @@ "@celo/typescript": "0.0.1", "@celo/viem-account-ledger": "0.0.1" }, - "changesets": [] + "changesets": [ + "dry-gifts-love", + "fair-points-beg", + "fifty-roses-explain", + "gold-pumas-fry", + "hot-pugs-nail", + "hungry-cups-juggle", + "many-cobras-live", + "moody-falcons-remain", + "polite-pets-push", + "rude-parrots-know", + "thirty-pugs-smile" + ] } diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 75256f29ec..ba883d8712 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,39 @@ # Changelog +## 6.0.0-beta.0 + +### Major Changes + +- [#339](https://github.com/celo-org/developer-tooling/pull/339) [`87223ba`](https://github.com/celo-org/developer-tooling/commit/87223ba93ab79f43ae6884282d30a420eb09c23c) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Remove support for reserve:\* commands. As foretold by https://forum.celo.org/t/sunset-of-reserve-commands/8454 + +- [#343](https://github.com/celo-org/developer-tooling/pull/343) [`54741cc`](https://github.com/celo-org/developer-tooling/commit/54741cc01ef0a6716bdd45a955ac65c7ecced6c1) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Remove commands identity:identifier, identity:get-attestations + + See https://forum.celo.org/t/rfc-deprecation-of-celocli-identity-commands/8676 + +### Patch Changes + +- [#389](https://github.com/celo-org/developer-tooling/pull/389) [`5a0a922`](https://github.com/celo-org/developer-tooling/commit/5a0a922f4965336849b33d5f90234766db55b2e5) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Add warning that ETH derivation path will be the default in a future major breaking change. + +- [#395](https://github.com/celo-org/developer-tooling/pull/395) [`693f6e7`](https://github.com/celo-org/developer-tooling/commit/693f6e7d2fe3034b6d7a3bc4a9719e76229d1981) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Fix incorrect message where the transfered token was used as gas token in the messaging but not in actuality + +- [#395](https://github.com/celo-org/developer-tooling/pull/395) [`693f6e7`](https://github.com/celo-org/developer-tooling/commit/693f6e7d2fe3034b6d7a3bc4a9719e76229d1981) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Fix Transfering, exchanging cusd (and other fee tokens) and or using gasCurrency flag with ledger devices prior to 1.2 + +- [#389](https://github.com/celo-org/developer-tooling/pull/389) [`5a0a922`](https://github.com/celo-org/developer-tooling/commit/5a0a922f4965336849b33d5f90234766db55b2e5) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Fix: account:new can now be called without a node + +- Updated dependencies [[`693f6e7`](https://github.com/celo-org/developer-tooling/commit/693f6e7d2fe3034b6d7a3bc4a9719e76229d1981), [`5a0a922`](https://github.com/celo-org/developer-tooling/commit/5a0a922f4965336849b33d5f90234766db55b2e5), [`33ad4aa`](https://github.com/celo-org/developer-tooling/commit/33ad4aaf6b9edc33d1ce19833dbea626798cfb88), [`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b), [`33ad4aa`](https://github.com/celo-org/developer-tooling/commit/33ad4aaf6b9edc33d1ce19833dbea626798cfb88)]: + - @celo/wallet-ledger@6.0.2-beta.0 + - @celo/cryptographic-utils@5.1.1-beta.0 + - @celo/contractkit@9.0.0-beta.0 + - @celo/base@7.0.0-beta.0 + - @celo/utils@8.0.0-beta.0 + - @celo/metadata-claims@1.0.0-beta.0 + - @celo/explorer@5.0.13-beta.0 + - @celo/governance@5.1.4-beta.0 + - @celo/connect@6.0.3-beta.0 + - @celo/phone-utils@6.0.4-beta.0 + - @celo/wallet-hsm-azure@6.0.2-beta.0 + - @celo/wallet-local@6.0.2-beta.0 + ## 5.2.1 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 03c41a2b42..c21b6c180c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@celo/celocli", "description": "CLI Tool for transacting with the Celo protocol", - "version": "5.2.1", + "version": "6.0.0-beta.0", "author": "Celo", "license": "Apache-2.0", "repository": "celo-org/developer-tooling", @@ -38,20 +38,20 @@ }, "dependencies": { "@celo/abis": "11.0.0", - "@celo/base": "^6.1.0", + "@celo/base": "^7.0.0-beta.0", "@celo/compliance": "~1.0.23", - "@celo/connect": "^6.0.2", - "@celo/contractkit": "^8.3.0", - "@celo/cryptographic-utils": "^5.1.0", - "@celo/explorer": "^5.0.12", - "@celo/governance": "^5.1.3", + "@celo/connect": "^6.0.3-beta.0", + "@celo/contractkit": "^9.0.0-beta.0", + "@celo/cryptographic-utils": "^5.1.1-beta.0", + "@celo/explorer": "^5.0.13-beta.0", + "@celo/governance": "^5.1.4-beta.0", "@celo/identity": "^5.1.2", - "@celo/metadata-claims": "^0.0.1", - "@celo/phone-utils": "^6.0.3", - "@celo/utils": "^7.0.0", - "@celo/wallet-hsm-azure": "^6.0.1", - "@celo/wallet-ledger": "^6.0.1", - "@celo/wallet-local": "^6.0.1", + "@celo/metadata-claims": "^1.0.0-beta.0", + "@celo/phone-utils": "^6.0.4-beta.0", + "@celo/utils": "^8.0.0-beta.0", + "@celo/wallet-hsm-azure": "^6.0.2-beta.0", + "@celo/wallet-ledger": "^6.0.2-beta.0", + "@celo/wallet-local": "^6.0.2-beta.0", "@ethereumjs/util": "8.0.5", "@ledgerhq/hw-transport-node-hid": "^6.28.5", "@mento-protocol/mento-sdk": "^1.0.1", @@ -79,7 +79,7 @@ }, "devDependencies": { "@celo/celo-devchain": "^7.0.0", - "@celo/dev-utils": "0.0.5", + "@celo/dev-utils": "0.0.6-beta.0", "@celo/typescript": "workspace:^", "@types/debug": "^4.1.4", "@types/fs-extra": "^8.0.0", diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 1464257daf..eda3b415a8 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,12 @@ # @celo/dev-utils +## 0.0.6-beta.0 + +### Patch Changes + +- Updated dependencies []: + - @celo/connect@6.0.3-beta.0 + ## 0.0.5 ### Patch Changes diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 483b49b728..3600887397 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/dev-utils", - "version": "0.0.5", + "version": "0.0.6-beta.0", "description": "util package for celo packages that should only be a devDependency", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -21,7 +21,7 @@ }, "dependencies": { "@celo/abis": "^11.0.0", - "@celo/connect": "^6.0.1", + "@celo/connect": "^6.0.3-beta.0", "@viem/anvil": "^0.0.9", "bignumber.js": "^9.0.0", "fs-extra": "^8.1.0", diff --git a/packages/sdk/base/CHANGELOG.md b/packages/sdk/base/CHANGELOG.md index 5e8d2107f3..abc5c15020 100644 --- a/packages/sdk/base/CHANGELOG.md +++ b/packages/sdk/base/CHANGELOG.md @@ -1,5 +1,19 @@ # @celo/base +## 7.0.0-beta.0 + +### Major Changes + +- [#228](https://github.com/celo-org/developer-tooling/pull/228) [`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - remove deprecated functions and consts exported from ./contacts and ./displayformating. ./currencies and ./phonenumbers. If these are used by your app we recommend to inline the functions from the previous release. + + - https://github.com/celo-org/developer-tooling/blob/%40celo/wallet-base%406.0.1/packages/sdk/base/src/contacts.ts + - https://github.com/celo-org/developer-tooling/blob/%40celo/wallet-base%406.0.1/packages/sdk/base/src/displayFormatting.ts + - https://github.com/celo-org/developer-tooling/blob/%40celo/wallet-base%406.0.1/packages/sdk/base/src/phoneNumbers.ts + + https://github.com/celo-org/developer-tooling/tree/%40celo/wallet-base%406.0.1/packages/sdk/base/src + + Full List of removed exports -- ContactPhoneNumber, MinimalContact, getContactPhoneNumber, isContact, CURRENCY_ENUM, Currency, CURRENCIES, resolveCurrency, SHORT_CURRENCIES, currencyToShortMap | getErrorMessage | anonymizedPhone | getContactNameHash + ## 6.1.0 ### Minor Changes diff --git a/packages/sdk/base/package.json b/packages/sdk/base/package.json index 7b2474c230..5ed6451be4 100644 --- a/packages/sdk/base/package.json +++ b/packages/sdk/base/package.json @@ -1,6 +1,6 @@ { "name": "@celo/base", - "version": "6.1.0", + "version": "7.0.0-beta.0", "description": "Celo base common utils, no dependencies", "author": "Celo", "license": "Apache-2.0", diff --git a/packages/sdk/connect/CHANGELOG.md b/packages/sdk/connect/CHANGELOG.md index f0034975e1..895f94ea86 100644 --- a/packages/sdk/connect/CHANGELOG.md +++ b/packages/sdk/connect/CHANGELOG.md @@ -1,5 +1,13 @@ # @celo/connect +## 6.0.3-beta.0 + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/base@7.0.0-beta.0 + - @celo/utils@8.0.0-beta.0 + ## 6.0.2 ### Patch Changes diff --git a/packages/sdk/connect/package.json b/packages/sdk/connect/package.json index 9a33acfc5e..66e0145bf7 100644 --- a/packages/sdk/connect/package.json +++ b/packages/sdk/connect/package.json @@ -1,6 +1,6 @@ { "name": "@celo/connect", - "version": "6.0.2", + "version": "6.0.3-beta.0", "description": "Light Toolkit for connecting with the Celo network", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -22,8 +22,8 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "^6.1.0", - "@celo/utils": "^7.0.0", + "@celo/base": "^7.0.0-beta.0", + "@celo/utils": "^8.0.0-beta.0", "@ethereumjs/util": "8.0.5", "@types/debug": "^4.1.5", "@types/utf8": "^2.1.6", diff --git a/packages/sdk/contractkit/CHANGELOG.md b/packages/sdk/contractkit/CHANGELOG.md index 481725897b..3b1129148a 100644 --- a/packages/sdk/contractkit/CHANGELOG.md +++ b/packages/sdk/contractkit/CHANGELOG.md @@ -1,5 +1,56 @@ # @celo/contractkit +## 9.0.0-beta.0 + +### Major Changes + +- [#340](https://github.com/celo-org/developer-tooling/pull/340) [`33ad4aa`](https://github.com/celo-org/developer-tooling/commit/33ad4aaf6b9edc33d1ce19833dbea626798cfb88) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Removes all exports under the lib/identity folder. These have been move to a new @celo/metadata-claims package and should be imported from there. + + Note that folder structure is also flattened slightly. so replace `@celo/contractkit/lib/identity/claims/` with `@celo/metadata-claims/lib/` + + example + + ```diff + - import { createAccountClaim } from '@celo/contractkit/lib/identity/claims/account' + + import { createAccountClaim } from '@celo/metadata-claims/lib/account' + ``` + + ```diff + - import { ContractKit, IdentityMetadataWrapper, newKitFromWeb3 } from '@celo/contractkit' + - import { ClaimTypes } from '@celo/contractkit/lib/identity' + + import { ContractKit, newKitFromWeb3 } from '@celo/contractkit' + + import { ClaimTypes, IdentityMetadataWrapper } from '@celo/metadata-claims' + + ``` + + Note that Contractkit is Not a dependency. Instead when using `IdentityMetadataWrapper` you should make an object that satisfis the `AccountMetadataSignerGetters` type + + ```typescript + import { AccountMetadataSignerGetters } from '@celo/metadata-claims/lib/types' + ``` + + using viem it would be like + + ```typescript + const accountsMetaDataSignerGetters: AccountMetadataSignerGetters = { + isAccount: async (address: string) => accounts.read.isAccount([address as Address]), + getValidatorSigner: async (address: string) => + accounts.read.getValidatorSigner([address as Address]), + getVoteSigner: async (address: string) => + accounts.read.getValidatorSigner([address as Address]), + getAttestationSigner: async (address: string) => + accounts.read.getValidatorSigner([address as Address]), + } + ``` + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/base@7.0.0-beta.0 + - @celo/utils@8.0.0-beta.0 + - @celo/connect@6.0.3-beta.0 + - @celo/wallet-local@6.0.2-beta.0 + ## 8.3.0 ### Minor Changes diff --git a/packages/sdk/contractkit/package.json b/packages/sdk/contractkit/package.json index d6583f07df..30455b6ffd 100644 --- a/packages/sdk/contractkit/package.json +++ b/packages/sdk/contractkit/package.json @@ -1,6 +1,6 @@ { "name": "@celo/contractkit", - "version": "8.3.0", + "version": "9.0.0-beta.0", "description": "Celo's ContractKit to interact with Celo network", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -28,10 +28,10 @@ "dependencies": { "@celo/abis": "11.0.0", "@celo/abis-12": "npm:@celo/abis@12.0.0-canary.35", - "@celo/base": "^6.1.0", - "@celo/connect": "^6.0.2", - "@celo/utils": "^7.0.0", - "@celo/wallet-local": "^6.0.1", + "@celo/base": "^7.0.0-beta.0", + "@celo/connect": "^6.0.3-beta.0", + "@celo/utils": "^8.0.0-beta.0", + "@celo/wallet-local": "^6.0.2-beta.0", "@types/bn.js": "^5.1.0", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", @@ -43,7 +43,7 @@ }, "devDependencies": { "@celo/celo-devchain": "^7.0.0", - "@celo/dev-utils": "0.0.5", + "@celo/dev-utils": "0.0.6-beta.0", "@celo/odis-identifiers": "^1.0.1", "@celo/typescript": "workspace:^", "@truffle/contract": "4.6.31", diff --git a/packages/sdk/cryptographic-utils/CHANGELOG.md b/packages/sdk/cryptographic-utils/CHANGELOG.md index a232bae600..645bd28cd3 100644 --- a/packages/sdk/cryptographic-utils/CHANGELOG.md +++ b/packages/sdk/cryptographic-utils/CHANGELOG.md @@ -1,5 +1,15 @@ # @celo/cryptographic-utils +## 5.1.1-beta.0 + +### Patch Changes + +- [#389](https://github.com/celo-org/developer-tooling/pull/389) [`5a0a922`](https://github.com/celo-org/developer-tooling/commit/5a0a922f4965336849b33d5f90234766db55b2e5) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Add warning that ETH derivation path will be the default in a future major breaking change. + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/base@7.0.0-beta.0 + - @celo/utils@8.0.0-beta.0 + ## 5.1.0 ### Minor Changes diff --git a/packages/sdk/cryptographic-utils/package.json b/packages/sdk/cryptographic-utils/package.json index f5cfcaf20a..3e0e8858dc 100644 --- a/packages/sdk/cryptographic-utils/package.json +++ b/packages/sdk/cryptographic-utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/cryptographic-utils", - "version": "5.1.0", + "version": "5.1.1-beta.0", "description": "Some Celo utils for comment/data encryption, bls, and mnemonics", "author": "Celo", "license": "Apache-2.0", @@ -22,9 +22,9 @@ "lib/**/*" ], "dependencies": { - "@celo/base": "^6.1.0", + "@celo/base": "^7.0.0-beta.0", "@celo/bls12377js": "0.1.1", - "@celo/utils": "^7.0.0", + "@celo/utils": "^8.0.0-beta.0", "@noble/ciphers": "0.4.1", "@noble/curves": "1.3.0", "@noble/hashes": "1.3.3", diff --git a/packages/sdk/explorer/CHANGELOG.md b/packages/sdk/explorer/CHANGELOG.md index 8072d06f68..bd91b91bf8 100644 --- a/packages/sdk/explorer/CHANGELOG.md +++ b/packages/sdk/explorer/CHANGELOG.md @@ -1,5 +1,15 @@ # @celo/explorer +## 5.0.13-beta.0 + +### Patch Changes + +- Updated dependencies [[`33ad4aa`](https://github.com/celo-org/developer-tooling/commit/33ad4aaf6b9edc33d1ce19833dbea626798cfb88), [`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/contractkit@9.0.0-beta.0 + - @celo/base@7.0.0-beta.0 + - @celo/utils@8.0.0-beta.0 + - @celo/connect@6.0.3-beta.0 + ## 5.0.12 ### Patch Changes diff --git a/packages/sdk/explorer/package.json b/packages/sdk/explorer/package.json index 7bb7187822..09bef2e137 100644 --- a/packages/sdk/explorer/package.json +++ b/packages/sdk/explorer/package.json @@ -1,6 +1,6 @@ { "name": "@celo/explorer", - "version": "5.0.12", + "version": "5.0.13-beta.0", "description": "Celo's block explorer consumer", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -22,17 +22,17 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "^6.1.0", - "@celo/connect": "^6.0.1", - "@celo/contractkit": "^8.1.1", - "@celo/utils": "^7.0.0", + "@celo/base": "^7.0.0-beta.0", + "@celo/connect": "^6.0.3-beta.0", + "@celo/contractkit": "^9.0.0-beta.0", + "@celo/utils": "^8.0.0-beta.0", "@types/debug": "^4.1.5", "bignumber.js": "9.0.0", "cross-fetch": "3.1.5", "debug": "^4.1.1" }, "devDependencies": { - "@celo/dev-utils": "0.0.5", + "@celo/dev-utils": "0.0.6-beta.0", "@celo/typescript": "workspace:^", "@types/debug": "^4.1.12", "fetch-mock": "^10.0.7", diff --git a/packages/sdk/governance/CHANGELOG.md b/packages/sdk/governance/CHANGELOG.md index b5466a8a3f..88166fdc69 100644 --- a/packages/sdk/governance/CHANGELOG.md +++ b/packages/sdk/governance/CHANGELOG.md @@ -1,5 +1,16 @@ # @celo/governance +## 5.1.4-beta.0 + +### Patch Changes + +- Updated dependencies [[`33ad4aa`](https://github.com/celo-org/developer-tooling/commit/33ad4aaf6b9edc33d1ce19833dbea626798cfb88), [`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/contractkit@9.0.0-beta.0 + - @celo/base@7.0.0-beta.0 + - @celo/utils@8.0.0-beta.0 + - @celo/explorer@5.0.13-beta.0 + - @celo/connect@6.0.3-beta.0 + ## 5.1.3 ### Patch Changes diff --git a/packages/sdk/governance/package.json b/packages/sdk/governance/package.json index d1e6b119c1..b363dca2ff 100644 --- a/packages/sdk/governance/package.json +++ b/packages/sdk/governance/package.json @@ -1,6 +1,6 @@ { "name": "@celo/governance", - "version": "5.1.3", + "version": "5.1.4-beta.0", "description": "Celo's governance proposals", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -22,11 +22,11 @@ }, "dependencies": { "@celo/abis": "11.0.0", - "@celo/base": "^6.1.0", - "@celo/connect": "^6.0.1", - "@celo/contractkit": "^8.1.1", - "@celo/explorer": "^5.0.12", - "@celo/utils": "^7.0.0", + "@celo/base": "^7.0.0-beta.0", + "@celo/connect": "^6.0.3-beta.0", + "@celo/contractkit": "^9.0.0-beta.0", + "@celo/explorer": "^5.0.13-beta.0", + "@celo/utils": "^8.0.0-beta.0", "@ethereumjs/util": "8.0.5", "@types/debug": "^4.1.5", "@types/inquirer": "^6.5.0", diff --git a/packages/sdk/keystores/CHANGELOG.md b/packages/sdk/keystores/CHANGELOG.md index af0c6f8826..e8b397c87f 100644 --- a/packages/sdk/keystores/CHANGELOG.md +++ b/packages/sdk/keystores/CHANGELOG.md @@ -1,5 +1,13 @@ # @celo/keystores +## 5.0.12-beta.0 + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/utils@8.0.0-beta.0 + - @celo/wallet-local@6.0.2-beta.0 + ## 5.0.11 ### Patch Changes diff --git a/packages/sdk/keystores/package.json b/packages/sdk/keystores/package.json index 977d139b45..555eca21ae 100644 --- a/packages/sdk/keystores/package.json +++ b/packages/sdk/keystores/package.json @@ -1,6 +1,6 @@ { "name": "@celo/keystores", - "version": "5.0.11", + "version": "5.0.12-beta.0", "description": "keystore implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,8 +22,8 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "^7.0.0", - "@celo/wallet-local": "^6.0.1", + "@celo/utils": "^8.0.0-beta.0", + "@celo/wallet-local": "^6.0.2-beta.0", "ethereumjs-wallet": "^1.0.1" }, "devDependencies": { diff --git a/packages/sdk/metadata-claims/CHANGELOG.md b/packages/sdk/metadata-claims/CHANGELOG.md new file mode 100644 index 0000000000..7b6053d2ac --- /dev/null +++ b/packages/sdk/metadata-claims/CHANGELOG.md @@ -0,0 +1,33 @@ +# @celo/metadata-claims + +## 1.0.0-beta.0 + +### Major Changes + +- [#340](https://github.com/celo-org/developer-tooling/pull/340) [`33ad4aa`](https://github.com/celo-org/developer-tooling/commit/33ad4aaf6b9edc33d1ce19833dbea626798cfb88) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Introducing @celo/metadata-claims These are a series of functions extracted from @celo/contractkit since they didnt strictly need depend on contractkit itsefl. Developers can now use IdentityMetadataWrapper with any js rpc library like ethers or viem or web3js without being forced to import ContractKit. + + Instead when using `IdentityMetadataWrapper` you should make an object that satisfis the `AccountMetadataSignerGetters` type + + ```typescript + import { AccountMetadataSignerGetters } from '@celo/metadata-claims/lib/types' + ``` + + using viem it would be like + + ```typescript + const accountsMetaDataSignerGetters: AccountMetadataSignerGetters = { + isAccount: async (address: string) => accounts.read.isAccount([address as Address]), + getValidatorSigner: async (address: string) => + accounts.read.getValidatorSigner([address as Address]), + getVoteSigner: async (address: string) => + accounts.read.getValidatorSigner([address as Address]), + getAttestationSigner: async (address: string) => + accounts.read.getValidatorSigner([address as Address]), + } + ``` + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/base@7.0.0-beta.0 + - @celo/utils@8.0.0-beta.0 diff --git a/packages/sdk/metadata-claims/package.json b/packages/sdk/metadata-claims/package.json index 2b707ca9cd..fa5ebdb7a2 100644 --- a/packages/sdk/metadata-claims/package.json +++ b/packages/sdk/metadata-claims/package.json @@ -1,6 +1,6 @@ { "name": "@celo/metadata-claims", - "version": "0.0.1", + "version": "1.0.0-beta.0", "author": "cLabs", "license": "Apache-2.0", "repository": "https://github.com/celo-org/developer-tooling/tree/master/packages/sdk/metadata-claims", @@ -24,8 +24,8 @@ "lint": "yarn run --top-level eslint -c .eslintrc.js " }, "dependencies": { - "@celo/base": "^6.1.0", - "@celo/utils": "^7.0.0", + "@celo/base": "^7.0.0-beta.0", + "@celo/utils": "^8.0.0-beta.0", "cross-fetch": "3.1.5", "fp-ts": "2.1.1", "io-ts": "2.0.1" @@ -33,7 +33,7 @@ "devDependencies": { "@celo/celo-devchain": "^7.0.0", "@celo/contractkit": "workspace:^", - "@celo/dev-utils": "0.0.5", + "@celo/dev-utils": "0.0.6-beta.0", "@celo/odis-identifiers": "^1.0.1", "@celo/typescript": "workspace:^", "@types/node": "18.7.6", diff --git a/packages/sdk/network-utils/package.json b/packages/sdk/network-utils/package.json index 15c4061e9f..6c453caaa1 100644 --- a/packages/sdk/network-utils/package.json +++ b/packages/sdk/network-utils/package.json @@ -27,7 +27,7 @@ "debug": "^4.1.1" }, "devDependencies": { - "@celo/dev-utils": "0.0.5", + "@celo/dev-utils": "0.0.6-beta.0", "@celo/typescript": "workspace:^", "@types/debug": "^4.1.12", "fetch-mock": "^10.0.7" diff --git a/packages/sdk/phone-utils/CHANGELOG.md b/packages/sdk/phone-utils/CHANGELOG.md index 444ca5b97f..a5f683f9cd 100644 --- a/packages/sdk/phone-utils/CHANGELOG.md +++ b/packages/sdk/phone-utils/CHANGELOG.md @@ -1,5 +1,13 @@ # @celo/phone-utils +## 6.0.4-beta.0 + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/base@7.0.0-beta.0 + - @celo/utils@8.0.0-beta.0 + ## 6.0.3 ### Patch Changes diff --git a/packages/sdk/phone-utils/package.json b/packages/sdk/phone-utils/package.json index 936aa3edd6..a9d5c3d992 100644 --- a/packages/sdk/phone-utils/package.json +++ b/packages/sdk/phone-utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-utils", - "version": "6.0.3", + "version": "6.0.4-beta.0", "description": "Celo phone utils", "author": "Celo", "license": "Apache-2.0", @@ -22,8 +22,8 @@ "lib/**/*" ], "dependencies": { - "@celo/base": "^6.1.0", - "@celo/utils": "^7.0.0", + "@celo/base": "^7.0.0-beta.0", + "@celo/utils": "^8.0.0-beta.0", "@types/country-data": "^0.0.0", "@types/google-libphonenumber": "^7.4.23", "@types/node": "^18.7.16", diff --git a/packages/sdk/transactions-uri/CHANGELOG.md b/packages/sdk/transactions-uri/CHANGELOG.md index b26726d958..4cbfc2d4b8 100644 --- a/packages/sdk/transactions-uri/CHANGELOG.md +++ b/packages/sdk/transactions-uri/CHANGELOG.md @@ -1,5 +1,13 @@ # @celo/transactions-uri +## 5.0.12-beta.0 + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/base@7.0.0-beta.0 + - @celo/connect@6.0.3-beta.0 + ## 5.0.11 ### Patch Changes diff --git a/packages/sdk/transactions-uri/package.json b/packages/sdk/transactions-uri/package.json index d9b23051c4..42b71257f7 100644 --- a/packages/sdk/transactions-uri/package.json +++ b/packages/sdk/transactions-uri/package.json @@ -1,6 +1,6 @@ { "name": "@celo/transactions-uri", - "version": "5.0.11", + "version": "5.0.12-beta.0", "description": "Celo's transactions uri generation", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -22,8 +22,8 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "^6.1.0", - "@celo/connect": "^6.0.1", + "@celo/base": "^7.0.0-beta.0", + "@celo/connect": "^6.0.3-beta.0", "@types/bn.js": "^5.1.0", "@types/debug": "^4.1.5", "@types/qrcode": "^1.3.4", @@ -32,8 +32,8 @@ "web3-eth-abi": "1.10.4" }, "devDependencies": { - "@celo/contractkit": "^8.1.1", - "@celo/dev-utils": "0.0.5", + "@celo/contractkit": "^9.0.0-beta.0", + "@celo/dev-utils": "0.0.6-beta.0", "@celo/typescript": "workspace:^", "cross-fetch": "3.1.5", "dotenv": "^8.2.0", diff --git a/packages/sdk/utils/CHANGELOG.md b/packages/sdk/utils/CHANGELOG.md index b35be4a046..3e36b932d1 100644 --- a/packages/sdk/utils/CHANGELOG.md +++ b/packages/sdk/utils/CHANGELOG.md @@ -1,5 +1,24 @@ # @celo/utils +## 8.0.0-beta.0 + +### Major Changes + +- [#228](https://github.com/celo-org/developer-tooling/pull/228) [`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - remove deprecated functions and consts exported from ./contacts and ./displayformating. ./currencies and ./phonenumbers. If these are used by your app we recommend to inline the functions from the previous release. + + - https://github.com/celo-org/developer-tooling/blob/%40celo/wallet-base%406.0.1/packages/sdk/base/src/contacts.ts + - https://github.com/celo-org/developer-tooling/blob/%40celo/wallet-base%406.0.1/packages/sdk/base/src/displayFormatting.ts + - https://github.com/celo-org/developer-tooling/blob/%40celo/wallet-base%406.0.1/packages/sdk/base/src/phoneNumbers.ts + + https://github.com/celo-org/developer-tooling/tree/%40celo/wallet-base%406.0.1/packages/sdk/base/src + + Full List of removed exports -- ContactPhoneNumber, MinimalContact, getContactPhoneNumber, isContact, CURRENCY_ENUM, Currency, CURRENCIES, resolveCurrency, SHORT_CURRENCIES, currencyToShortMap | getErrorMessage | anonymizedPhone | getContactNameHash + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/base@7.0.0-beta.0 + ## 7.0.0 ### Major Changes diff --git a/packages/sdk/utils/package.json b/packages/sdk/utils/package.json index dd0849a1c4..7677462dc9 100644 --- a/packages/sdk/utils/package.json +++ b/packages/sdk/utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/utils", - "version": "7.0.0", + "version": "8.0.0-beta.0", "description": "Celo common utils", "author": "Celo", "license": "Apache-2.0", @@ -22,7 +22,7 @@ "lib/**/*" ], "dependencies": { - "@celo/base": "^6.1.0", + "@celo/base": "^7.0.0-beta.0", "@ethereumjs/rlp": "^5.0.2", "@ethereumjs/util": "8.0.5", "@noble/ciphers": "0.4.1", diff --git a/packages/sdk/wallets/wallet-base/CHANGELOG.md b/packages/sdk/wallets/wallet-base/CHANGELOG.md index b8f326a8c1..c1ef7387c4 100644 --- a/packages/sdk/wallets/wallet-base/CHANGELOG.md +++ b/packages/sdk/wallets/wallet-base/CHANGELOG.md @@ -1,5 +1,14 @@ # @celo/wallet-base +## 6.0.2-beta.0 + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/base@7.0.0-beta.0 + - @celo/utils@8.0.0-beta.0 + - @celo/connect@6.0.3-beta.0 + ## 6.0.1 ### Patch Changes diff --git a/packages/sdk/wallets/wallet-base/package.json b/packages/sdk/wallets/wallet-base/package.json index fc32a7a678..3c52a6c335 100644 --- a/packages/sdk/wallets/wallet-base/package.json +++ b/packages/sdk/wallets/wallet-base/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-base", - "version": "6.0.1", + "version": "6.0.2-beta.0", "description": "Wallet base implementation", "author": "Celo", "license": "Apache-2.0", @@ -27,9 +27,9 @@ "viem": "~1.5.4" }, "dependencies": { - "@celo/base": "^6.1.0", - "@celo/connect": "^6.0.1", - "@celo/utils": "^7.0.0", + "@celo/base": "^7.0.0-beta.0", + "@celo/connect": "^6.0.3-beta.0", + "@celo/utils": "^8.0.0-beta.0", "@ethereumjs/rlp": "^5.0.2", "@ethereumjs/util": "8.0.5", "@noble/curves": "^1.3.0", diff --git a/packages/sdk/wallets/wallet-hsm-aws/CHANGELOG.md b/packages/sdk/wallets/wallet-hsm-aws/CHANGELOG.md index 5a050dcf46..78366ca5ba 100644 --- a/packages/sdk/wallets/wallet-hsm-aws/CHANGELOG.md +++ b/packages/sdk/wallets/wallet-hsm-aws/CHANGELOG.md @@ -1,5 +1,16 @@ # @celo/wallet-hsm-aws +## 6.0.2-beta.0 + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/utils@8.0.0-beta.0 + - @celo/connect@6.0.3-beta.0 + - @celo/wallet-base@6.0.2-beta.0 + - @celo/wallet-hsm@6.0.2-beta.0 + - @celo/wallet-remote@6.0.2-beta.0 + ## 6.0.1 ### Patch Changes diff --git a/packages/sdk/wallets/wallet-hsm-aws/package.json b/packages/sdk/wallets/wallet-hsm-aws/package.json index a257e8d357..f6ee07fef0 100644 --- a/packages/sdk/wallets/wallet-hsm-aws/package.json +++ b/packages/sdk/wallets/wallet-hsm-aws/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm-aws", - "version": "6.0.1", + "version": "6.0.2-beta.0", "description": "AWS HSM wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,11 +22,11 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/connect": "^6.0.1", - "@celo/utils": "^7.0.0", - "@celo/wallet-base": "^6.0.1", - "@celo/wallet-hsm": "^6.0.1", - "@celo/wallet-remote": "^6.0.1", + "@celo/connect": "^6.0.3-beta.0", + "@celo/utils": "^8.0.0-beta.0", + "@celo/wallet-base": "^6.0.2-beta.0", + "@celo/wallet-hsm": "^6.0.2-beta.0", + "@celo/wallet-remote": "^6.0.2-beta.0", "@ethereumjs/util": "8.0.5", "@types/debug": "^4.1.5", "@types/secp256k1": "^4.0.0", diff --git a/packages/sdk/wallets/wallet-hsm-azure/CHANGELOG.md b/packages/sdk/wallets/wallet-hsm-azure/CHANGELOG.md index 97702b4324..2025a71ec5 100644 --- a/packages/sdk/wallets/wallet-hsm-azure/CHANGELOG.md +++ b/packages/sdk/wallets/wallet-hsm-azure/CHANGELOG.md @@ -1,5 +1,17 @@ # @celo/wallet-hsm-azure +## 6.0.2-beta.0 + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/base@7.0.0-beta.0 + - @celo/utils@8.0.0-beta.0 + - @celo/connect@6.0.3-beta.0 + - @celo/wallet-base@6.0.2-beta.0 + - @celo/wallet-hsm@6.0.2-beta.0 + - @celo/wallet-remote@6.0.2-beta.0 + ## 6.0.1 ### Patch Changes diff --git a/packages/sdk/wallets/wallet-hsm-azure/package.json b/packages/sdk/wallets/wallet-hsm-azure/package.json index c09aea0180..d4abd30c49 100644 --- a/packages/sdk/wallets/wallet-hsm-azure/package.json +++ b/packages/sdk/wallets/wallet-hsm-azure/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm-azure", - "version": "6.0.1", + "version": "6.0.2-beta.0", "description": "Azure HSM wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -25,12 +25,12 @@ "@azure/identity": "^4.0.1", "@azure/keyvault-keys": "^4.7.2", "@azure/keyvault-secrets": "^4.7.0", - "@celo/base": "^6.1.0", - "@celo/connect": "^6.0.1", - "@celo/utils": "^7.0.0", - "@celo/wallet-base": "^6.0.1", - "@celo/wallet-hsm": "^6.0.1", - "@celo/wallet-remote": "^6.0.1", + "@celo/base": "^7.0.0-beta.0", + "@celo/connect": "^6.0.3-beta.0", + "@celo/utils": "^8.0.0-beta.0", + "@celo/wallet-base": "^6.0.2-beta.0", + "@celo/wallet-hsm": "^6.0.2-beta.0", + "@celo/wallet-remote": "^6.0.2-beta.0", "@ethereumjs/util": "8.0.5", "@types/secp256k1": "^4.0.0", "bignumber.js": "^9.0.0", diff --git a/packages/sdk/wallets/wallet-hsm-gcp/CHANGELOG.md b/packages/sdk/wallets/wallet-hsm-gcp/CHANGELOG.md index 3be499a4ea..8de0c85e3f 100644 --- a/packages/sdk/wallets/wallet-hsm-gcp/CHANGELOG.md +++ b/packages/sdk/wallets/wallet-hsm-gcp/CHANGELOG.md @@ -1,5 +1,16 @@ # @celo/wallet-hsm-gcp +## 6.0.2-beta.0 + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/utils@8.0.0-beta.0 + - @celo/connect@6.0.3-beta.0 + - @celo/wallet-base@6.0.2-beta.0 + - @celo/wallet-hsm@6.0.2-beta.0 + - @celo/wallet-remote@6.0.2-beta.0 + ## 6.0.1 ### Patch Changes diff --git a/packages/sdk/wallets/wallet-hsm-gcp/package.json b/packages/sdk/wallets/wallet-hsm-gcp/package.json index 63f270c27b..0796feedcc 100644 --- a/packages/sdk/wallets/wallet-hsm-gcp/package.json +++ b/packages/sdk/wallets/wallet-hsm-gcp/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm-gcp", - "version": "6.0.1", + "version": "6.0.2-beta.0", "description": "GCP HSM wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -20,11 +20,11 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/connect": "^6.0.1", - "@celo/utils": "^7.0.0", - "@celo/wallet-base": "^6.0.1", - "@celo/wallet-hsm": "^6.0.1", - "@celo/wallet-remote": "^6.0.1", + "@celo/connect": "^6.0.3-beta.0", + "@celo/utils": "^8.0.0-beta.0", + "@celo/wallet-base": "^6.0.2-beta.0", + "@celo/wallet-hsm": "^6.0.2-beta.0", + "@celo/wallet-remote": "^6.0.2-beta.0", "@ethereumjs/util": "8.0.5", "@google-cloud/kms": "~2.9.0", "@noble/curves": "^1.3.0", diff --git a/packages/sdk/wallets/wallet-hsm/CHANGELOG.md b/packages/sdk/wallets/wallet-hsm/CHANGELOG.md index e2e6e28a5a..b766356494 100644 --- a/packages/sdk/wallets/wallet-hsm/CHANGELOG.md +++ b/packages/sdk/wallets/wallet-hsm/CHANGELOG.md @@ -1,5 +1,12 @@ # @celo/wallet-hsm +## 6.0.2-beta.0 + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/base@7.0.0-beta.0 + ## 6.0.1 ## 6.0.1-beta.0 diff --git a/packages/sdk/wallets/wallet-hsm/package.json b/packages/sdk/wallets/wallet-hsm/package.json index 9a71220664..93dbc4369f 100644 --- a/packages/sdk/wallets/wallet-hsm/package.json +++ b/packages/sdk/wallets/wallet-hsm/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm", - "version": "6.0.1", + "version": "6.0.2-beta.0", "description": "HSM wallet implementation utils", "author": "Celo", "license": "Apache-2.0", @@ -22,7 +22,7 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "^6.1.0", + "@celo/base": "^7.0.0-beta.0", "@ethereumjs/util": "8.0.5", "@noble/ciphers": "0.4.1", "@noble/curves": "1.3.0", diff --git a/packages/sdk/wallets/wallet-ledger/CHANGELOG.md b/packages/sdk/wallets/wallet-ledger/CHANGELOG.md index 657de345d0..650fa6425b 100644 --- a/packages/sdk/wallets/wallet-ledger/CHANGELOG.md +++ b/packages/sdk/wallets/wallet-ledger/CHANGELOG.md @@ -1,5 +1,18 @@ # @celo/wallet-ledger +## 6.0.2-beta.0 + +### Patch Changes + +- [#395](https://github.com/celo-org/developer-tooling/pull/395) [`693f6e7`](https://github.com/celo-org/developer-tooling/commit/693f6e7d2fe3034b6d7a3bc4a9719e76229d1981) Thanks [@aaronmgdr](https://github.com/aaronmgdr)! - Fix issue where ledger running celo firmware app 1.1.10 could not send fee token transactions or perform and interactions with those contracts + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/base@7.0.0-beta.0 + - @celo/utils@8.0.0-beta.0 + - @celo/connect@6.0.3-beta.0 + - @celo/wallet-base@6.0.2-beta.0 + - @celo/wallet-remote@6.0.2-beta.0 + ## 6.0.1 ### Patch Changes diff --git a/packages/sdk/wallets/wallet-ledger/package.json b/packages/sdk/wallets/wallet-ledger/package.json index 562c7fbe19..069971c3c3 100644 --- a/packages/sdk/wallets/wallet-ledger/package.json +++ b/packages/sdk/wallets/wallet-ledger/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-ledger", - "version": "6.0.1", + "version": "6.0.2-beta.0", "description": "Ledger wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -24,12 +24,12 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "^6.1.0", - "@celo/connect": "^6.0.1", + "@celo/base": "^7.0.0-beta.0", + "@celo/connect": "^6.0.3-beta.0", "@celo/ledger-token-signer": "^0.4.0", - "@celo/utils": "^7.0.0", - "@celo/wallet-base": "^6.0.1", - "@celo/wallet-remote": "^6.0.1", + "@celo/utils": "^8.0.0-beta.0", + "@celo/wallet-base": "^6.0.2-beta.0", + "@celo/wallet-remote": "^6.0.2-beta.0", "@ethereumjs/util": "8.0.5", "@ledgerhq/errors": "^6.16.4", "@ledgerhq/hw-app-eth": "git+https://github.com:celo-org/ledgerjs-hw-app-eth.git", @@ -38,7 +38,7 @@ "semver": "^7.6.0" }, "devDependencies": { - "@celo/contractkit": "^8.1.1", + "@celo/contractkit": "^9.0.0-beta.0", "@celo/typescript": "workspace:^", "@ledgerhq/hw-transport-node-hid": "^6.28.5", "@noble/curves": "^1.4.0", diff --git a/packages/sdk/wallets/wallet-local/CHANGELOG.md b/packages/sdk/wallets/wallet-local/CHANGELOG.md index 5efe5ffe79..1e96708a94 100644 --- a/packages/sdk/wallets/wallet-local/CHANGELOG.md +++ b/packages/sdk/wallets/wallet-local/CHANGELOG.md @@ -1,5 +1,15 @@ # @celo/wallet-local +## 6.0.2-beta.0 + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/base@7.0.0-beta.0 + - @celo/utils@8.0.0-beta.0 + - @celo/connect@6.0.3-beta.0 + - @celo/wallet-base@6.0.2-beta.0 + ## 6.0.1 ### Patch Changes diff --git a/packages/sdk/wallets/wallet-local/package.json b/packages/sdk/wallets/wallet-local/package.json index 743659d6b3..868ba49617 100644 --- a/packages/sdk/wallets/wallet-local/package.json +++ b/packages/sdk/wallets/wallet-local/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-local", - "version": "6.0.1", + "version": "6.0.2-beta.0", "description": "Local wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,10 +22,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "^6.1.0", - "@celo/connect": "^6.0.1", - "@celo/utils": "^7.0.0", - "@celo/wallet-base": "^6.0.1", + "@celo/base": "^7.0.0-beta.0", + "@celo/connect": "^6.0.3-beta.0", + "@celo/utils": "^8.0.0-beta.0", + "@celo/wallet-base": "^6.0.2-beta.0", "@ethereumjs/util": "8.0.5" }, "devDependencies": { diff --git a/packages/sdk/wallets/wallet-remote/CHANGELOG.md b/packages/sdk/wallets/wallet-remote/CHANGELOG.md index 8d309ef2b6..791d16cc96 100644 --- a/packages/sdk/wallets/wallet-remote/CHANGELOG.md +++ b/packages/sdk/wallets/wallet-remote/CHANGELOG.md @@ -1,5 +1,14 @@ # @celo/wallet-remote +## 6.0.2-beta.0 + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/utils@8.0.0-beta.0 + - @celo/connect@6.0.3-beta.0 + - @celo/wallet-base@6.0.2-beta.0 + ## 6.0.1 ### Patch Changes diff --git a/packages/sdk/wallets/wallet-remote/package.json b/packages/sdk/wallets/wallet-remote/package.json index bec20f9b36..f0d5017f4a 100644 --- a/packages/sdk/wallets/wallet-remote/package.json +++ b/packages/sdk/wallets/wallet-remote/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-remote", - "version": "6.0.1", + "version": "6.0.2-beta.0", "description": "Remote wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,9 +22,9 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/connect": "^6.0.1", - "@celo/utils": "^7.0.0", - "@celo/wallet-base": "^6.0.1", + "@celo/connect": "^6.0.3-beta.0", + "@celo/utils": "^8.0.0-beta.0", + "@celo/wallet-base": "^6.0.2-beta.0", "@ethereumjs/util": "8.0.5", "@types/debug": "^4.1.5" }, diff --git a/packages/viem-account-ledger/CHANGELOG.md b/packages/viem-account-ledger/CHANGELOG.md index e69de29bb2..97cc31f3f8 100644 --- a/packages/viem-account-ledger/CHANGELOG.md +++ b/packages/viem-account-ledger/CHANGELOG.md @@ -0,0 +1,12 @@ +# @celo/viem-account-ledger + +## 1.0.0-beta.0 + +### Major Changes + +- [#344](https://github.com/celo-org/developer-tooling/pull/344) [`6bba5e3`](https://github.com/celo-org/developer-tooling/commit/6bba5e377cded1c8216c5cd1cadeb4b8b764df55) Thanks [@nicolasbrugneaux](https://github.com/nicolasbrugneaux)! - Initial release + +### Patch Changes + +- Updated dependencies [[`4ef76eb`](https://github.com/celo-org/developer-tooling/commit/4ef76eb174454f60304080d0ef63a859cd8d931b)]: + - @celo/base@7.0.0-beta.0 diff --git a/packages/viem-account-ledger/package.json b/packages/viem-account-ledger/package.json index 0dbe02670e..7635e5d1b2 100644 --- a/packages/viem-account-ledger/package.json +++ b/packages/viem-account-ledger/package.json @@ -1,6 +1,6 @@ { "name": "@celo/viem-account-ledger", - "version": "0.0.1", + "version": "1.0.0-beta.0", "description": "Helper library to make ledger<->viem interactions easier", "type": "module", "exports": { @@ -30,7 +30,7 @@ "viem": "2.x" }, "dependencies": { - "@celo/base": "^6.1.0", + "@celo/base": "^7.0.0-beta.0", "@celo/ledger-token-signer": "^0.4.0", "@ledgerhq/errors": "^6.16.4", "@ledgerhq/hw-app-eth": "git+https://github.com:celo-org/ledgerjs-hw-app-eth.git", diff --git a/yarn.lock b/yarn.lock index adf2cf9333..09a02fee26 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1638,7 +1638,14 @@ __metadata: languageName: node linkType: hard -"@celo/base@npm:^6.0.0, @celo/base@npm:^6.0.1, @celo/base@npm:^6.1.0, @celo/base@workspace:packages/sdk/base": +"@celo/base@npm:^6.0.0, @celo/base@npm:^6.0.1": + version: 6.1.0 + resolution: "@celo/base@npm:6.1.0" + checksum: e70a5b1313d5fafc2b048a0badc31d9de8f48dfe00eba60b45f6275f46a68ff82e90c5388dbbdd9eb6bdbed8dc91b7c86750587989e469c8dd94b71942951b7f + languageName: node + linkType: hard + +"@celo/base@npm:^7.0.0-beta.0, @celo/base@workspace:packages/sdk/base": version: 0.0.0-use.local resolution: "@celo/base@workspace:packages/sdk/base" dependencies: @@ -1681,23 +1688,23 @@ __metadata: resolution: "@celo/celocli@workspace:packages/cli" dependencies: "@celo/abis": "npm:11.0.0" - "@celo/base": "npm:^6.1.0" + "@celo/base": "npm:^7.0.0-beta.0" "@celo/celo-devchain": "npm:^7.0.0" "@celo/compliance": "npm:~1.0.23" - "@celo/connect": "npm:^6.0.2" - "@celo/contractkit": "npm:^8.3.0" - "@celo/cryptographic-utils": "npm:^5.1.0" - "@celo/dev-utils": "npm:0.0.5" - "@celo/explorer": "npm:^5.0.12" - "@celo/governance": "npm:^5.1.3" + "@celo/connect": "npm:^6.0.3-beta.0" + "@celo/contractkit": "npm:^9.0.0-beta.0" + "@celo/cryptographic-utils": "npm:^5.1.1-beta.0" + "@celo/dev-utils": "npm:0.0.6-beta.0" + "@celo/explorer": "npm:^5.0.13-beta.0" + "@celo/governance": "npm:^5.1.4-beta.0" "@celo/identity": "npm:^5.1.2" - "@celo/metadata-claims": "npm:^0.0.1" - "@celo/phone-utils": "npm:^6.0.3" + "@celo/metadata-claims": "npm:^1.0.0-beta.0" + "@celo/phone-utils": "npm:^6.0.4-beta.0" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" - "@celo/wallet-hsm-azure": "npm:^6.0.1" - "@celo/wallet-ledger": "npm:^6.0.1" - "@celo/wallet-local": "npm:^6.0.1" + "@celo/utils": "npm:^8.0.0-beta.0" + "@celo/wallet-hsm-azure": "npm:^6.0.2-beta.0" + "@celo/wallet-ledger": "npm:^6.0.2-beta.0" + "@celo/wallet-local": "npm:^6.0.2-beta.0" "@ethereumjs/util": "npm:8.0.5" "@ledgerhq/hw-transport-node-hid": "npm:^6.28.5" "@mento-protocol/mento-sdk": "npm:^1.0.1" @@ -1768,13 +1775,13 @@ __metadata: languageName: node linkType: hard -"@celo/connect@npm:^6.0.1, @celo/connect@npm:^6.0.2, @celo/connect@workspace:packages/sdk/connect": +"@celo/connect@npm:^6.0.3-beta.0, @celo/connect@workspace:packages/sdk/connect": version: 0.0.0-use.local resolution: "@celo/connect@workspace:packages/sdk/connect" dependencies: - "@celo/base": "npm:^6.1.0" + "@celo/base": "npm:^7.0.0-beta.0" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" + "@celo/utils": "npm:^8.0.0-beta.0" "@ethereumjs/util": "npm:8.0.5" "@types/debug": "npm:^4.1.12" "@types/utf8": "npm:^2.1.6" @@ -1814,20 +1821,20 @@ __metadata: languageName: node linkType: hard -"@celo/contractkit@npm:^8.1.1, @celo/contractkit@npm:^8.3.0, @celo/contractkit@workspace:^, @celo/contractkit@workspace:packages/sdk/contractkit": +"@celo/contractkit@npm:^9.0.0-beta.0, @celo/contractkit@workspace:^, @celo/contractkit@workspace:packages/sdk/contractkit": version: 0.0.0-use.local resolution: "@celo/contractkit@workspace:packages/sdk/contractkit" dependencies: "@celo/abis": "npm:11.0.0" "@celo/abis-12": "npm:@celo/abis@12.0.0-canary.35" - "@celo/base": "npm:^6.1.0" + "@celo/base": "npm:^7.0.0-beta.0" "@celo/celo-devchain": "npm:^7.0.0" - "@celo/connect": "npm:^6.0.2" - "@celo/dev-utils": "npm:0.0.5" + "@celo/connect": "npm:^6.0.3-beta.0" + "@celo/dev-utils": "npm:0.0.6-beta.0" "@celo/odis-identifiers": "npm:^1.0.1" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" - "@celo/wallet-local": "npm:^6.0.1" + "@celo/utils": "npm:^8.0.0-beta.0" + "@celo/wallet-local": "npm:^6.0.2-beta.0" "@truffle/contract": "npm:4.6.31" "@types/bn.js": "npm:^5.1.0" "@types/debug": "npm:^4.1.5" @@ -1848,14 +1855,14 @@ __metadata: languageName: unknown linkType: soft -"@celo/cryptographic-utils@npm:^5.1.0, @celo/cryptographic-utils@workspace:packages/sdk/cryptographic-utils": +"@celo/cryptographic-utils@npm:^5.1.1-beta.0, @celo/cryptographic-utils@workspace:packages/sdk/cryptographic-utils": version: 0.0.0-use.local resolution: "@celo/cryptographic-utils@workspace:packages/sdk/cryptographic-utils" dependencies: - "@celo/base": "npm:^6.1.0" + "@celo/base": "npm:^7.0.0-beta.0" "@celo/bls12377js": "npm:0.1.1" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" + "@celo/utils": "npm:^8.0.0-beta.0" "@noble/ciphers": "npm:0.4.1" "@noble/curves": "npm:1.3.0" "@noble/hashes": "npm:1.3.3" @@ -1866,12 +1873,12 @@ __metadata: languageName: unknown linkType: soft -"@celo/dev-utils@npm:0.0.5, @celo/dev-utils@workspace:packages/dev-utils": +"@celo/dev-utils@npm:0.0.6-beta.0, @celo/dev-utils@workspace:packages/dev-utils": version: 0.0.0-use.local resolution: "@celo/dev-utils@workspace:packages/dev-utils" dependencies: "@celo/abis": "npm:^11.0.0" - "@celo/connect": "npm:^6.0.1" + "@celo/connect": "npm:^6.0.3-beta.0" "@celo/devchain-anvil": "npm:12.0.0-canary.8" "@celo/typescript": "workspace:^" "@tsconfig/recommended": "npm:^1.0.3" @@ -1895,16 +1902,16 @@ __metadata: languageName: node linkType: hard -"@celo/explorer@npm:^5.0.12, @celo/explorer@workspace:packages/sdk/explorer": +"@celo/explorer@npm:^5.0.13-beta.0, @celo/explorer@workspace:packages/sdk/explorer": version: 0.0.0-use.local resolution: "@celo/explorer@workspace:packages/sdk/explorer" dependencies: - "@celo/base": "npm:^6.1.0" - "@celo/connect": "npm:^6.0.1" - "@celo/contractkit": "npm:^8.1.1" - "@celo/dev-utils": "npm:0.0.5" + "@celo/base": "npm:^7.0.0-beta.0" + "@celo/connect": "npm:^6.0.3-beta.0" + "@celo/contractkit": "npm:^9.0.0-beta.0" + "@celo/dev-utils": "npm:0.0.6-beta.0" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" + "@celo/utils": "npm:^8.0.0-beta.0" "@types/debug": "npm:^4.1.12" bignumber.js: "npm:9.0.0" cross-fetch: "npm:3.1.5" @@ -1914,17 +1921,17 @@ __metadata: languageName: unknown linkType: soft -"@celo/governance@npm:^5.1.3, @celo/governance@workspace:packages/sdk/governance": +"@celo/governance@npm:^5.1.4-beta.0, @celo/governance@workspace:packages/sdk/governance": version: 0.0.0-use.local resolution: "@celo/governance@workspace:packages/sdk/governance" dependencies: "@celo/abis": "npm:11.0.0" - "@celo/base": "npm:^6.1.0" - "@celo/connect": "npm:^6.0.1" - "@celo/contractkit": "npm:^8.1.1" - "@celo/explorer": "npm:^5.0.12" + "@celo/base": "npm:^7.0.0-beta.0" + "@celo/connect": "npm:^6.0.3-beta.0" + "@celo/contractkit": "npm:^9.0.0-beta.0" + "@celo/explorer": "npm:^5.0.13-beta.0" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" + "@celo/utils": "npm:^8.0.0-beta.0" "@ethereumjs/util": "npm:8.0.5" "@types/debug": "npm:^4.1.12" "@types/inquirer": "npm:^6.5.0" @@ -1961,8 +1968,8 @@ __metadata: resolution: "@celo/keystores@workspace:packages/sdk/keystores" dependencies: "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" - "@celo/wallet-local": "npm:^6.0.1" + "@celo/utils": "npm:^8.0.0-beta.0" + "@celo/wallet-local": "npm:^6.0.2-beta.0" "@types/rimraf": "npm:3.0.2" ethereumjs-wallet: "npm:^1.0.1" rimraf: "npm:3.0.2" @@ -1976,17 +1983,17 @@ __metadata: languageName: node linkType: hard -"@celo/metadata-claims@npm:^0.0.1, @celo/metadata-claims@workspace:packages/sdk/metadata-claims": +"@celo/metadata-claims@npm:^1.0.0-beta.0, @celo/metadata-claims@workspace:packages/sdk/metadata-claims": version: 0.0.0-use.local resolution: "@celo/metadata-claims@workspace:packages/sdk/metadata-claims" dependencies: - "@celo/base": "npm:^6.1.0" + "@celo/base": "npm:^7.0.0-beta.0" "@celo/celo-devchain": "npm:^7.0.0" "@celo/contractkit": "workspace:^" - "@celo/dev-utils": "npm:0.0.5" + "@celo/dev-utils": "npm:0.0.6-beta.0" "@celo/odis-identifiers": "npm:^1.0.1" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" + "@celo/utils": "npm:^8.0.0-beta.0" "@types/node": "npm:18.7.6" cross-fetch: "npm:3.1.5" fetch-mock: "npm:^10.0.7" @@ -2002,7 +2009,7 @@ __metadata: version: 0.0.0-use.local resolution: "@celo/network-utils@workspace:packages/sdk/network-utils" dependencies: - "@celo/dev-utils": "npm:0.0.5" + "@celo/dev-utils": "npm:0.0.6-beta.0" "@celo/typescript": "workspace:^" "@types/debug": "npm:^4.1.12" cross-fetch: "npm:3.1.5" @@ -2041,13 +2048,13 @@ __metadata: languageName: node linkType: hard -"@celo/phone-utils@npm:^6.0.3, @celo/phone-utils@workspace:packages/sdk/phone-utils": +"@celo/phone-utils@npm:^6.0.4-beta.0, @celo/phone-utils@workspace:packages/sdk/phone-utils": version: 0.0.0-use.local resolution: "@celo/phone-utils@workspace:packages/sdk/phone-utils" dependencies: - "@celo/base": "npm:^6.1.0" + "@celo/base": "npm:^7.0.0-beta.0" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" + "@celo/utils": "npm:^8.0.0-beta.0" "@types/country-data": "npm:^0.0.0" "@types/google-libphonenumber": "npm:^7.4.23" "@types/node": "npm:^18.7.16" @@ -2063,10 +2070,10 @@ __metadata: version: 0.0.0-use.local resolution: "@celo/transactions-uri@workspace:packages/sdk/transactions-uri" dependencies: - "@celo/base": "npm:^6.1.0" - "@celo/connect": "npm:^6.0.1" - "@celo/contractkit": "npm:^8.1.1" - "@celo/dev-utils": "npm:0.0.5" + "@celo/base": "npm:^7.0.0-beta.0" + "@celo/connect": "npm:^6.0.3-beta.0" + "@celo/contractkit": "npm:^9.0.0-beta.0" + "@celo/dev-utils": "npm:0.0.6-beta.0" "@celo/typescript": "workspace:^" "@types/bn.js": "npm:^5.1.0" "@types/debug": "npm:^4.1.5" @@ -2106,11 +2113,11 @@ __metadata: languageName: node linkType: hard -"@celo/utils@npm:^7.0.0, @celo/utils@workspace:^, @celo/utils@workspace:packages/sdk/utils": +"@celo/utils@npm:^8.0.0-beta.0, @celo/utils@workspace:^, @celo/utils@workspace:packages/sdk/utils": version: 0.0.0-use.local resolution: "@celo/utils@workspace:packages/sdk/utils" dependencies: - "@celo/base": "npm:^6.1.0" + "@celo/base": "npm:^7.0.0-beta.0" "@celo/typescript": "workspace:^" "@ethereumjs/rlp": "npm:^5.0.2" "@ethereumjs/util": "npm:8.0.5" @@ -2131,7 +2138,7 @@ __metadata: version: 0.0.0-use.local resolution: "@celo/viem-account-ledger@workspace:packages/viem-account-ledger" dependencies: - "@celo/base": "npm:^6.1.0" + "@celo/base": "npm:^7.0.0-beta.0" "@celo/ledger-token-signer": "npm:^0.4.0" "@celo/typescript": "workspace:^" "@celo/utils": "workspace:^" @@ -2172,14 +2179,14 @@ __metadata: languageName: node linkType: hard -"@celo/wallet-base@npm:^6.0.1, @celo/wallet-base@workspace:^, @celo/wallet-base@workspace:packages/sdk/wallets/wallet-base": +"@celo/wallet-base@npm:^6.0.2-beta.0, @celo/wallet-base@workspace:^, @celo/wallet-base@workspace:packages/sdk/wallets/wallet-base": version: 0.0.0-use.local resolution: "@celo/wallet-base@workspace:packages/sdk/wallets/wallet-base" dependencies: - "@celo/base": "npm:^6.1.0" - "@celo/connect": "npm:^6.0.1" + "@celo/base": "npm:^7.0.0-beta.0" + "@celo/connect": "npm:^6.0.3-beta.0" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" + "@celo/utils": "npm:^8.0.0-beta.0" "@ethereumjs/rlp": "npm:^5.0.2" "@ethereumjs/util": "npm:8.0.5" "@noble/curves": "npm:^1.3.0" @@ -2197,12 +2204,12 @@ __metadata: version: 0.0.0-use.local resolution: "@celo/wallet-hsm-aws@workspace:packages/sdk/wallets/wallet-hsm-aws" dependencies: - "@celo/connect": "npm:^6.0.1" + "@celo/connect": "npm:^6.0.3-beta.0" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" - "@celo/wallet-base": "npm:^6.0.1" - "@celo/wallet-hsm": "npm:^6.0.1" - "@celo/wallet-remote": "npm:^6.0.1" + "@celo/utils": "npm:^8.0.0-beta.0" + "@celo/wallet-base": "npm:^6.0.2-beta.0" + "@celo/wallet-hsm": "npm:^6.0.2-beta.0" + "@celo/wallet-remote": "npm:^6.0.2-beta.0" "@ethereumjs/util": "npm:8.0.5" "@noble/ciphers": "npm:0.4.1" "@noble/curves": "npm:1.3.0" @@ -2217,20 +2224,20 @@ __metadata: languageName: unknown linkType: soft -"@celo/wallet-hsm-azure@npm:^6.0.1, @celo/wallet-hsm-azure@workspace:packages/sdk/wallets/wallet-hsm-azure": +"@celo/wallet-hsm-azure@npm:^6.0.2-beta.0, @celo/wallet-hsm-azure@workspace:packages/sdk/wallets/wallet-hsm-azure": version: 0.0.0-use.local resolution: "@celo/wallet-hsm-azure@workspace:packages/sdk/wallets/wallet-hsm-azure" dependencies: "@azure/identity": "npm:^4.0.1" "@azure/keyvault-keys": "npm:^4.7.2" "@azure/keyvault-secrets": "npm:^4.7.0" - "@celo/base": "npm:^6.1.0" - "@celo/connect": "npm:^6.0.1" + "@celo/base": "npm:^7.0.0-beta.0" + "@celo/connect": "npm:^6.0.3-beta.0" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" - "@celo/wallet-base": "npm:^6.0.1" - "@celo/wallet-hsm": "npm:^6.0.1" - "@celo/wallet-remote": "npm:^6.0.1" + "@celo/utils": "npm:^8.0.0-beta.0" + "@celo/wallet-base": "npm:^6.0.2-beta.0" + "@celo/wallet-hsm": "npm:^6.0.2-beta.0" + "@celo/wallet-remote": "npm:^6.0.2-beta.0" "@ethereumjs/util": "npm:8.0.5" "@noble/ciphers": "npm:0.4.1" "@noble/curves": "npm:1.3.0" @@ -2248,12 +2255,12 @@ __metadata: version: 0.0.0-use.local resolution: "@celo/wallet-hsm-gcp@workspace:packages/sdk/wallets/wallet-hsm-gcp" dependencies: - "@celo/connect": "npm:^6.0.1" + "@celo/connect": "npm:^6.0.3-beta.0" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" - "@celo/wallet-base": "npm:^6.0.1" - "@celo/wallet-hsm": "npm:^6.0.1" - "@celo/wallet-remote": "npm:^6.0.1" + "@celo/utils": "npm:^8.0.0-beta.0" + "@celo/wallet-base": "npm:^6.0.2-beta.0" + "@celo/wallet-hsm": "npm:^6.0.2-beta.0" + "@celo/wallet-remote": "npm:^6.0.2-beta.0" "@ethereumjs/util": "npm:8.0.5" "@google-cloud/kms": "npm:~2.9.0" "@noble/ciphers": "npm:0.4.1" @@ -2268,11 +2275,11 @@ __metadata: languageName: unknown linkType: soft -"@celo/wallet-hsm@npm:^6.0.1, @celo/wallet-hsm@workspace:packages/sdk/wallets/wallet-hsm": +"@celo/wallet-hsm@npm:^6.0.2-beta.0, @celo/wallet-hsm@workspace:packages/sdk/wallets/wallet-hsm": version: 0.0.0-use.local resolution: "@celo/wallet-hsm@workspace:packages/sdk/wallets/wallet-hsm" dependencies: - "@celo/base": "npm:^6.1.0" + "@celo/base": "npm:^7.0.0-beta.0" "@celo/typescript": "workspace:^" "@ethereumjs/util": "npm:8.0.5" "@noble/ciphers": "npm:0.4.1" @@ -2287,18 +2294,18 @@ __metadata: languageName: unknown linkType: soft -"@celo/wallet-ledger@npm:^6.0.1, @celo/wallet-ledger@workspace:packages/sdk/wallets/wallet-ledger": +"@celo/wallet-ledger@npm:^6.0.2-beta.0, @celo/wallet-ledger@workspace:packages/sdk/wallets/wallet-ledger": version: 0.0.0-use.local resolution: "@celo/wallet-ledger@workspace:packages/sdk/wallets/wallet-ledger" dependencies: - "@celo/base": "npm:^6.1.0" - "@celo/connect": "npm:^6.0.1" - "@celo/contractkit": "npm:^8.1.1" + "@celo/base": "npm:^7.0.0-beta.0" + "@celo/connect": "npm:^6.0.3-beta.0" + "@celo/contractkit": "npm:^9.0.0-beta.0" "@celo/ledger-token-signer": "npm:^0.4.0" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" - "@celo/wallet-base": "npm:^6.0.1" - "@celo/wallet-remote": "npm:^6.0.1" + "@celo/utils": "npm:^8.0.0-beta.0" + "@celo/wallet-base": "npm:^6.0.2-beta.0" + "@celo/wallet-remote": "npm:^6.0.2-beta.0" "@ethereumjs/util": "npm:8.0.5" "@ledgerhq/errors": "npm:^6.16.4" "@ledgerhq/hw-app-eth": "git+https://github.com:celo-org/ledgerjs-hw-app-eth.git" @@ -2329,15 +2336,15 @@ __metadata: languageName: node linkType: hard -"@celo/wallet-local@npm:^6.0.1, @celo/wallet-local@workspace:packages/sdk/wallets/wallet-local": +"@celo/wallet-local@npm:^6.0.2-beta.0, @celo/wallet-local@workspace:packages/sdk/wallets/wallet-local": version: 0.0.0-use.local resolution: "@celo/wallet-local@workspace:packages/sdk/wallets/wallet-local" dependencies: - "@celo/base": "npm:^6.1.0" - "@celo/connect": "npm:^6.0.1" + "@celo/base": "npm:^7.0.0-beta.0" + "@celo/connect": "npm:^6.0.3-beta.0" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" - "@celo/wallet-base": "npm:^6.0.1" + "@celo/utils": "npm:^8.0.0-beta.0" + "@celo/wallet-base": "npm:^6.0.2-beta.0" "@ethereumjs/util": "npm:8.0.5" "@types/debug": "npm:^4.1.12" debug: "npm:^4.3.5" @@ -2346,14 +2353,14 @@ __metadata: languageName: unknown linkType: soft -"@celo/wallet-remote@npm:^6.0.1, @celo/wallet-remote@workspace:^, @celo/wallet-remote@workspace:packages/sdk/wallets/wallet-remote": +"@celo/wallet-remote@npm:^6.0.2-beta.0, @celo/wallet-remote@workspace:^, @celo/wallet-remote@workspace:packages/sdk/wallets/wallet-remote": version: 0.0.0-use.local resolution: "@celo/wallet-remote@workspace:packages/sdk/wallets/wallet-remote" dependencies: - "@celo/connect": "npm:^6.0.1" + "@celo/connect": "npm:^6.0.3-beta.0" "@celo/typescript": "workspace:^" - "@celo/utils": "npm:^7.0.0" - "@celo/wallet-base": "npm:^6.0.1" + "@celo/utils": "npm:^8.0.0-beta.0" + "@celo/wallet-base": "npm:^6.0.2-beta.0" "@ethereumjs/util": "npm:8.0.5" "@types/debug": "npm:^4.1.5" web3: "npm:1.10.4" From c0c1644e5bc00c10c2d97b7544d916f4559e9fa0 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Mon, 14 Oct 2024 16:05:46 +0200 Subject: [PATCH 12/54] doc generation for viem to account ledger (#390) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Description It looks like our new package was not included in docs. ### Other changes I narrowed which files were included in docs to just the functions and constants actually exported publically ### Tested --- ## PR-Codex overview This PR focuses on enhancing the `@celo/viem-account-ledger` library by updating type definitions, improving documentation, and modifying the CI workflow to include all package directories. ### Detailed summary - Updated `Hex` type definition in `types.ts`. - Added module documentation in `modules.md`. - Updated `typedoc.json` to include README and entry points. - Modified CI workflow to track all package directories. - Changed `LedgerAccount` type to be exported in `ledger-to-account.ts`. - Added detailed documentation for `ledgerToAccount` function. - Enhanced README with installation and usage instructions. - Created detailed module documentation for `ledger-to-account`. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- .github/workflows/ci.yml | 3 +- packages/docs/viem-account-ledger/README.md | 57 ++++++++++++ packages/docs/viem-account-ledger/modules.md | 10 +++ .../docs/viem-account-ledger/modules/index.md | 29 +++++++ .../modules/ledger_to_account.md | 86 +++++++++++++++++++ packages/viem-account-ledger/src/data.ts | 2 + .../src/ledger-to-account.ts | 11 ++- packages/viem-account-ledger/src/types.ts | 1 + packages/viem-account-ledger/typedoc.json | 5 +- 9 files changed, 199 insertions(+), 5 deletions(-) create mode 100644 packages/docs/viem-account-ledger/README.md create mode 100644 packages/docs/viem-account-ledger/modules.md create mode 100644 packages/docs/viem-account-ledger/modules/index.md create mode 100644 packages/docs/viem-account-ledger/modules/ledger_to_account.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c29d07e8b1..03ac8102b3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -317,9 +317,8 @@ jobs: needs: [install-dependencies] if: | github.base_ref == 'master' || contains(github.base_ref, 'staging') || contains(github.base_ref, 'production') || - contains(needs.install-dependencies.outputs.all_modified_files, 'packages/cli') || + contains(needs.install-dependencies.outputs.all_modified_files, 'packages/**') || contains(needs.install-dependencies.outputs.all_modified_files, 'packages/sdk') || - contains(needs.install-dependencies.outputs.all_modified_files, 'packages/typescript') || contains(needs.install-dependencies.outputs.all_modified_files, ',package.json') || contains(needs.install-dependencies.outputs.all_modified_files, ',yarn.lock') || false diff --git a/packages/docs/viem-account-ledger/README.md b/packages/docs/viem-account-ledger/README.md new file mode 100644 index 0000000000..c6a6f6e8ab --- /dev/null +++ b/packages/docs/viem-account-ledger/README.md @@ -0,0 +1,57 @@ +@celo/viem-account-ledger / [Modules](modules.md) + +# @celo/viem-account-ledger + +This library aims to ease the usage of a ledger device with (viem)[https://viem.sh/]. + +## Installation + +```bash +npm install @celo/viem-account-ledger viem@2 @ledgerhq/transport-node-hid@6.x +# or yarn or bun or ... +``` + +> [!IMPORTANT] > `viem` is a peer dependency and MUST be installed alongside this library. +> `@ledgerhq/transport-node-hid` is a peer dependency and MUST be installed alongside this library. + +## Usage + +```ts +import TransportNodeHid from '@ledgerhq/hw-transport-node-hid' +import { createWalletClient } from 'viem' +import { celo, celoAlfajores } from 'viem/chains' +import { ledgerToAccount } from '@celo/viem-account-ledger' + +async function main() => { + const account = await ledgerToAccount({ + transport: await TransportNodeHid.open(''), + }) + const client = createWalletClient({ + account, + chain: celo, + transport: http() + }); + await client.sendTransaction({ + to: '0x123...', + value: 10n, + feeCurrency: '0x123...' + }); +} +``` + +You can also use the `account` directly eg: + +```ts +const account = await ledgerToAccount({ + transport: await TransportNodeHid.open(''), +}) +account.signTransaction({ + to: '0x123...', + value: 123n, + chainId: celoAlfajores.id, + nonce: 42, + maxFeePerGas: 100n, + maxPriorityFeePerGas: 100n, + feeCurrency: '0x123...', +}) +``` diff --git a/packages/docs/viem-account-ledger/modules.md b/packages/docs/viem-account-ledger/modules.md new file mode 100644 index 0000000000..605257c8e0 --- /dev/null +++ b/packages/docs/viem-account-ledger/modules.md @@ -0,0 +1,10 @@ +[@celo/viem-account-ledger](README.md) / Modules + +# @celo/viem-account-ledger + +## Table of contents + +### Modules + +- [index](modules/index.md) +- [ledger-to-account](modules/ledger_to_account.md) diff --git a/packages/docs/viem-account-ledger/modules/index.md b/packages/docs/viem-account-ledger/modules/index.md new file mode 100644 index 0000000000..20cd19a72c --- /dev/null +++ b/packages/docs/viem-account-ledger/modules/index.md @@ -0,0 +1,29 @@ +[@celo/viem-account-ledger](../README.md) / [Modules](../modules.md) / index + +# Module: index + +## Table of contents + +### References + +- [CELO\_BASE\_DERIVATION\_PATH](index.md#celo_base_derivation_path) +- [DEFAULT\_DERIVATION\_PATH](index.md#default_derivation_path) +- [ledgerToAccount](index.md#ledgertoaccount) + +## References + +### CELO\_BASE\_DERIVATION\_PATH + +Re-exports [CELO_BASE_DERIVATION_PATH](ledger_to_account.md#celo_base_derivation_path) + +___ + +### DEFAULT\_DERIVATION\_PATH + +Re-exports [DEFAULT_DERIVATION_PATH](ledger_to_account.md#default_derivation_path) + +___ + +### ledgerToAccount + +Re-exports [ledgerToAccount](ledger_to_account.md#ledgertoaccount) diff --git a/packages/docs/viem-account-ledger/modules/ledger_to_account.md b/packages/docs/viem-account-ledger/modules/ledger_to_account.md new file mode 100644 index 0000000000..f88e9f9919 --- /dev/null +++ b/packages/docs/viem-account-ledger/modules/ledger_to_account.md @@ -0,0 +1,86 @@ +[@celo/viem-account-ledger](../README.md) / [Modules](../modules.md) / ledger-to-account + +# Module: ledger-to-account + +## Table of contents + +### Type Aliases + +- [LedgerAccount](ledger_to_account.md#ledgeraccount) + +### Variables + +- [CELO\_BASE\_DERIVATION\_PATH](ledger_to_account.md#celo_base_derivation_path) +- [DEFAULT\_DERIVATION\_PATH](ledger_to_account.md#default_derivation_path) +- [ETH\_DERIVATION\_PATH\_BASE](ledger_to_account.md#eth_derivation_path_base) + +### Functions + +- [ledgerToAccount](ledger_to_account.md#ledgertoaccount) + +## Type Aliases + +### LedgerAccount + +Ƭ **LedgerAccount**: `LocalAccount`\<``"ledger"``\> + +#### Defined in + +[ledger-to-account.ts:10](https://github.com/celo-org/developer-tooling/blob/master/packages/viem-account-ledger/src/ledger-to-account.ts#L10) + +## Variables + +### CELO\_BASE\_DERIVATION\_PATH + +• `Const` **CELO\_BASE\_DERIVATION\_PATH**: `string` + +#### Defined in + +[ledger-to-account.ts:13](https://github.com/celo-org/developer-tooling/blob/master/packages/viem-account-ledger/src/ledger-to-account.ts#L13) + +___ + +### DEFAULT\_DERIVATION\_PATH + +• `Const` **DEFAULT\_DERIVATION\_PATH**: `string` + +#### Defined in + +[ledger-to-account.ts:14](https://github.com/celo-org/developer-tooling/blob/master/packages/viem-account-ledger/src/ledger-to-account.ts#L14) + +___ + +### ETH\_DERIVATION\_PATH\_BASE + +• `Const` **ETH\_DERIVATION\_PATH\_BASE**: ``"m/44'/60'/0'"`` + +#### Defined in + +[ledger-to-account.ts:12](https://github.com/celo-org/developer-tooling/blob/master/packages/viem-account-ledger/src/ledger-to-account.ts#L12) + +## Functions + +### ledgerToAccount + +▸ **ledgerToAccount**(`options`): `Promise`\<[`LedgerAccount`](ledger_to_account.md#ledgeraccount)\> + +A function to create a ledger account for viem + +#### Parameters + +| Name | Type | Default value | Description | +| :------ | :------ | :------ | :------ | +| `options` | `Object` | `undefined` | | +| `options.baseDerivationPath?` | `string` | `DEFAULT_DERIVATION_PATH` | defaults to "m/44'/60'/0" | +| `options.derivationPathIndex?` | `string` \| `number` | `0` | aka addressIndex | +| `options.transport` | `default` | `undefined` | a Ledger Transport | + +#### Returns + +`Promise`\<[`LedgerAccount`](ledger_to_account.md#ledgeraccount)\> + +a viem LocalAccount<"ledger"> + +#### Defined in + +[ledger-to-account.ts:25](https://github.com/celo-org/developer-tooling/blob/master/packages/viem-account-ledger/src/ledger-to-account.ts#L25) diff --git a/packages/viem-account-ledger/src/data.ts b/packages/viem-account-ledger/src/data.ts index d348d97953..8cdf5130a4 100644 --- a/packages/viem-account-ledger/src/data.ts +++ b/packages/viem-account-ledger/src/data.ts @@ -1,6 +1,7 @@ // export default 'AAAAaARDRUxPRx7ON1DaI3+TuOM5xTaYm4l4pDgAAAASAACk7DBFAiEA5rECRg94+fCoIvoG9/5qWh62zl2C6Y+aFuuZrFe4CtcCIEJbRrkL3gqwT/Jj+7L3neazgpVCCTZZ3HX9JXXg5vleAAAAaARjVVNEdl3oFoRYYedaJfyhIrtomLixKCoAAAASAACk7DBFAiEApwQFHNBKXp+V2jq8BMD2y/5AwC9bhPQ2H4hT/vMl/B4CIFalOVtBFGREUKMU/F5vDlJLeQrTn6GQeDertpB2FpMvAAAAaARjRVVS2HY8uidqNzjm3oW0s79f3tbWynMAAAASAACk7DBFAiEAh2UeP1+SI2Ed5SiAjpJF6MkMrVa94gUwjJztyBlzhWMCIHfaOrEsxdxAGx+P+hxuSNO4zcw6KRLfJkkuic1V/CrHAAAAagZiIENFTE/dyb5X9VP+dXUtYWBrlMvX4CZO+AAAABIAAPNwMEUCIQCi62KsBfuNcfX0MriiRZ7a5DKERhtIz7sZ1SqBT7ruhgIgVrfmavyWzxzDW4AQeHn++A4qPjB1pQKoHvNXo8Hf1SMAAABpBmIgY1VTRGJJKmRKWI/ZBCcL7QatUrmr/qGuAAAAEgAA83AwRAIgGDYx4oB/gkYUqLeXqvEZXx9nOxVHzTe2ajyd2wnehxgCICQBe/rBPcXiaQJj3pdoXxroct/hV6r3G2G7y79EOEAPAAAAaQZiIGNFVVL57OMBJHrSziGJSUGDCiRw9Od0ygAAABIAAPNwMEQCIEdcFWP+HxEUoF1sCGVd34QGS0hL5cVUdrWdqVm3bYTgAiBCMA+Rg3Ubc3xla/35wzZesPlbeSMEPcr4uqL+8PeydwAAAGoGYSBDRUxP8ZSv31CwPmm9fQV8GqnhDJlU5MkAAAASAACu8zBFAiEAk/o0FBus2/QCrunFGEyoneQIRaMRC+y5L6Dvar8MU/kCIByJt2ziRhDG3AAbyXBIuJfZQujSHFcSJL3xF0xIlcPdAAAAaQZhIGNVU0SHQGn6HrFtRNYi8uDKJe6hcjabwQAAABIAAK7zMEQCIClrH2xgE3WMbD+hgQ7t5SiAcVG5WiUZ655voqCszKEoAiA/cO8UVgNY891MNJ5yeDk8w47WO0E1DQecrK71LR8g8gAAAGoGYSBjRVVSEMiSpuxDpT5F0LkWtLfTg7G3jA8AAAASAACu8zBFAiEAgpktbB1ZxyAwMJwKTSbZ30n8zgRuW0twbXoZxlsUAswCIHek4l4CIbjVMG2HVr0Ml9/8kA4F9dr69JBMaoSUkdKl' // This was signed by Marek Olszewski on Wed 18 June 2024 +/** @internal */ export default 'AAAAZwRVU0RUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAACk7DBEAiA45AhZco0/POPgpuUPBqRnGG1SfGPpXE8+Hckw0dZLCQIgWteUoWhghs0KwxfgX2P0jJ2gYQEAbq6J+mWfSs9yWzcAAABnBFVTRFQOKj4FvJoW9SkqYXBFanEMuJxvcgAAABIAAKTsMEQCIAl/QSQA3JAF4c+otYCNG+JghDIV17habVFg/kLOLG9UAiAY+PSK6WBYObKt8OObZHKiAVWHOaI0E26OC61ytGCN4wAAAGgEVVNEQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAApOwwRQIhAJAwutARDDU/EgrpV1SYRuLsKR/JjkYP4rRT6InIlo8GAiAgyuHrUNUuEdfijlmY8UWzR/jzLzycmkjEjL8qV06GvwAAAGcEVVNEQy8l3rOEjCB/yODDQDWzun/BV2ArAAAAEgAApOwwRAIgVYSG4e4JD7mbHMdOd29i5c4872THYeVWqDsb6ZE0JA4CIGVsHMurIGTBw1WUJqmOsBXUBlP5bhljUufw9jgQKq7JAAAAaARlWE9Gc/k9zEnLiiOeIDJmPpR13V7ymggAAAASAACk7DBFAiEA31wGJ9NfYN5Ujs3qkNxXowT73iNAxrBw7SdHTfLn47UCIH0fhGCTysFEdN31WIVCvkgoB2VKaF7Q6i8sZFOj++4XAAAAaARjVVNEdl3oFoRYYedaJfyhIrtomLixKCoAAAASAACk7DBFAiEApwQFHNBKXp+V2jq8BMD2y/5AwC9bhPQ2H4hT/vMl/B4CIFalOVtBFGREUKMU/F5vDlJLeQrTn6GQeDertpB2FpMvAAAAaARjRVVS2HY8uidqNzjm3oW0s79f3tbWynMAAAASAACk7DBFAiEAh2UeP1+SI2Ed5SiAjpJF6MkMrVa94gUwjJztyBlzhWMCIHfaOrEsxdxAGx+P+hxuSNO4zcw6KRLfJkkuic1V/CrHAAAAaAVjUkVBTOhTej0FbaRGZ3uenWxdtwTqq0eHAAAAEgAApOwwRAIgKq0LIfD4D+gU3xANTkNfCrpo8CBBZlpasrsjd/E3YuoCICU2CvRG4xPmFzmmDLIjvN2ARrjqtkwAjLeQ8jUxRbZIAAAAaQZiIGNVU0RiSSpkSliP2QQnC+0GrVK5q/6hrgAAABIAAPNwMEQCIBg2MeKAf4JGFKi3l6rxGV8fZzsVR803tmo8ndsJ3ocYAiAkAXv6wT3F4mkCY96XaF8a6HLf4Veq9xthu8u/RDhADwAAAGkGYiBlWE9GZMHYEmc+k7wDatw9VH2ZUGltpa8AAAASAADzcDBEAiAL0g/ZekAf2Zok/7GXeIcwKMibuiLprWKUDIxl8BcLRwIgJBOEVGXOISlfVmuqdUWrbR2xR9DNYafBO4wCxQN2mUEAAABqB2IgY1JFQUxqDu8r7Uww3Cy0L+bF8B+A9+8W0QAAABIAAPNwMEQCIAuSOFoyw6PPiuegcqMLtpvPU5ip23jlQKvjcggLxT0UAiAiVDv5VON1+peijMemQCD3Gvcz+BtCAgC60z76+mm2xQAAAGkGYiBjRVVS+ezjASR60s4hiUlBgwokcPTndMoAAAASAADzcDBEAiBHXBVj/h8RFKBdbAhlXd+EBktIS+XFVHa1nalZt22E4AIgQjAPkYN1G3N8ZWv9+cM2XrD5W3kjBD3K+Lqi/vD3sncAAABoBGEgRyQD09q4Q+bAOz0nHv+ReOapbCjSXwAAABIAAK7zMEUCIQCZTGG2AjD7sgxeavTx9xhfi8TEkEGv83Es3sl31NVjwwIgdUpDy6iaoiJbHxT/0/tiHs8FGYYdKRE1EPzMUIcm2+oAAABqBmEgY0VVUhDIkqbsQ6U+RdC5FrS304Oxt4wPAAAAEgAArvMwRQIhAIKZLWwdWccgMDCcCk0m2d9J/M4EbltLcG16GcZbFALMAiB3pOJeAiG41TBth1a9DJff/JAOBfXa+vSQTGqElJHSpQAAAGkFYSBFRkMa17YXy2xRVqbepuR1FNFkdrmfOAAAAAYAAK7zMEUCIQDIjpFbbedbDHebk1HaK2VoxHzTe8Tkn5VrB2KCne0i5QIgF8g1CYG9jclyquUUxC+vPprZPnCSSroJxMWhYIxgRtAAAABqBmEgVVNEQ0gi5Y3m9eSF75DfUcQc4BchMx3AAAAABgAArvMwRQIhANOSBnG6FiIl0EprRvWagcC7r8EJyzkC0XKum71zUQXAAiASh91Kt5m0jm7BVXRZou1xV+8DwCs4Nn3oT+Ogb1NRdAAAAGgFYSBFRkN9AneQmY9xSylMlv2p4nr1htHrtQAAAAYAAK7zMEQCICnuUijiwCApPFmsqpFcI3KdDgI4ueArA6Xgc9pd31ROAiBMr8ljj6A7N3vgklG8sSNAvbCB+WujFTtZFWYGwYHFrwAAAGkGYSBjVVNEh0Bp+h6xbUTWIvLgyiXuoXI2m8EAAAASAACu8zBEAiApax9sYBN1jGw/oYEO7eUogHFRuVolGeueb6KgrMyhKAIgP3DvFFYDWPPdTDSecng5PMOO1jtBNQ0HnKyu9S0fIPIAAABpBmEgZVhPRrD6FeACUW0DAYhAWcCqwPDHKwGdAAAAEgAArvMwRAIgIBy2pPKNIi1HG3FrxikDxfZL0NZQcKhUKMFiaiu0cxsCIDyeMa3QZM71diszR3uNso9U+mmB9AxMzVL6RLHmjRlbAAAAagZhIFVTRFTE+G6bSliNUBwcPiVijf1QvI1hXgAAABIAAK7zMEUCIQDX0yUA7NuyMcn52Q3o4f5aouT7hqLRDK05zaSapCT3qAIgDW3F0IpF386QYNiGqThC4a5OsgII7Kfz/qW6EYq1+VQAAABrB2EgY1JFQUzk1Rd4XQkdPFSBiDLbYJS8wnRFRQAAABIAAK7zMEUCIQDVjhKnLdzKU84vV/13nvvshLsaCC4IfzLFmieUNniSMAIgMCRja6R+GcT2OFVF8ClIx/7ZBlIHEIqooo/8Bnpy1sc=' // How did we get this? By following these steps: @@ -11,6 +12,7 @@ export default 'AAAAZwRVU0RUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAACk7DBEAiA45AhZco0/ // 5 - and store it in key `KEY=04b06cf5d8f7ed71d8bd9b9dc37944a1c6d240f69bb0be3621dddbb6ac0eccd1508bcc2ea46227e43b941e2c6f1b1cd0ae68e54b185e2cabef3455580604bd45b8` // 5 - finally run `echo $ASN1_PREFIX$KEY | xxd -r -p - | openssl ec -inform der -pubin -pubout` // 6 - enjoy +/** @internal */ export const legacyLedgerPublicKeyHex = [ `-----BEGIN PUBLIC KEY-----`, `MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEsGz12Pftcdi9m53DeUShxtJA9puwvjYh`, diff --git a/packages/viem-account-ledger/src/ledger-to-account.ts b/packages/viem-account-ledger/src/ledger-to-account.ts index 3c8e1df056..c621270a77 100644 --- a/packages/viem-account-ledger/src/ledger-to-account.ts +++ b/packages/viem-account-ledger/src/ledger-to-account.ts @@ -7,12 +7,21 @@ import { CeloTransactionSerializable, serializeTransaction } from 'viem/celo' import { checkForKnownToken, generateLedger } from './utils.js' -type LedgerAccount = LocalAccount<'ledger'> +export type LedgerAccount = LocalAccount<'ledger'> export const ETH_DERIVATION_PATH_BASE = "m/44'/60'/0'" as const export const CELO_BASE_DERIVATION_PATH = `${CELO_DERIVATION_PATH_BASE.slice(2)}/0` export const DEFAULT_DERIVATION_PATH = `${ETH_DERIVATION_PATH_BASE.slice(2)}/0` +/** + * A function to create a ledger account for viem + * @param options + * @param options.transport a Ledger Transport + * @param options.derivationPathIndex aka addressIndex + * @param options.baseDerivationPath defaults to "m/44'/60'/0" + * + * @returns a viem LocalAccount<"ledger"> + */ export async function ledgerToAccount({ transport, derivationPathIndex = 0, diff --git a/packages/viem-account-ledger/src/types.ts b/packages/viem-account-ledger/src/types.ts index 0a1099279c..9fd99c9a7e 100644 --- a/packages/viem-account-ledger/src/types.ts +++ b/packages/viem-account-ledger/src/types.ts @@ -1 +1,2 @@ +/** @internal */ export type Hex = `0x${string}` diff --git a/packages/viem-account-ledger/typedoc.json b/packages/viem-account-ledger/typedoc.json index 27e4b830bd..c18df7f9ef 100644 --- a/packages/viem-account-ledger/typedoc.json +++ b/packages/viem-account-ledger/typedoc.json @@ -5,8 +5,9 @@ "hideGenerator": true, "out": "../docs/viem-account-ledger", "gitRevision": "master", - "readme": "none", - "entryPoints": ["./src"], + "readme": "./README.md", + "entryPoints": ["./src/index.ts", "./src/ledger-to-account.ts"], + "excludeInternal": true, "githubPages": false, "plugin": ["typedoc-plugin-markdown"], "entryPointStrategy": "expand" From 38fe4d018d1b9ed5954a17501bdaa59b0aeec2f2 Mon Sep 17 00:00:00 2001 From: Leszek Stachowski Date: Wed, 23 Oct 2024 17:03:53 +0200 Subject: [PATCH 13/54] Remove deprecations (#400) --- .changeset/calm-sheep-tie.md | 5 + .changeset/smart-guests-refuse.md | 5 + .../contractkit/classes/kit.ContractKit.md | 68 +++++----- .../wrappers_BaseSlasher.BaseSlasher.md | 2 +- ...perForGoverning.BaseWrapperForGoverning.md | 2 +- ...ningSlasher.DoubleSigningSlasherWrapper.md | 2 +- ..._DowntimeSlasher.DowntimeSlasherWrapper.md | 14 +- .../wrappers_Election.ElectionWrapper.md | 4 +- ...appers_EpochManager.EpochManagerWrapper.md | 53 ++++++-- ...ppers_GoldTokenWrapper.GoldTokenWrapper.md | 2 +- .../wrappers_Governance.GovernanceWrapper.md | 4 +- .../wrappers_LockedGold.LockedGoldWrapper.md | 2 +- ...wrappers_ReleaseGold.ReleaseGoldWrapper.md | 2 +- ...appers_ScoreManager.ScoreManagerWrapper.md | 5 +- .../wrappers_Validators.ValidatorsWrapper.md | 4 +- .../modules/wrappers_DowntimeSlasher.md | 2 +- .../modules/wrappers_EpochManager.md | 2 +- .../commands/governance/approve-l2.test.ts | 10 +- .../src/commands/governance/approve.test.ts | 8 +- .../__snapshots__/contracts-l2.test.ts.snap | 128 +++++++++--------- .../__snapshots__/contracts.test.ts.snap | 128 +++++++++--------- packages/cli/src/commands/network/info.ts | 3 +- .../commands/network/parameters-l2.test.ts | 10 +- .../src/commands/network/parameters.test.ts | 4 +- .../src/commands/network/whitelist-l2.test.ts | 26 ++-- .../src/commands/network/whitelist.test.ts | 6 +- .../cli/src/commands/transfer/celo.test.ts | 6 +- packages/dev-utils/package.json | 2 +- packages/sdk/contractkit/package.json | 2 +- packages/sdk/contractkit/src/kit-l2.test.ts | 70 +++++++++- packages/sdk/contractkit/src/kit.test.ts | 15 ++ packages/sdk/contractkit/src/kit.ts | 65 ++++++--- .../src/wrappers/BaseWrapperForGoverning.ts | 2 + .../src/wrappers/DowntimeSlasher-l2.test.ts | 36 +++++ .../src/wrappers/DowntimeSlasher.test.ts | 23 ++++ .../src/wrappers/DowntimeSlasher.ts | 14 +- .../src/wrappers/EpochManager.test.ts | 13 +- .../contractkit/src/wrappers/EpochManager.ts | 9 +- .../FeeCurrencyDirectoryWrapper.test.ts | 30 ++-- .../FeeCurrencyWhitelistWrapper.test.ts | 14 +- .../src/wrappers/Governance-l2.test.ts | 6 +- .../src/wrappers/Governance.test.ts | 10 +- .../contractkit/src/wrappers/Governance.ts | 2 +- .../src/wrappers/ScoreManager.test.ts | 2 +- yarn.lock | 20 +-- 45 files changed, 532 insertions(+), 310 deletions(-) create mode 100644 .changeset/calm-sheep-tie.md create mode 100644 .changeset/smart-guests-refuse.md create mode 100644 packages/sdk/contractkit/src/wrappers/DowntimeSlasher-l2.test.ts create mode 100644 packages/sdk/contractkit/src/wrappers/DowntimeSlasher.test.ts diff --git a/.changeset/calm-sheep-tie.md b/.changeset/calm-sheep-tie.md new file mode 100644 index 0000000000..f4c719d150 --- /dev/null +++ b/.changeset/calm-sheep-tie.md @@ -0,0 +1,5 @@ +--- +'@celo/dev-utils': patch +--- + +Upgrades to latest devchain diff --git a/.changeset/smart-guests-refuse.md b/.changeset/smart-guests-refuse.md new file mode 100644 index 0000000000..64d3c76cc2 --- /dev/null +++ b/.changeset/smart-guests-refuse.md @@ -0,0 +1,5 @@ +--- +'@celo/contractkit': patch +--- + +Renames `getElected` and its usages to `getElectedAccounts` for `EpochManagerWrapper` diff --git a/docs/sdk/contractkit/classes/kit.ContractKit.md b/docs/sdk/contractkit/classes/kit.ContractKit.md index 1140719a76..b1a31bc576 100644 --- a/docs/sdk/contractkit/classes/kit.ContractKit.md +++ b/docs/sdk/contractkit/classes/kit.ContractKit.md @@ -65,7 +65,7 @@ #### Defined in -[packages/sdk/contractkit/src/kit.ts:114](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L114) +[packages/sdk/contractkit/src/kit.ts:115](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L115) ## Properties @@ -77,7 +77,7 @@ factory for core contract's native web3 wrappers #### Defined in -[packages/sdk/contractkit/src/kit.ts:105](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L105) +[packages/sdk/contractkit/src/kit.ts:106](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L106) ___ @@ -89,7 +89,7 @@ helper for interacting with CELO & stable tokens #### Defined in -[packages/sdk/contractkit/src/kit.ts:109](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L109) +[packages/sdk/contractkit/src/kit.ts:110](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L110) ___ @@ -99,7 +99,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:114](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L114) +[packages/sdk/contractkit/src/kit.ts:115](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L115) ___ @@ -111,7 +111,7 @@ factory for core contract's kit wrappers #### Defined in -[packages/sdk/contractkit/src/kit.ts:107](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L107) +[packages/sdk/contractkit/src/kit.ts:108](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L108) ___ @@ -125,7 +125,7 @@ no longer needed since gasPrice is available on node rpc #### Defined in -[packages/sdk/contractkit/src/kit.ts:112](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L112) +[packages/sdk/contractkit/src/kit.ts:113](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L113) ___ @@ -137,7 +137,7 @@ core contract's address registry #### Defined in -[packages/sdk/contractkit/src/kit.ts:103](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L103) +[packages/sdk/contractkit/src/kit.ts:104](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L104) ## Accessors @@ -151,7 +151,7 @@ core contract's address registry #### Defined in -[packages/sdk/contractkit/src/kit.ts:332](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L332) +[packages/sdk/contractkit/src/kit.ts:359](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L359) • `set` **defaultAccount**(`address`): `void` @@ -167,7 +167,7 @@ core contract's address registry #### Defined in -[packages/sdk/contractkit/src/kit.ts:328](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L328) +[packages/sdk/contractkit/src/kit.ts:355](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L355) ___ @@ -181,7 +181,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:348](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L348) +[packages/sdk/contractkit/src/kit.ts:375](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L375) • `set` **defaultFeeCurrency**(`address`): `void` @@ -197,7 +197,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:344](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L344) +[packages/sdk/contractkit/src/kit.ts:371](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L371) ___ @@ -211,7 +211,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:340](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L340) +[packages/sdk/contractkit/src/kit.ts:367](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L367) • `set` **gasInflationFactor**(`factor`): `void` @@ -227,7 +227,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:336](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L336) +[packages/sdk/contractkit/src/kit.ts:363](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L363) ___ @@ -241,7 +241,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:379](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L379) +[packages/sdk/contractkit/src/kit.ts:406](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L406) ## Methods @@ -261,7 +261,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:324](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L324) +[packages/sdk/contractkit/src/kit.ts:351](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L351) ___ @@ -291,7 +291,7 @@ https://github.com/celo-org/celo-proposals/blob/master/CIPs/cip-0066.md #### Defined in -[packages/sdk/contractkit/src/kit.ts:298](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L298) +[packages/sdk/contractkit/src/kit.ts:325](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L325) ___ @@ -311,7 +311,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:244](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L244) +[packages/sdk/contractkit/src/kit.ts:260](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L260) ___ @@ -319,13 +319,17 @@ ___ ▸ **getEpochSize**(): `Promise`\<`number`\> +This method returns for: +- L1: epoch size (in blocks) +- L2: epoch duration (in seconds) + #### Returns `Promise`\<`number`\> #### Defined in -[packages/sdk/contractkit/src/kit.ts:220](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L220) +[packages/sdk/contractkit/src/kit.ts:224](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L224) ___ @@ -345,7 +349,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:228](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L228) +[packages/sdk/contractkit/src/kit.ts:236](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L236) ___ @@ -359,7 +363,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:204](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L204) +[packages/sdk/contractkit/src/kit.ts:205](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L205) ___ @@ -379,7 +383,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:236](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L236) +[packages/sdk/contractkit/src/kit.ts:248](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L248) ___ @@ -399,7 +403,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:142](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L142) +[packages/sdk/contractkit/src/kit.ts:143](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L143) ___ @@ -419,7 +423,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:125](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L125) +[packages/sdk/contractkit/src/kit.ts:126](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L126) ___ @@ -433,7 +437,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:121](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L121) +[packages/sdk/contractkit/src/kit.ts:122](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L122) ___ @@ -447,7 +451,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:352](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L352) +[packages/sdk/contractkit/src/kit.ts:379](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L379) ___ @@ -461,7 +465,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:356](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L356) +[packages/sdk/contractkit/src/kit.ts:383](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L383) ___ @@ -481,7 +485,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:261](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L261) +[packages/sdk/contractkit/src/kit.ts:288](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L288) ___ @@ -501,7 +505,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:360](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L360) +[packages/sdk/contractkit/src/kit.ts:387](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L387) ___ @@ -522,7 +526,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:364](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L364) +[packages/sdk/contractkit/src/kit.ts:391](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L391) ___ @@ -548,7 +552,7 @@ Throws if supplied address is not a valid hexadecimal address #### Defined in -[packages/sdk/contractkit/src/kit.ts:211](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L211) +[packages/sdk/contractkit/src/kit.ts:212](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L212) ___ @@ -569,7 +573,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:371](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L371) +[packages/sdk/contractkit/src/kit.ts:398](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L398) ___ @@ -583,4 +587,4 @@ ___ #### Defined in -[packages/sdk/contractkit/src/kit.ts:375](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L375) +[packages/sdk/contractkit/src/kit.ts:402](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/kit.ts#L402) diff --git a/docs/sdk/contractkit/classes/wrappers_BaseSlasher.BaseSlasher.md b/docs/sdk/contractkit/classes/wrappers_BaseSlasher.BaseSlasher.md index bde760a557..88f08e4a40 100644 --- a/docs/sdk/contractkit/classes/wrappers_BaseSlasher.BaseSlasher.md +++ b/docs/sdk/contractkit/classes/wrappers_BaseSlasher.BaseSlasher.md @@ -72,7 +72,7 @@ #### Defined in -[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:23](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L23) +[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:25](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L25) ## Properties diff --git a/docs/sdk/contractkit/classes/wrappers_BaseWrapperForGoverning.BaseWrapperForGoverning.md b/docs/sdk/contractkit/classes/wrappers_BaseWrapperForGoverning.BaseWrapperForGoverning.md index 7f817922f9..e70a92e0a8 100644 --- a/docs/sdk/contractkit/classes/wrappers_BaseWrapperForGoverning.BaseWrapperForGoverning.md +++ b/docs/sdk/contractkit/classes/wrappers_BaseWrapperForGoverning.BaseWrapperForGoverning.md @@ -81,7 +81,7 @@ #### Defined in -[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:23](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L23) +[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:25](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L25) ## Properties diff --git a/docs/sdk/contractkit/classes/wrappers_DoubleSigningSlasher.DoubleSigningSlasherWrapper.md b/docs/sdk/contractkit/classes/wrappers_DoubleSigningSlasher.DoubleSigningSlasherWrapper.md index 45052165cf..881aa1e7bb 100644 --- a/docs/sdk/contractkit/classes/wrappers_DoubleSigningSlasher.DoubleSigningSlasherWrapper.md +++ b/docs/sdk/contractkit/classes/wrappers_DoubleSigningSlasher.DoubleSigningSlasherWrapper.md @@ -61,7 +61,7 @@ Contract handling slashing for Validator double-signing #### Defined in -[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:23](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L23) +[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:25](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L25) ## Properties diff --git a/docs/sdk/contractkit/classes/wrappers_DowntimeSlasher.DowntimeSlasherWrapper.md b/docs/sdk/contractkit/classes/wrappers_DowntimeSlasher.DowntimeSlasherWrapper.md index 56a824a740..371d073e3c 100644 --- a/docs/sdk/contractkit/classes/wrappers_DowntimeSlasher.DowntimeSlasherWrapper.md +++ b/docs/sdk/contractkit/classes/wrappers_DowntimeSlasher.DowntimeSlasherWrapper.md @@ -70,7 +70,7 @@ Contract handling slashing for Validator downtime using intervals. #### Defined in -[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:23](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L23) +[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:25](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L25) ## Properties @@ -205,7 +205,7 @@ the specific interval. #### Defined in -[packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts:126](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts#L126) +[packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts:132](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts#L132) ___ @@ -229,7 +229,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts:140](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts#L140) +[packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts:146](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts#L146) ___ @@ -457,7 +457,7 @@ True if the user already called the `setBitmapForInterval` for intervals. #### Defined in -[packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts:133](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts#L133) +[packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts:139](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts#L139) ___ @@ -481,7 +481,7 @@ intervals. #### Defined in -[packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts:174](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts#L174) +[packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts:180](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts#L180) ___ @@ -551,7 +551,7 @@ Tests if the given validator or signer did not sign any blocks in the interval. #### Defined in -[packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts:147](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts#L147) +[packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts:153](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts#L153) ___ @@ -577,4 +577,4 @@ True if the validator signature does not appear in any block within the window. #### Defined in -[packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts:161](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts#L161) +[packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts:167](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts#L167) diff --git a/docs/sdk/contractkit/classes/wrappers_Election.ElectionWrapper.md b/docs/sdk/contractkit/classes/wrappers_Election.ElectionWrapper.md index cc5d410ce2..bf293d8b13 100644 --- a/docs/sdk/contractkit/classes/wrappers_Election.ElectionWrapper.md +++ b/docs/sdk/contractkit/classes/wrappers_Election.ElectionWrapper.md @@ -91,7 +91,7 @@ Contract for voting for validators and managing validator groups. #### Defined in -[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:23](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L23) +[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:25](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L25) ## Properties @@ -325,7 +325,7 @@ ___ ### methodIds -• **methodIds**: `Record`\<``"electableValidators"`` \| ``"electabilityThreshold"`` \| ``"maxNumGroupsVotedFor"`` \| ``"checkProofOfPossession"`` \| ``"fractionMulExp"`` \| ``"getBlockNumberFromHeader"`` \| ``"getEpochNumber"`` \| ``"getEpochNumberOfBlock"`` \| ``"getEpochSize"`` \| ``"getParentSealBitmap"`` \| ``"getVerifiedSealBitmapFromHeader"`` \| ``"hashHeader"`` \| ``"initialized"`` \| ``"isL2"`` \| ``"isOwner"`` \| ``"minQuorumSize"`` \| ``"minQuorumSizeInCurrentSet"`` \| ``"numberValidatorsInCurrentSet"`` \| ``"numberValidatorsInSet"`` \| ``"owner"`` \| ``"registry"`` \| ``"renounceOwnership"`` \| ``"setRegistry"`` \| ``"transferOwnership"`` \| ``"validatorSignerAddressFromCurrentSet"`` \| ``"validatorSignerAddressFromSet"`` \| ``"initialize"`` \| ``"vote"`` \| ``"getVersionNumber"`` \| ``"isBlocked"`` \| ``"allowedToVoteOverMaxNumberOfGroups"`` \| ``"cachedVotesByAccount"`` \| ``"getBlockedbyContract"`` \| ``"activate"`` \| ``"activateForAccount"`` \| ``"revokePending"`` \| ``"revokeAllActive"`` \| ``"revokeActive"`` \| ``"distributeEpochRewards"`` \| ``"markGroupIneligible"`` \| ``"markGroupEligible"`` \| ``"forceDecrementVotes"`` \| ``"setBlockedByContract"`` \| ``"getGroupsVotedForByAccount"`` \| ``"getNumVotesReceivable"`` \| ``"getEligibleValidatorGroups"`` \| ``"getTotalVotesForEligibleValidatorGroups"`` \| ``"electValidatorSigners"`` \| ``"electValidatorAccounts"`` \| ``"getTotalVotesByAccount"`` \| ``"getActiveVoteUnitsForGroupByAccount"`` \| ``"getActiveVoteUnitsForGroup"`` \| ``"getGroupEligibility"`` \| ``"getGroupEpochRewards"`` \| ``"getGroupEpochRewardsBasedOnScore"`` \| ``"hasActivatablePendingVotes"`` \| ``"getElectabilityThreshold"`` \| ``"getElectableValidators"`` \| ``"setElectableValidators"`` \| ``"setMaxNumGroupsVotedFor"`` \| ``"setElectabilityThreshold"`` \| ``"updateTotalVotesByAccountForGroup"`` \| ``"setAllowedToVoteOverMaxNumberOfGroups"`` \| ``"canReceiveVotes"`` \| ``"getTotalVotes"`` \| ``"getActiveVotes"`` \| ``"electNValidatorSigners"`` \| ``"electNValidatorAccounts"`` \| ``"getCurrentValidatorSigners"`` \| ``"getPendingVotesForGroupByAccount"`` \| ``"getActiveVotesForGroupByAccount"`` \| ``"getTotalVotesForGroupByAccount"`` \| ``"getTotalVotesForGroup"`` \| ``"getActiveVotesForGroup"`` \| ``"getPendingVotesForGroup"``, `string`\> +• **methodIds**: `Record`\<``"electableValidators"`` \| ``"electabilityThreshold"`` \| ``"maxNumGroupsVotedFor"`` \| ``"checkProofOfPossession"`` \| ``"fractionMulExp"`` \| ``"getBlockNumberFromHeader"`` \| ``"getEpochNumber"`` \| ``"getEpochNumberOfBlock"`` \| ``"getEpochSize"`` \| ``"getParentSealBitmap"`` \| ``"getVerifiedSealBitmapFromHeader"`` \| ``"hashHeader"`` \| ``"initialized"`` \| ``"isOwner"`` \| ``"minQuorumSize"`` \| ``"minQuorumSizeInCurrentSet"`` \| ``"numberValidatorsInCurrentSet"`` \| ``"numberValidatorsInSet"`` \| ``"owner"`` \| ``"registry"`` \| ``"renounceOwnership"`` \| ``"setRegistry"`` \| ``"transferOwnership"`` \| ``"validatorAddressFromCurrentSet"`` \| ``"validatorSignerAddressFromCurrentSet"`` \| ``"validatorSignerAddressFromSet"`` \| ``"initialize"`` \| ``"vote"`` \| ``"getVersionNumber"`` \| ``"isBlocked"`` \| ``"allowedToVoteOverMaxNumberOfGroups"`` \| ``"cachedVotesByAccount"`` \| ``"getBlockedByContract"`` \| ``"activate"`` \| ``"activateForAccount"`` \| ``"revokePending"`` \| ``"revokeAllActive"`` \| ``"revokeActive"`` \| ``"distributeEpochRewards"`` \| ``"markGroupIneligible"`` \| ``"markGroupEligible"`` \| ``"forceDecrementVotes"`` \| ``"setBlockedByContract"`` \| ``"getGroupsVotedForByAccount"`` \| ``"getNumVotesReceivable"`` \| ``"getEligibleValidatorGroups"`` \| ``"getTotalVotesForEligibleValidatorGroups"`` \| ``"electValidatorSigners"`` \| ``"electValidatorAccounts"`` \| ``"getTotalVotesByAccount"`` \| ``"getActiveVoteUnitsForGroupByAccount"`` \| ``"getActiveVoteUnitsForGroup"`` \| ``"getGroupEligibility"`` \| ``"getGroupEpochRewards"`` \| ``"getGroupEpochRewardsBasedOnScore"`` \| ``"hasActivatablePendingVotes"`` \| ``"getElectabilityThreshold"`` \| ``"getElectableValidators"`` \| ``"setElectableValidators"`` \| ``"setMaxNumGroupsVotedFor"`` \| ``"setElectabilityThreshold"`` \| ``"updateTotalVotesByAccountForGroup"`` \| ``"setAllowedToVoteOverMaxNumberOfGroups"`` \| ``"canReceiveVotes"`` \| ``"getTotalVotes"`` \| ``"getActiveVotes"`` \| ``"electNValidatorSigners"`` \| ``"electNValidatorAccounts"`` \| ``"getCurrentValidatorSigners"`` \| ``"getPendingVotesForGroupByAccount"`` \| ``"getActiveVotesForGroupByAccount"`` \| ``"getTotalVotesForGroupByAccount"`` \| ``"getTotalVotesForGroup"`` \| ``"getActiveVotesForGroup"`` \| ``"getPendingVotesForGroup"``, `string`\> #### Inherited from diff --git a/docs/sdk/contractkit/classes/wrappers_EpochManager.EpochManagerWrapper.md b/docs/sdk/contractkit/classes/wrappers_EpochManager.EpochManagerWrapper.md index 0eeb96a0bb..931f2b94e6 100644 --- a/docs/sdk/contractkit/classes/wrappers_EpochManager.EpochManagerWrapper.md +++ b/docs/sdk/contractkit/classes/wrappers_EpochManager.EpochManagerWrapper.md @@ -26,7 +26,8 @@ Contract handling epoch management. - [finishNextEpochProcess](wrappers_EpochManager.EpochManagerWrapper.md#finishnextepochprocess) - [firstKnownEpoch](wrappers_EpochManager.EpochManagerWrapper.md#firstknownepoch) - [getCurrentEpochNumber](wrappers_EpochManager.EpochManagerWrapper.md#getcurrentepochnumber) -- [getElected](wrappers_EpochManager.EpochManagerWrapper.md#getelected) +- [getElectedAccounts](wrappers_EpochManager.EpochManagerWrapper.md#getelectedaccounts) +- [getEpochNumberOfBlock](wrappers_EpochManager.EpochManagerWrapper.md#getepochnumberofblock) - [getEpochProcessingStatus](wrappers_EpochManager.EpochManagerWrapper.md#getepochprocessingstatus) - [getFirstBlockAtEpoch](wrappers_EpochManager.EpochManagerWrapper.md#getfirstblockatepoch) - [getLastBlockAtEpoch](wrappers_EpochManager.EpochManagerWrapper.md#getlastblockatepoch) @@ -71,7 +72,7 @@ Contract handling epoch management. #### Defined in -[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:23](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L23) +[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:25](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L25) ## Properties @@ -160,7 +161,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/wrappers/EpochManager.ts:61](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L61) +[packages/sdk/contractkit/src/wrappers/EpochManager.ts:66](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L66) ___ @@ -212,9 +213,9 @@ ___ ___ -### getElected +### getElectedAccounts -• **getElected**: (...`args`: []) => `Promise`\<`string`[]\> +• **getElectedAccounts**: (...`args`: []) => `Promise`\<`string`[]\> #### Type declaration @@ -232,7 +233,31 @@ ___ #### Defined in -[packages/sdk/contractkit/src/wrappers/EpochManager.ts:45](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L45) +[packages/sdk/contractkit/src/wrappers/EpochManager.ts:50](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L50) + +___ + +### getEpochNumberOfBlock + +• **getEpochNumberOfBlock**: (...`args`: [\_blockNumber: string \| number]) => `Promise`\<`number`\> + +#### Type declaration + +▸ (`...args`): `Promise`\<`number`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [\_blockNumber: string \| number] | + +##### Returns + +`Promise`\<`number`\> + +#### Defined in + +[packages/sdk/contractkit/src/wrappers/EpochManager.ts:43](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L43) ___ @@ -256,7 +281,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/wrappers/EpochManager.ts:46](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L46) +[packages/sdk/contractkit/src/wrappers/EpochManager.ts:51](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L51) ___ @@ -328,7 +353,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/wrappers/EpochManager.ts:43](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L43) +[packages/sdk/contractkit/src/wrappers/EpochManager.ts:48](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L48) ___ @@ -352,13 +377,13 @@ ___ #### Defined in -[packages/sdk/contractkit/src/wrappers/EpochManager.ts:44](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L44) +[packages/sdk/contractkit/src/wrappers/EpochManager.ts:49](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L49) ___ ### methodIds -• **methodIds**: `Record`\<``"epochDuration"`` \| ``"isTimeForNextEpoch"`` \| ``"initialized"`` \| ``"owner"`` \| ``"registry"`` \| ``"renounceOwnership"`` \| ``"setRegistry"`` \| ``"transferOwnership"`` \| ``"initialize"`` \| ``"getVersionNumber"`` \| ``"elected"`` \| ``"epochProcessing"`` \| ``"firstKnownEpoch"`` \| ``"isSystemInitialized"`` \| ``"oracleAddress"`` \| ``"processedGroups"`` \| ``"validatorPendingPayments"`` \| ``"initializeSystem"`` \| ``"startNextEpochProcess"`` \| ``"finishNextEpochProcess"`` \| ``"sendValidatorPayment"`` \| ``"getCurrentEpoch"`` \| ``"getCurrentEpochNumber"`` \| ``"getEpochProcessingState"`` \| ``"isBlocked"`` \| ``"getElected"`` \| ``"getFirstBlockAtEpoch"`` \| ``"getLastBlockAtEpoch"`` \| ``"setEpochDuration"`` \| ``"setOracleAddress"`` \| ``"isOnEpochProcess"`` \| ``"systemAlreadyInitialized"``, `string`\> +• **methodIds**: `Record`\<``"epochDuration"`` \| ``"isTimeForNextEpoch"`` \| ``"getEpochNumberOfBlock"`` \| ``"initialized"`` \| ``"owner"`` \| ``"registry"`` \| ``"renounceOwnership"`` \| ``"setRegistry"`` \| ``"transferOwnership"`` \| ``"initialize"`` \| ``"getVersionNumber"`` \| ``"electedAccounts"`` \| ``"electedSigners"`` \| ``"epochProcessing"`` \| ``"firstKnownEpoch"`` \| ``"isSystemInitialized"`` \| ``"oracleAddress"`` \| ``"processedGroups"`` \| ``"toProcessGroups"`` \| ``"validatorPendingPayments"`` \| ``"initializeSystem"`` \| ``"startNextEpochProcess"`` \| ``"setToProcessGroups"`` \| ``"processGroups"`` \| ``"processGroup"`` \| ``"finishNextEpochProcess"`` \| ``"sendValidatorPayment"`` \| ``"getCurrentEpoch"`` \| ``"getCurrentEpochNumber"`` \| ``"getEpochProcessingState"`` \| ``"isBlocked"`` \| ``"numberOfElectedInCurrentSet"`` \| ``"getElectedAccounts"`` \| ``"getElectedAccountByIndex"`` \| ``"getElectedSigners"`` \| ``"getElectedSignerByIndex"`` \| ``"getFirstBlockAtEpoch"`` \| ``"getLastBlockAtEpoch"`` \| ``"getEpochByBlockNumber"`` \| ``"setEpochDuration"`` \| ``"setOracleAddress"`` \| ``"isOnEpochProcess"`` \| ``"systemAlreadyInitialized"`` \| ``"getEpochByNumber"``, `string`\> #### Inherited from @@ -390,7 +415,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/wrappers/EpochManager.ts:60](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L60) +[packages/sdk/contractkit/src/wrappers/EpochManager.ts:65](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L65) ## Accessors @@ -424,7 +449,7 @@ BaseWrapperForGoverning.address #### Defined in -[packages/sdk/contractkit/src/wrappers/EpochManager.ts:63](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L63) +[packages/sdk/contractkit/src/wrappers/EpochManager.ts:68](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L68) ___ @@ -438,7 +463,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/wrappers/EpochManager.ts:125](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L125) +[packages/sdk/contractkit/src/wrappers/EpochManager.ts:130](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L130) ___ @@ -458,7 +483,7 @@ ___ #### Defined in -[packages/sdk/contractkit/src/wrappers/EpochManager.ts:76](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L76) +[packages/sdk/contractkit/src/wrappers/EpochManager.ts:81](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L81) ___ diff --git a/docs/sdk/contractkit/classes/wrappers_GoldTokenWrapper.GoldTokenWrapper.md b/docs/sdk/contractkit/classes/wrappers_GoldTokenWrapper.GoldTokenWrapper.md index 5d2dd152bf..6a4d12d5f7 100644 --- a/docs/sdk/contractkit/classes/wrappers_GoldTokenWrapper.GoldTokenWrapper.md +++ b/docs/sdk/contractkit/classes/wrappers_GoldTokenWrapper.GoldTokenWrapper.md @@ -307,7 +307,7 @@ ___ ### methodIds -• **methodIds**: `Record`\<``"symbol"`` \| ``"name"`` \| ``"decimals"`` \| ``"initialized"`` \| ``"isL2"`` \| ``"isOwner"`` \| ``"owner"`` \| ``"registry"`` \| ``"renounceOwnership"`` \| ``"setRegistry"`` \| ``"transferOwnership"`` \| ``"initialize"`` \| ``"approve"`` \| ``"getVersionNumber"`` \| ``"transfer"`` \| ``"increaseAllowance"`` \| ``"decreaseAllowance"`` \| ``"mint"`` \| ``"transferWithComment"`` \| ``"burn"`` \| ``"transferFrom"`` \| ``"allowance"`` \| ``"balanceOf"`` \| ``"totalSupply"`` \| ``"increaseSupply"`` \| ``"circulatingSupply"`` \| ``"getBurnedAmount"`` \| ``"allocatedSupply"``, `string`\> +• **methodIds**: `Record`\<``"symbol"`` \| ``"name"`` \| ``"decimals"`` \| ``"initialized"`` \| ``"isOwner"`` \| ``"owner"`` \| ``"registry"`` \| ``"renounceOwnership"`` \| ``"setRegistry"`` \| ``"transferOwnership"`` \| ``"initialize"`` \| ``"approve"`` \| ``"getVersionNumber"`` \| ``"transfer"`` \| ``"increaseAllowance"`` \| ``"decreaseAllowance"`` \| ``"mint"`` \| ``"transferWithComment"`` \| ``"burn"`` \| ``"transferFrom"`` \| ``"allowance"`` \| ``"balanceOf"`` \| ``"totalSupply"`` \| ``"increaseSupply"`` \| ``"circulatingSupply"`` \| ``"getBurnedAmount"`` \| ``"allocatedSupply"``, `string`\> #### Inherited from diff --git a/docs/sdk/contractkit/classes/wrappers_Governance.GovernanceWrapper.md b/docs/sdk/contractkit/classes/wrappers_Governance.GovernanceWrapper.md index 3d6f8409a5..14a787fd01 100644 --- a/docs/sdk/contractkit/classes/wrappers_Governance.GovernanceWrapper.md +++ b/docs/sdk/contractkit/classes/wrappers_Governance.GovernanceWrapper.md @@ -123,7 +123,7 @@ Contract managing voting for governance proposals. #### Defined in -[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:23](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L23) +[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:25](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L25) ## Properties @@ -988,7 +988,7 @@ ___ ### methodIds -• **methodIds**: `Record`\<``"propose"`` \| ``"executeHotfix"`` \| ``"concurrentProposals"`` \| ``"dequeueFrequency"`` \| ``"minDeposit"`` \| ``"queueExpiry"`` \| ``"stageDurations"`` \| ``"upvote"`` \| ``"refundedDeposits"`` \| ``"approver"`` \| ``"checkProofOfPossession"`` \| ``"dequeued"`` \| ``"emptyIndices"`` \| ``"fractionMulExp"`` \| ``"getBlockNumberFromHeader"`` \| ``"getEpochNumber"`` \| ``"getEpochNumberOfBlock"`` \| ``"getEpochSize"`` \| ``"getParentSealBitmap"`` \| ``"getVerifiedSealBitmapFromHeader"`` \| ``"hashHeader"`` \| ``"hotfixExecutionTimeWindow"`` \| ``"hotfixes"`` \| ``"initialized"`` \| ``"isL2"`` \| ``"isOwner"`` \| ``"lastDequeue"`` \| ``"minQuorumSize"`` \| ``"minQuorumSizeInCurrentSet"`` \| ``"numberValidatorsInCurrentSet"`` \| ``"numberValidatorsInSet"`` \| ``"owner"`` \| ``"proposalCount"`` \| ``"registry"`` \| ``"renounceOwnership"`` \| ``"securityCouncil"`` \| ``"setRegistry"`` \| ``"transferOwnership"`` \| ``"validatorSignerAddressFromCurrentSet"`` \| ``"validatorSignerAddressFromSet"`` \| ``"initialize"`` \| ``"setConstitution"`` \| ``"setSecurityCouncil"`` \| ``"setHotfixExecutionTimeWindow"`` \| ``"revokeUpvote"`` \| ``"approve"`` \| ``"vote"`` \| ``"votePartially"`` \| ``"revokeVotes"`` \| ``"execute"`` \| ``"approveHotfix"`` \| ``"whitelistHotfix"`` \| ``"prepareHotfix"`` \| ``"withdraw"`` \| ``"isProposalPassing"`` \| ``"isDequeuedProposal"`` \| ``"isDequeuedProposalExpired"`` \| ``"getConstitution"`` \| ``"isVoting"`` \| ``"getReferendumStageDuration"`` \| ``"getExecutionStageDuration"`` \| ``"getParticipationParameters"`` \| ``"proposalExists"`` \| ``"getProposal"`` \| ``"getProposalTransaction"`` \| ``"isApproved"`` \| ``"getVoteTotals"`` \| ``"getVoteRecord"`` \| ``"getQueueLength"`` \| ``"getUpvotes"`` \| ``"getQueue"`` \| ``"getDequeue"`` \| ``"getUpvoteRecord"`` \| ``"getMostRecentReferendumProposal"`` \| ``"getProposalStage"`` \| ``"getVersionNumber"`` \| ``"getHotfixHash"`` \| ``"setApprover"`` \| ``"setConcurrentProposals"`` \| ``"setMinDeposit"`` \| ``"setQueueExpiry"`` \| ``"setDequeueFrequency"`` \| ``"setReferendumStageDuration"`` \| ``"setExecutionStageDuration"`` \| ``"setParticipationBaseline"`` \| ``"setParticipationFloor"`` \| ``"setBaselineUpdateFactor"`` \| ``"setBaselineQuorumFactor"`` \| ``"dequeueProposalsIfReady"`` \| ``"removeVotesWhenRevokingDelegatedVotes"`` \| ``"resetHotFixRecord"`` \| ``"hotfixWhitelistValidatorTally"`` \| ``"isHotfixPassing"`` \| ``"getL1HotfixRecord"`` \| ``"getL2HotfixRecord"`` \| ``"isQueued"`` \| ``"isHotfixWhitelistedBy"`` \| ``"isQueuedProposalExpired"`` \| ``"getAmountOfGoldUsedForVoting"``, `string`\> +• **methodIds**: `Record`\<``"propose"`` \| ``"executeHotfix"`` \| ``"concurrentProposals"`` \| ``"dequeueFrequency"`` \| ``"minDeposit"`` \| ``"queueExpiry"`` \| ``"stageDurations"`` \| ``"upvote"`` \| ``"refundedDeposits"`` \| ``"approver"`` \| ``"checkProofOfPossession"`` \| ``"dequeued"`` \| ``"emptyIndices"`` \| ``"fractionMulExp"`` \| ``"getBlockNumberFromHeader"`` \| ``"getEpochNumber"`` \| ``"getEpochNumberOfBlock"`` \| ``"getEpochSize"`` \| ``"getParentSealBitmap"`` \| ``"getVerifiedSealBitmapFromHeader"`` \| ``"hashHeader"`` \| ``"hotfixExecutionTimeWindow"`` \| ``"hotfixes"`` \| ``"initialized"`` \| ``"isOwner"`` \| ``"lastDequeue"`` \| ``"minQuorumSize"`` \| ``"minQuorumSizeInCurrentSet"`` \| ``"numberValidatorsInCurrentSet"`` \| ``"numberValidatorsInSet"`` \| ``"owner"`` \| ``"proposalCount"`` \| ``"registry"`` \| ``"renounceOwnership"`` \| ``"securityCouncil"`` \| ``"setRegistry"`` \| ``"transferOwnership"`` \| ``"validatorAddressFromCurrentSet"`` \| ``"validatorSignerAddressFromCurrentSet"`` \| ``"validatorSignerAddressFromSet"`` \| ``"initialize"`` \| ``"setConstitution"`` \| ``"setSecurityCouncil"`` \| ``"setHotfixExecutionTimeWindow"`` \| ``"revokeUpvote"`` \| ``"approve"`` \| ``"vote"`` \| ``"votePartially"`` \| ``"revokeVotes"`` \| ``"execute"`` \| ``"approveHotfix"`` \| ``"whitelistHotfix"`` \| ``"prepareHotfix"`` \| ``"withdraw"`` \| ``"isProposalPassing"`` \| ``"isDequeuedProposal"`` \| ``"isDequeuedProposalExpired"`` \| ``"getConstitution"`` \| ``"isVoting"`` \| ``"getReferendumStageDuration"`` \| ``"getExecutionStageDuration"`` \| ``"getParticipationParameters"`` \| ``"proposalExists"`` \| ``"getProposal"`` \| ``"getProposalTransaction"`` \| ``"isApproved"`` \| ``"getVoteTotals"`` \| ``"getVoteRecord"`` \| ``"getQueueLength"`` \| ``"getUpvotes"`` \| ``"getQueue"`` \| ``"getDequeue"`` \| ``"getUpvoteRecord"`` \| ``"getMostRecentReferendumProposal"`` \| ``"getProposalStage"`` \| ``"getVersionNumber"`` \| ``"getHotfixHash"`` \| ``"setApprover"`` \| ``"setConcurrentProposals"`` \| ``"setMinDeposit"`` \| ``"setQueueExpiry"`` \| ``"setDequeueFrequency"`` \| ``"setReferendumStageDuration"`` \| ``"setExecutionStageDuration"`` \| ``"setParticipationBaseline"`` \| ``"setParticipationFloor"`` \| ``"setBaselineUpdateFactor"`` \| ``"setBaselineQuorumFactor"`` \| ``"dequeueProposalsIfReady"`` \| ``"removeVotesWhenRevokingDelegatedVotes"`` \| ``"resetHotFixRecord"`` \| ``"hotfixWhitelistValidatorTally"`` \| ``"isHotfixPassing"`` \| ``"getL1HotfixRecord"`` \| ``"getHotfixRecord"`` \| ``"getL2HotfixRecord"`` \| ``"isQueued"`` \| ``"isHotfixWhitelistedBy"`` \| ``"isQueuedProposalExpired"`` \| ``"getAmountOfGoldUsedForVoting"``, `string`\> #### Inherited from diff --git a/docs/sdk/contractkit/classes/wrappers_LockedGold.LockedGoldWrapper.md b/docs/sdk/contractkit/classes/wrappers_LockedGold.LockedGoldWrapper.md index b1d7456818..7c8031d19b 100644 --- a/docs/sdk/contractkit/classes/wrappers_LockedGold.LockedGoldWrapper.md +++ b/docs/sdk/contractkit/classes/wrappers_LockedGold.LockedGoldWrapper.md @@ -82,7 +82,7 @@ Contract for handling deposits needed for voting. #### Defined in -[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:23](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L23) +[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:25](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L25) ## Properties diff --git a/docs/sdk/contractkit/classes/wrappers_ReleaseGold.ReleaseGoldWrapper.md b/docs/sdk/contractkit/classes/wrappers_ReleaseGold.ReleaseGoldWrapper.md index e121b1457a..6777a6e5f0 100644 --- a/docs/sdk/contractkit/classes/wrappers_ReleaseGold.ReleaseGoldWrapper.md +++ b/docs/sdk/contractkit/classes/wrappers_ReleaseGold.ReleaseGoldWrapper.md @@ -112,7 +112,7 @@ Contract for handling an instance of a ReleaseGold contract. #### Defined in -[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:23](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L23) +[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:25](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L25) ## Properties diff --git a/docs/sdk/contractkit/classes/wrappers_ScoreManager.ScoreManagerWrapper.md b/docs/sdk/contractkit/classes/wrappers_ScoreManager.ScoreManagerWrapper.md index 5a8afc8186..ca34f65980 100644 --- a/docs/sdk/contractkit/classes/wrappers_ScoreManager.ScoreManagerWrapper.md +++ b/docs/sdk/contractkit/classes/wrappers_ScoreManager.ScoreManagerWrapper.md @@ -86,6 +86,7 @@ ___ | :------ | :------ | | `GroupScoreSet` | `ContractEvent`\<\{ `0`: `string` ; `1`: `string` ; `group`: `string` ; `score`: `string` }\> | | `OwnershipTransferred` | `ContractEvent`\<\{ `0`: `string` ; `1`: `string` ; `newOwner`: `string` ; `previousOwner`: `string` }\> | +| `ScoreManagerSetterSet` | `ContractEvent`\<`string`\> | | `ValidatorScoreSet` | `ContractEvent`\<\{ `0`: `string` ; `1`: `string` ; `score`: `string` ; `validator`: `string` }\> | | `allEvents` | (`options?`: `EventOptions`, `cb?`: `Callback`\<`EventLog`\>) => `EventEmitter` | @@ -149,7 +150,7 @@ ___ ### methodIds -• **methodIds**: `Record`\<``"initialized"`` \| ``"owner"`` \| ``"renounceOwnership"`` \| ``"transferOwnership"`` \| ``"initialize"`` \| ``"getVersionNumber"`` \| ``"groupScores"`` \| ``"validatorScores"`` \| ``"setGroupScore"`` \| ``"setValidatorScore"`` \| ``"getGroupScore"`` \| ``"getValidatorScore"``, `string`\> +• **methodIds**: `Record`\<``"initialized"`` \| ``"owner"`` \| ``"renounceOwnership"`` \| ``"transferOwnership"`` \| ``"initialize"`` \| ``"getVersionNumber"`` \| ``"ZERO_SCORE"`` \| ``"groupScores"`` \| ``"validatorScores"`` \| ``"setGroupScore"`` \| ``"setValidatorScore"`` \| ``"setScoreManagerSetter"`` \| ``"getGroupScore"`` \| ``"getValidatorScore"`` \| ``"getScoreManagerSetter"``, `string`\> #### Inherited from @@ -191,7 +192,7 @@ Contract getPastEvents | Name | Type | | :------ | :------ | -| `event` | ``"OwnershipTransferred"`` \| ``"allEvents"`` \| ``"GroupScoreSet"`` \| ``"ValidatorScoreSet"`` | +| `event` | ``"OwnershipTransferred"`` \| ``"allEvents"`` \| ``"GroupScoreSet"`` \| ``"ScoreManagerSetterSet"`` \| ``"ValidatorScoreSet"`` | | `options` | `PastEventOptions` | #### Returns diff --git a/docs/sdk/contractkit/classes/wrappers_Validators.ValidatorsWrapper.md b/docs/sdk/contractkit/classes/wrappers_Validators.ValidatorsWrapper.md index 9d9b069a47..fe4095f7ca 100644 --- a/docs/sdk/contractkit/classes/wrappers_Validators.ValidatorsWrapper.md +++ b/docs/sdk/contractkit/classes/wrappers_Validators.ValidatorsWrapper.md @@ -106,7 +106,7 @@ Contract for voting for validators and managing validator groups. #### Defined in -[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:23](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L23) +[packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts:25](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts#L25) ## Properties @@ -613,7 +613,7 @@ ___ ### methodIds -• **methodIds**: `Record`\<``"groupLockedGoldRequirements"`` \| ``"validatorLockedGoldRequirements"`` \| ``"maxGroupSize"`` \| ``"membershipHistoryLength"`` \| ``"slashingMultiplierResetPeriod"`` \| ``"commissionUpdateDelay"`` \| ``"downtimeGracePeriod"`` \| ``"checkProofOfPossession"`` \| ``"fractionMulExp"`` \| ``"getBlockNumberFromHeader"`` \| ``"getEpochNumber"`` \| ``"getEpochNumberOfBlock"`` \| ``"getEpochSize"`` \| ``"getParentSealBitmap"`` \| ``"getVerifiedSealBitmapFromHeader"`` \| ``"hashHeader"`` \| ``"initialized"`` \| ``"isL2"`` \| ``"minQuorumSize"`` \| ``"minQuorumSizeInCurrentSet"`` \| ``"numberValidatorsInCurrentSet"`` \| ``"numberValidatorsInSet"`` \| ``"owner"`` \| ``"registry"`` \| ``"renounceOwnership"`` \| ``"setRegistry"`` \| ``"transferOwnership"`` \| ``"validatorSignerAddressFromCurrentSet"`` \| ``"validatorSignerAddressFromSet"`` \| ``"initialize"`` \| ``"getVersionNumber"`` \| ``"updateValidatorScoreFromSigner"`` \| ``"distributeEpochPaymentsFromSigner"`` \| ``"registerValidator"`` \| ``"registerValidatorNoBls"`` \| ``"deregisterValidator"`` \| ``"affiliate"`` \| ``"deaffiliate"`` \| ``"updateBlsPublicKey"`` \| ``"updateEcdsaPublicKey"`` \| ``"deregisterValidatorGroup"`` \| ``"updatePublicKeys"`` \| ``"registerValidatorGroup"`` \| ``"addMember"`` \| ``"addFirstMember"`` \| ``"removeMember"`` \| ``"reorderMember"`` \| ``"setNextCommissionUpdate"`` \| ``"updateCommission"`` \| ``"forceDeaffiliateIfValidator"`` \| ``"resetSlashingMultiplier"`` \| ``"halveSlashingMultiplier"`` \| ``"mintStableToEpochManager"`` \| ``"getValidatorBlsPublicKeyFromSigner"`` \| ``"getMembershipHistoryLength"`` \| ``"getValidatorGroup"`` \| ``"getTopGroupValidators"`` \| ``"getTopGroupValidatorsAccounts"`` \| ``"getGroupsNumMembers"`` \| ``"getNumRegisteredValidators"`` \| ``"getValidatorLockedGoldRequirements"`` \| ``"getGroupLockedGoldRequirements"`` \| ``"getRegisteredValidators"`` \| ``"getRegisteredValidatorGroups"`` \| ``"getMembershipInLastEpochFromSigner"`` \| ``"getValidatorGroupSlashingMultiplier"`` \| ``"groupMembershipInEpoch"`` \| ``"getValidatorScoreParameters"`` \| ``"getMembershipHistory"`` \| ``"calculateGroupEpochScore"`` \| ``"getCommissionUpdateDelay"`` \| ``"computeEpochReward"`` \| ``"setCommissionUpdateDelay"`` \| ``"setMaxGroupSize"`` \| ``"setMembershipHistoryLength"`` \| ``"setValidatorScoreParameters"`` \| ``"setGroupLockedGoldRequirements"`` \| ``"setValidatorLockedGoldRequirements"`` \| ``"setSlashingMultiplierResetPeriod"`` \| ``"setDowntimeGracePeriod"`` \| ``"getAccountLockedGoldRequirement"`` \| ``"getMembershipInLastEpoch"`` \| ``"calculateEpochScore"`` \| ``"meetsAccountLockedGoldRequirements"`` \| ``"getValidator"`` \| ``"getValidatorsGroup"`` \| ``"getGroupNumMembers"`` \| ``"isValidatorGroup"`` \| ``"isValidator"``, `string`\> +• **methodIds**: `Record`\<``"groupLockedGoldRequirements"`` \| ``"validatorLockedGoldRequirements"`` \| ``"maxGroupSize"`` \| ``"membershipHistoryLength"`` \| ``"slashingMultiplierResetPeriod"`` \| ``"commissionUpdateDelay"`` \| ``"downtimeGracePeriod"`` \| ``"checkProofOfPossession"`` \| ``"fractionMulExp"`` \| ``"getBlockNumberFromHeader"`` \| ``"getEpochNumber"`` \| ``"getEpochNumberOfBlock"`` \| ``"getEpochSize"`` \| ``"getParentSealBitmap"`` \| ``"getVerifiedSealBitmapFromHeader"`` \| ``"hashHeader"`` \| ``"initialized"`` \| ``"minQuorumSize"`` \| ``"minQuorumSizeInCurrentSet"`` \| ``"numberValidatorsInCurrentSet"`` \| ``"numberValidatorsInSet"`` \| ``"owner"`` \| ``"registry"`` \| ``"renounceOwnership"`` \| ``"setRegistry"`` \| ``"transferOwnership"`` \| ``"validatorAddressFromCurrentSet"`` \| ``"validatorSignerAddressFromCurrentSet"`` \| ``"validatorSignerAddressFromSet"`` \| ``"initialize"`` \| ``"getVersionNumber"`` \| ``"updateValidatorScoreFromSigner"`` \| ``"distributeEpochPaymentsFromSigner"`` \| ``"registerValidator"`` \| ``"registerValidatorNoBls"`` \| ``"deregisterValidator"`` \| ``"affiliate"`` \| ``"deaffiliate"`` \| ``"updateBlsPublicKey"`` \| ``"updateEcdsaPublicKey"`` \| ``"deregisterValidatorGroup"`` \| ``"updatePublicKeys"`` \| ``"registerValidatorGroup"`` \| ``"addMember"`` \| ``"addFirstMember"`` \| ``"removeMember"`` \| ``"reorderMember"`` \| ``"setNextCommissionUpdate"`` \| ``"updateCommission"`` \| ``"forceDeaffiliateIfValidator"`` \| ``"resetSlashingMultiplier"`` \| ``"halveSlashingMultiplier"`` \| ``"mintStableToEpochManager"`` \| ``"getValidatorBlsPublicKeyFromSigner"`` \| ``"getMembershipHistoryLength"`` \| ``"getValidatorGroup"`` \| ``"getTopGroupValidators"`` \| ``"getTopGroupValidatorsAccounts"`` \| ``"getGroupsNumMembers"`` \| ``"getNumRegisteredValidators"`` \| ``"getValidatorLockedGoldRequirements"`` \| ``"getGroupLockedGoldRequirements"`` \| ``"getRegisteredValidatorSigners"`` \| ``"getRegisteredValidators"`` \| ``"getRegisteredValidatorGroups"`` \| ``"getMembershipInLastEpochFromSigner"`` \| ``"getValidatorGroupSlashingMultiplier"`` \| ``"groupMembershipInEpoch"`` \| ``"getValidatorScoreParameters"`` \| ``"getMembershipHistory"`` \| ``"calculateGroupEpochScore"`` \| ``"getMaxGroupSize"`` \| ``"getCommissionUpdateDelay"`` \| ``"computeEpochReward"`` \| ``"setCommissionUpdateDelay"`` \| ``"setMaxGroupSize"`` \| ``"setMembershipHistoryLength"`` \| ``"setValidatorScoreParameters"`` \| ``"setGroupLockedGoldRequirements"`` \| ``"setValidatorLockedGoldRequirements"`` \| ``"setSlashingMultiplierResetPeriod"`` \| ``"setDowntimeGracePeriod"`` \| ``"getAccountLockedGoldRequirement"`` \| ``"getMembershipInLastEpoch"`` \| ``"calculateEpochScore"`` \| ``"meetsAccountLockedGoldRequirements"`` \| ``"getValidator"`` \| ``"getValidatorsGroup"`` \| ``"getGroupNumMembers"`` \| ``"isValidatorGroup"`` \| ``"isValidator"``, `string`\> #### Inherited from diff --git a/docs/sdk/contractkit/modules/wrappers_DowntimeSlasher.md b/docs/sdk/contractkit/modules/wrappers_DowntimeSlasher.md index 036e9a2225..cc3b9479de 100644 --- a/docs/sdk/contractkit/modules/wrappers_DowntimeSlasher.md +++ b/docs/sdk/contractkit/modules/wrappers_DowntimeSlasher.md @@ -25,4 +25,4 @@ #### Defined in -[packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts:223](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts#L223) +[packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts:229](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts#L229) diff --git a/docs/sdk/contractkit/modules/wrappers_EpochManager.md b/docs/sdk/contractkit/modules/wrappers_EpochManager.md index e1d6e774c6..d87de8d9a1 100644 --- a/docs/sdk/contractkit/modules/wrappers_EpochManager.md +++ b/docs/sdk/contractkit/modules/wrappers_EpochManager.md @@ -29,4 +29,4 @@ #### Defined in -[packages/sdk/contractkit/src/wrappers/EpochManager.ts:138](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L138) +[packages/sdk/contractkit/src/wrappers/EpochManager.ts:143](https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/EpochManager.ts#L143) diff --git a/packages/cli/src/commands/governance/approve-l2.test.ts b/packages/cli/src/commands/governance/approve-l2.test.ts index b885a19f4a..fc52bed750 100644 --- a/packages/cli/src/commands/governance/approve-l2.test.ts +++ b/packages/cli/src/commands/governance/approve-l2.test.ts @@ -80,7 +80,7 @@ testWithAnvilL2('governance:approve cmd', (web3: Web3) => { "Running Checks:", ], [ - " ✔ 0x0639DBA9CBD6586E665B2bB7b705C65d96aae4f7 is security council address ", + " ✔ 0xf750153fc4211e4Ef325A7fD87d8258222e0b510 is security council address ", ], [ " ✘ 0x5409ED021D9299bf6814279A6A1411A7e866A631 is security council multisig signatory ", @@ -126,7 +126,7 @@ testWithAnvilL2('governance:approve cmd', (web3: Web3) => { "Running Checks:", ], [ - " ✔ 0x0639DBA9CBD6586E665B2bB7b705C65d96aae4f7 is approver address ", + " ✔ 0xf750153fc4211e4Ef325A7fD87d8258222e0b510 is approver address ", ], [ " ✘ 0x5409ED021D9299bf6814279A6A1411A7e866A631 is approver multisig signatory ", @@ -490,7 +490,7 @@ testWithAnvilL2('governance:approve cmd', (web3: Web3) => { "Running Checks:", ], [ - " ✔ 0x0639DBA9CBD6586E665B2bB7b705C65d96aae4f7 is security council address ", + " ✔ 0xf750153fc4211e4Ef325A7fD87d8258222e0b510 is security council address ", ], [ " ✔ 0x5409ED021D9299bf6814279A6A1411A7e866A631 is security council multisig signatory ", @@ -546,7 +546,7 @@ testWithAnvilL2('governance:approve cmd', (web3: Web3) => { "Running Checks:", ], [ - " ✔ 0x0639DBA9CBD6586E665B2bB7b705C65d96aae4f7 is approver address ", + " ✔ 0xf750153fc4211e4Ef325A7fD87d8258222e0b510 is approver address ", ], [ " ✔ 0x5409ED021D9299bf6814279A6A1411A7e866A631 is approver multisig signatory ", @@ -634,7 +634,7 @@ testWithAnvilL2('governance:approve cmd', (web3: Web3) => { "Running Checks:", ], [ - " ✔ 0x0639DBA9CBD6586E665B2bB7b705C65d96aae4f7 is security council address ", + " ✔ 0xf750153fc4211e4Ef325A7fD87d8258222e0b510 is security council address ", ], [ " ✔ 0x5409ED021D9299bf6814279A6A1411A7e866A631 is security council multisig signatory ", diff --git a/packages/cli/src/commands/governance/approve.test.ts b/packages/cli/src/commands/governance/approve.test.ts index a1dbaef2c7..2c1c7b70b4 100644 --- a/packages/cli/src/commands/governance/approve.test.ts +++ b/packages/cli/src/commands/governance/approve.test.ts @@ -64,7 +64,7 @@ testWithAnvilL1('governance:approve cmd', (web3: Web3) => { "Running Checks:", ], [ - " ✔ 0x0639DBA9CBD6586E665B2bB7b705C65d96aae4f7 is approver address ", + " ✔ 0xf750153fc4211e4Ef325A7fD87d8258222e0b510 is approver address ", ], [ " ✘ 0x5409ED021D9299bf6814279A6A1411A7e866A631 is multisig signatory ", @@ -103,7 +103,7 @@ testWithAnvilL1('governance:approve cmd', (web3: Web3) => { "Running Checks:", ], [ - " ✔ 0x0639DBA9CBD6586E665B2bB7b705C65d96aae4f7 is approver address ", + " ✔ 0xf750153fc4211e4Ef325A7fD87d8258222e0b510 is approver address ", ], [ " ✔ 0x5409ED021D9299bf6814279A6A1411A7e866A631 is multisig signatory ", @@ -159,7 +159,7 @@ testWithAnvilL1('governance:approve cmd', (web3: Web3) => { "Running Checks:", ], [ - " ✔ 0x0639DBA9CBD6586E665B2bB7b705C65d96aae4f7 is approver address ", + " ✔ 0xf750153fc4211e4Ef325A7fD87d8258222e0b510 is approver address ", ], [ " ✔ 2 is an existing proposal ", @@ -198,7 +198,7 @@ testWithAnvilL1('governance:approve cmd', (web3: Web3) => { "Running Checks:", ], [ - " ✔ 0x0639DBA9CBD6586E665B2bB7b705C65d96aae4f7 is approver address ", + " ✔ 0xf750153fc4211e4Ef325A7fD87d8258222e0b510 is approver address ", ], [ " ✔ 2 is an existing proposal ", diff --git a/packages/cli/src/commands/network/__snapshots__/contracts-l2.test.ts.snap b/packages/cli/src/commands/network/__snapshots__/contracts-l2.test.ts.snap index 63f50bbed4..70eb072f57 100644 --- a/packages/cli/src/commands/network/__snapshots__/contracts-l2.test.ts.snap +++ b/packages/cli/src/commands/network/__snapshots__/contracts-l2.test.ts.snap @@ -6,188 +6,188 @@ exports[`network:contracts runs 1`] = ` "[ { "contract": "Accounts", - "proxy": "0x3B4a625Ba01F298Fab94eda78e4e310704F9B658", - "implementation": "0x27f640a4f0C95Fd18432be400653113ce0b6a617", - "version": "1.1.5.0" + "proxy": "0x6e31AE4b9cC7A90ae038b8FBBEd2Eb95104BA8aE", + "implementation": "0x8b2172Dd4eEA915EFc7dCD186E1cC96B8D7E1632", + "version": "1.1.4.2" }, { "contract": "BlockchainParameters", - "proxy": "0xcb2921E8b22b3d5e8C034d5A1AaA594E24443587", - "implementation": "0xf604D0eDFd3Dc73Dc1DbC31ccf54b218cbF1862F", + "proxy": "0xff32a62a9f303e3cB4985CCbEA9122f320EcD154", + "implementation": "0x981E260e7a2d7a83C8F4bA78B40cc97AAB95EDF7", "version": "1.3.1.0" }, { "contract": "CeloUnreleasedTreasury", - "proxy": "0x7C9745752517812d2c7968741Fa8b1B578cFD441", - "implementation": "0xCcE3F693556cbed36759bC162E5e47705E0D7C2A", + "proxy": "0x621b99D7698395aD1A677d981a7F7Ae66cB4861f", + "implementation": "0x4657793c02091974B42d28aA46225A81c113C0C2", "version": "1.1.0.0" }, { "contract": "DoubleSigningSlasher", - "proxy": "0x031C3be2CC63d31226A0EA14FBfD83ae70A76fB1", - "implementation": "0x4e18F3711cDc6613ea630f1fDFB89a01500934c5", - "version": "1.1.2.0" + "proxy": "0x96402dEDCcA832F2874E0fD9626cba302B7495bB", + "implementation": "0x1e96753a534436d7D09bB5f0c9f2e7081A35bd4E", + "version": "1.1.1.1" }, { "contract": "DowntimeSlasher", - "proxy": "0x4c5160408DE5FFA4f4c25034D084c40aec3bA6fF", - "implementation": "0x60b6b1fAe1945ef53AAe72a3f7699708348298D6", - "version": "2.0.1.0" + "proxy": "0x1c82668A47EF53655fC7b473e39a6f8E46E8C154", + "implementation": "0xa1F0F1F2138007695f943872A502ae96ff1Ee9df", + "version": "2.0.0.1" }, { "contract": "Election", - "proxy": "0x947DB20Ef764841b4aD9335b0DdaB83B03AF25EC", - "implementation": "0x0dB1e9Ceb6627ac045a8D316E67b2638B31b4bBf", + "proxy": "0xcB4E4A207DC1C220bd54B2A983E32e923c32E544", + "implementation": "0x6710D9980C55D7963B4dA671A159523BB5b4F6d1", "version": "1.1.4.0" }, { "contract": "EpochManager", - "proxy": "0xbf13Ba354EeF22976Faf20b11E6dd5440514eE68", - "implementation": "0x2b1b73Ad62eFC51afE62D20b79B5e0bc41BBe333", + "proxy": "0x2E290D8c2D6b26985f2826A63Aa103963DbAca23", + "implementation": "0x3D70ab096AF8892b4C3CB652E9D7e1CceA6e25FC", "version": "1.1.0.0" }, { "contract": "EpochManagerEnabler", - "proxy": "0x8A6F9F2B407FD63a087D47b32A98A991d26298f0", - "implementation": "0x8b0D48E4CA18484aEDc3B50f28EEa342F68B3430", + "proxy": "0xeD2E802c08227c1b3DA3F502Ed9dcAA01616309B", + "implementation": "0x3fFcB4bf2D76C659Aea8AC6667C0C611576284aA", "version": "1.1.0.0" }, { "contract": "EpochRewards", - "proxy": "0x4573120f10c89671a0083d0361B6F3e535de6e6a", - "implementation": "0x5F5f8d61CC0a077CAFD24395a4876c80063c26BD", + "proxy": "0x535D5EbB846832A2d876380dBccCb84eE5521d3f", + "implementation": "0xB4C3e97Ee2acaeb7D840Fde692465903239f213E", "version": "1.1.2.0" }, { "contract": "Escrow", - "proxy": "0x37C08a3F428258e5B835a256b2FB69C52843989a", - "implementation": "0x4242e61cF23587b7d73da0b36b66CDCD6D6c9071", + "proxy": "0x69EeE27C1ace51A7a5306D41262D16B6838aDd88", + "implementation": "0xdc359C2E9586B93Ab41fC180079E6485Bc8963Fb", "version": "1.2.0.0" }, { "contract": "FederatedAttestations", - "proxy": "0x6470D27B61D39D4d430083C4D461b9deD5C36e19", - "implementation": "0xFE0393E974cd59c1000E50F1ae83289Ba3CD528B", + "proxy": "0x2972DF87DA881bf2E71ea8aF6dE6E8b2731e13e9", + "implementation": "0x6319822f850f649F23b6d2ABE6d3c68D26a11679", "version": "1.1.0.0" }, { "contract": "FeeCurrencyDirectory", - "proxy": "0x0eD091C4F1669B31A4C22408Ce44326a0914f8Ec", - "implementation": "0x06Ff7d743E523ac7743A37602b50cD16FD0921a3", + "proxy": "0x5a7D21C9255DAA32109c8136661D7e853Fc5BF63", + "implementation": "0xD1F6cdb1E576395076Eb1aF4E2b76037cbb59C95", "version": "1.1.0.0" }, { "contract": "FeeCurrencyWhitelist", - "proxy": "0xC4A33659f7cf6277bcE979E3Dbd968e19015472a", - "implementation": "0x6417714d1997497182DB4abcc5D17bB8efcd2055", + "proxy": "0xdc2aFCA04340Ff16Bf0ac722568F1F9832Cc6154", + "implementation": "0xcA4009932604dfe05A0bD453f31a55770016E681", "version": "NONE" }, { "contract": "FeeHandler", - "proxy": "0xC7Bbf9cF343A87B592aE9B0E9ee2c8E71D7f5387", - "implementation": "0x18bC41e7032e9e78A2b7D0232E91c0cD7a898121", - "version": "1.1.0.1" + "proxy": "0xeaEEC408eCbCdF9CDF21d0B1880419dF7290E2c9", + "implementation": "0x82106CcC8feAE0bEc797281ae4dDf5F77E3E6156", + "version": "1.2.0.0" }, { "contract": "Freezer", - "proxy": "0x72AFCee38f30f878468ef4B09784bab03Ebe7979", - "implementation": "0x3CDbA319Ea4ab399d3FD5281e0eE3443077fAffd", + "proxy": "0x1ab1c5cd627d5e51aD093FF6F9433309CD68597e", + "implementation": "0x5b782AF0BCFbA4a66b6441a9cE05A7954a6d9913", "version": "NONE" }, { "contract": "GasPriceMinimum", - "proxy": "0x50e744e3e818cBebB6251bB577E8D106E06C4D08", - "implementation": "0x64B7527B6fc6327403603FA5C9ADe48a6160808f", + "proxy": "0x9220E1A69bF1b9A26041ff582b7AdC4124D8364f", + "implementation": "0x541Cdf8Dd40cEC9bAF3824001776A0C4f842c08B", "version": "1.2.1.0" }, { "contract": "GoldToken", - "proxy": "0x53C4774Afa905093531dD7312a7171f78ba64e8E", - "implementation": "0x7B04141AB1EE8ECCd189015e7bF1294531785708", + "proxy": "0x84afC656f046C38D6022C2f02b9F667f028e1ef0", + "implementation": "0xd83c2018543B661B6e96810ca1B8b87a4B01e1a8", "version": "1.1.3.0" }, { "contract": "Governance", - "proxy": "0x1164B9e064bf1D8C3B70a70A4b6929d0488b6d0a", - "implementation": "0x4feBB2a68917ba1902EAA94934e67158Ef2E211C", - "version": "1.5.0.0" + "proxy": "0x2EB25B5eb9d5A4f61deb1e4F846343F862eB67D9", + "implementation": "0x063BDb2e9A86e8aD2ad9fc488e9E45Dc2a845c3a", + "version": "1.4.2.0" }, { "contract": "LockedGold", - "proxy": "0x08E6B8D57c7387364EbF5DD3bc34Ed96e97ff0bF", - "implementation": "0xFFdeBC16e42b199b8A8FC7f6D55Cc14da0b059A2", + "proxy": "0x619b4767f6A955E63ED7d334DF3384bc4eacFdB8", + "implementation": "0xaEeE10944B805Bda8Ef6d41645aDb36b24B3F9E1", "version": "1.1.5.0" }, { "contract": "MentoFeeHandlerSeller", - "proxy": "0x119e4B81Ea1E0cAb2222411216486d7B1e75f20C", - "implementation": "0x5b0605c44f4356b6F479f00fD5e3A1e6D22867Fc", - "version": "1.1.0.1" + "proxy": "0x4b08c6219147552F68A3D4CA0ab4737B531660e4", + "implementation": "0x5d301e716d607a0c43B8DfF4d6102a13c18FA961", + "version": "1.1.1.0" }, { "contract": "OdisPayments", - "proxy": "0xA538082B97D1059abd2B8Ea609517E4EF092C25f", - "implementation": "0x7c14920BF4319C81b6Ac73532e3a40eC794e548C", + "proxy": "0x8Cc7e63482Ca6Ee77E0D1820395289D07249de77", + "implementation": "0x5683019ff6BCEaaC2badD1d73F6Ff28500079b41", "version": "1.1.0.0" }, { "contract": "Random", - "proxy": "0x4e9E0C0C16d0bCb477bD819C626Fe2ad6C223C92", - "implementation": "0x854DeFc99Cc15b2deA3E2fdB69c4EDe9D8e111A7", + "proxy": "0xA9DB88ADd5d6910183F38D5d0A451868898C7C82", + "implementation": "0x93D3Af5d5aAb66fAeF41A9242E12307D1813d2B3", "version": "1.1.2.0" }, { "contract": "Registry", "proxy": "0x000000000000000000000000000000000000ce10", - "implementation": "0xd677807472E95cdC82CCbD79B84bAC8395187a8F", + "implementation": "0x67bd72d0101905B1928E56f3204058c8C2D53251", "version": "NONE" }, { "contract": "Reserve", - "proxy": "0x0080094aDe1b0D9337bE75c470d84aDC561Ac964", + "proxy": "0x153193d9b852Dd791565a2929110282976040e54", "implementation": "0x6DDBd2A88C55e28ac8283c43D1F7100C295283fb", "version": "1.1.2.2" }, { "contract": "ScoreManager", - "proxy": "0x150Cd14f6caeB9f9E16ca6B330B487822D4Ea00a", - "implementation": "0x154A296F3D0A618d85884D9F669309957D0cF63F", + "proxy": "0x26B262FbaB2E243a4CEFD2Dbde9e1C203BaCd732", + "implementation": "0x345E7101aa60eDe5864822FC3fb2E5d5f679C187", "version": "1.1.0.0" }, { "contract": "SortedOracles", - "proxy": "0xAa2b1051A90b6BCa493E844338307dCe6817F4d7", - "implementation": "0x8501aF1E5161026c363C46e025561DEFd007271E", + "proxy": "0xeA6aCD469A2C2F32E167a9Ce50db735B61e00A2a", + "implementation": "0x19f9025D0eF2Ea2025b51DCB7CEEC4845aaf2A5e", "version": "1.1.4.0" }, { "contract": "StableToken", - "proxy": "0x9cA64d4663B4A623C3E9a7F9155451647592bEc7", + "proxy": "0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1", "implementation": "0xaD68bacb5A5BC14D3a919c260366cacF76884444", "version": "NONE" }, { "contract": "StableTokenBRL", - "proxy": "0xC458f5ab25a47741205722d465cDea9aB1E1154A", + "proxy": "0xB2Fd9852Ca3D69678286A8635d661690906A3E9d", "implementation": "0x687E05F04d0499EDEDFe89d6aed42Cc69F354a8A", "version": "NONE" }, { "contract": "StableTokenEUR", - "proxy": "0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9", + "proxy": "0x5930519559Ffa7528a00BE445734036471c443a2", "implementation": "0x8fAC402cAb89Ba28b244249319c093Abe75c4dED", "version": "NONE" }, { "contract": "UniswapFeeHandlerSeller", - "proxy": "0x3C9E3f84f95C1AEFbC8501aBcF882DA63F09DB78", - "implementation": "0xEF6022d615fE7B994edB74541E803E67414Da50e", - "version": "1.1.0.1" + "proxy": "0x33f9eFcF4d4834932D3958d6d1d5AE18F358406E", + "implementation": "0xfFcE963152Faf3e797a71582Ef6419a7E6204542", + "version": "2.0.0.0" }, { "contract": "Validators", - "proxy": "0x88a66D2608E66f82Bf445d8AFA13629a7c4ac718", - "implementation": "0x527edb2c6788b7D69b06E011E2F4Ac7deDfaFA3b", + "proxy": "0x0fEDbA6Ae0D2cD916FaB191aA822cf9fe41990Be", + "implementation": "0x2b8669A7f7066507a140CD4D60D1946ff864A0B0", "version": "1.3.0.0" } ] diff --git a/packages/cli/src/commands/network/__snapshots__/contracts.test.ts.snap b/packages/cli/src/commands/network/__snapshots__/contracts.test.ts.snap index 63f50bbed4..70eb072f57 100644 --- a/packages/cli/src/commands/network/__snapshots__/contracts.test.ts.snap +++ b/packages/cli/src/commands/network/__snapshots__/contracts.test.ts.snap @@ -6,188 +6,188 @@ exports[`network:contracts runs 1`] = ` "[ { "contract": "Accounts", - "proxy": "0x3B4a625Ba01F298Fab94eda78e4e310704F9B658", - "implementation": "0x27f640a4f0C95Fd18432be400653113ce0b6a617", - "version": "1.1.5.0" + "proxy": "0x6e31AE4b9cC7A90ae038b8FBBEd2Eb95104BA8aE", + "implementation": "0x8b2172Dd4eEA915EFc7dCD186E1cC96B8D7E1632", + "version": "1.1.4.2" }, { "contract": "BlockchainParameters", - "proxy": "0xcb2921E8b22b3d5e8C034d5A1AaA594E24443587", - "implementation": "0xf604D0eDFd3Dc73Dc1DbC31ccf54b218cbF1862F", + "proxy": "0xff32a62a9f303e3cB4985CCbEA9122f320EcD154", + "implementation": "0x981E260e7a2d7a83C8F4bA78B40cc97AAB95EDF7", "version": "1.3.1.0" }, { "contract": "CeloUnreleasedTreasury", - "proxy": "0x7C9745752517812d2c7968741Fa8b1B578cFD441", - "implementation": "0xCcE3F693556cbed36759bC162E5e47705E0D7C2A", + "proxy": "0x621b99D7698395aD1A677d981a7F7Ae66cB4861f", + "implementation": "0x4657793c02091974B42d28aA46225A81c113C0C2", "version": "1.1.0.0" }, { "contract": "DoubleSigningSlasher", - "proxy": "0x031C3be2CC63d31226A0EA14FBfD83ae70A76fB1", - "implementation": "0x4e18F3711cDc6613ea630f1fDFB89a01500934c5", - "version": "1.1.2.0" + "proxy": "0x96402dEDCcA832F2874E0fD9626cba302B7495bB", + "implementation": "0x1e96753a534436d7D09bB5f0c9f2e7081A35bd4E", + "version": "1.1.1.1" }, { "contract": "DowntimeSlasher", - "proxy": "0x4c5160408DE5FFA4f4c25034D084c40aec3bA6fF", - "implementation": "0x60b6b1fAe1945ef53AAe72a3f7699708348298D6", - "version": "2.0.1.0" + "proxy": "0x1c82668A47EF53655fC7b473e39a6f8E46E8C154", + "implementation": "0xa1F0F1F2138007695f943872A502ae96ff1Ee9df", + "version": "2.0.0.1" }, { "contract": "Election", - "proxy": "0x947DB20Ef764841b4aD9335b0DdaB83B03AF25EC", - "implementation": "0x0dB1e9Ceb6627ac045a8D316E67b2638B31b4bBf", + "proxy": "0xcB4E4A207DC1C220bd54B2A983E32e923c32E544", + "implementation": "0x6710D9980C55D7963B4dA671A159523BB5b4F6d1", "version": "1.1.4.0" }, { "contract": "EpochManager", - "proxy": "0xbf13Ba354EeF22976Faf20b11E6dd5440514eE68", - "implementation": "0x2b1b73Ad62eFC51afE62D20b79B5e0bc41BBe333", + "proxy": "0x2E290D8c2D6b26985f2826A63Aa103963DbAca23", + "implementation": "0x3D70ab096AF8892b4C3CB652E9D7e1CceA6e25FC", "version": "1.1.0.0" }, { "contract": "EpochManagerEnabler", - "proxy": "0x8A6F9F2B407FD63a087D47b32A98A991d26298f0", - "implementation": "0x8b0D48E4CA18484aEDc3B50f28EEa342F68B3430", + "proxy": "0xeD2E802c08227c1b3DA3F502Ed9dcAA01616309B", + "implementation": "0x3fFcB4bf2D76C659Aea8AC6667C0C611576284aA", "version": "1.1.0.0" }, { "contract": "EpochRewards", - "proxy": "0x4573120f10c89671a0083d0361B6F3e535de6e6a", - "implementation": "0x5F5f8d61CC0a077CAFD24395a4876c80063c26BD", + "proxy": "0x535D5EbB846832A2d876380dBccCb84eE5521d3f", + "implementation": "0xB4C3e97Ee2acaeb7D840Fde692465903239f213E", "version": "1.1.2.0" }, { "contract": "Escrow", - "proxy": "0x37C08a3F428258e5B835a256b2FB69C52843989a", - "implementation": "0x4242e61cF23587b7d73da0b36b66CDCD6D6c9071", + "proxy": "0x69EeE27C1ace51A7a5306D41262D16B6838aDd88", + "implementation": "0xdc359C2E9586B93Ab41fC180079E6485Bc8963Fb", "version": "1.2.0.0" }, { "contract": "FederatedAttestations", - "proxy": "0x6470D27B61D39D4d430083C4D461b9deD5C36e19", - "implementation": "0xFE0393E974cd59c1000E50F1ae83289Ba3CD528B", + "proxy": "0x2972DF87DA881bf2E71ea8aF6dE6E8b2731e13e9", + "implementation": "0x6319822f850f649F23b6d2ABE6d3c68D26a11679", "version": "1.1.0.0" }, { "contract": "FeeCurrencyDirectory", - "proxy": "0x0eD091C4F1669B31A4C22408Ce44326a0914f8Ec", - "implementation": "0x06Ff7d743E523ac7743A37602b50cD16FD0921a3", + "proxy": "0x5a7D21C9255DAA32109c8136661D7e853Fc5BF63", + "implementation": "0xD1F6cdb1E576395076Eb1aF4E2b76037cbb59C95", "version": "1.1.0.0" }, { "contract": "FeeCurrencyWhitelist", - "proxy": "0xC4A33659f7cf6277bcE979E3Dbd968e19015472a", - "implementation": "0x6417714d1997497182DB4abcc5D17bB8efcd2055", + "proxy": "0xdc2aFCA04340Ff16Bf0ac722568F1F9832Cc6154", + "implementation": "0xcA4009932604dfe05A0bD453f31a55770016E681", "version": "NONE" }, { "contract": "FeeHandler", - "proxy": "0xC7Bbf9cF343A87B592aE9B0E9ee2c8E71D7f5387", - "implementation": "0x18bC41e7032e9e78A2b7D0232E91c0cD7a898121", - "version": "1.1.0.1" + "proxy": "0xeaEEC408eCbCdF9CDF21d0B1880419dF7290E2c9", + "implementation": "0x82106CcC8feAE0bEc797281ae4dDf5F77E3E6156", + "version": "1.2.0.0" }, { "contract": "Freezer", - "proxy": "0x72AFCee38f30f878468ef4B09784bab03Ebe7979", - "implementation": "0x3CDbA319Ea4ab399d3FD5281e0eE3443077fAffd", + "proxy": "0x1ab1c5cd627d5e51aD093FF6F9433309CD68597e", + "implementation": "0x5b782AF0BCFbA4a66b6441a9cE05A7954a6d9913", "version": "NONE" }, { "contract": "GasPriceMinimum", - "proxy": "0x50e744e3e818cBebB6251bB577E8D106E06C4D08", - "implementation": "0x64B7527B6fc6327403603FA5C9ADe48a6160808f", + "proxy": "0x9220E1A69bF1b9A26041ff582b7AdC4124D8364f", + "implementation": "0x541Cdf8Dd40cEC9bAF3824001776A0C4f842c08B", "version": "1.2.1.0" }, { "contract": "GoldToken", - "proxy": "0x53C4774Afa905093531dD7312a7171f78ba64e8E", - "implementation": "0x7B04141AB1EE8ECCd189015e7bF1294531785708", + "proxy": "0x84afC656f046C38D6022C2f02b9F667f028e1ef0", + "implementation": "0xd83c2018543B661B6e96810ca1B8b87a4B01e1a8", "version": "1.1.3.0" }, { "contract": "Governance", - "proxy": "0x1164B9e064bf1D8C3B70a70A4b6929d0488b6d0a", - "implementation": "0x4feBB2a68917ba1902EAA94934e67158Ef2E211C", - "version": "1.5.0.0" + "proxy": "0x2EB25B5eb9d5A4f61deb1e4F846343F862eB67D9", + "implementation": "0x063BDb2e9A86e8aD2ad9fc488e9E45Dc2a845c3a", + "version": "1.4.2.0" }, { "contract": "LockedGold", - "proxy": "0x08E6B8D57c7387364EbF5DD3bc34Ed96e97ff0bF", - "implementation": "0xFFdeBC16e42b199b8A8FC7f6D55Cc14da0b059A2", + "proxy": "0x619b4767f6A955E63ED7d334DF3384bc4eacFdB8", + "implementation": "0xaEeE10944B805Bda8Ef6d41645aDb36b24B3F9E1", "version": "1.1.5.0" }, { "contract": "MentoFeeHandlerSeller", - "proxy": "0x119e4B81Ea1E0cAb2222411216486d7B1e75f20C", - "implementation": "0x5b0605c44f4356b6F479f00fD5e3A1e6D22867Fc", - "version": "1.1.0.1" + "proxy": "0x4b08c6219147552F68A3D4CA0ab4737B531660e4", + "implementation": "0x5d301e716d607a0c43B8DfF4d6102a13c18FA961", + "version": "1.1.1.0" }, { "contract": "OdisPayments", - "proxy": "0xA538082B97D1059abd2B8Ea609517E4EF092C25f", - "implementation": "0x7c14920BF4319C81b6Ac73532e3a40eC794e548C", + "proxy": "0x8Cc7e63482Ca6Ee77E0D1820395289D07249de77", + "implementation": "0x5683019ff6BCEaaC2badD1d73F6Ff28500079b41", "version": "1.1.0.0" }, { "contract": "Random", - "proxy": "0x4e9E0C0C16d0bCb477bD819C626Fe2ad6C223C92", - "implementation": "0x854DeFc99Cc15b2deA3E2fdB69c4EDe9D8e111A7", + "proxy": "0xA9DB88ADd5d6910183F38D5d0A451868898C7C82", + "implementation": "0x93D3Af5d5aAb66fAeF41A9242E12307D1813d2B3", "version": "1.1.2.0" }, { "contract": "Registry", "proxy": "0x000000000000000000000000000000000000ce10", - "implementation": "0xd677807472E95cdC82CCbD79B84bAC8395187a8F", + "implementation": "0x67bd72d0101905B1928E56f3204058c8C2D53251", "version": "NONE" }, { "contract": "Reserve", - "proxy": "0x0080094aDe1b0D9337bE75c470d84aDC561Ac964", + "proxy": "0x153193d9b852Dd791565a2929110282976040e54", "implementation": "0x6DDBd2A88C55e28ac8283c43D1F7100C295283fb", "version": "1.1.2.2" }, { "contract": "ScoreManager", - "proxy": "0x150Cd14f6caeB9f9E16ca6B330B487822D4Ea00a", - "implementation": "0x154A296F3D0A618d85884D9F669309957D0cF63F", + "proxy": "0x26B262FbaB2E243a4CEFD2Dbde9e1C203BaCd732", + "implementation": "0x345E7101aa60eDe5864822FC3fb2E5d5f679C187", "version": "1.1.0.0" }, { "contract": "SortedOracles", - "proxy": "0xAa2b1051A90b6BCa493E844338307dCe6817F4d7", - "implementation": "0x8501aF1E5161026c363C46e025561DEFd007271E", + "proxy": "0xeA6aCD469A2C2F32E167a9Ce50db735B61e00A2a", + "implementation": "0x19f9025D0eF2Ea2025b51DCB7CEEC4845aaf2A5e", "version": "1.1.4.0" }, { "contract": "StableToken", - "proxy": "0x9cA64d4663B4A623C3E9a7F9155451647592bEc7", + "proxy": "0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1", "implementation": "0xaD68bacb5A5BC14D3a919c260366cacF76884444", "version": "NONE" }, { "contract": "StableTokenBRL", - "proxy": "0xC458f5ab25a47741205722d465cDea9aB1E1154A", + "proxy": "0xB2Fd9852Ca3D69678286A8635d661690906A3E9d", "implementation": "0x687E05F04d0499EDEDFe89d6aed42Cc69F354a8A", "version": "NONE" }, { "contract": "StableTokenEUR", - "proxy": "0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9", + "proxy": "0x5930519559Ffa7528a00BE445734036471c443a2", "implementation": "0x8fAC402cAb89Ba28b244249319c093Abe75c4dED", "version": "NONE" }, { "contract": "UniswapFeeHandlerSeller", - "proxy": "0x3C9E3f84f95C1AEFbC8501aBcF882DA63F09DB78", - "implementation": "0xEF6022d615fE7B994edB74541E803E67414Da50e", - "version": "1.1.0.1" + "proxy": "0x33f9eFcF4d4834932D3958d6d1d5AE18F358406E", + "implementation": "0xfFcE963152Faf3e797a71582Ef6419a7E6204542", + "version": "2.0.0.0" }, { "contract": "Validators", - "proxy": "0x88a66D2608E66f82Bf445d8AFA13629a7c4ac718", - "implementation": "0x527edb2c6788b7D69b06E011E2F4Ac7deDfaFA3b", + "proxy": "0x0fEDbA6Ae0D2cD916FaB191aA822cf9fe41990Be", + "implementation": "0x2b8669A7f7066507a140CD4D60D1946ff864A0B0", "version": "1.3.0.0" } ] diff --git a/packages/cli/src/commands/network/info.ts b/packages/cli/src/commands/network/info.ts index 48b8d400c9..fb440a2289 100644 --- a/packages/cli/src/commands/network/info.ts +++ b/packages/cli/src/commands/network/info.ts @@ -1,4 +1,3 @@ -import { isCel2 } from '@celo/connect' import { Flags } from '@oclif/core' import { BaseCommand } from '../../base' import { printValueMapRecursive } from '../../utils/cli' @@ -19,7 +18,7 @@ export default class Info extends BaseCommand { async run() { const kit = await this.getKit() const res = await this.parse(Info) - const isL2 = await isCel2(kit.connection.web3) + const isL2 = await this.isCel2() let latestEpochNumber: number let epochSize: number diff --git a/packages/cli/src/commands/network/parameters-l2.test.ts b/packages/cli/src/commands/network/parameters-l2.test.ts index 097952116b..7421ade844 100644 --- a/packages/cli/src/commands/network/parameters-l2.test.ts +++ b/packages/cli/src/commands/network/parameters-l2.test.ts @@ -20,7 +20,7 @@ testWithAnvilL2('network:parameters', (web3) => { currentThreshold: 60000000000000000000 (~6.000e+19) electabilityThreshold: 0.001 electableValidators: - max: 100 + max: 110 min: 1 maxNumGroupsVotedFor: 10 totalVotes: 60000000000000000000000 (~6.000e+22) @@ -30,9 +30,9 @@ testWithAnvilL2('network:parameters', (web3) => { isTimeForNextEpoch: false FeeCurrencyDirectory: intrinsicGasForAlternativeFeeCurrency: - 0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9: 21000 (~2.100e+4) - 0x9cA64d4663B4A623C3E9a7F9155451647592bEc7: 21000 (~2.100e+4) - 0xC458f5ab25a47741205722d465cDea9aB1E1154A: 21000 (~2.100e+4) + 0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1: 21000 (~2.100e+4) + 0x5930519559Ffa7528a00BE445734036471c443a2: 21000 (~2.100e+4) + 0xB2Fd9852Ca3D69678286A8635d661690906A3E9d: 21000 (~2.100e+4) Governance: concurrentProposals: 3 dequeueFrequency: 4 hours @@ -52,7 +52,7 @@ testWithAnvilL2('network:parameters', (web3) => { Reserve: frozenReserveGoldDays: 0 frozenReserveGoldStartBalance: 0 - frozenReserveGoldStartDay: 19991 (~1.999e+4) + frozenReserveGoldStartDay: 20013 (~2.001e+4) otherReserveAddresses: tobinTaxStalenessThreshold: 3153600000 (~3.154e+9) diff --git a/packages/cli/src/commands/network/parameters.test.ts b/packages/cli/src/commands/network/parameters.test.ts index 4e5b4875ae..a6447058f7 100644 --- a/packages/cli/src/commands/network/parameters.test.ts +++ b/packages/cli/src/commands/network/parameters.test.ts @@ -26,7 +26,7 @@ testWithAnvilL1('network:parameters', (web3: Web3) => { currentThreshold: 60000000000000000000 (~6.000e+19) electabilityThreshold: 0.001 electableValidators: - max: 100 + max: 110 min: 1 maxNumGroupsVotedFor: 10 totalVotes: 60000000000000000000000 (~6.000e+22) @@ -67,7 +67,7 @@ testWithAnvilL1('network:parameters', (web3: Web3) => { Reserve: frozenReserveGoldDays: 0 frozenReserveGoldStartBalance: 0 - frozenReserveGoldStartDay: 19991 (~1.999e+4) + frozenReserveGoldStartDay: 20013 (~2.001e+4) otherReserveAddresses: tobinTaxStalenessThreshold: 3153600000 (~3.154e+9) diff --git a/packages/cli/src/commands/network/whitelist-l2.test.ts b/packages/cli/src/commands/network/whitelist-l2.test.ts index deba74a35f..e2adf6b294 100644 --- a/packages/cli/src/commands/network/whitelist-l2.test.ts +++ b/packages/cli/src/commands/network/whitelist-l2.test.ts @@ -27,15 +27,15 @@ testWithAnvilL2('network:whitelist cmd', (web3: Web3) => { ", ], [ - " Celo Euro cEUR 0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9 0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9 18 false + " Celo Dollar cUSD 0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1 0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1 18 false ", ], [ - " Celo Dollar cUSD 0x9cA64d4663B4A623C3E9a7F9155451647592bEc7 0x9cA64d4663B4A623C3E9a7F9155451647592bEc7 18 false + " Celo Euro cEUR 0x5930519559Ffa7528a00BE445734036471c443a2 0x5930519559Ffa7528a00BE445734036471c443a2 18 false ", ], [ - " Celo Brazilian Real cREAL 0xC458f5ab25a47741205722d465cDea9aB1E1154A 0xC458f5ab25a47741205722d465cDea9aB1E1154A 18 false + " Celo Brazilian Real cREAL 0xB2Fd9852Ca3D69678286A8635d661690906A3E9d 0xB2Fd9852Ca3D69678286A8635d661690906A3E9d 18 false ", ], ] @@ -49,26 +49,26 @@ testWithAnvilL2('network:whitelist cmd', (web3: Web3) => { [ "[ { - "name": "Celo Euro", - "symbol": "cEUR", - "whitelisted": "0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9", - "token": "0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9", + "name": "Celo Dollar", + "symbol": "cUSD", + "whitelisted": "0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1", + "token": "0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1", "decimals": "18", "usesAdapter": "false" }, { - "name": "Celo Dollar", - "symbol": "cUSD", - "whitelisted": "0x9cA64d4663B4A623C3E9a7F9155451647592bEc7", - "token": "0x9cA64d4663B4A623C3E9a7F9155451647592bEc7", + "name": "Celo Euro", + "symbol": "cEUR", + "whitelisted": "0x5930519559Ffa7528a00BE445734036471c443a2", + "token": "0x5930519559Ffa7528a00BE445734036471c443a2", "decimals": "18", "usesAdapter": "false" }, { "name": "Celo Brazilian Real", "symbol": "cREAL", - "whitelisted": "0xC458f5ab25a47741205722d465cDea9aB1E1154A", - "token": "0xC458f5ab25a47741205722d465cDea9aB1E1154A", + "whitelisted": "0xB2Fd9852Ca3D69678286A8635d661690906A3E9d", + "token": "0xB2Fd9852Ca3D69678286A8635d661690906A3E9d", "decimals": "18", "usesAdapter": "false" } diff --git a/packages/cli/src/commands/network/whitelist.test.ts b/packages/cli/src/commands/network/whitelist.test.ts index 0dce6b1802..19c577f6be 100644 --- a/packages/cli/src/commands/network/whitelist.test.ts +++ b/packages/cli/src/commands/network/whitelist.test.ts @@ -30,15 +30,15 @@ testWithAnvilL1('network:whitelist cmd', (web3: Web3) => { ", ], [ - " Celo Euro cEUR 0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9 0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9 18 false + " Celo Dollar cUSD 0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1 0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1 18 false ", ], [ - " Celo Dollar cUSD 0x9cA64d4663B4A623C3E9a7F9155451647592bEc7 0x9cA64d4663B4A623C3E9a7F9155451647592bEc7 18 false + " Celo Euro cEUR 0x5930519559Ffa7528a00BE445734036471c443a2 0x5930519559Ffa7528a00BE445734036471c443a2 18 false ", ], [ - " Celo Brazilian Real cREAL 0xC458f5ab25a47741205722d465cDea9aB1E1154A 0xC458f5ab25a47741205722d465cDea9aB1E1154A 18 false + " Celo Brazilian Real cREAL 0xB2Fd9852Ca3D69678286A8635d661690906A3E9d 0xB2Fd9852Ca3D69678286A8635d661690906A3E9d 18 false ", ], ] diff --git a/packages/cli/src/commands/transfer/celo.test.ts b/packages/cli/src/commands/transfer/celo.test.ts index 67493f144e..022e42c87e 100644 --- a/packages/cli/src/commands/transfer/celo.test.ts +++ b/packages/cli/src/commands/transfer/celo.test.ts @@ -196,9 +196,9 @@ testWithAnvilL1('transfer:celo cmd', (web3: Web3) => { ) ).rejects.toThrowErrorMatchingInlineSnapshot(` "0x1234567890123456789012345678901234567890 is not a valid fee currency. Available currencies: - 0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9 - Celo Euro (cEUR) - 0x9cA64d4663B4A623C3E9a7F9155451647592bEc7 - Celo Dollar (cUSD) - 0xC458f5ab25a47741205722d465cDea9aB1E1154A - Celo Brazilian Real (cREAL)" + 0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1 - Celo Dollar (cUSD) + 0x5930519559Ffa7528a00BE445734036471c443a2 - Celo Euro (cEUR) + 0xB2Fd9852Ca3D69678286A8635d661690906A3E9d - Celo Brazilian Real (cREAL)" `) }) }) diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 3600887397..7d25655163 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -32,7 +32,7 @@ "web3-core-helpers": "1.10.4" }, "devDependencies": { - "@celo/devchain-anvil": "12.0.0-canary.8", + "@celo/devchain-anvil": "12.0.0-canary.33", "@celo/typescript": "workspace:^", "@tsconfig/recommended": "^1.0.3", "@types/fs-extra": "^8.1.0", diff --git a/packages/sdk/contractkit/package.json b/packages/sdk/contractkit/package.json index 30455b6ffd..71e5ccd553 100644 --- a/packages/sdk/contractkit/package.json +++ b/packages/sdk/contractkit/package.json @@ -27,7 +27,7 @@ }, "dependencies": { "@celo/abis": "11.0.0", - "@celo/abis-12": "npm:@celo/abis@12.0.0-canary.35", + "@celo/abis-12": "npm:@celo/abis@12.0.0-canary.60", "@celo/base": "^7.0.0-beta.0", "@celo/connect": "^6.0.3-beta.0", "@celo/utils": "^8.0.0-beta.0", diff --git a/packages/sdk/contractkit/src/kit-l2.test.ts b/packages/sdk/contractkit/src/kit-l2.test.ts index ad04c35d88..6c79af89ab 100644 --- a/packages/sdk/contractkit/src/kit-l2.test.ts +++ b/packages/sdk/contractkit/src/kit-l2.test.ts @@ -1,7 +1,9 @@ import { StrongAddress } from '@celo/base' import { testWithAnvilL2 } from '@celo/dev-utils/lib/anvil-test' +import { timeTravel } from '@celo/dev-utils/lib/ganache-test' import Web3 from 'web3' import { ContractKit, newKitFromWeb3 } from './kit' +import { startAndFinishEpochProcess } from './test-utils/utils' testWithAnvilL2('kit', (web3: Web3) => { let kit: ContractKit @@ -10,8 +12,8 @@ testWithAnvilL2('kit', (web3: Web3) => { beforeAll(async () => { kit = newKitFromWeb3(web3) - const feeCurrencyWhitelist = await kit.contracts.getFeeCurrencyWhitelist() - const gasOptions = await feeCurrencyWhitelist.getWhitelist() + const feeCurrencyWhitelist = await kit.contracts.getFeeCurrencyDirectory() + const gasOptions = await feeCurrencyWhitelist.getAddresses() feeToken = gasOptions[0] }) @@ -24,7 +26,7 @@ testWithAnvilL2('kit', (web3: Web3) => { }) ).resolves.toMatchInlineSnapshot(` { - "feeCurrency": "0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9", + "feeCurrency": "0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1", "gas": 53001, "maxFeeInFeeCurrency": "54061020000000", "maxFeePerGas": "1000000000", @@ -58,7 +60,7 @@ testWithAnvilL2('kit', (web3: Web3) => { }) ).resolves.toMatchInlineSnapshot(` { - "feeCurrency": "0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9", + "feeCurrency": "0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1", "gas": "102864710371401736267367367", "maxFeeInFeeCurrency": "104922004578829770992714714340000000", "maxFeePerGas": "1000000000", @@ -68,4 +70,64 @@ testWithAnvilL2('kit', (web3: Web3) => { }) }) }) + + describe('epochs', () => { + let epochDuration: number + + beforeEach(async () => { + const epochManagerWrapper = await kit.contracts.getEpochManager() + epochDuration = await epochManagerWrapper.epochDuration() + + // Go 3 epochs ahead + for (let i = 0; i < 3; i++) { + await timeTravel(epochDuration * 2, web3) + await startAndFinishEpochProcess(kit) + } + + await timeTravel(epochDuration * 2, web3) + + const accounts = await kit.web3.eth.getAccounts() + + await epochManagerWrapper.startNextEpochProcess().sendAndWaitForReceipt({ + from: accounts[0], + }) + + await ( + await epochManagerWrapper.finishNextEpochProcessTx() + ).sendAndWaitForReceipt({ + from: accounts[0], + }) + }) + + it('gets the current epoch size', async () => { + expect(await kit.getEpochSize()).toEqual(epochDuration) + }) + + it('gets first and last block number of an epoch', async () => { + expect(await kit.getFirstBlockNumberForEpoch(4)).toEqual(300) + expect(await kit.getLastBlockNumberForEpoch(4)).toEqual(352) + + expect(await kit.getFirstBlockNumberForEpoch(5)).toEqual(353) + expect(await kit.getLastBlockNumberForEpoch(5)).toEqual(355) + + expect(await kit.getFirstBlockNumberForEpoch(6)).toEqual(356) + expect(await kit.getLastBlockNumberForEpoch(6)).toEqual(358) + + expect(await kit.getFirstBlockNumberForEpoch(7)).toEqual(359) + expect(await kit.getLastBlockNumberForEpoch(7)).toEqual(361) + + expect(await kit.getFirstBlockNumberForEpoch(8)).toEqual(362) + }) + + it('gets the current epoch number', async () => { + expect(await kit.getEpochNumberOfBlock(300)).toEqual(4) + expect(await kit.getEpochNumberOfBlock(357)).toEqual(6) + expect(await kit.getEpochNumberOfBlock(361)).toEqual(7) + expect(await kit.getEpochNumberOfBlock(362)).toEqual(8) + }) + + it('throws when block number is out of range for L2', async () => { + await expect(kit.getEpochNumberOfBlock(363)).rejects.toThrow() + }) + }) }) diff --git a/packages/sdk/contractkit/src/kit.test.ts b/packages/sdk/contractkit/src/kit.test.ts index eee10e56f0..362d745500 100644 --- a/packages/sdk/contractkit/src/kit.test.ts +++ b/packages/sdk/contractkit/src/kit.test.ts @@ -272,4 +272,19 @@ testWithAnvilL1('kit', (web3: Web3) => { ).resolves.toEqual(BigInt(51)) }) }) + + describe('epochs', () => { + it('gets the current epoch size', async () => { + expect(await kit.getEpochSize()).toEqual(100) + }) + + it('gets first and last block number of an epoch', async () => { + expect(await kit.getFirstBlockNumberForEpoch(2)).toEqual(101) + expect(await kit.getLastBlockNumberForEpoch(2)).toEqual(200) + }) + + it('gets the current epoch number', async () => { + expect(await kit.getEpochNumberOfBlock(300)).toEqual(3) + }) + }) }) diff --git a/packages/sdk/contractkit/src/kit.ts b/packages/sdk/contractkit/src/kit.ts index 0d98611bb4..2cb0b0d920 100644 --- a/packages/sdk/contractkit/src/kit.ts +++ b/packages/sdk/contractkit/src/kit.ts @@ -86,6 +86,7 @@ interface AccountBalance extends EachCeloToken { lockedCELO: BigNumber pending: BigNumber } + /* * ContractKit provides a convenient interface for All Celo Contracts * @@ -214,36 +215,62 @@ export class ContractKit { } this.connection.defaultFeeCurrency = address } - /* - * @deprecated - epoch related methods will be removed from contractkit + + /** + * This method returns for: + * - L1: epoch size (in blocks) + * - L2: epoch duration (in seconds) */ async getEpochSize(): Promise { - const blockchainParamsWrapper = await this.contracts.getBlockchainParameters() - return blockchainParamsWrapper.getEpochSizeNumber() + if (!(await isCel2(this.web3))) { + const blockchainParamsWrapper = await this.contracts.getBlockchainParameters() + + return blockchainParamsWrapper.getEpochSizeNumber() + } + + const epochManagerWrapper = await this.contracts.getEpochManager() + + return epochManagerWrapper.epochDuration() } - /* - * @deprecated - epoch related methods will be removed from contractkit - */ async getFirstBlockNumberForEpoch(epochNumber: number): Promise { - const blockchainParamsWrapper = await this.contracts.getBlockchainParameters() - return blockchainParamsWrapper.getFirstBlockNumberForEpoch(epochNumber) + if (!(await isCel2(this.web3))) { + const blockchainParamsWrapper = await this.contracts.getBlockchainParameters() + + return blockchainParamsWrapper.getFirstBlockNumberForEpoch(epochNumber) + } + + const epochManagerWrapper = await this.contracts.getEpochManager() + + return await epochManagerWrapper.getFirstBlockAtEpoch(epochNumber) } - /* - * @deprecated - epoch related methods will be removed from contractkit - */ async getLastBlockNumberForEpoch(epochNumber: number): Promise { - const blockchainParamsWrapper = await this.contracts.getBlockchainParameters() - return blockchainParamsWrapper.getLastBlockNumberForEpoch(epochNumber) + if (!(await isCel2(this.web3))) { + const blockchainParamsWrapper = await this.contracts.getBlockchainParameters() + + return blockchainParamsWrapper.getLastBlockNumberForEpoch(epochNumber) + } + + const epochManagerWrapper = await this.contracts.getEpochManager() + + return await epochManagerWrapper.getLastBlockAtEpoch(epochNumber) } - /* - * @deprecated - epoch related methods will be removed from contractkit - */ async getEpochNumberOfBlock(blockNumber: number): Promise { - const blockchainParamsWrapper = await this.contracts.getBlockchainParameters() - return blockchainParamsWrapper.getEpochNumberOfBlock(blockNumber) + if (!(await isCel2(this.web3))) { + const blockchainParamsWrapper = await this.contracts.getBlockchainParameters() + + return blockchainParamsWrapper.getEpochNumberOfBlock(blockNumber) + } + + const epochManagerWrapper = await this.contracts.getEpochManager() + + try { + return epochManagerWrapper.getEpochNumberOfBlock(blockNumber) + } catch (_) { + throw new Error(`Block number ${blockNumber} is not in any known L2 epoch`) + } } /* diff --git a/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts b/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts index d669191c24..2e5022e426 100644 --- a/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts +++ b/packages/sdk/contractkit/src/wrappers/BaseWrapperForGoverning.ts @@ -3,6 +3,7 @@ import { AccountsWrapper } from './Accounts' import { BaseWrapper } from './BaseWrapper' import { BlockchainParametersWrapper } from './BlockchainParameters' import { ElectionWrapper } from './Election' +import { EpochManagerWrapper } from './EpochManager' import { LockedGoldWrapper } from './LockedGold' import { MultiSigWrapper } from './MultiSig' import { ScoreManagerWrapper } from './ScoreManager' @@ -16,6 +17,7 @@ interface ContractWrappersForVotingAndRules { getScoreManager: () => Promise getMultiSig: (address: string) => Promise getBlockchainParameters: () => Promise + getEpochManager: () => Promise } /** @internal */ diff --git a/packages/sdk/contractkit/src/wrappers/DowntimeSlasher-l2.test.ts b/packages/sdk/contractkit/src/wrappers/DowntimeSlasher-l2.test.ts new file mode 100644 index 0000000000..9193cd938c --- /dev/null +++ b/packages/sdk/contractkit/src/wrappers/DowntimeSlasher-l2.test.ts @@ -0,0 +1,36 @@ +import { testWithAnvilL2 } from '@celo/dev-utils/lib/anvil-test' +import { mineBlocks, timeTravel } from '@celo/dev-utils/lib/ganache-test' +import Web3 from 'web3' +import { ContractKit, newKitFromWeb3 } from '../kit' +import { startAndFinishEpochProcess } from '../test-utils/utils' + +testWithAnvilL2('DowntimeSlasherWrapper', (web3: Web3) => { + let kit: ContractKit + + beforeEach(async () => { + kit = newKitFromWeb3(web3) + const epochManagerWrapper = await kit.contracts.getEpochManager() + const epochDuration = await epochManagerWrapper.epochDuration() + const downtimeSlasherWrapper = await kit.contracts.getDowntimeSlasher() + + // Go 3 epochs ahead + for (let i = 0; i < 3; i++) { + await timeTravel(epochDuration * 2, web3) + await mineBlocks(await downtimeSlasherWrapper.slashableDowntime(), web3) + await startAndFinishEpochProcess(kit) + } + }) + + it('calculates slashable downtime intervals', async () => { + const wrapper = await kit.contracts.getDowntimeSlasher() + + expect(await wrapper.slashableDowntimeIntervalsBefore()).toMatchInlineSnapshot(` + [ + { + "end": 537, + "start": 478, + }, + ] + `) + }) +}) diff --git a/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.test.ts b/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.test.ts new file mode 100644 index 0000000000..2e075ed5a7 --- /dev/null +++ b/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.test.ts @@ -0,0 +1,23 @@ +import { testWithAnvilL1 } from '@celo/dev-utils/lib/anvil-test' +import Web3 from 'web3' +import { newKitFromWeb3 } from '../kit' + +testWithAnvilL1('DowntimeSlasherWrapper', (web3: Web3) => { + it('calculates slashable downtime intervals', async () => { + const kit = newKitFromWeb3(web3) + const wrapper = await kit.contracts.getDowntimeSlasher() + + expect(await wrapper.slashableDowntimeIntervalsBefore()).toMatchInlineSnapshot(` + [ + { + "end": 300, + "start": 288, + }, + { + "end": 347, + "start": 301, + }, + ] + `) + }) +}) diff --git a/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts b/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts index d3ad94bafe..8e821b0b07 100644 --- a/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts +++ b/packages/sdk/contractkit/src/wrappers/DowntimeSlasher.ts @@ -1,5 +1,5 @@ import { DowntimeSlasher } from '@celo/abis/web3/DowntimeSlasher' -import { Address } from '@celo/connect' +import { Address, isCel2 } from '@celo/connect' import BigNumber from 'bignumber.js' import { BaseSlasher } from './BaseSlasher' import { @@ -99,16 +99,22 @@ export class DowntimeSlasherWrapper extends BaseSlasher { block?: number, maximumLength = 4000 ): Promise { - const [window, blockchainParamsWrapper] = await Promise.all([ + const [window, blockchainParamsWrapper, epochManagerWrapper] = await Promise.all([ this.getSlashableDowntimeWindow(undefined, block), this.contracts.getBlockchainParameters(), + this.contracts.getEpochManager(), ]) let end = window.end const intervals: Interval[] = [] + const isL2 = await isCel2(this.connection.web3) while (end > window.start) { - const epochNumber = await blockchainParamsWrapper.getEpochNumberOfBlock(end) - const firstBlock = await blockchainParamsWrapper.getFirstBlockNumberForEpoch(epochNumber) + const epochNumber = isL2 + ? await epochManagerWrapper.getEpochNumberOfBlock(end) + : await blockchainParamsWrapper.getEpochNumberOfBlock(end) + const firstBlock = isL2 + ? await epochManagerWrapper.getFirstBlockAtEpoch(epochNumber) + : await blockchainParamsWrapper.getFirstBlockNumberForEpoch(epochNumber) const start = Math.max(window.start, end - maximumLength, firstBlock) intervals.push({ start, end }) end = start - 1 diff --git a/packages/sdk/contractkit/src/wrappers/EpochManager.test.ts b/packages/sdk/contractkit/src/wrappers/EpochManager.test.ts index bc1e574e2b..97875c1973 100644 --- a/packages/sdk/contractkit/src/wrappers/EpochManager.test.ts +++ b/packages/sdk/contractkit/src/wrappers/EpochManager.test.ts @@ -19,7 +19,7 @@ testWithAnvilL2('EpochManagerWrapper', (web3: Web3) => { const epochManagerWrapper = await kit.contracts.getEpochManager() expect(epochManagerWrapper.address).toMatchInlineSnapshot( - `"0xbf13Ba354EeF22976Faf20b11E6dd5440514eE68"` + `"0x2E290D8c2D6b26985f2826A63Aa103963DbAca23"` ) }) @@ -38,7 +38,7 @@ testWithAnvilL2('EpochManagerWrapper', (web3: Web3) => { it('gets elected validators', async () => { const epochManagerWrapper = await kit.contracts.getEpochManager() - expect(await epochManagerWrapper.getElected()).toMatchInlineSnapshot(` + expect(await epochManagerWrapper.getElectedAccounts()).toMatchInlineSnapshot(` [ "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65", "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc", @@ -119,6 +119,7 @@ testWithAnvilL2('EpochManagerWrapper', (web3: Web3) => { } it('starts and finishes a number of epochs', async () => { + const accounts = await kit.web3.eth.getAccounts() const epochManagerWrapper = await kit.contracts.getEpochManager() const EPOCH_COUNT = 5 @@ -137,10 +138,16 @@ testWithAnvilL2('EpochManagerWrapper', (web3: Web3) => { } expect(await epochManagerWrapper.getCurrentEpochNumber()).toEqual(10) + expect((await epochManagerWrapper.getEpochProcessingStatus()).status).toEqual(0) + + // Start a new epoch process, but not finish it, so we can check the amounts + await timeTravel(EPOCH_DURATION + 1, web3) + await epochManagerWrapper.startNextEpochProcess().sendAndWaitForReceipt({ + from: accounts[0], + }) const status = await epochManagerWrapper.getEpochProcessingStatus() - expect(status.status).toEqual(0) expect(status.totalRewardsVoter.toNumber()).toBeGreaterThan(0) expect(status.perValidatorReward.toNumber()).toBeGreaterThan(0) expect(status.totalRewardsCommunity.toNumber()).toBeGreaterThan(0) diff --git a/packages/sdk/contractkit/src/wrappers/EpochManager.ts b/packages/sdk/contractkit/src/wrappers/EpochManager.ts index 2f4b032ed9..3dd3f14b73 100644 --- a/packages/sdk/contractkit/src/wrappers/EpochManager.ts +++ b/packages/sdk/contractkit/src/wrappers/EpochManager.ts @@ -40,9 +40,14 @@ export class EpochManagerWrapper extends BaseWrapperForGoverning { valueToInt ) getLastBlockAtEpoch = proxyCall(this.contract.methods.getLastBlockAtEpoch, undefined, valueToInt) + getEpochNumberOfBlock = proxyCall( + this.contract.methods.getEpochNumberOfBlock, + undefined, + valueToInt + ) isOnEpochProcess = proxyCall(this.contract.methods.isOnEpochProcess) isTimeForNextEpoch = proxyCall(this.contract.methods.isTimeForNextEpoch) - getElected = proxyCall(this.contract.methods.getElected) + getElectedAccounts = proxyCall(this.contract.methods.getElectedAccounts) getEpochProcessingStatus = proxyCall( this.contract.methods.epochProcessing, undefined, @@ -61,7 +66,7 @@ export class EpochManagerWrapper extends BaseWrapperForGoverning { finishNextEpochProcess = proxySend(this.connection, this.contract.methods.finishNextEpochProcess) finishNextEpochProcessTx = async () => { - const elected = await this.getElected() + const elected = await this.getElectedAccounts() const validators = await this.contracts.getValidators() const electedGroups = new Set( diff --git a/packages/sdk/contractkit/src/wrappers/FeeCurrencyDirectoryWrapper.test.ts b/packages/sdk/contractkit/src/wrappers/FeeCurrencyDirectoryWrapper.test.ts index f4a946c6bd..5574577367 100644 --- a/packages/sdk/contractkit/src/wrappers/FeeCurrencyDirectoryWrapper.test.ts +++ b/packages/sdk/contractkit/src/wrappers/FeeCurrencyDirectoryWrapper.test.ts @@ -12,21 +12,21 @@ testWithAnvilL1('FeeCurrencyDirectory', (web3) => { [ { "adaptedToken": undefined, - "address": "0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9", + "address": "0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1", "decimals": 18, - "name": "Celo Euro", - "symbol": "cEUR", + "name": "Celo Dollar", + "symbol": "cUSD", }, { "adaptedToken": undefined, - "address": "0x9cA64d4663B4A623C3E9a7F9155451647592bEc7", + "address": "0x5930519559Ffa7528a00BE445734036471c443a2", "decimals": 18, - "name": "Celo Dollar", - "symbol": "cUSD", + "name": "Celo Euro", + "symbol": "cEUR", }, { "adaptedToken": undefined, - "address": "0xC458f5ab25a47741205722d465cDea9aB1E1154A", + "address": "0xB2Fd9852Ca3D69678286A8635d661690906A3E9d", "decimals": 18, "name": "Celo Brazilian Real", "symbol": "cREAL", @@ -37,7 +37,8 @@ testWithAnvilL1('FeeCurrencyDirectory', (web3) => { it('fetches exchange rate', async () => { const wrapper = await kit.contracts.getFeeCurrencyDirectory() - const exchangeRate = await wrapper.getExchangeRate('0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9') + const addresses = await wrapper.getAddresses() + const exchangeRate = await wrapper.getExchangeRate(addresses[0]) expect(exchangeRate.denominator).toEqual(new BigNumber('1000000000000000000000000')) expect(exchangeRate.numerator).toEqual(new BigNumber('1000000000000000000000000')) @@ -45,13 +46,12 @@ testWithAnvilL1('FeeCurrencyDirectory', (web3) => { it('fetches currency config', async () => { const wrapper = await kit.contracts.getFeeCurrencyDirectory() - const currencyConfig = await wrapper.getCurrencyConfig( - '0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9' - ) + const addresses = await wrapper.getAddresses() + const currencyConfig = await wrapper.getCurrencyConfig(addresses[0]) expect(currencyConfig).toMatchInlineSnapshot(` { "intrinsicGas": "21000", - "oracle": "0xAa2b1051A90b6BCa493E844338307dCe6817F4d7", + "oracle": "0xeA6aCD469A2C2F32E167a9Ce50db735B61e00A2a", } `) }) @@ -63,9 +63,9 @@ testWithAnvilL1('FeeCurrencyDirectory', (web3) => { expect(config).toMatchInlineSnapshot(` { "intrinsicGasForAlternativeFeeCurrency": { - "0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9": "21000", - "0x9cA64d4663B4A623C3E9a7F9155451647592bEc7": "21000", - "0xC458f5ab25a47741205722d465cDea9aB1E1154A": "21000", + "0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1": "21000", + "0x5930519559Ffa7528a00BE445734036471c443a2": "21000", + "0xB2Fd9852Ca3D69678286A8635d661690906A3E9d": "21000", }, } `) diff --git a/packages/sdk/contractkit/src/wrappers/FeeCurrencyWhitelistWrapper.test.ts b/packages/sdk/contractkit/src/wrappers/FeeCurrencyWhitelistWrapper.test.ts index be76aead14..34c29049c6 100644 --- a/packages/sdk/contractkit/src/wrappers/FeeCurrencyWhitelistWrapper.test.ts +++ b/packages/sdk/contractkit/src/wrappers/FeeCurrencyWhitelistWrapper.test.ts @@ -11,21 +11,21 @@ testWithAnvilL1('FeeCurrencyWhitelist', (web3) => { [ { "adaptedToken": undefined, - "address": "0x06f60E083aDf016a98E3c7A1aFfa1c097B617aB9", + "address": "0x20FE3FD86C231fb8E28255452CEA7851f9C5f9c1", "decimals": 18, - "name": "Celo Euro", - "symbol": "cEUR", + "name": "Celo Dollar", + "symbol": "cUSD", }, { "adaptedToken": undefined, - "address": "0x9cA64d4663B4A623C3E9a7F9155451647592bEc7", + "address": "0x5930519559Ffa7528a00BE445734036471c443a2", "decimals": 18, - "name": "Celo Dollar", - "symbol": "cUSD", + "name": "Celo Euro", + "symbol": "cEUR", }, { "adaptedToken": undefined, - "address": "0xC458f5ab25a47741205722d465cDea9aB1E1154A", + "address": "0xB2Fd9852Ca3D69678286A8635d661690906A3E9d", "decimals": 18, "name": "Celo Brazilian Real", "symbol": "cREAL", diff --git a/packages/sdk/contractkit/src/wrappers/Governance-l2.test.ts b/packages/sdk/contractkit/src/wrappers/Governance-l2.test.ts index 701471aaf6..61ea9694a1 100644 --- a/packages/sdk/contractkit/src/wrappers/Governance-l2.test.ts +++ b/packages/sdk/contractkit/src/wrappers/Governance-l2.test.ts @@ -5,13 +5,13 @@ import { ContractVersion } from '../versions' testWithAnvilL2('GovernanceWrapper', (web3: Web3) => { describe('Hotfixes', () => { - it('gets L2 hotfix record for version >= 1.5.0.0', async () => { + it('gets L2 hotfix record for version >= 1.4.2.0', async () => { const kit = newKitFromWeb3(web3) const governance = await kit.contracts.getGovernance() const hotfixHash = Buffer.from('0x', 'hex') - // Sanity check to make sure we're on at least 1.5.0.0 version - expect((await governance.version()).isAtLeast(new ContractVersion(1, 5, 0, 0))) + // Sanity check to make sure we're on at least 1.4.2.0 version + expect((await governance.version()).isAtLeast(new ContractVersion(1, 4, 2, 0))).toBeTruthy() const hotfixRecordL2 = await governance.getHotfixRecord(hotfixHash) expect(hotfixRecordL2).toMatchInlineSnapshot(` diff --git a/packages/sdk/contractkit/src/wrappers/Governance.test.ts b/packages/sdk/contractkit/src/wrappers/Governance.test.ts index ed52004041..f5289ab25a 100644 --- a/packages/sdk/contractkit/src/wrappers/Governance.test.ts +++ b/packages/sdk/contractkit/src/wrappers/Governance.test.ts @@ -15,10 +15,10 @@ import { MultiSigWrapper } from './MultiSig' // Only on ganache we can test 1.4.1.0 version testWithGanache('Governance Wrapper', (web3: Web3) => { describe('Hotfixes', () => { - it('gets L1 hotfix record pre 1.5.0.0', async () => { + it('gets L1 hotfix record pre 1.4.2.0', async () => { const kit = newKitFromWeb3(web3) const governance = await kit.contracts.getGovernance() - // Sanity check to make sure we're pre 1.5.0.0 + // Sanity check to make sure we're pre 1.4.2.0 expect((await governance.version()).toString()).toBe('1.4.1.0') const hotfixRecord = await governance.getHotfixRecord(Buffer.from('0x', 'hex')) @@ -296,13 +296,13 @@ testWithAnvilL1('Governance Wrapper', (web3: Web3) => { }) describe('Hotfixes', () => { - it('gets L1 hotfix record for version >= 1.5.0.0', async () => { + it('gets L1 hotfix record for version >= 1.4.2.0', async () => { const kit = newKitFromWeb3(web3) const governance = await kit.contracts.getGovernance() const hotfixHash = Buffer.from('0x', 'hex') - // Sanity check to make sure we're on at least 1.5.0.0 version - expect((await governance.version()).isAtLeast(new ContractVersion(1, 5, 0, 0))) + // Sanity check to make sure we're on at least 1.4.2.0 version + expect((await governance.version()).isAtLeast(new ContractVersion(1, 4, 2, 0))).toBeTruthy() // Test L1 context const hotfixRecordL1 = await governance.getHotfixRecord(hotfixHash) diff --git a/packages/sdk/contractkit/src/wrappers/Governance.ts b/packages/sdk/contractkit/src/wrappers/Governance.ts index ff1df7bd16..da997f2535 100644 --- a/packages/sdk/contractkit/src/wrappers/Governance.ts +++ b/packages/sdk/contractkit/src/wrappers/Governance.ts @@ -904,7 +904,7 @@ export class GovernanceWrapper extends BaseWrapperForGoverning { async getHotfixRecord(hash: Buffer): Promise { const version = await this.version() - if (version.isAtLeast(new ContractVersion(1, 5, 0, 0))) { + if (version.isAtLeast(new ContractVersion(1, 4, 2, 0))) { if (await isCel2(this.connection.web3)) { // is L2 const res = await this.contract.methods.getL2HotfixRecord(bufferToHex(hash)).call() diff --git a/packages/sdk/contractkit/src/wrappers/ScoreManager.test.ts b/packages/sdk/contractkit/src/wrappers/ScoreManager.test.ts index 8539b7f352..cbc419ed7a 100644 --- a/packages/sdk/contractkit/src/wrappers/ScoreManager.test.ts +++ b/packages/sdk/contractkit/src/wrappers/ScoreManager.test.ts @@ -13,7 +13,7 @@ testWithAnvilL2('ScoreManager Wrapper', (web3) => { it('gets validator score', async () => { const epochManagerWrapper = await kit.contracts.getEpochManager() const scoreManagerWrapper = await kit.contracts.getScoreManager() - const electedValidatorAddresses = await epochManagerWrapper.getElected() + const electedValidatorAddresses = await epochManagerWrapper.getElectedAccounts() // default score is 1 expect( diff --git a/yarn.lock b/yarn.lock index 09a02fee26..322d24a683 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1624,10 +1624,10 @@ __metadata: languageName: node linkType: hard -"@celo/abis-12@npm:@celo/abis@12.0.0-canary.35": - version: 12.0.0-canary.35 - resolution: "@celo/abis@npm:12.0.0-canary.35" - checksum: 0735d278d056a7b688bddd1d670fa595446efea0d71086ccef627dd37ff9d70c02435854c2b60bd2967bc9f1a7a790fc8b6a42f3d0ab8c352357b1d42e65e4e0 +"@celo/abis-12@npm:@celo/abis@12.0.0-canary.60": + version: 12.0.0-canary.60 + resolution: "@celo/abis@npm:12.0.0-canary.60" + checksum: 605aa68b6d7e2cd43b6a0d8115a44e3ace8416c49401c6559f173461c873ce2a8a1867c0a5dab5be05549f6a7e1d2249c57506a4633643a90694c0a011cf638d languageName: node linkType: hard @@ -1826,7 +1826,7 @@ __metadata: resolution: "@celo/contractkit@workspace:packages/sdk/contractkit" dependencies: "@celo/abis": "npm:11.0.0" - "@celo/abis-12": "npm:@celo/abis@12.0.0-canary.35" + "@celo/abis-12": "npm:@celo/abis@12.0.0-canary.60" "@celo/base": "npm:^7.0.0-beta.0" "@celo/celo-devchain": "npm:^7.0.0" "@celo/connect": "npm:^6.0.3-beta.0" @@ -1879,7 +1879,7 @@ __metadata: dependencies: "@celo/abis": "npm:^11.0.0" "@celo/connect": "npm:^6.0.3-beta.0" - "@celo/devchain-anvil": "npm:12.0.0-canary.8" + "@celo/devchain-anvil": "npm:12.0.0-canary.33" "@celo/typescript": "workspace:^" "@tsconfig/recommended": "npm:^1.0.3" "@types/fs-extra": "npm:^8.1.0" @@ -1895,10 +1895,10 @@ __metadata: languageName: unknown linkType: soft -"@celo/devchain-anvil@npm:12.0.0-canary.8": - version: 12.0.0-canary.8 - resolution: "@celo/devchain-anvil@npm:12.0.0-canary.8" - checksum: 128d1b4a0d841b171df6b4d02aedb0e1b1f29d9ce3c0f1d6e86e7451b3945d9ca3fd0745c2504f4e78a72b1d8bf762198d5a563dc7c6cdab640e8ce1c7fba1fd +"@celo/devchain-anvil@npm:12.0.0-canary.33": + version: 12.0.0-canary.33 + resolution: "@celo/devchain-anvil@npm:12.0.0-canary.33" + checksum: 010b061f3c43b959f201b7aaf56e0d8c1d7558d341e4b5f905a1d445cefc8f8acc1f667d536aa2de40f7f1d850d5af611184e9740c31ff32a8c76266946834f3 languageName: node linkType: hard From 389022056be15c0677b37d4cfaf332afcb652e02 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Tue, 29 Oct 2024 13:01:31 +0100 Subject: [PATCH 14/54] Removing temp commands from cli (#407) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit the gold command was always meant to be a temporary alias, and the recover-old was intended to be a temporarily needed command. --- ## PR-Codex overview This PR focuses on the removal of deprecated commands from the `celocli` CLI tool, specifically `transfer:gold` and `account:recover-old`, along with updates to related documentation. ### Detailed summary - Removed the command `celocli transfer:gold`, replaced by `celocli transfer:celo`. - Removed the command `celocli account:recover-old`, intended for migrating accounts from a beta version of Valora. - Updated `package.json` to change the `clean` script. - Updated documentation to reflect the removal of the above commands. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- .changeset/chilled-cycles-smell.md | 5 ++ .changeset/good-trees-reply.md | 6 ++ docs/command-line-interface/account.md | 69 ------------------- docs/command-line-interface/transfer.md | 37 ---------- packages/cli/package.json | 2 +- .../cli/src/commands/account/recover-old.ts | 60 ---------------- packages/cli/src/commands/transfer/gold.ts | 14 ---- 7 files changed, 12 insertions(+), 181 deletions(-) create mode 100644 .changeset/chilled-cycles-smell.md create mode 100644 .changeset/good-trees-reply.md delete mode 100644 packages/cli/src/commands/account/recover-old.ts delete mode 100644 packages/cli/src/commands/transfer/gold.ts diff --git a/.changeset/chilled-cycles-smell.md b/.changeset/chilled-cycles-smell.md new file mode 100644 index 0000000000..a36bfb9e26 --- /dev/null +++ b/.changeset/chilled-cycles-smell.md @@ -0,0 +1,5 @@ +--- +'@celo/celocli': major +--- + +Remove transfer:gold -- this was an old alias for transfer:celo which has the same functionality diff --git a/.changeset/good-trees-reply.md b/.changeset/good-trees-reply.md new file mode 100644 index 0000000000..38e111ba9e --- /dev/null +++ b/.changeset/good-trees-reply.md @@ -0,0 +1,6 @@ +--- +'@celo/celocli': major +--- +Remove account:recover-old + +This was meant to be a temporary command for migrating account from a beta version of Valora to the release version. Please use a previous version of celocli if you need to make this one time recovery. \ No newline at end of file diff --git a/docs/command-line-interface/account.md b/docs/command-line-interface/account.md index 7692c56891..c541c5a0e9 100644 --- a/docs/command-line-interface/account.md +++ b/docs/command-line-interface/account.md @@ -21,7 +21,6 @@ Manage your account, keys, and metadata * [`celocli account:offchain-read ARG1`](#celocli-accountoffchain-read-arg1) * [`celocli account:offchain-write`](#celocli-accountoffchain-write) * [`celocli account:proof-of-possession`](#celocli-accountproof-of-possession) -* [`celocli account:recover-old`](#celocli-accountrecover-old) * [`celocli account:register`](#celocli-accountregister) * [`celocli account:register-data-encryption-key`](#celocli-accountregister-data-encryption-key) * [`celocli account:register-metadata`](#celocli-accountregister-metadata) @@ -781,74 +780,6 @@ EXAMPLES _See code: [src/commands/account/proof-of-possession.ts](https://github.com/celo-org/developer-tooling/tree/master/packages/cli/src/commands/account/proof-of-possession.ts)_ -## `celocli account:recover-old` - -Recovers the Valora old account and print out the key information. The old Valora app (in a beta state) generated the user address using a seed of 32 bytes, instead of 64 bytes. As the app fixed that, some old accounts were left with some funds. This command allows the user to recover those funds. - -``` -USAGE - $ celocli account:recover-old --mnemonicPath [--gasCurrency - 0x1234567890123456789012345678901234567890] [--globalHelp] [--passphrasePath - ] [--changeIndex ] [--addressIndex ] [--language chinese_simpli - fied|chinese_traditional|english|french|italian|japanese|korean|spanish] - [--derivationPath ] - -FLAGS - --addressIndex= - Choose the address index for the derivation path - - --changeIndex= - Choose the change index for the derivation path - - --derivationPath= - Choose a different derivation Path (Celo's default is "m/44'/52752'/0'"). Use "eth" - as an alias of the Ethereum derivation path ("m/44'/60'/0'"). Recreating the same - account requires knowledge of the mnemonic, passphrase (if any), and the derivation - path - - --gasCurrency=0x1234567890123456789012345678901234567890 - Use a specific gas currency for transaction fees (defaults to CELO if no gas - currency is supplied). It must be a whitelisted token. - - --globalHelp - View all available global flags - - --language=