Skip to content

Commit

Permalink
Merge branch 'beta' of github.com:PolymathNetwork/polymath-sdk into f…
Browse files Browse the repository at this point in the history
…eat/disable-controller
  • Loading branch information
monitz87 committed Dec 11, 2019
2 parents ff45b6c + 9a4a208 commit 690fa39
Show file tree
Hide file tree
Showing 67 changed files with 641 additions and 2,226 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@polymathnetwork/sdk",
"version": "2.0.1-beta.75",
"version": "2.0.1-beta.76",
"description": "A Javascript SDK for interacting with the Polymath network for the browser and Node.js",
"bugs": {
"url": "https://github.com/PolymathNetwork/polymath-sdk/issues"
Expand Down
6 changes: 0 additions & 6 deletions src/Context.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ import {
TieredStoFactory,
DividendDistributionFactory,
CheckpointFactory,
Erc20DividendsManagerFactory,
EthDividendsManagerFactory,
ShareholderFactory,
TaxWithholdingFactory,
} from './entities/factories';
Expand All @@ -28,8 +26,6 @@ export interface Factories {
tieredStoFactory: TieredStoFactory;
dividendDistributionFactory: DividendDistributionFactory;
checkpointFactory: CheckpointFactory;
erc20DividendsManagerFactory: Erc20DividendsManagerFactory;
ethDividendsManagerFactory: EthDividendsManagerFactory;
shareholderFactory: ShareholderFactory;
taxWithholdingFactory: TaxWithholdingFactory;
}
Expand Down Expand Up @@ -64,8 +60,6 @@ export class Context {
tieredStoFactory: new TieredStoFactory(this),
dividendDistributionFactory: new DividendDistributionFactory(this),
checkpointFactory: new CheckpointFactory(this),
erc20DividendsManagerFactory: new Erc20DividendsManagerFactory(this),
ethDividendsManagerFactory: new EthDividendsManagerFactory(this),
shareholderFactory: new ShareholderFactory(this),
taxWithholdingFactory: new TaxWithholdingFactory(this),
};
Expand Down
38 changes: 6 additions & 32 deletions src/Polymath.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { union, compact } from 'lodash';
import { Context } from './Context';
import { getInjectedProvider } from './browserUtils';
import { ErrorCode, TransactionSpeed } from './types';
import { Erc20TokenBalance, SecurityToken } from './entities';
import { Erc20TokenBalance, SecurityToken, Wallet } from './entities';
import { ReserveSecurityToken } from './procedures';
import { PolymathError } from './PolymathError';
import { PolymathBase } from './PolymathBase';
Expand Down Expand Up @@ -278,40 +278,14 @@ export class Polymath {
};

/**
* Get the balance of ETH in a wallet
* Retrieve a Wallet by address
*
* @param walletAddress wallet to check for balance
* @param address wallet address
*/
public getEthBalance = async (args: { walletAddress: string }) => {
const { walletAddress } = args;

return this.context.contractWrappers.getBalance({ address: walletAddress });
};

/**
* Get the balance of a specific ERC20 token in a wallet
*
* @param tokenAddress address of the ERC20 token
* @param walletAddress wallet to check for balance
*/
public getErc20TokenBalance = async (
args:
| {
tokenAddress: string;
walletAddress: string;
}
| string
) => {
let uid: string;

// fetch by UUID
if (typeof args === 'string') {
uid = args;
} else {
uid = Erc20TokenBalance.generateId(args);
}
public getWallet = (args: { address: string }): Wallet => {
const { address } = args;

return this.context.factories.erc20TokenBalanceFactory.fetch(uid);
return new Wallet({ address }, this.context);
};

/**
Expand Down
102 changes: 25 additions & 77 deletions src/PolymathBase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import {
CappedSTO,
USDTieredSTO,
ERC20DividendCheckpoint,
EtherDividendCheckpoint,
SecurityToken,
ModuleType,
BigNumber,
Expand All @@ -25,7 +24,6 @@ import {
isUSDTieredSTO,
isUSDTieredSTO_3_0_0,
isGeneralPermissionManager,
isGeneralPermissionManager_3_0_0,
isGeneralTransferManager,
isBlacklistTransferManager,
isLockUpTransferManager,
Expand All @@ -39,7 +37,7 @@ import { range, flatten, includes } from 'lodash';
import P from 'bluebird';
import semver from 'semver';
import { PolymathError } from './PolymathError';
import { ErrorCode, DividendType, Module, SecurityTokenRole } from './types';
import { ErrorCode, Module, SecurityTokenRole } from './types';

interface GetModuleAddressesByNameParams {
symbol: string;
Expand Down Expand Up @@ -150,9 +148,6 @@ interface GetAttachedModules {
(params: GetAttachedErc20DividendCheckpointsParams, opts?: GetAttachedModulesOpts): Promise<
ERC20DividendCheckpoint[]
>;
(params: GetAttachedEtherDividendCheckpointsParams, opts?: GetAttachedModulesOpts): Promise<
EtherDividendCheckpoint[]
>;
(params: GetAttachedVestingEscrowWalletsParams, opts?: GetAttachedModulesOpts): Promise<
VestingEscrowWallet[]
>;
Expand Down Expand Up @@ -188,7 +183,6 @@ export interface DividendShareholderStatus {
export interface BaseDividend {
index: number;
checkpointId: number;
dividendType: DividendType;
created: Date;
maturity: Date;
expiry: Date;
Expand Down Expand Up @@ -572,22 +566,15 @@ export class PolymathBase extends PolymathAPI {
dividendsModule,
}: {
dividendIndex: number;
dividendsModule: ERC20DividendCheckpoint | EtherDividendCheckpoint;
dividendsModule: ERC20DividendCheckpoint;
}): Promise<BaseDividend> => {
let symbol: string;
let dividendType: DividendType;

if (isERC20DividendCheckpoint(dividendsModule)) {
const tokenAddress = await dividendsModule.dividendTokens({ dividendIndex });
const tokenAddress = await dividendsModule.dividendTokens({ dividendIndex });

const token = await this.tokenFactory.getERC20TokenInstanceFromAddress(tokenAddress);
const token = await this.tokenFactory.getERC20TokenInstanceFromAddress(tokenAddress);

symbol = await token.symbol();
dividendType = DividendType.Erc20;
} else {
symbol = 'ETH';
dividendType = DividendType.Eth;
}
symbol = await token.symbol();

const dividend = await dividendsModule.dividends({ dividendIndex });

Expand Down Expand Up @@ -621,7 +608,6 @@ export class PolymathBase extends PolymathAPI {
return {
index: dividendIndex,
checkpointId,
dividendType,
created,
maturity,
expiry,
Expand All @@ -642,7 +628,7 @@ export class PolymathBase extends PolymathAPI {
dividendsModule,
}: {
checkpointId: number;
dividendsModule: ERC20DividendCheckpoint | EtherDividendCheckpoint;
dividendsModule: ERC20DividendCheckpoint;
}) => {
const dividendIndexes = await dividendsModule.getDividendIndex({ checkpointId });

Expand All @@ -656,7 +642,7 @@ export class PolymathBase extends PolymathAPI {
public getDividends = async ({
dividendsModule,
}: {
dividendsModule: ERC20DividendCheckpoint | EtherDividendCheckpoint;
dividendsModule: ERC20DividendCheckpoint;
}) => {
const stAddress = await dividendsModule.securityToken();
const securityToken = await this.tokenFactory.getSecurityTokenInstanceFromAddress(stAddress);
Expand All @@ -676,53 +662,28 @@ export class PolymathBase extends PolymathAPI {
public getAllDividends = async ({
securityTokenSymbol,
checkpointId,
dividendTypes = [DividendType.Erc20, DividendType.Eth],
}: {
securityTokenSymbol: string;
checkpointId?: number;
dividendTypes?: DividendType[];
}) => {
const dividends = [];

if (includes(dividendTypes, DividendType.Erc20)) {
const erc20Module = (await this.getAttachedModules(
{
moduleName: ModuleName.ERC20DividendCheckpoint,
symbol: securityTokenSymbol,
},
{ unarchived: true }
))[0];

if (erc20Module) {
const erc20Dividends = await (checkpointId !== undefined
? this.getDividendsByCheckpoint({
checkpointId,
dividendsModule: erc20Module,
})
: this.getDividends({ dividendsModule: erc20Module }));
dividends.push(...erc20Dividends);
}
const erc20Module = (await this.getAttachedModules(
{
moduleName: ModuleName.ERC20DividendCheckpoint,
symbol: securityTokenSymbol,
},
{ unarchived: true }
))[0];

if (!erc20Module) {
return [];
}

if (includes(dividendTypes, DividendType.Eth)) {
const etherModule = (await this.getAttachedModules(
{
moduleName: ModuleName.EtherDividendCheckpoint,
symbol: securityTokenSymbol,
},
{ unarchived: true }
))[0];

if (etherModule) {
const etherDividends = await (checkpointId !== undefined
? this.getDividendsByCheckpoint({
checkpointId,
dividendsModule: etherModule,
})
: this.getDividends({ dividendsModule: etherModule }));
dividends.push(...etherDividends);
}
}
const dividends = await (checkpointId !== undefined
? this.getDividendsByCheckpoint({
checkpointId,
dividendsModule: erc20Module,
})
: this.getDividends({ dividendsModule: erc20Module }));

return dividends;
};
Expand All @@ -744,23 +705,10 @@ export class PolymathBase extends PolymathAPI {
moduleName = ModuleName.PercentageTransferManager;
permission = Perm.Admin;
} else if (
[
SecurityTokenRole.Erc20DividendsAdministrator,
SecurityTokenRole.Erc20DividendsOperator,
].includes(role)
[SecurityTokenRole.DividendsAdministrator, SecurityTokenRole.DividendsOperator].includes(role)
) {
moduleName = ModuleName.ERC20DividendCheckpoint;
permission =
role === SecurityTokenRole.Erc20DividendsAdministrator ? Perm.Admin : Perm.Operator;
} else if (
[
SecurityTokenRole.EtherDividendsAdministrator,
SecurityTokenRole.EtherDividendsOperator,
].includes(role)
) {
moduleName = ModuleName.EtherDividendCheckpoint;
permission =
role === SecurityTokenRole.EtherDividendsAdministrator ? Perm.Admin : Perm.Operator;
permission = role === SecurityTokenRole.DividendsAdministrator ? Perm.Admin : Perm.Operator;
} else {
throw new PolymathError({
code: ErrorCode.FatalError,
Expand Down
Loading

0 comments on commit 690fa39

Please sign in to comment.