Files
api/packages/api-derive/test/bountyFactory.ts
T
2021-01-03 11:26:46 +01:00

39 lines
1.3 KiB
TypeScript

// Copyright 2017-2021 @polkadot/api authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { ApiPromise } from '@polkadot/api';
import { Option, StorageKey } from '@polkadot/types';
import { Bounty, BountyIndex } from '@polkadot/types/interfaces';
import { Codec, Constructor, InterfaceTypes, Registry } from '@polkadot/types/types';
export class BountyFactory {
readonly #api: ApiPromise;
readonly #registry: Registry;
constructor (api: ApiPromise) {
this.#api = api;
this.#registry = this.#api.registry;
}
public storageKey = (index: number): StorageKey => {
const key = new StorageKey(this.#registry, this.#api.query.bounties.bounties.key(this.bountyIndex(index)));
return key.setMeta(this.#api.query.bounties.bounties.creator.meta);
};
public bountyIndex = (index: number): BountyIndex =>
this.#registry.createType('BountyIndex', index);
public defaultBounty = (): Bounty =>
this.#registry.createType('Bounty');
public optionOf = <T extends Codec>(value: T): Option<T> => {
const typeName = this.#registry.getClassName(value.constructor as Constructor<T>);
return new Option<T>(this.#registry, typeName as keyof InterfaceTypes, value);
};
public emptyOption = <T extends Codec>(typeName: keyof InterfaceTypes): Option<T> =>
new Option<T>(this.#registry, typeName);
}