diff --git a/src/__tests__/Polymesh.ts b/src/__tests__/Polymesh.ts index 424c60e092..e8cc79dc15 100644 --- a/src/__tests__/Polymesh.ts +++ b/src/__tests__/Polymesh.ts @@ -762,7 +762,7 @@ describe('Polymesh Class', () => { name: dsMockUtils.createMockAssetName(), asset_type: dsMockUtils.createMockAssetType(), divisible: dsMockUtils.createMockBool(), - treasury_did: dsMockUtils.createMockOption(), + primary_issuance_agent: dsMockUtils.createMockOption(), total_supply: dsMockUtils.createMockBalance(), /* eslint-enable @typescript-eslint/camelcase */ }), @@ -787,7 +787,7 @@ describe('Polymesh Class', () => { name: dsMockUtils.createMockAssetName(), asset_type: dsMockUtils.createMockAssetType(), divisible: dsMockUtils.createMockBool(), - treasury_did: dsMockUtils.createMockOption(), + primary_issuance_agent: dsMockUtils.createMockOption(), total_supply: dsMockUtils.createMockBalance(), /* eslint-enable @typescript-eslint/camelcase */ }), diff --git a/src/api/entities/Identity/__tests__/index.ts b/src/api/entities/Identity/__tests__/index.ts index 3078f9975e..138ba25d49 100644 --- a/src/api/entities/Identity/__tests__/index.ts +++ b/src/api/entities/Identity/__tests__/index.ts @@ -217,7 +217,7 @@ describe('Identity class', () => { total_supply: dsMockUtils.createMockBalance(3000), divisible: dsMockUtils.createMockBool(true), asset_type: dsMockUtils.createMockAssetType('EquityCommon'), - treasury_did: dsMockUtils.createMockOption(), + primary_issuance_agent: dsMockUtils.createMockOption(), name: dsMockUtils.createMockAssetName('someToken'), }) ); diff --git a/src/api/entities/SecurityToken/__tests__/index.ts b/src/api/entities/SecurityToken/__tests__/index.ts index f6300a4211..fb50128249 100644 --- a/src/api/entities/SecurityToken/__tests__/index.ts +++ b/src/api/entities/SecurityToken/__tests__/index.ts @@ -63,7 +63,7 @@ describe('SecurityToken class', () => { let isDivisible: boolean; let owner: string; let assetType: 'EquityCommon'; - let treasuryIdentity: string; + let primaryIssuanceAgent: string; let rawToken: MeshSecurityToken; @@ -76,7 +76,7 @@ describe('SecurityToken class', () => { isDivisible = true; owner = '0x0wn3r'; assetType = 'EquityCommon'; - treasuryIdentity = '0xtr34sury'; + primaryIssuanceAgent = '0xtr34sury'; }); beforeEach(() => { @@ -88,7 +88,7 @@ describe('SecurityToken class', () => { divisible: dsMockUtils.createMockBool(isDivisible), total_supply: dsMockUtils.createMockBalance(totalSupply), primary_issuance_agent: dsMockUtils.createMockOption( - dsMockUtils.createMockIdentityId(treasuryIdentity) + dsMockUtils.createMockIdentityId(primaryIssuanceAgent) ), /* eslint-enable @typescript-eslint/camelcase */ }); @@ -109,7 +109,7 @@ describe('SecurityToken class', () => { expect(details.isDivisible).toBe(isDivisible); expect(details.owner.did).toBe(owner); expect(details.assetType).toBe(assetType); - expect(details.treasuryIdentity?.did).toBe(treasuryIdentity); + expect(details.primaryIssuanceAgent?.did).toBe(primaryIssuanceAgent); }); test('should allow subscription', async () => { @@ -133,7 +133,7 @@ describe('SecurityToken class', () => { name: ticker, owner: new Identity({ did: owner }, context), totalSupply: new BigNumber(totalSupply).div(Math.pow(10, 6)), - treasuryIdentity: null, + primaryIssuanceAgent: null, }); }); }); diff --git a/src/api/entities/SecurityToken/index.ts b/src/api/entities/SecurityToken/index.ts index d02485dcba..3c6421ee6e 100644 --- a/src/api/entities/SecurityToken/index.ts +++ b/src/api/entities/SecurityToken/index.ts @@ -162,7 +162,7 @@ export class SecurityToken extends Entity { name: assetNameToString(name), owner: new Identity({ did: identityIdToString(owner_did) }, context), totalSupply: balanceToBigNumber(total_supply), - treasuryIdentity: primary_issuance_agent.isSome + primaryIssuanceAgent: primary_issuance_agent.isSome ? new Identity({ did: identityIdToString(primary_issuance_agent.unwrap()) }, context) : null, }); diff --git a/src/api/entities/SecurityToken/types.ts b/src/api/entities/SecurityToken/types.ts index d6b8e63833..2c0666f939 100644 --- a/src/api/entities/SecurityToken/types.ts +++ b/src/api/entities/SecurityToken/types.ts @@ -8,7 +8,7 @@ export interface SecurityTokenDetails { name: string; owner: Identity; totalSupply: BigNumber; - treasuryIdentity: Identity | null; + primaryIssuanceAgent: Identity | null; } /** diff --git a/src/api/entities/TickerReservation/__tests__/index.ts b/src/api/entities/TickerReservation/__tests__/index.ts index 55d05ef5aa..00e310f0d7 100644 --- a/src/api/entities/TickerReservation/__tests__/index.ts +++ b/src/api/entities/TickerReservation/__tests__/index.ts @@ -160,7 +160,7 @@ describe('TickerReservation class', () => { name: dsMockUtils.createMockAssetName('someToken'), asset_type: dsMockUtils.createMockAssetType('EquityCommon'), divisible: dsMockUtils.createMockBool(true), - treasury_did: dsMockUtils.createMockOption(), + primary_issuance_agent: dsMockUtils.createMockOption(), total_supply: dsMockUtils.createMockBalance(1000), /* eslint-enable @typescript-eslint/camelcase */ }), diff --git a/src/api/entities/TickerReservation/index.ts b/src/api/entities/TickerReservation/index.ts index d4a6e3d95e..d29e96ad92 100644 --- a/src/api/entities/TickerReservation/index.ts +++ b/src/api/entities/TickerReservation/index.ts @@ -150,6 +150,8 @@ export class TickerReservation extends Entity { /** * Create a Security Token using the reserved ticker * + * @note the primary issuance agent will be the issuer did + * * @param args.totalSupply - amount of tokens that will be minted on creation * @param args.isDivisible - whether a single token can be divided into decimal parts * @param args.tokenType - type of security that the token represents (i.e. Equity, Debt, Commodity, etc) diff --git a/src/api/procedures/__tests__/createSecurityToken.ts b/src/api/procedures/__tests__/createSecurityToken.ts index 12439eb435..f28483787b 100644 --- a/src/api/procedures/__tests__/createSecurityToken.ts +++ b/src/api/procedures/__tests__/createSecurityToken.ts @@ -10,7 +10,6 @@ import { DocumentName, FundingRoundName, IdentifierType, - IdentityId, Ticker, } from 'polymesh-types/types'; import sinon from 'sinon'; @@ -57,7 +56,6 @@ describe('createSecurityToken procedure', () => { >; let stringToAssetIdentifierStub: sinon.SinonStub<[string, Context], AssetIdentifier>; let stringToFundingRoundNameStub: sinon.SinonStub<[string, Context], FundingRoundName>; - let stringToIdentityIdStub: sinon.SinonStub<[string, Context], IdentityId>; let stringToDocumentNameStub: sinon.SinonStub<[string, Context], DocumentName>; let tokenDocumentDataToDocumentStub: sinon.SinonStub<[TokenDocumentData, Context], Document>; let ticker: string; @@ -67,7 +65,6 @@ describe('createSecurityToken procedure', () => { let tokenType: TokenType; let tokenIdentifiers: TokenIdentifier[]; let fundingRound: string; - let treasury: string; let documents: TokenDocument[]; let rawTicker: Ticker; let rawName: AssetName; @@ -76,7 +73,6 @@ describe('createSecurityToken procedure', () => { let rawType: AssetType; let rawIdentifiers: [IdentifierType, AssetIdentifier][]; let rawFundingRound: FundingRoundName; - let rawTreasury: IdentityId; let rawDocuments: Document[]; let rawDocumentTuples: [DocumentName, Document][]; let args: Params; @@ -98,7 +94,6 @@ describe('createSecurityToken procedure', () => { ); stringToAssetIdentifierStub = sinon.stub(utilsModule, 'stringToAssetIdentifier'); stringToFundingRoundNameStub = sinon.stub(utilsModule, 'stringToFundingRoundName'); - stringToIdentityIdStub = sinon.stub(utilsModule, 'stringToIdentityId'); stringToDocumentNameStub = sinon.stub(utilsModule, 'stringToDocumentName'); tokenDocumentDataToDocumentStub = sinon.stub(utilsModule, 'tokenDocumentDataToDocument'); ticker = 'someTicker'; @@ -113,7 +108,6 @@ describe('createSecurityToken procedure', () => { }, ]; fundingRound = 'Series A'; - treasury = 'someDid'; documents = [ { name: 'someDocument', @@ -143,7 +137,6 @@ describe('createSecurityToken procedure', () => { tuple(dsMockUtils.createMockDocumentName(documentName), rawDocuments[index]) ); rawFundingRound = dsMockUtils.createMockFundingRoundName(fundingRound); - rawTreasury = dsMockUtils.createMockIdentityId(treasury); args = { ticker, name, @@ -152,7 +145,6 @@ describe('createSecurityToken procedure', () => { tokenType, tokenIdentifiers, fundingRound, - treasury, }; }); @@ -193,7 +185,6 @@ describe('createSecurityToken procedure', () => { .withArgs(tokenIdentifiers[0].value, mockContext) .returns(rawIdentifiers[0][1]); stringToFundingRoundNameStub.withArgs(fundingRound, mockContext).returns(rawFundingRound); - stringToIdentityIdStub.withArgs(treasury, mockContext).returns(rawTreasury); stringToDocumentNameStub .withArgs(documents[0].name, mockContext) .returns(rawDocumentTuples[0][0]); @@ -255,8 +246,7 @@ describe('createSecurityToken procedure', () => { rawIsDivisible, rawType, rawIdentifiers, - rawFundingRound, - rawTreasury + rawFundingRound ); expect(result).toMatchObject(new SecurityToken({ ticker }, mockContext)); @@ -264,7 +254,6 @@ describe('createSecurityToken procedure', () => { ...args, tokenIdentifiers: undefined, fundingRound: undefined, - treasury: undefined, }); sinon.assert.calledWith( diff --git a/src/api/procedures/__tests__/issueTokens.ts b/src/api/procedures/__tests__/issueTokens.ts index 640067308c..b3d0bf42de 100644 --- a/src/api/procedures/__tests__/issueTokens.ts +++ b/src/api/procedures/__tests__/issueTokens.ts @@ -3,7 +3,7 @@ import BigNumber from 'bignumber.js'; import { Ticker } from 'polymesh-types/types'; import sinon from 'sinon'; -import { SecurityToken } from '~/api/entities'; +import { Identity, SecurityToken } from '~/api/entities'; import { getRequiredRoles, Params, prepareIssueTokens } from '~/api/procedures/issueTokens'; import { Context } from '~/base'; import { dsMockUtils, entityMockUtils, procedureMockUtils } from '~/testUtils/mocks'; @@ -101,7 +101,6 @@ describe('issueTokens procedure', () => { issuanceAmount: { amount, }, - ticker, }; @@ -134,18 +133,20 @@ describe('issueTokens procedure', () => { }); }); - test('should throw an error if canMint returns a status different from Success', async () => { + test('should throw an error if canMint returns a different status from Success', async () => { const transferStatus = TransferStatus.Failure; const args = { issuanceAmount: { amount, }, - ticker, }; entityMockUtils.configureMocks({ securityTokenOptions: { + details: { + primaryIssuanceAgent: new Identity({ did: 'someDid' }, mockContext), + }, transfersCanMint: transferStatus, }, }); @@ -171,7 +172,6 @@ describe('issueTokens procedure', () => { issuanceAmount: { amount, }, - ticker, }; diff --git a/src/api/procedures/createSecurityToken.ts b/src/api/procedures/createSecurityToken.ts index 02beaeaf0e..d5dc9bfa7d 100644 --- a/src/api/procedures/createSecurityToken.ts +++ b/src/api/procedures/createSecurityToken.ts @@ -5,7 +5,6 @@ import { SecurityToken, TickerReservation } from '~/api/entities'; import { PolymeshError, Procedure } from '~/base'; import { ErrorCode, - Identity, Role, RoleType, TickerReservationStatus, @@ -18,12 +17,10 @@ import { batchArguments, booleanToBool, numberToBalance, - signerToString, stringToAssetIdentifier, stringToAssetName, stringToDocumentName, stringToFundingRoundName, - stringToIdentityId, stringToTicker, tokenDocumentDataToDocument, tokenIdentifierTypeToIdentifierType, @@ -37,7 +34,6 @@ export interface CreateSecurityTokenParams { tokenType: TokenType; tokenIdentifiers?: TokenIdentifier[]; fundingRound?: string; - treasury?: string | Identity; documents?: TokenDocument[]; } @@ -69,7 +65,6 @@ export async function prepareCreateSecurityToken( tokenType, tokenIdentifiers = [], fundingRound, - treasury, documents, } = args; @@ -105,7 +100,6 @@ export async function prepareCreateSecurityToken( } ); const rawFundingRound = fundingRound ? stringToFundingRoundName(fundingRound, context) : null; - const rawTreasury = treasury ? stringToIdentityId(signerToString(treasury), context) : null; this.addTransaction( tx.asset.createAsset, @@ -116,8 +110,7 @@ export async function prepareCreateSecurityToken( rawIsDivisible, rawType, rawIdentifiers, - rawFundingRound, - rawTreasury + rawFundingRound ); if (documents) { diff --git a/src/api/procedures/issueTokens.ts b/src/api/procedures/issueTokens.ts index e24c152eab..14e40ce6f4 100644 --- a/src/api/procedures/issueTokens.ts +++ b/src/api/procedures/issueTokens.ts @@ -34,7 +34,7 @@ export async function prepareIssueTokens( const securityToken = new SecurityToken({ ticker }, context); - const { isDivisible, totalSupply, treasuryIdentity } = await securityToken.details(); + const { isDivisible, totalSupply, primaryIssuanceAgent } = await securityToken.details(); const { amount } = issuanceAmount; if (isDivisible) { @@ -68,8 +68,8 @@ export async function prepareIssueTokens( let canTransfer = TransferStatus.InvalidSenderIdentity; - if (treasuryIdentity) { - canTransfer = await securityToken.transfers.canMint({ to: treasuryIdentity, amount }); + if (primaryIssuanceAgent) { + canTransfer = await securityToken.transfers.canMint({ to: primaryIssuanceAgent, amount }); } if (canTransfer !== TransferStatus.Success) { diff --git a/src/middleware/types.ts b/src/middleware/types.ts index dbdad664db..910451b1f8 100644 --- a/src/middleware/types.ts +++ b/src/middleware/types.ts @@ -779,7 +779,7 @@ export enum CallIdEnum { AddExtension = 'add_extension', ArchiveExtension = 'archive_extension', UnarchiveExtension = 'unarchive_extension', - SetTreasuryDid = 'set_treasury_did', + SetPrimaryIssuanceagent = 'set_primary_issuance_agent', New = 'new', Cancel = 'cancel', ClaimUnclaimed = 'claim_unclaimed',