Skip to content

Commit

Permalink
Merge pull request #311 from PolymathNetwork/alpha
Browse files Browse the repository at this point in the history
Merge alpha into beta
  • Loading branch information
VictorVicente committed Jan 6, 2021
2 parents 3a23c89 + 06fb7b9 commit a4c31fe
Show file tree
Hide file tree
Showing 103 changed files with 3,684 additions and 1,317 deletions.
106 changes: 86 additions & 20 deletions src/Claims.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
import {
addInvestorUniquenessClaim,
AddInvestorUniquenessClaimParams,
} from '~/api/procedures/addInvestorUniquenessClaim';
import { Context, Identity, modifyClaims, ModifyClaimsParams, TransactionQueue } from '~/internal';
Context,
Identity,
modifyClaims,
ModifyClaimsParams,
} from '~/internal';
import {
didsWithClaims,
issuerDidsWithClaimsByTarget,
Expand All @@ -18,14 +21,14 @@ import {
ResultSet,
Scope,
} from '~/types';
import { ClaimOperation } from '~/types/internal';
import { ClaimOperation, ProcedureMethod } from '~/types/internal';
import {
middlewareScopeToScope,
scopeToMiddlewareScope,
signerToString,
toIdentityWithClaimsArray,
} from '~/utils/conversion';
import { calculateNextKey, getDid, removePadding } from '~/utils/internal';
import { calculateNextKey, createProcedureMethod, getDid, removePadding } from '~/utils/internal';

/**
* Handles all Claims related functionality
Expand All @@ -38,47 +41,86 @@ export class Claims {
*/
constructor(context: Context) {
this.context = context;

this.addClaims = createProcedureMethod<
Omit<ModifyClaimsParams, 'operation'>,
ModifyClaimsParams,
void
>(
args => [
modifyClaims,
{
...args,
operation: ClaimOperation.Add,
} as ModifyClaimsParams,
],
context
);

this.editClaims = createProcedureMethod<
Omit<ModifyClaimsParams, 'operation'>,
ModifyClaimsParams,
void
>(
args => [
modifyClaims,
{
...args,
operation: ClaimOperation.Edit,
} as ModifyClaimsParams,
],
context
);

this.revokeClaims = createProcedureMethod<
Omit<ModifyClaimsParams, 'operation'>,
ModifyClaimsParams,
void
>(
args => [
modifyClaims,
{
...args,
operation: ClaimOperation.Revoke,
} as ModifyClaimsParams,
],
context
);

this.addInvestorUniquenessClaim = createProcedureMethod(
args => [addInvestorUniquenessClaim, args],
context
);
}

/**
* Add an Investor Uniqueness Claim to the current Identity
*
* @param args
*/
public addInvestorUniquenessClaim(
args: AddInvestorUniquenessClaimParams
): Promise<TransactionQueue<void>> {
return addInvestorUniquenessClaim.prepare(args, this.context);
}
public addInvestorUniquenessClaim: ProcedureMethod<AddInvestorUniquenessClaimParams, void>;

/**
* Add claims to Identities
*
* @param args.claims - array of claims to be added
*/
public addClaims(args: Omit<ModifyClaimsParams, 'operation'>): Promise<TransactionQueue<void>> {
return modifyClaims.prepare({ ...args, operation: ClaimOperation.Add }, this.context);
}
public addClaims: ProcedureMethod<Pick<ModifyClaimsParams, 'claims'>, void>;

/**
* Edit claims associated to Identities (only the expiry date can be modified)
*
* * @param args.claims - array of claims to be edited
*/
public editClaims(args: Omit<ModifyClaimsParams, 'operation'>): Promise<TransactionQueue<void>> {
return modifyClaims.prepare({ ...args, operation: ClaimOperation.Edit }, this.context);
}

public editClaims: ProcedureMethod<Pick<ModifyClaimsParams, 'claims'>, void>;

/**
* Revoke claims from Identities
*
* @param args.claims - array of claims to be revoked
*/
public revokeClaims(
args: Omit<ModifyClaimsParams, 'operation'>
): Promise<TransactionQueue<void>> {
return modifyClaims.prepare({ ...args, operation: ClaimOperation.Revoke }, this.context);
}
public revokeClaims: ProcedureMethod<Pick<ModifyClaimsParams, 'claims'>, void>;

/**
* Retrieve all claims issued by an Identity
Expand Down Expand Up @@ -251,6 +293,30 @@ export class Claims {
return result;
}

/**
* Retrieve the list of InvestorUniqueness claims for a target Identity
*
* @param opts.target - identity for which to fetch CDD claims (optional, defaults to the current Identity)
* @param opts.includeExpired - whether to include expired claims. Defaults to true
*/
public async getInvestorUniquenessClaims(
opts: {
target?: string | Identity;
includeExpired?: boolean;
} = {}
): Promise<ClaimData[]> {
const { context } = this;
const { target, includeExpired = true } = opts;

const did = await getDid(target, context);

return context.getIdentityClaimsFromChain({
targets: [did],
claimTypes: [ClaimType.InvestorUniqueness],
includeExpired,
});
}

/**
* Retrieve all claims issued about an Identity, grouped by claim issuer
*
Expand Down
23 changes: 12 additions & 11 deletions src/Polymesh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import {
ReserveTickerParams,
SecurityToken,
TickerReservation,
TransactionQueue,
transferPolyX,
TransferPolyXParams,
} from '~/internal';
Expand All @@ -39,6 +38,7 @@ import {
UiKeyring,
UnsubCallback,
} from '~/types';
import { ProcedureMethod } from '~/types/internal';
import {
moduleAddressToString,
signerToString,
Expand All @@ -48,7 +48,7 @@ import {
tickerToString,
u32ToBigNumber,
} from '~/utils/conversion';
import { getDid, stringIsClean } from '~/utils/internal';
import { createProcedureMethod, getDid, stringIsClean } from '~/utils/internal';

import { Claims } from './Claims';
// import { Governance } from './Governance';
Expand Down Expand Up @@ -93,6 +93,12 @@ export class Polymesh {
// this.governance = new Governance(context);
this.claims = new Claims(context);
this.middleware = new Middleware(context);

this.transferPolyX = createProcedureMethod(args => [transferPolyX, args], context);

this.reserveTicker = createProcedureMethod(args => [reserveTicker, args], context);

this.registerIdentity = createProcedureMethod(args => [registerIdentity, args], context);
}

/**
Expand Down Expand Up @@ -262,9 +268,8 @@ export class Polymesh {
* @param args.amount - amount of POLYX to be transferred
* @param args.memo - identifier string to help differentiate transfers
*/
public transferPolyX(args: TransferPolyXParams): Promise<TransactionQueue<void>> {
return transferPolyX.prepare(args, this.context);
}

public transferPolyX: ProcedureMethod<TransferPolyXParams, void>;

/**
* Get the free/locked POLYX balance of an Account
Expand Down Expand Up @@ -322,9 +327,7 @@ export class Polymesh {
*
* @param args.ticker - ticker symbol to reserve
*/
public reserveTicker(args: ReserveTickerParams): Promise<TransactionQueue<TickerReservation>> {
return reserveTicker.prepare(args, this.context);
}
public reserveTicker: ProcedureMethod<ReserveTickerParams, TickerReservation>;

/**
* Check if a ticker hasn't been reserved
Expand Down Expand Up @@ -636,9 +639,7 @@ export class Polymesh {
* the corresponding [[Account | Accounts]] and/or [[Identity | Identities]]. An Account or Identity can
* fetch its pending Authorization Requests by calling `authorizations.getReceived`
*/
public registerIdentity(args: RegisterIdentityParams): Promise<TransactionQueue<Identity>> {
return registerIdentity.prepare(args, this.context);
}
public registerIdentity: ProcedureMethod<RegisterIdentityParams, Identity>;

/**
* Retrieve the number of the latest block in the chain
Expand Down

0 comments on commit a4c31fe

Please sign in to comment.