Browse Source

storage-node-v2: Update to latest runtime changes.

- add/update types
- change ’set-bucket-limits’ and ‘update-bucket-status’ commands
- fix dev ‘upload’ command
Shamil Gadelshin 3 years ago
parent
commit
faf40aa913

+ 11 - 5
runtime-modules/storage/src/lib.rs

@@ -2487,20 +2487,26 @@ decl_module! {
             );
         }
 
+        // ===== Sudo actions (development mode) =====
+
         /// Upload new data objects. Development mode.
         #[weight = 10_000_000] // TODO: adjust weight
         pub fn sudo_upload_data_objects(origin, params: UploadParameters<T>) {
-          ensure_root(origin)?;
+            ensure_root(origin)?;
 
-          Self::upload_data_objects(params)?;
+            Self::upload_data_objects(params)?;
         }
 
         /// Create a dynamic bag. Development mode.
         #[weight = 10_000_000] // TODO: adjust weight
-        pub fn sudo_create_dynamic_bag(origin, bag_id: DynamicBagId<T>) {
-          ensure_root(origin)?;
+        pub fn sudo_create_dynamic_bag(
+            origin,
+            bag_id: DynamicBagId<T>,
+            deletion_prize: Option<DynamicBagDeletionPrize<T>>,
+        ) {
+            ensure_root(origin)?;
 
-          Self::create_dynamic_bag(bag_id)?;
+            Self::create_dynamic_bag(bag_id, deletion_prize)?;
         }
     }
 }

+ 58 - 74
storage-node-v2/README.md

@@ -32,24 +32,23 @@ USAGE
 * [`storage-node dev:multihash`](#storage-node-devmultihash)
 * [`storage-node dev:upload`](#storage-node-devupload)
 * [`storage-node dev:verify-bag-id`](#storage-node-devverify-bag-id)
-* [`storage-node help [COMMAND]`](#storage-node-help-command)
 * [`storage-node leader:cancel-invite`](#storage-node-leadercancel-invite)
 * [`storage-node leader:create-bucket`](#storage-node-leadercreate-bucket)
 * [`storage-node leader:delete-bucket`](#storage-node-leaderdelete-bucket)
 * [`storage-node leader:invite-operator`](#storage-node-leaderinvite-operator)
 * [`storage-node leader:remove-operator`](#storage-node-leaderremove-operator)
+* [`storage-node leader:set-bucket-limits`](#storage-node-leaderset-bucket-limits)
 * [`storage-node leader:set-uploading-block`](#storage-node-leaderset-uploading-block)
 * [`storage-node leader:update-bag`](#storage-node-leaderupdate-bag)
 * [`storage-node leader:update-bag-limit`](#storage-node-leaderupdate-bag-limit)
-* [`storage-node leader:update-blacklist [FILE]`](#storage-node-leaderupdate-blacklist-file)
+* [`storage-node leader:update-blacklist`](#storage-node-leaderupdate-blacklist)
+* [`storage-node leader:update-bucket-status`](#storage-node-leaderupdate-bucket-status)
 * [`storage-node leader:update-data-fee`](#storage-node-leaderupdate-data-fee)
 * [`storage-node leader:update-dynamic-bag-policy`](#storage-node-leaderupdate-dynamic-bag-policy)
 * [`storage-node leader:update-voucher-limits`](#storage-node-leaderupdate-voucher-limits)
 * [`storage-node operator:accept-invitation`](#storage-node-operatoraccept-invitation)
-* [`storage-node operator:set-bucket-limits`](#storage-node-operatorset-bucket-limits)
 * [`storage-node operator:set-metadata`](#storage-node-operatorset-metadata)
-* [`storage-node operator:update-bucket-status`](#storage-node-operatorupdate-bucket-status)
-* [`storage-node server [FILE]`](#storage-node-server-file)
+* [`storage-node server`](#storage-node-server-file)
 
 ## `storage-node dev:init`
 
@@ -145,23 +144,6 @@ OPTIONS
 
 _See code: [src/commands/dev/verify-bag-id.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/dev/verify-bag-id.ts)_
 
-## `storage-node help [COMMAND]`
-
-display help for storage-node
-
-```
-USAGE
-  $ storage-node help [COMMAND]
-
-ARGUMENTS
-  COMMAND  command to show help for
-
-OPTIONS
-  --all  see all commands in CLI
-```
-
-_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v3.0.1/src/commands/help.ts)_
-
 ## `storage-node leader:cancel-invite`
 
 Cancel a storage bucket operator invite. Requires storage working group leader permissions.
@@ -261,6 +243,27 @@ OPTIONS
 
 _See code: [src/commands/leader/remove-operator.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/leader/remove-operator.ts)_
 
+## `storage-node leader:set-bucket-limits`
+
+Set VoucherObjectsSizeLimit and VoucherObjectsNumberLimit for the storage bucket.
+
+```
+USAGE
+  $ storage-node leader:set-bucket-limits
+
+OPTIONS
+  -h, --help               show CLI help
+  -i, --bucketId=bucketId  (required) Storage bucket ID
+  -k, --keyfile=keyfile    Key file for the account. Mandatory in non-dev environment.
+  -m, --dev                Use development mode
+  -o, --objects=objects    (required) New 'voucher object number limit' value
+  -p, --password=password  Key file password (optional).
+  -s, --size=size          (required) New 'voucher object size limit' value
+  -u, --apiUrl=apiUrl      Runtime API URL. Mandatory in non-dev environment. Default is ws://localhost:9944
+```
+
+_See code: [src/commands/leader/set-bucket-limits.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/leader/set-bucket-limits.ts)_
+
 ## `storage-node leader:set-uploading-block`
 
 Set global uploading block. Requires storage working group leader permissions.
@@ -347,22 +350,47 @@ OPTIONS
 
 _See code: [src/commands/leader/update-bag-limit.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/leader/update-bag-limit.ts)_
 
-## `storage-node leader:update-blacklist [FILE]`
+## `storage-node leader:update-blacklist`
 
-describe the command here
+Add/remove a content ID from the blacklist (adds by default).
 
 ```
 USAGE
-  $ storage-node leader:update-blacklist [FILE]
+  $ storage-node leader:update-blacklist
 
 OPTIONS
-  -f, --force
-  -h, --help       show CLI help
-  -n, --name=name  name to print
+  -c, --cid=cid            (required) Content ID
+  -h, --help               show CLI help
+  -k, --keyfile=keyfile    Key file for the account. Mandatory in non-dev environment.
+  -m, --dev                Use development mode
+  -p, --password=password  Key file password (optional).
+  -r, --remove             Remove a content ID from the blaclist
+  -u, --apiUrl=apiUrl      Runtime API URL. Mandatory in non-dev environment. Default is ws://localhost:9944
 ```
 
 _See code: [src/commands/leader/update-blacklist.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/leader/update-blacklist.ts)_
 
+## `storage-node leader:update-bucket-status`
+
+Update storage bucket status (accepting new bags).
+
+```
+USAGE
+  $ storage-node leader:update-bucket-status
+
+OPTIONS
+  -d, --disable            Disables accepting new bags.
+  -e, --enable             Enables accepting new bags (default).
+  -h, --help               show CLI help
+  -i, --bucketId=bucketId  (required) Storage bucket ID
+  -k, --keyfile=keyfile    Key file for the account. Mandatory in non-dev environment.
+  -m, --dev                Use development mode
+  -p, --password=password  Key file password (optional).
+  -u, --apiUrl=apiUrl      Runtime API URL. Mandatory in non-dev environment. Default is ws://localhost:9944
+```
+
+_See code: [src/commands/leader/update-bucket-status.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/leader/update-bucket-status.ts)_
+
 ## `storage-node leader:update-data-fee`
 
 Update data size fee. Requires storage working group leader permissions.
@@ -443,28 +471,6 @@ OPTIONS
 
 _See code: [src/commands/operator/accept-invitation.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/operator/accept-invitation.ts)_
 
-## `storage-node operator:set-bucket-limits`
-
-Set VoucherObjectsSizeLimit and VoucherObjectsNumberLimit for the storage bucket.
-
-```
-USAGE
-  $ storage-node operator:set-bucket-limits
-
-OPTIONS
-  -h, --help               show CLI help
-  -i, --bucketId=bucketId  (required) Storage bucket ID
-  -k, --keyfile=keyfile    Key file for the account. Mandatory in non-dev environment.
-  -m, --dev                Use development mode
-  -o, --objects=objects    (required) New 'voucher object number limit' value
-  -p, --password=password  Key file password (optional).
-  -s, --size=size          (required) New 'voucher object size limit' value
-  -u, --apiUrl=apiUrl      Runtime API URL. Mandatory in non-dev environment. Default is ws://localhost:9944
-  -w, --workerId=workerId  (required) Storage operator worker ID
-```
-
-_See code: [src/commands/operator/set-bucket-limits.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/operator/set-bucket-limits.ts)_
-
 ## `storage-node operator:set-metadata`
 
 Accept pending storage bucket invitation.
@@ -486,35 +492,13 @@ OPTIONS
 
 _See code: [src/commands/operator/set-metadata.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/operator/set-metadata.ts)_
 
-## `storage-node operator:update-bucket-status`
-
-Update storage bucket status (accepting new bags).
-
-```
-USAGE
-  $ storage-node operator:update-bucket-status
-
-OPTIONS
-  -d, --disable            Disables accepting new bags.
-  -e, --enable             Enables accepting new bags (default).
-  -h, --help               show CLI help
-  -i, --bucketId=bucketId  (required) Storage bucket ID
-  -k, --keyfile=keyfile    Key file for the account. Mandatory in non-dev environment.
-  -m, --dev                Use development mode
-  -p, --password=password  Key file password (optional).
-  -u, --apiUrl=apiUrl      Runtime API URL. Mandatory in non-dev environment. Default is ws://localhost:9944
-  -w, --workerId=workerId  (required) Storage operator worker ID
-```
-
-_See code: [src/commands/operator/update-bucket-status.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/operator/update-bucket-status.ts)_
-
-## `storage-node server [FILE]`
+## `storage-node server`
 
 Starts the storage node server.
 
 ```
 USAGE
-  $ storage-node server [FILE]
+  $ storage-node server
 
 OPTIONS
   -d, --uploads=uploads    (required) Data uploading directory (absolute path).

+ 1 - 1
storage-node-v2/scripts/create-auth-request-signature.ts

@@ -13,7 +13,7 @@ createApi('ws://localhost:9944').then(() => {
   const tokenRequestBody: UploadTokenRequestBody = {
     memberId: 0,
     accountId: alice.address,
-    dataObjectId: 1,
+    dataObjectId: 0,
     storageBucketId: 0,
     bagId: 'static:council'
   }

+ 3 - 3
storage-node-v2/scripts/run-all-commands.sh

@@ -2,7 +2,7 @@
 
 
 # Must be run on the clean development chain.
-# It tests all commands.
+# It tests all leader and operator commands.
 
 # Set Alice as leader
 yarn storage-node dev:init # leader workerId = 0
@@ -16,8 +16,8 @@ yarn storage-node leader:update-dynamic-bag-policy -n 10 -m
 # Create and configure a bucket.
 yarn storage-node leader:create-bucket -i=0 --dev # bucketId = 0
 yarn storage-node operator:accept-invitation -w=0 -i=0 --dev
-yarn storage-node operator:set-bucket-limits -w=0 -i=0 -o=100 -s=10000000 --dev
-yarn storage-node operator:update-bucket-status -w=0 -i=0 --enable --dev
+yarn storage-node leader:set-bucket-limits -i=0 -o=100 -s=10000000 --dev
+yarn storage-node leader:update-bucket-status -i=0 --enable --dev
 yarn storage-node leader:update-bag -b=0 -i static:council --dev 
 yarn storage-node operator:set-metadata -w=0 -i=0 -m=http://google.com --dev
 

+ 1 - 1
storage-node-v2/src/api-spec/openapi.yaml

@@ -113,7 +113,7 @@ paths:
               schema:
                 type: object
                 properties:
-                  status:
+                  id:
                     type: string
         401:
           description: Unauthorized

+ 9 - 1
storage-node-v2/src/commands/dev/upload.ts

@@ -1,4 +1,5 @@
 import { flags } from '@oclif/command'
+import BN from 'bn.js'
 import { uploadDataObjects } from '../../services/runtime/extrinsics'
 import ApiCommandBase from '../../command-base/ApiCommandBase'
 import logger from '../../services/logger'
@@ -39,6 +40,13 @@ export default class DevUpload extends ApiCommandBase {
     logger.info('Uploading data objects...')
 
     const api = await this.getApi()
-    await uploadDataObjects(api, objectSize, objectCid)
+
+    // Must be number.
+    const dataFee =
+      (await api.query.storage.dataObjectPerMegabyteFee()) as unknown as BN
+
+    logger.info(`Current data fee: ${dataFee}`)
+
+    await uploadDataObjects(api, objectSize, objectCid, dataFee.toNumber())
   }
 }

+ 2 - 10
storage-node-v2/src/commands/operator/set-bucket-limits.ts → storage-node-v2/src/commands/leader/set-bucket-limits.ts

@@ -8,20 +8,14 @@ import logger from '../../services/logger'
  * Sets voucher limits for the storage bucket.
  *
  * @remarks
- * Storage provider (operator) command. Requires an additional worker ID for
- * runtime verification.
- * Shell command: "operator:set-bucket-limits"
+ * Storage working group leader command. Requires storage WG leader priviliges.
+ * Shell command: "leader:set-bucket-limits"
  */
 export default class LeaderSetBucketLimits extends ApiCommandBase {
   static description =
     'Set VoucherObjectsSizeLimit and VoucherObjectsNumberLimit for the storage bucket.'
 
   static flags = {
-    workerId: flags.integer({
-      char: 'w',
-      required: true,
-      description: 'Storage operator worker ID',
-    }),
     bucketId: flags.integer({
       char: 'i',
       required: true,
@@ -49,7 +43,6 @@ export default class LeaderSetBucketLimits extends ApiCommandBase {
     }
 
     const account = this.getAccount(flags)
-    const worker = flags.workerId ?? 0
     const bucket = flags.bucketId ?? 0
     const objectsLimit = flags.objects ?? 0
     const sizeLimit = flags.size ?? 0
@@ -58,7 +51,6 @@ export default class LeaderSetBucketLimits extends ApiCommandBase {
     const success = await setStorageBucketVoucherLimits(
       api,
       account,
-      worker,
       bucket,
       sizeLimit,
       objectsLimit

+ 4 - 12
storage-node-v2/src/commands/operator/update-bucket-status.ts → storage-node-v2/src/commands/leader/update-bucket-status.ts

@@ -8,19 +8,13 @@ import logger from '../../services/logger'
  * Updates the storage bucket status (accept new bags).
  *
  * @remarks
- * Storage provider (operator) command. Requires an additional worker ID for
- * runtime verification.
- * Shell command: "operator:set-metadata"
+ * Storage working group leader command. Requires storage WG leader priviliges.
+ * Shell command: "leader:update-bucket-status"
  */
-export default class OperatorUpdateStorageBucketStatus extends ApiCommandBase {
+export default class LeaderUpdateStorageBucketStatus extends ApiCommandBase {
   static description = 'Update storage bucket status (accepting new bags).'
 
   static flags = {
-    workerId: flags.integer({
-      char: 'w',
-      required: true,
-      description: 'Storage operator worker ID',
-    }),
     bucketId: flags.integer({
       char: 'i',
       required: true,
@@ -38,9 +32,8 @@ export default class OperatorUpdateStorageBucketStatus extends ApiCommandBase {
   }
 
   async run(): Promise<void> {
-    const { flags } = this.parse(OperatorUpdateStorageBucketStatus)
+    const { flags } = this.parse(LeaderUpdateStorageBucketStatus)
 
-    const worker = flags.workerId ?? 0
     const bucket = flags.bucketId ?? 0
     const disable = flags.disable
     const newStatus = !disable
@@ -56,7 +49,6 @@ export default class OperatorUpdateStorageBucketStatus extends ApiCommandBase {
     const success = await updateStorageBucketStatus(
       api,
       account,
-      worker,
       bucket,
       newStatus
     )

+ 0 - 2
storage-node-v2/src/commands/server.ts

@@ -32,8 +32,6 @@ export default class Server extends ApiCommandBase {
     ...ApiCommandBase.flags,
   }
 
-  static args = [{ name: 'file' }]
-
   async run(): Promise<void> {
     const { flags } = this.parse(Server)
 

+ 5 - 6
storage-node-v2/src/services/runtime/extrinsics.ts

@@ -122,12 +122,14 @@ export async function updateStorageBucketsForBag(
  * @param account - KeyringPair instance
  * @param objectSize - object size in bytes
  * @param objectCid - object CID (Content ID - multihash)
+ * @param dataFee - expected 'DataObjectPerMegabyteFee' runtime value
  * @returns promise with a success flag.
  */
 export async function uploadDataObjects(
   api: ApiPromise,
   objectSize: number,
-  objectCid: string
+  objectCid: string,
+  dataFee: number
 ): Promise<boolean> {
   return await extrinsicWrapper(() => {
     const alice = getAlicePair()
@@ -140,6 +142,7 @@ export async function uploadDataObjects(
           IpfsContentId: objectCid,
         },
       ],
+      expectedDataSizeFee: dataFee,
     })
 
     return sendAndFollowSudoNamedTx(
@@ -465,7 +468,6 @@ export async function updateUploadingBlockedStatus(
  *
  * @param api - runtime API promise
  * @param account - KeyringPair instance
- * @param workerId - runtime storage provider ID (worker ID)
  * @param storageBucketId - runtime storage bucket ID
  * @param newStatus - new storage bucket status status (accepts new bag)
  * @returns promise with a success flag.
@@ -473,13 +475,11 @@ export async function updateUploadingBlockedStatus(
 export async function updateStorageBucketStatus(
   api: ApiPromise,
   account: KeyringPair,
-  workerId: number,
   storageBucketId: number,
   newStatus: boolean
 ): Promise<boolean> {
   return await extrinsicWrapper(() =>
     sendAndFollowNamedTx(api, account, 'storage', 'updateStorageBucketStatus', [
-      workerId,
       storageBucketId,
       newStatus,
     ])
@@ -503,7 +503,6 @@ export async function updateStorageBucketStatus(
 export async function setStorageBucketVoucherLimits(
   api: ApiPromise,
   account: KeyringPair,
-  workerId: number,
   storageBucketId: number,
   newSizeLimit: number,
   newObjectLimit: number
@@ -514,7 +513,7 @@ export async function setStorageBucketVoucherLimits(
       account,
       'storage',
       'setStorageBucketVoucherLimits',
-      [workerId, storageBucketId, newSizeLimit, newObjectLimit]
+      [storageBucketId, newSizeLimit, newObjectLimit]
     )
   )
 }

+ 0 - 2
storage-node-v2/src/services/webApi/app.ts

@@ -115,8 +115,6 @@ function validateUpload(
     scopes: string[],
     schema: OpenAPIV3.SecuritySchemeObject
   ) => {
-    return true // TODO: remove this line
-
     const tokenString = req.headers['x-api-key'] as string
     const token = parseUploadToken(tokenString)
 

+ 1 - 1
storage-node-v2/src/services/webApi/controllers/publicApi.ts

@@ -123,7 +123,7 @@ export async function uploadFile(
       [uploadRequest.dataObjectId]
     )
     res.status(201).json({
-      status: 'received',
+      id: hash,
     })
   } catch (err) {
     await cleanupFileOnError(cleanupFileName, err.toString())

File diff suppressed because it is too large
+ 1 - 1
types/augment-codec/all.ts


+ 0 - 4
types/augment-codec/augment-api-consts.ts

@@ -164,10 +164,6 @@ declare module '@polkadot/api/types/consts' {
        * Exports const - max number of data objects per bag.
        **/
       maxNumberOfDataObjectsPerBag: u64 & AugmentedConst<ApiType>;
-      /**
-       * Exports const - max allowed storage bucket number.
-       **/
-      maxStorageBucketNumber: u64 & AugmentedConst<ApiType>;
       /**
        * Exports const - "Storage buckets per bag" value constraint.
        **/

+ 8 - 4
types/augment-codec/augment-api-errors.ts

@@ -1153,6 +1153,10 @@ declare module '@polkadot/api/types/errors' {
        * Blacklist size limit exceeded.
        **/
       BlacklistSizeLimitExceeded: AugmentedError<ApiType>;
+      /**
+       * Cannot delete non empty dynamic bag.
+       **/
+      CannotDeleteNonEmptyDynamicBag: AugmentedError<ApiType>;
       /**
        * Cannot delete a non-empty storage bucket.
        **/
@@ -1177,6 +1181,10 @@ declare module '@polkadot/api/types/errors' {
        * Upload data error: data objects per bag limit exceeded.
        **/
       DataObjectsPerBagLimitExceeded: AugmentedError<ApiType>;
+      /**
+       * Invalid extrinsic call: data size fee changed.
+       **/
+      DataSizeFeeChanged: AugmentedError<ApiType>;
       /**
        * Invalid operation with invites: another storage provider was invited.
        **/
@@ -1213,10 +1221,6 @@ declare module '@polkadot/api/types/errors' {
        * Invalid operation with invites: storage provider was already invited.
        **/
       InvitedStorageProvider: AugmentedError<ApiType>;
-      /**
-       * Max storage bucket number limit exceeded.
-       **/
-      MaxStorageBucketNumberLimitExceeded: AugmentedError<ApiType>;
       /**
        * Empty "data object creation" collection.
        **/

+ 14 - 14
types/augment-codec/augment-api-events.ts

@@ -2,7 +2,7 @@
 /* eslint-disable */
 
 import type { BTreeSet, Bytes, Option, Vec, bool, u16, u32, u64 } from '@polkadot/types';
-import type { Actor, ApplicationId, ApplicationIdToWorkerIdMap, BagId, CategoryId, ChannelId, ClassId, ContentId, CuratorApplicationId, CuratorApplicationIdToCuratorIdMap, CuratorGroupId, CuratorId, CuratorOpeningId, DataObjectId, DynamicBagId, DynamicBagType, EntityController, EntityCreationVoucher, EntityId, FailedAt, LeadId, MemberId, MintBalanceOf, MintId, Nonce, OpeningId, PostId, PropertyId, ProposalId, ProposalStatus, RationaleText, SchemaId, SideEffect, SideEffects, Status, StorageBucketId, ThreadId, UploadParameters, VecMaxLength, VoteKind, Voucher, WorkerId } from './all';
+import type { Actor, ApplicationId, ApplicationIdToWorkerIdMap, BagId, CategoryId, ChannelId, ClassId, ContentId, CuratorApplicationId, CuratorApplicationIdToCuratorIdMap, CuratorGroupId, CuratorId, CuratorOpeningId, DataObjectId, DynamicBagDeletionPrizeObject, DynamicBagId, DynamicBagType, EntityController, EntityCreationVoucher, EntityId, FailedAt, LeadId, MemberId, MintBalanceOf, MintId, Nonce, OpeningId, PostId, PropertyId, ProposalId, ProposalStatus, RationaleText, SchemaId, SideEffect, SideEffects, Status, StorageBucketId, ThreadId, UploadParameters, VecMaxLength, VoteKind, Voucher, WorkerId } from './all';
 import type { BalanceStatus } from '@polkadot/types/interfaces/balances';
 import type { AuthorityId } from '@polkadot/types/interfaces/consensus';
 import type { AuthorityList } from '@polkadot/types/interfaces/grandpa';
@@ -421,12 +421,13 @@ declare module '@polkadot/api/types/events' {
     };
     storage: {
       /**
-       * Emits on uploading data objects.
+       * Bag objects changed.
        * Params
-       * - data objects IDs
-       * - initial uploading parameters
+       * - bag id
+       * - new total objects size
+       * - new total objects number
        **/
-      DataObjectdUploaded: AugmentedEvent<ApiType, [Vec<DataObjectId>, UploadParameters]>;
+      BagObjectsChanged: AugmentedEvent<ApiType, [BagId, u64, u64]>;
       /**
        * Emits on changing the size-based pricing of new objects uploaded.
        * Params
@@ -450,18 +451,19 @@ declare module '@polkadot/api/types/events' {
        **/
       DataObjectsMoved: AugmentedEvent<ApiType, [BagId, BagId, BTreeSet<DataObjectId>]>;
       /**
-       * Emits on changing the deletion prize for a dynamic bag.
+       * Emits on uploading data objects.
        * Params
-       * - dynamic bag ID
-       * - new deletion prize
+       * - data objects IDs
+       * - initial uploading parameters
        **/
-      DeletionPrizeChanged: AugmentedEvent<ApiType, [DynamicBagId, Balance]>;
+      DataObjectsUploaded: AugmentedEvent<ApiType, [Vec<DataObjectId>, UploadParameters]>;
       /**
        * Emits on creating a dynamic bag.
        * Params
        * - dynamic bag ID
+       * - optional DynamicBagDeletionPrize instance
        **/
-      DynamicBagCreated: AugmentedEvent<ApiType, [DynamicBagId]>;
+      DynamicBagCreated: AugmentedEvent<ApiType, [DynamicBagId, Option<DynamicBagDeletionPrizeObject>]>;
       /**
        * Emits on deleting a dynamic bag.
        * Params
@@ -537,10 +539,9 @@ declare module '@polkadot/api/types/events' {
        * Emits on storage bucket status update.
        * Params
        * - storage bucket ID
-       * - worker ID (storage provider ID)
        * - new status
        **/
-      StorageBucketStatusUpdated: AugmentedEvent<ApiType, [StorageBucketId, WorkerId, bool]>;
+      StorageBucketStatusUpdated: AugmentedEvent<ApiType, [StorageBucketId, bool]>;
       /**
        * Emits on updating storage buckets for bag.
        * Params
@@ -560,11 +561,10 @@ declare module '@polkadot/api/types/events' {
        * Emits on setting the storage bucket voucher limits.
        * Params
        * - storage bucket ID
-       * - invited worker ID
        * - new total objects size limit
        * - new total objects number limit
        **/
-      StorageBucketVoucherLimitsSet: AugmentedEvent<ApiType, [StorageBucketId, WorkerId, u64, u64]>;
+      StorageBucketVoucherLimitsSet: AugmentedEvent<ApiType, [StorageBucketId, u64, u64]>;
       /**
        * Emits on setting the storage operator metadata.
        * Params

+ 9 - 13
types/augment-codec/augment-api-query.ts

@@ -3,7 +3,7 @@
 
 import type { Bytes, Option, Vec, bool, u32, u64 } from '@polkadot/types';
 import type { AnyNumber, ITuple, Observable } from '@polkadot/types/types';
-import type { Application, ApplicationId, ApplicationOf, Category, CategoryId, Channel, ChannelId, Class, ClassId, ClassOf, ClassPermissionsType, ContentId, Credential, Curator, CuratorApplication, CuratorApplicationId, CuratorGroup, CuratorGroupId, CuratorId, CuratorOpening, CuratorOpeningId, DataObjectId, DiscussionPost, DiscussionThread, DynamicBag, DynamicBagCreationPolicy, DynamicBagId, DynamicBagType, ElectionStage, ElectionStake, Entity, EntityController, EntityCreationVoucher, EntityId, EntityOf, HiringApplicationId, InputValidationLengthConstraint, Lead, LeadId, MemberId, Membership, MemoText, Mint, MintId, Opening, OpeningId, OpeningOf, PaidMembershipTerms, PaidTermId, Post, PostId, Principal, PrincipalId, PropertyId, ProposalDetailsOf, ProposalId, ProposalOf, Recipient, RecipientId, RewardRelationship, RewardRelationshipId, SealedVote, Seats, Stake, StakeId, StaticBag, StaticBagId, StorageBucket, StorageBucketId, Thread, ThreadCounter, ThreadId, TransferableStake, VoteKind, WorkerId, WorkerOf, WorkingGroupUnstaker } from './all';
+import type { Application, ApplicationId, ApplicationOf, Bag, BagId, Category, CategoryId, Channel, ChannelId, Class, ClassId, ClassOf, ClassPermissionsType, ContentId, Credential, Curator, CuratorApplication, CuratorApplicationId, CuratorGroup, CuratorGroupId, CuratorId, CuratorOpening, CuratorOpeningId, DataObject, DataObjectId, DiscussionPost, DiscussionThread, DynamicBagCreationPolicy, DynamicBagType, ElectionStage, ElectionStake, Entity, EntityController, EntityCreationVoucher, EntityId, EntityOf, HiringApplicationId, InputValidationLengthConstraint, Lead, LeadId, MemberId, Membership, MemoText, Mint, MintId, Opening, OpeningId, OpeningOf, PaidMembershipTerms, PaidTermId, Post, PostId, Principal, PrincipalId, PropertyId, ProposalDetailsOf, ProposalId, ProposalOf, Recipient, RecipientId, RewardRelationship, RewardRelationshipId, SealedVote, Seats, Stake, StakeId, StorageBucket, StorageBucketId, Thread, ThreadCounter, ThreadId, TransferableStake, VoteKind, WorkerId, WorkerOf, WorkingGroupUnstaker } from './all';
 import type { UncleEntryItem } from '@polkadot/types/interfaces/authorship';
 import type { BabeAuthorityWeight, MaybeRandomness, NextConfigDescriptor, Randomness } from '@polkadot/types/interfaces/babe';
 import type { AccountData, BalanceLock } from '@polkadot/types/interfaces/balances';
@@ -957,6 +957,10 @@ declare module '@polkadot/api/types/storage' {
       validatorSlashInEra: AugmentedQueryDoubleMap<ApiType, (key1: EraIndex | AnyNumber | Uint8Array, key2: AccountId | string | Uint8Array) => Observable<Option<ITuple<[Perbill, BalanceOf]>>>, [EraIndex, AccountId]>;
     };
     storage: {
+      /**
+       * Bags storage map.
+       **/
+      bags: AugmentedQuery<ApiType, (arg: BagId | { Static: any } | { Dynamic: any } | string | Uint8Array) => Observable<Bag>, [BagId]>;
       /**
        * Blacklisted data object hashes.
        **/
@@ -970,13 +974,13 @@ declare module '@polkadot/api/types/storage' {
        **/
       dataObjectPerMegabyteFee: AugmentedQuery<ApiType, () => Observable<BalanceOf>, []>;
       /**
-       * DynamicBagCreationPolicy by bag type storage map.
+       * 'Data objects for bags' storage double map.
        **/
-      dynamicBagCreationPolicies: AugmentedQuery<ApiType, (arg: DynamicBagType | 'Member' | 'Channel' | number | Uint8Array) => Observable<DynamicBagCreationPolicy>, [DynamicBagType]>;
+      dataObjectsById: AugmentedQueryDoubleMap<ApiType, (key1: BagId | { Static: any } | { Dynamic: any } | string | Uint8Array, key2: DataObjectId | AnyNumber | Uint8Array) => Observable<DataObject>, [BagId, DataObjectId]>;
       /**
-       * Dynamic bag storage map.
+       * DynamicBagCreationPolicy by bag type storage map.
        **/
-      dynamicBags: AugmentedQuery<ApiType, (arg: DynamicBagId | { Member: any } | { Channel: any } | string | Uint8Array) => Observable<DynamicBag>, [DynamicBagId]>;
+      dynamicBagCreationPolicies: AugmentedQuery<ApiType, (arg: DynamicBagType | 'Member' | 'Channel' | number | Uint8Array) => Observable<DynamicBagCreationPolicy>, [DynamicBagType]>;
       /**
        * Data object id counter. Starts at zero.
        **/
@@ -985,18 +989,10 @@ declare module '@polkadot/api/types/storage' {
        * Storage bucket id counter. Starts at zero.
        **/
       nextStorageBucketId: AugmentedQuery<ApiType, () => Observable<StorageBucketId>, []>;
-      /**
-       * Working groups' and council's bags storage map.
-       **/
-      staticBags: AugmentedQuery<ApiType, (arg: StaticBagId | { Council: any } | { WorkingGroup: any } | string | Uint8Array) => Observable<StaticBag>, [StaticBagId]>;
       /**
        * Storage buckets.
        **/
       storageBucketById: AugmentedQuery<ApiType, (arg: StorageBucketId | AnyNumber | Uint8Array) => Observable<StorageBucket>, [StorageBucketId]>;
-      /**
-       * Total number of the storage buckets in the system.
-       **/
-      storageBucketsNumber: AugmentedQuery<ApiType, () => Observable<u64>, []>;
       /**
        * "Storage buckets per bag" number limit.
        **/

+ 5 - 5
types/augment-codec/augment-api-tx.ts

@@ -3,7 +3,7 @@
 
 import type { BTreeMap, BTreeSet, Bytes, Compact, Option, Vec, bool, u16, u32, u64 } from '@polkadot/types';
 import type { AnyNumber, ITuple } from '@polkadot/types/types';
-import type { ActivateOpeningAt, Actor, AddOpeningParameters, ApplicationId, ApplicationIdSet, BagId, BalanceOfMint, CategoryId, ChannelContentType, ChannelCurationStatus, ChannelId, ChannelPublicationStatus, ClassId, ClassPermissions, ClassPermissionsType, ClassPropertyValue, ContentId, Credential, CredentialSet, CurationActor, CuratorApplicationId, CuratorApplicationIdSet, CuratorGroupId, CuratorId, CuratorOpeningId, DataObjectId, DynamicBagId, DynamicBagType, ElectionParameters, EntityController, EntityId, EntityPermissions, FillOpeningParameters, InputPropertyValue, InputValue, MemberId, MemoText, Nonce, OpeningId, OpeningPolicyCommitment, OpeningType, Operation, OperationType, OptionalText, PaidTermId, PostId, Property, PropertyId, ProposalId, ReferenceConstraint, RewardPolicy, SchemaId, StorageBucketId, TerminateRoleParameters, ThreadId, UploadParameters, VecMaxLength, VoteKind, WorkerId, WorkingGroup } from './all';
+import type { ActivateOpeningAt, Actor, AddOpeningParameters, ApplicationId, ApplicationIdSet, BagId, BalanceOfMint, CategoryId, ChannelContentType, ChannelCurationStatus, ChannelId, ChannelPublicationStatus, ClassId, ClassPermissions, ClassPermissionsType, ClassPropertyValue, ContentId, Credential, CredentialSet, CurationActor, CuratorApplicationId, CuratorApplicationIdSet, CuratorGroupId, CuratorId, CuratorOpeningId, DataObjectId, DynamicBagDeletionPrize, DynamicBagId, DynamicBagType, ElectionParameters, EntityController, EntityId, EntityPermissions, FillOpeningParameters, InputPropertyValue, InputValue, MemberId, MemoText, Nonce, OpeningId, OpeningPolicyCommitment, OpeningType, Operation, OperationType, OptionalText, PaidTermId, PostId, Property, PropertyId, ProposalId, ReferenceConstraint, RewardPolicy, SchemaId, StorageBucketId, TerminateRoleParameters, ThreadId, UploadParameters, VecMaxLength, VoteKind, WorkerId, WorkingGroup } from './all';
 import type { BabeEquivocationProof } from '@polkadot/types/interfaces/babe';
 import type { Extrinsic, Signature } from '@polkadot/types/interfaces/extrinsics';
 import type { GrandpaEquivocationProof, KeyOwnerProof } from '@polkadot/types/interfaces/grandpa';
@@ -1192,7 +1192,7 @@ declare module '@polkadot/api/types/submittable' {
       /**
        * Sets storage bucket voucher limits.
        **/
-      setStorageBucketVoucherLimits: AugmentedSubmittable<(workerId: WorkerId | AnyNumber | Uint8Array, storageBucketId: StorageBucketId | AnyNumber | Uint8Array, newObjectsSizeLimit: u64 | AnyNumber | Uint8Array, newObjectsNumberLimit: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [WorkerId, StorageBucketId, u64, u64]>;
+      setStorageBucketVoucherLimits: AugmentedSubmittable<(storageBucketId: StorageBucketId | AnyNumber | Uint8Array, newObjectsSizeLimit: u64 | AnyNumber | Uint8Array, newObjectsNumberLimit: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [StorageBucketId, u64, u64]>;
       /**
        * Sets storage operator metadata (eg.: storage node URL).
        **/
@@ -1200,11 +1200,11 @@ declare module '@polkadot/api/types/submittable' {
       /**
        * Create a dynamic bag. Development mode.
        **/
-      sudoCreateDynamicBag: AugmentedSubmittable<(bagId: DynamicBagId | { Member: any } | { Channel: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [DynamicBagId]>;
+      sudoCreateDynamicBag: AugmentedSubmittable<(bagId: DynamicBagId | { Member: any } | { Channel: any } | string | Uint8Array, deletionPrize: Option<DynamicBagDeletionPrize> | null | object | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [DynamicBagId, Option<DynamicBagDeletionPrize>]>;
       /**
        * Upload new data objects. Development mode.
        **/
-      sudoUploadDataObjects: AugmentedSubmittable<(params: UploadParameters | { authenticationKey?: any; bagId?: any; objectCreationList?: any; deletionPrizeSourceAccountId?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [UploadParameters]>;
+      sudoUploadDataObjects: AugmentedSubmittable<(params: UploadParameters | { authenticationKey?: any; bagId?: any; objectCreationList?: any; deletionPrizeSourceAccountId?: any; expectedDataSizeFee?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [UploadParameters]>;
       /**
        * Add and remove hashes to the current blacklist.
        **/
@@ -1220,7 +1220,7 @@ declare module '@polkadot/api/types/submittable' {
       /**
        * Update whether new bags are being accepted for storage.
        **/
-      updateStorageBucketStatus: AugmentedSubmittable<(workerId: WorkerId | AnyNumber | Uint8Array, storageBucketId: StorageBucketId | AnyNumber | Uint8Array, acceptingNewBags: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [WorkerId, StorageBucketId, bool]>;
+      updateStorageBucketStatus: AugmentedSubmittable<(storageBucketId: StorageBucketId | AnyNumber | Uint8Array, acceptingNewBags: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [StorageBucketId, bool]>;
       /**
        * Updates storage buckets for a bag..
        **/

File diff suppressed because it is too large
+ 0 - 0
types/augment-codec/augment-types.ts


+ 12 - 8
types/augment/all/defs.json

@@ -999,16 +999,19 @@
     "DynamicBagCreationPolicy": {
         "numberOfStorageBuckets": "u64"
     },
-    "DynamicBag": {
-        "objects": "BTreeMap<DataObjectId,{\"accepted\":\"bool\",\"deletion_prize\":\"u128\",\"size\":\"u64\"}>",
-        "stored_by": "StorageBucketIdSet",
-        "distributed_by": "Vec<u64>",
-        "deletion_prize": "u128"
+    "DynamicBagDeletionPrize": {
+        "account_id": "GenericAccountId",
+        "prize": "u128"
     },
-    "StaticBag": {
+    "DynamicBagDeletionPrizeObject": {
+        "account_id": "GenericAccountId",
+        "prize": "u128"
+    },
+    "Bag": {
         "objects": "BTreeMap<DataObjectId,{\"accepted\":\"bool\",\"deletion_prize\":\"u128\",\"size\":\"u64\"}>",
         "stored_by": "StorageBucketIdSet",
-        "distributed_by": "Vec<u64>"
+        "distributed_by": "Vec<u64>",
+        "deletion_prize": "Option<u128>"
     },
     "StorageBucket": {
         "operator_status": "StorageBucketOperatorStatus",
@@ -1054,7 +1057,8 @@
         "authenticationKey": "Text",
         "bagId": "BagId",
         "objectCreationList": "Vec<DataObjectCreationParameters>",
-        "deletionPrizeSourceAccountId": "GenericAccountId"
+        "deletionPrizeSourceAccountId": "GenericAccountId",
+        "expectedDataSizeFee": "u128"
     },
     "StorageBucketIdSet": "BTreeSet<StorageBucketId>",
     "DataObjectIdSet": "BTreeSet<DataObjectId>",

+ 21 - 15
types/augment/all/types.ts

@@ -158,6 +158,14 @@ export interface Backer extends Struct {
 /** @name Backers */
 export interface Backers extends Vec<Backer> {}
 
+/** @name Bag */
+export interface Bag extends Struct {
+  readonly objects: BTreeMap<DataObjectId, {"accepted":"bool","deletion_prize":"u128","size":"u64"}>;
+  readonly stored_by: StorageBucketIdSet;
+  readonly distributed_by: Vec<u64>;
+  readonly deletion_prize: Option<u128>;
+}
+
 /** @name BagId */
 export interface BagId extends Enum {
   readonly isStatic: boolean;
@@ -476,19 +484,23 @@ export interface Dynamic extends Enum {
   readonly asChannel: u64;
 }
 
-/** @name DynamicBag */
-export interface DynamicBag extends Struct {
-  readonly objects: BTreeMap<DataObjectId, {"accepted":"bool","deletion_prize":"u128","size":"u64"}>;
-  readonly stored_by: StorageBucketIdSet;
-  readonly distributed_by: Vec<u64>;
-  readonly deletion_prize: u128;
-}
-
 /** @name DynamicBagCreationPolicy */
 export interface DynamicBagCreationPolicy extends Struct {
   readonly numberOfStorageBuckets: u64;
 }
 
+/** @name DynamicBagDeletionPrize */
+export interface DynamicBagDeletionPrize extends Struct {
+  readonly account_id: GenericAccountId;
+  readonly prize: u128;
+}
+
+/** @name DynamicBagDeletionPrizeObject */
+export interface DynamicBagDeletionPrizeObject extends Struct {
+  readonly account_id: GenericAccountId;
+  readonly prize: u128;
+}
+
 /** @name DynamicBagId */
 export interface DynamicBagId extends Enum {
   readonly isMember: boolean;
@@ -1266,13 +1278,6 @@ export interface Static extends Enum {
   readonly asWorkingGroup: WorkingGroup;
 }
 
-/** @name StaticBag */
-export interface StaticBag extends Struct {
-  readonly objects: BTreeMap<DataObjectId, {"accepted":"bool","deletion_prize":"u128","size":"u64"}>;
-  readonly stored_by: StorageBucketIdSet;
-  readonly distributed_by: Vec<u64>;
-}
-
 /** @name StaticBagId */
 export interface StaticBagId extends Enum {
   readonly isCouncil: boolean;
@@ -1414,6 +1419,7 @@ export interface UploadParameters extends Struct {
   readonly bagId: BagId;
   readonly objectCreationList: Vec<DataObjectCreationParameters>;
   readonly deletionPrizeSourceAccountId: GenericAccountId;
+  readonly expectedDataSizeFee: u128;
 }
 
 /** @name Url */

+ 0 - 4
types/augment/augment-api-consts.ts

@@ -164,10 +164,6 @@ declare module '@polkadot/api/types/consts' {
        * Exports const - max number of data objects per bag.
        **/
       maxNumberOfDataObjectsPerBag: u64 & AugmentedConst<ApiType>;
-      /**
-       * Exports const - max allowed storage bucket number.
-       **/
-      maxStorageBucketNumber: u64 & AugmentedConst<ApiType>;
       /**
        * Exports const - "Storage buckets per bag" value constraint.
        **/

+ 8 - 4
types/augment/augment-api-errors.ts

@@ -1153,6 +1153,10 @@ declare module '@polkadot/api/types/errors' {
        * Blacklist size limit exceeded.
        **/
       BlacklistSizeLimitExceeded: AugmentedError<ApiType>;
+      /**
+       * Cannot delete non empty dynamic bag.
+       **/
+      CannotDeleteNonEmptyDynamicBag: AugmentedError<ApiType>;
       /**
        * Cannot delete a non-empty storage bucket.
        **/
@@ -1177,6 +1181,10 @@ declare module '@polkadot/api/types/errors' {
        * Upload data error: data objects per bag limit exceeded.
        **/
       DataObjectsPerBagLimitExceeded: AugmentedError<ApiType>;
+      /**
+       * Invalid extrinsic call: data size fee changed.
+       **/
+      DataSizeFeeChanged: AugmentedError<ApiType>;
       /**
        * Invalid operation with invites: another storage provider was invited.
        **/
@@ -1213,10 +1221,6 @@ declare module '@polkadot/api/types/errors' {
        * Invalid operation with invites: storage provider was already invited.
        **/
       InvitedStorageProvider: AugmentedError<ApiType>;
-      /**
-       * Max storage bucket number limit exceeded.
-       **/
-      MaxStorageBucketNumberLimitExceeded: AugmentedError<ApiType>;
       /**
        * Empty "data object creation" collection.
        **/

+ 14 - 14
types/augment/augment-api-events.ts

@@ -2,7 +2,7 @@
 /* eslint-disable */
 
 import type { BTreeSet, Bytes, Option, Vec, bool, u16, u32, u64 } from '@polkadot/types';
-import type { Actor, ApplicationId, ApplicationIdToWorkerIdMap, BagId, CategoryId, ChannelId, ClassId, ContentId, CuratorApplicationId, CuratorApplicationIdToCuratorIdMap, CuratorGroupId, CuratorId, CuratorOpeningId, DataObjectId, DynamicBagId, DynamicBagType, EntityController, EntityCreationVoucher, EntityId, FailedAt, LeadId, MemberId, MintBalanceOf, MintId, Nonce, OpeningId, PostId, PropertyId, ProposalId, ProposalStatus, RationaleText, SchemaId, SideEffect, SideEffects, Status, StorageBucketId, ThreadId, UploadParameters, VecMaxLength, VoteKind, Voucher, WorkerId } from './all';
+import type { Actor, ApplicationId, ApplicationIdToWorkerIdMap, BagId, CategoryId, ChannelId, ClassId, ContentId, CuratorApplicationId, CuratorApplicationIdToCuratorIdMap, CuratorGroupId, CuratorId, CuratorOpeningId, DataObjectId, DynamicBagDeletionPrizeObject, DynamicBagId, DynamicBagType, EntityController, EntityCreationVoucher, EntityId, FailedAt, LeadId, MemberId, MintBalanceOf, MintId, Nonce, OpeningId, PostId, PropertyId, ProposalId, ProposalStatus, RationaleText, SchemaId, SideEffect, SideEffects, Status, StorageBucketId, ThreadId, UploadParameters, VecMaxLength, VoteKind, Voucher, WorkerId } from './all';
 import type { BalanceStatus } from '@polkadot/types/interfaces/balances';
 import type { AuthorityId } from '@polkadot/types/interfaces/consensus';
 import type { AuthorityList } from '@polkadot/types/interfaces/grandpa';
@@ -421,12 +421,13 @@ declare module '@polkadot/api/types/events' {
     };
     storage: {
       /**
-       * Emits on uploading data objects.
+       * Bag objects changed.
        * Params
-       * - data objects IDs
-       * - initial uploading parameters
+       * - bag id
+       * - new total objects size
+       * - new total objects number
        **/
-      DataObjectdUploaded: AugmentedEvent<ApiType, [Vec<DataObjectId>, UploadParameters]>;
+      BagObjectsChanged: AugmentedEvent<ApiType, [BagId, u64, u64]>;
       /**
        * Emits on changing the size-based pricing of new objects uploaded.
        * Params
@@ -450,18 +451,19 @@ declare module '@polkadot/api/types/events' {
        **/
       DataObjectsMoved: AugmentedEvent<ApiType, [BagId, BagId, BTreeSet<DataObjectId>]>;
       /**
-       * Emits on changing the deletion prize for a dynamic bag.
+       * Emits on uploading data objects.
        * Params
-       * - dynamic bag ID
-       * - new deletion prize
+       * - data objects IDs
+       * - initial uploading parameters
        **/
-      DeletionPrizeChanged: AugmentedEvent<ApiType, [DynamicBagId, Balance]>;
+      DataObjectsUploaded: AugmentedEvent<ApiType, [Vec<DataObjectId>, UploadParameters]>;
       /**
        * Emits on creating a dynamic bag.
        * Params
        * - dynamic bag ID
+       * - optional DynamicBagDeletionPrize instance
        **/
-      DynamicBagCreated: AugmentedEvent<ApiType, [DynamicBagId]>;
+      DynamicBagCreated: AugmentedEvent<ApiType, [DynamicBagId, Option<DynamicBagDeletionPrizeObject>]>;
       /**
        * Emits on deleting a dynamic bag.
        * Params
@@ -537,10 +539,9 @@ declare module '@polkadot/api/types/events' {
        * Emits on storage bucket status update.
        * Params
        * - storage bucket ID
-       * - worker ID (storage provider ID)
        * - new status
        **/
-      StorageBucketStatusUpdated: AugmentedEvent<ApiType, [StorageBucketId, WorkerId, bool]>;
+      StorageBucketStatusUpdated: AugmentedEvent<ApiType, [StorageBucketId, bool]>;
       /**
        * Emits on updating storage buckets for bag.
        * Params
@@ -560,11 +561,10 @@ declare module '@polkadot/api/types/events' {
        * Emits on setting the storage bucket voucher limits.
        * Params
        * - storage bucket ID
-       * - invited worker ID
        * - new total objects size limit
        * - new total objects number limit
        **/
-      StorageBucketVoucherLimitsSet: AugmentedEvent<ApiType, [StorageBucketId, WorkerId, u64, u64]>;
+      StorageBucketVoucherLimitsSet: AugmentedEvent<ApiType, [StorageBucketId, u64, u64]>;
       /**
        * Emits on setting the storage operator metadata.
        * Params

+ 9 - 13
types/augment/augment-api-query.ts

@@ -3,7 +3,7 @@
 
 import type { Bytes, Option, Vec, bool, u32, u64 } from '@polkadot/types';
 import type { AnyNumber, ITuple, Observable } from '@polkadot/types/types';
-import type { Application, ApplicationId, ApplicationOf, Category, CategoryId, Channel, ChannelId, Class, ClassId, ClassOf, ClassPermissionsType, ContentId, Credential, Curator, CuratorApplication, CuratorApplicationId, CuratorGroup, CuratorGroupId, CuratorId, CuratorOpening, CuratorOpeningId, DataObjectId, DiscussionPost, DiscussionThread, DynamicBag, DynamicBagCreationPolicy, DynamicBagId, DynamicBagType, ElectionStage, ElectionStake, Entity, EntityController, EntityCreationVoucher, EntityId, EntityOf, HiringApplicationId, InputValidationLengthConstraint, Lead, LeadId, MemberId, Membership, MemoText, Mint, MintId, Opening, OpeningId, OpeningOf, PaidMembershipTerms, PaidTermId, Post, PostId, Principal, PrincipalId, PropertyId, ProposalDetailsOf, ProposalId, ProposalOf, Recipient, RecipientId, RewardRelationship, RewardRelationshipId, SealedVote, Seats, Stake, StakeId, StaticBag, StaticBagId, StorageBucket, StorageBucketId, Thread, ThreadCounter, ThreadId, TransferableStake, VoteKind, WorkerId, WorkerOf, WorkingGroupUnstaker } from './all';
+import type { Application, ApplicationId, ApplicationOf, Bag, BagId, Category, CategoryId, Channel, ChannelId, Class, ClassId, ClassOf, ClassPermissionsType, ContentId, Credential, Curator, CuratorApplication, CuratorApplicationId, CuratorGroup, CuratorGroupId, CuratorId, CuratorOpening, CuratorOpeningId, DataObject, DataObjectId, DiscussionPost, DiscussionThread, DynamicBagCreationPolicy, DynamicBagType, ElectionStage, ElectionStake, Entity, EntityController, EntityCreationVoucher, EntityId, EntityOf, HiringApplicationId, InputValidationLengthConstraint, Lead, LeadId, MemberId, Membership, MemoText, Mint, MintId, Opening, OpeningId, OpeningOf, PaidMembershipTerms, PaidTermId, Post, PostId, Principal, PrincipalId, PropertyId, ProposalDetailsOf, ProposalId, ProposalOf, Recipient, RecipientId, RewardRelationship, RewardRelationshipId, SealedVote, Seats, Stake, StakeId, StorageBucket, StorageBucketId, Thread, ThreadCounter, ThreadId, TransferableStake, VoteKind, WorkerId, WorkerOf, WorkingGroupUnstaker } from './all';
 import type { UncleEntryItem } from '@polkadot/types/interfaces/authorship';
 import type { BabeAuthorityWeight, MaybeRandomness, NextConfigDescriptor, Randomness } from '@polkadot/types/interfaces/babe';
 import type { AccountData, BalanceLock } from '@polkadot/types/interfaces/balances';
@@ -957,6 +957,10 @@ declare module '@polkadot/api/types/storage' {
       validatorSlashInEra: AugmentedQueryDoubleMap<ApiType, (key1: EraIndex | AnyNumber | Uint8Array, key2: AccountId | string | Uint8Array) => Observable<Option<ITuple<[Perbill, BalanceOf]>>>, [EraIndex, AccountId]>;
     };
     storage: {
+      /**
+       * Bags storage map.
+       **/
+      bags: AugmentedQuery<ApiType, (arg: BagId | { Static: any } | { Dynamic: any } | string | Uint8Array) => Observable<Bag>, [BagId]>;
       /**
        * Blacklisted data object hashes.
        **/
@@ -970,13 +974,13 @@ declare module '@polkadot/api/types/storage' {
        **/
       dataObjectPerMegabyteFee: AugmentedQuery<ApiType, () => Observable<BalanceOf>, []>;
       /**
-       * DynamicBagCreationPolicy by bag type storage map.
+       * 'Data objects for bags' storage double map.
        **/
-      dynamicBagCreationPolicies: AugmentedQuery<ApiType, (arg: DynamicBagType | 'Member' | 'Channel' | number | Uint8Array) => Observable<DynamicBagCreationPolicy>, [DynamicBagType]>;
+      dataObjectsById: AugmentedQueryDoubleMap<ApiType, (key1: BagId | { Static: any } | { Dynamic: any } | string | Uint8Array, key2: DataObjectId | AnyNumber | Uint8Array) => Observable<DataObject>, [BagId, DataObjectId]>;
       /**
-       * Dynamic bag storage map.
+       * DynamicBagCreationPolicy by bag type storage map.
        **/
-      dynamicBags: AugmentedQuery<ApiType, (arg: DynamicBagId | { Member: any } | { Channel: any } | string | Uint8Array) => Observable<DynamicBag>, [DynamicBagId]>;
+      dynamicBagCreationPolicies: AugmentedQuery<ApiType, (arg: DynamicBagType | 'Member' | 'Channel' | number | Uint8Array) => Observable<DynamicBagCreationPolicy>, [DynamicBagType]>;
       /**
        * Data object id counter. Starts at zero.
        **/
@@ -985,18 +989,10 @@ declare module '@polkadot/api/types/storage' {
        * Storage bucket id counter. Starts at zero.
        **/
       nextStorageBucketId: AugmentedQuery<ApiType, () => Observable<StorageBucketId>, []>;
-      /**
-       * Working groups' and council's bags storage map.
-       **/
-      staticBags: AugmentedQuery<ApiType, (arg: StaticBagId | { Council: any } | { WorkingGroup: any } | string | Uint8Array) => Observable<StaticBag>, [StaticBagId]>;
       /**
        * Storage buckets.
        **/
       storageBucketById: AugmentedQuery<ApiType, (arg: StorageBucketId | AnyNumber | Uint8Array) => Observable<StorageBucket>, [StorageBucketId]>;
-      /**
-       * Total number of the storage buckets in the system.
-       **/
-      storageBucketsNumber: AugmentedQuery<ApiType, () => Observable<u64>, []>;
       /**
        * "Storage buckets per bag" number limit.
        **/

+ 5 - 5
types/augment/augment-api-tx.ts

@@ -3,7 +3,7 @@
 
 import type { BTreeMap, BTreeSet, Bytes, Compact, Option, Vec, bool, u16, u32, u64 } from '@polkadot/types';
 import type { AnyNumber, ITuple } from '@polkadot/types/types';
-import type { ActivateOpeningAt, Actor, AddOpeningParameters, ApplicationId, ApplicationIdSet, BagId, BalanceOfMint, CategoryId, ChannelContentType, ChannelCurationStatus, ChannelId, ChannelPublicationStatus, ClassId, ClassPermissions, ClassPermissionsType, ClassPropertyValue, ContentId, Credential, CredentialSet, CurationActor, CuratorApplicationId, CuratorApplicationIdSet, CuratorGroupId, CuratorId, CuratorOpeningId, DataObjectId, DynamicBagId, DynamicBagType, ElectionParameters, EntityController, EntityId, EntityPermissions, FillOpeningParameters, InputPropertyValue, InputValue, MemberId, MemoText, Nonce, OpeningId, OpeningPolicyCommitment, OpeningType, Operation, OperationType, OptionalText, PaidTermId, PostId, Property, PropertyId, ProposalId, ReferenceConstraint, RewardPolicy, SchemaId, StorageBucketId, TerminateRoleParameters, ThreadId, UploadParameters, VecMaxLength, VoteKind, WorkerId, WorkingGroup } from './all';
+import type { ActivateOpeningAt, Actor, AddOpeningParameters, ApplicationId, ApplicationIdSet, BagId, BalanceOfMint, CategoryId, ChannelContentType, ChannelCurationStatus, ChannelId, ChannelPublicationStatus, ClassId, ClassPermissions, ClassPermissionsType, ClassPropertyValue, ContentId, Credential, CredentialSet, CurationActor, CuratorApplicationId, CuratorApplicationIdSet, CuratorGroupId, CuratorId, CuratorOpeningId, DataObjectId, DynamicBagDeletionPrize, DynamicBagId, DynamicBagType, ElectionParameters, EntityController, EntityId, EntityPermissions, FillOpeningParameters, InputPropertyValue, InputValue, MemberId, MemoText, Nonce, OpeningId, OpeningPolicyCommitment, OpeningType, Operation, OperationType, OptionalText, PaidTermId, PostId, Property, PropertyId, ProposalId, ReferenceConstraint, RewardPolicy, SchemaId, StorageBucketId, TerminateRoleParameters, ThreadId, UploadParameters, VecMaxLength, VoteKind, WorkerId, WorkingGroup } from './all';
 import type { BabeEquivocationProof } from '@polkadot/types/interfaces/babe';
 import type { Extrinsic, Signature } from '@polkadot/types/interfaces/extrinsics';
 import type { GrandpaEquivocationProof, KeyOwnerProof } from '@polkadot/types/interfaces/grandpa';
@@ -1192,7 +1192,7 @@ declare module '@polkadot/api/types/submittable' {
       /**
        * Sets storage bucket voucher limits.
        **/
-      setStorageBucketVoucherLimits: AugmentedSubmittable<(workerId: WorkerId | AnyNumber | Uint8Array, storageBucketId: StorageBucketId | AnyNumber | Uint8Array, newObjectsSizeLimit: u64 | AnyNumber | Uint8Array, newObjectsNumberLimit: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [WorkerId, StorageBucketId, u64, u64]>;
+      setStorageBucketVoucherLimits: AugmentedSubmittable<(storageBucketId: StorageBucketId | AnyNumber | Uint8Array, newObjectsSizeLimit: u64 | AnyNumber | Uint8Array, newObjectsNumberLimit: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [StorageBucketId, u64, u64]>;
       /**
        * Sets storage operator metadata (eg.: storage node URL).
        **/
@@ -1200,11 +1200,11 @@ declare module '@polkadot/api/types/submittable' {
       /**
        * Create a dynamic bag. Development mode.
        **/
-      sudoCreateDynamicBag: AugmentedSubmittable<(bagId: DynamicBagId | { Member: any } | { Channel: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [DynamicBagId]>;
+      sudoCreateDynamicBag: AugmentedSubmittable<(bagId: DynamicBagId | { Member: any } | { Channel: any } | string | Uint8Array, deletionPrize: Option<DynamicBagDeletionPrize> | null | object | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [DynamicBagId, Option<DynamicBagDeletionPrize>]>;
       /**
        * Upload new data objects. Development mode.
        **/
-      sudoUploadDataObjects: AugmentedSubmittable<(params: UploadParameters | { authenticationKey?: any; bagId?: any; objectCreationList?: any; deletionPrizeSourceAccountId?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [UploadParameters]>;
+      sudoUploadDataObjects: AugmentedSubmittable<(params: UploadParameters | { authenticationKey?: any; bagId?: any; objectCreationList?: any; deletionPrizeSourceAccountId?: any; expectedDataSizeFee?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [UploadParameters]>;
       /**
        * Add and remove hashes to the current blacklist.
        **/
@@ -1220,7 +1220,7 @@ declare module '@polkadot/api/types/submittable' {
       /**
        * Update whether new bags are being accepted for storage.
        **/
-      updateStorageBucketStatus: AugmentedSubmittable<(workerId: WorkerId | AnyNumber | Uint8Array, storageBucketId: StorageBucketId | AnyNumber | Uint8Array, acceptingNewBags: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [WorkerId, StorageBucketId, bool]>;
+      updateStorageBucketStatus: AugmentedSubmittable<(storageBucketId: StorageBucketId | AnyNumber | Uint8Array, acceptingNewBags: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [StorageBucketId, bool]>;
       /**
        * Updates storage buckets for a bag..
        **/

File diff suppressed because it is too large
+ 0 - 0
types/augment/augment-types.ts


+ 31 - 17
types/src/storage.ts

@@ -1,4 +1,15 @@
-import { Null, u128, u64, Text, Vec, bool, GenericAccountId as AccountId, BTreeSet, BTreeMap } from '@polkadot/types'
+import {
+  Null,
+  u128,
+  u64,
+  Text,
+  Vec,
+  bool,
+  GenericAccountId as AccountId,
+  BTreeSet,
+  BTreeMap,
+  Option,
+} from '@polkadot/types'
 import { RegistryTypes } from '@polkadot/types/types'
 import { JoyBTreeSet, JoyEnum, JoyStructDecorated, WorkingGroup } from './common'
 import { MemberId } from './members'
@@ -39,35 +50,35 @@ export class DistributionBucketId extends u64 {}
 export class StorageBucketIdSet extends JoyBTreeSet(StorageBucketId) {}
 export class DistributionBucketSet extends JoyBTreeSet(DistributionBucketId) {}
 
-export type StaticBagType = {
-  objects: DataObjectIdMap
-  stored_by: StorageBucketIdSet
-  distributed_by: DistributionBucketSet
+export type DynamicBagDeletionPrizeTypeDef = {
+  account_id: AccountId
+  prize: BalanceOf
 }
 
-export class StaticBag
+export class DynamicBagDeletionPrize
   extends JoyStructDecorated({
-    objects: DataObjectIdMap,
-    stored_by: StorageBucketIdSet,
-    distributed_by: DistributionBucketSet,
+    account_id: AccountId,
+    prize: BalanceOf,
   })
-  implements StaticBagType {}
+  implements DynamicBagDeletionPrizeTypeDef {}
+
+export class DynamicBagDeletionPrizeObject extends DynamicBagDeletionPrize {}
 
-export type DynamicBagTypeDef = {
+export type BagTypeDef = {
   objects: DataObjectIdMap
   stored_by: StorageBucketIdSet
   distributed_by: DistributionBucketSet
-  deletion_prize: BalanceOf
+  deletion_prize: Option<BalanceOf>
 }
 
-export class DynamicBag
+export class Bag
   extends JoyStructDecorated({
     objects: DataObjectIdMap,
     stored_by: StorageBucketIdSet,
     distributed_by: DistributionBucketSet,
-    deletion_prize: BalanceOf,
+    deletion_prize: Option.with(BalanceOf),
   })
-  implements DynamicBagTypeDef {}
+  implements BagTypeDef {}
 
 export type DynamicBagCreationPolicyType = {
   numberOfStorageBuckets: u64
@@ -172,6 +183,7 @@ export type UploadParametersType = {
   bagId: BagId
   objectCreationList: Vec<DataObjectCreationParameters>
   deletionPrizeSourceAccountId: AccountId
+  expectedDataSizeFee: BalanceOf
 }
 
 export class UploadParameters
@@ -180,6 +192,7 @@ export class UploadParameters
     bagId: BagId,
     objectCreationList: Vec.with(DataObjectCreationParameters),
     deletionPrizeSourceAccountId: AccountId,
+    expectedDataSizeFee: BalanceOf,
   })
   implements UploadParametersType {}
 
@@ -194,8 +207,9 @@ export const storageTypes: RegistryTypes = {
   Voucher,
   DynamicBagType,
   DynamicBagCreationPolicy,
-  DynamicBag,
-  StaticBag,
+  DynamicBagDeletionPrize,
+  DynamicBagDeletionPrizeObject,
+  Bag,
   StorageBucket,
   StaticBagId,
   Static,

+ 19 - 99
yarn.lock

@@ -1423,13 +1423,6 @@
   dependencies:
     regenerator-runtime "^0.13.4"
 
-"@babel/runtime@^7.12.1":
-  version "7.14.6"
-  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.6.tgz#535203bc0892efc7dec60bdc27b2ecf6e409062d"
-  integrity sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==
-  dependencies:
-    regenerator-runtime "^0.13.4"
-
 "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.13.9":
   version "7.13.10"
   resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d"
@@ -3754,6 +3747,18 @@
     is-ipfs "^0.6.0"
     recursive-fs "^1.1.2"
 
+"@polkadot/api-contract@4.2.1":
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/@polkadot/api-contract/-/api-contract-4.2.1.tgz#8fbfd22e5369cceed9afd21bd3cd475b708b3783"
+  integrity sha512-ZHYIEox6pXrAVjZ99Te0kFlU5KcEblnq+dxGfvNisGKv5xieWFOBqJ/azXmm4LKMer/6uzglBv2IRh2QxE+MnA==
+  dependencies:
+    "@babel/runtime" "^7.13.10"
+    "@polkadot/api" "4.2.1"
+    "@polkadot/types" "4.2.1"
+    "@polkadot/util" "^6.0.5"
+    "@polkadot/x-rxjs" "^6.0.5"
+    bn.js "^4.11.9"
+
 "@polkadot/api-derive@4.2.1":
   version "4.2.1"
   resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-4.2.1.tgz#848a2a9ef947f08660af2571f72ca2b06969f2e3"
@@ -3919,13 +3924,6 @@
   dependencies:
     "@babel/runtime" "^7.13.9"
 
-"@polkadot/networks@^3.7.1":
-  version "3.7.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-3.7.1.tgz#01e568e0f7791c22eb896ffabc23e936ede57c43"
-  integrity sha512-kBPUxt3d1xXeJaFilyVI717TKOZJko/3pvFIDqbSc0i2qdXv8bmRR5r7KMnEB7MvTeMPKHVhcesWksAIdsYRew==
-  dependencies:
-    "@babel/runtime" "^7.12.1"
-
 "@polkadot/react-identicon@^0.57.3":
   version "0.57.3"
   resolved "https://registry.yarnpkg.com/@polkadot/react-identicon/-/react-identicon-0.57.3.tgz#f2f1a9b57faa66e1df47a0238daa9607f76d946c"
@@ -4064,7 +4062,7 @@
     "@babel/runtime" "^7.10.5"
     color "^3.1.2"
 
-"@polkadot/util-crypto@6.0.5", "@polkadot/util-crypto@^6.0.5":
+"@polkadot/util-crypto@6.0.5", "@polkadot/util-crypto@^3.0.1", "@polkadot/util-crypto@^6.0.5":
   version "6.0.5"
   resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-6.0.5.tgz#347ea2bf051d34087766cb43004062358cd43800"
   integrity sha512-NlzmZzJ1vq2bjnQUU0MUocaT9vuIBGTlB/XCrCw94MyYqX19EllkOKLVMgu6o89xhYeP5rmASRQvTx9ZL9EzRw==
@@ -4086,27 +4084,7 @@
     tweetnacl "^1.0.3"
     xxhashjs "^0.2.2"
 
-"@polkadot/util-crypto@^3.0.1":
-  version "3.7.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-3.7.1.tgz#69e1cca5adc521cf0880b244dc1ae0d086c42e4c"
-  integrity sha512-ZxQa10bo85YlxfS8ieDUzmFZMkKWwOp2dGQ0Xy94e4VBkWVPq9JjAfm8RnLy6D7k5KvMhzKuzJk7IcBDDdXGSw==
-  dependencies:
-    "@babel/runtime" "^7.12.1"
-    "@polkadot/networks" "^3.7.1"
-    "@polkadot/util" "^3.7.1"
-    "@polkadot/wasm-crypto" "^1.4.1"
-    base-x "^3.0.8"
-    blakejs "^1.1.0"
-    bn.js "^5.1.3"
-    create-hash "^1.2.0"
-    elliptic "^6.5.3"
-    js-sha3 "^0.8.0"
-    pbkdf2 "^3.1.1"
-    scryptsy "^2.1.0"
-    tweetnacl "^1.0.3"
-    xxhashjs "^0.2.2"
-
-"@polkadot/util@6.0.5", "@polkadot/util@^6.0.5":
+"@polkadot/util@6.0.5", "@polkadot/util@^3.0.1", "@polkadot/util@^6.0.5":
   version "6.0.5"
   resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-6.0.5.tgz#aa52995d3fe998eed218d26b243832a7a3e2944d"
   integrity sha512-0EnYdGAXx/Y2MLgCKtlfdKVcURV+Twx+M+auljTeMK8226pR7xMblYuVuO5bxhPWBa1W7+iQloEZ0VRQrIoMDw==
@@ -4119,19 +4097,6 @@
     camelcase "^5.3.1"
     ip-regex "^4.3.0"
 
-"@polkadot/util@^3.0.1", "@polkadot/util@^3.7.1":
-  version "3.7.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-3.7.1.tgz#b7585380a6177814f7e28dc2165814864ef2c67b"
-  integrity sha512-nvgzAbT/a213mpUd56YwK/zgbGKcQoMNLTmqcBHn1IP9u5J9XJcb1zPzqmCTg6mqnjrsgzJsWml9OpQftrcB6g==
-  dependencies:
-    "@babel/runtime" "^7.12.1"
-    "@polkadot/x-textdecoder" "^3.7.1"
-    "@polkadot/x-textencoder" "^3.7.1"
-    "@types/bn.js" "^4.11.6"
-    bn.js "^5.1.3"
-    camelcase "^5.3.1"
-    ip-regex "^4.2.0"
-
 "@polkadot/vanitygen@^0.18.1":
   version "0.18.1"
   resolved "https://registry.yarnpkg.com/@polkadot/vanitygen/-/vanitygen-0.18.1.tgz#44839473e3cd1490289cef57c05f0466a4e1db80"
@@ -4158,11 +4123,6 @@
   dependencies:
     "@babel/runtime" "^7.13.9"
 
-"@polkadot/wasm-crypto@^1.4.1":
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-1.4.1.tgz#0a053d0c2587da30fb5313cef81f8d9a52029c68"
-  integrity sha512-GPBCh8YvQmA5bobI4rqRkUhrEHkEWU1+lcJVPbZYsa7jiHFaZpzCLrGQfiqW/vtbU1aBS2wmJ0x1nlt33B9QqQ==
-
 "@polkadot/wasm-crypto@^4.0.2":
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-4.0.2.tgz#9649057adee8383cc86433d107ba526b718c5a3b"
@@ -4215,13 +4175,6 @@
     "@babel/runtime" "^7.13.9"
     "@polkadot/x-global" "6.0.5"
 
-"@polkadot/x-textdecoder@^3.7.1":
-  version "3.7.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-3.7.1.tgz#2d02bd33df0e5d4818b8d96892a5c8290e967573"
-  integrity sha512-GztrO7O880GR7C64PK30J7oLm+88OMxAUVW35njE+9qFUH6MGEKbtaLGUSn0JLCCtSme2f1i7DZ+1Pdbqowtnw==
-  dependencies:
-    "@babel/runtime" "^7.12.1"
-
 "@polkadot/x-textencoder@6.0.5":
   version "6.0.5"
   resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-6.0.5.tgz#fc851259de97a98f3417e51807c1f5ebe265fdf0"
@@ -4230,13 +4183,6 @@
     "@babel/runtime" "^7.13.9"
     "@polkadot/x-global" "6.0.5"
 
-"@polkadot/x-textencoder@^3.7.1":
-  version "3.7.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-3.7.1.tgz#1fe1884821f255565735b1b5dbb17ee61de51fa3"
-  integrity sha512-39jwEu+gok8hFl/UqBr6WDhSeSr4qblriwM++2Vwrw/298hd5uQ7xtJNZKdrbrPCkExPZhrxwVg/mJTHBpwSng==
-  dependencies:
-    "@babel/runtime" "^7.12.1"
-
 "@polkadot/x-ws@^6.0.5":
   version "6.0.5"
   resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-6.0.5.tgz#bafab6004d88d9273478332a3a040bfef3647619"
@@ -8531,21 +8477,11 @@ bluebird@^3.1.1, bluebird@^3.3.5, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.
   resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
   integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
 
-bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.4.0:
-  version "4.12.0"
-  resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
-  integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
-
-bn.js@^5.1.2:
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.4.0, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0:
   version "5.1.2"
   resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0"
   integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==
 
-bn.js@^5.1.3, bn.js@^5.2.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002"
-  integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==
-
 body-parser@1.15.2:
   version "1.15.2"
   resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.15.2.tgz#d7578cf4f1d11d5f6ea804cef35dc7a7ff6dae67"
@@ -12307,7 +12243,7 @@ elliptic@^6.5.2:
     minimalistic-assert "^1.0.0"
     minimalistic-crypto-utils "^1.0.0"
 
-elliptic@^6.5.3, elliptic@^6.5.4:
+elliptic@^6.5.4:
   version "6.5.4"
   resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
   integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
@@ -16557,7 +16493,7 @@ ip-regex@^4.0.0:
   resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.1.0.tgz#5ad62f685a14edb421abebc2fff8db94df67b455"
   integrity sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA==
 
-ip-regex@^4.2.0, ip-regex@^4.3.0:
+ip-regex@^4.3.0:
   version "4.3.0"
   resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5"
   integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==
@@ -23306,17 +23242,6 @@ pbkdf2@^3.0.3:
     safe-buffer "^5.0.1"
     sha.js "^2.4.8"
 
-pbkdf2@^3.1.1:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075"
-  integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==
-  dependencies:
-    create-hash "^1.1.2"
-    create-hmac "^1.1.4"
-    ripemd160 "^2.0.1"
-    safe-buffer "^5.0.1"
-    sha.js "^2.4.8"
-
 peek-readable@^3.1.3:
   version "3.1.3"
   resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-3.1.3.tgz#932480d46cf6aa553c46c68566c4fb69a82cd2b1"
@@ -26371,7 +26296,7 @@ rxjs-compat@^6.6.0:
   resolved "https://registry.yarnpkg.com/rxjs-compat/-/rxjs-compat-6.6.2.tgz#23592564243cf24641a5d2e2d2acfc8f6b127186"
   integrity sha512-C3V7axnAkPd91sbW1XreL8ydLM+phUcKViM76GBuT3hCzHMSQbszE/h6ajkgcrDn9j4JZ/OdzklvfAJ9MmXRcg==
 
-rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.1, rxjs@^6.5.2, rxjs@^6.5.3, rxjs@^6.6.6:
+rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.1, rxjs@^6.5.2, rxjs@^6.5.3, rxjs@^6.6.2, rxjs@^6.6.6:
   version "6.6.7"
   resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
   integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
@@ -29245,12 +29170,7 @@ typescript-formatter@^7.2.2:
     commandpost "^1.0.0"
     editorconfig "^0.15.0"
 
-typescript@2.2.2:
-  version "2.2.2"
-  resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.2.tgz#606022508479b55ffa368b58fee963a03dfd7b0c"
-  integrity sha1-YGAiUIR5tV/6NotY/uljoD39eww=
-
-typescript@^3.0.3, typescript@^3.3, typescript@^3.7.2, typescript@^3.7.5, typescript@^3.8.3, typescript@^3.9.5, typescript@^3.9.6, typescript@^3.9.7:
+typescript@2.2.2, typescript@^3.0.3, typescript@^3.3, typescript@^3.7.2, typescript@^3.7.5, typescript@^3.8.3, typescript@^3.9.5, typescript@^3.9.6, typescript@^3.9.7:
   version "3.9.7"
   resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa"
   integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==

Some files were not shown because too many files changed in this diff