import BigNumber from 'bignumber.js';
export declare enum Tokens {
    Poly = "POLY",
    Dai = "DAI",
    Ether = "ETH",
    Erc20 = "ERC20",
    Gusd = "GUSD",
    Pax = "PAX",
    Usdc = "USDC",
    Usdt = "USDT"
}
declare enum ErrorCodes {
    IncompatibleBrowser = "IncompatibleBrowser",
    UserDeniedAccess = "UserDeniedAccess",
    WalletIsLocked = "WalletIsLocked",
    ProcedureValidationError = "ProcedureValidationError",
    TransactionRejectedByUser = "TransactionRejectedByUser",
    TransactionReverted = "TransactionReverted",
    FatalError = "FatalError"
}
interface PolymathError {
    code: ErrorCodes;
}
export declare enum ProcedureTypes {
    UnnamedProcedure = "UnnamedProcedure",
    Approve = "Approve",
    CreateCheckpoint = "CreateCheckpoint",
    EnableDividendModules = "EnableDividendModules",
    CreateErc20DividendDistribution = "CreateErc20DividendDistribution",
    CreateEtherDividendDistribution = "CreateEtherDividendDistribution",
    CreateSecurityToken = "CreateSecurityToken",
    ReclaimFunds = "ReclaimFunds",
    ReserveSecurityToken = "ReserveSecurityToken",
    WithdrawTaxes = "WithdrawTaxes",
    UpdateDividendsTaxWithholdingList = "UpdateDividendsTaxWithholdingList",
    SetDividendsWallet = "SetDividendsWallet",
    PushDividendPayment = "PushDividendPayment"
}
export declare enum PolyTransactionTags {
    Any = "Any",
    Approve = "Approve",
    GetTokens = "GetTokens",
    ReserveSecurityToken = "ReserveSecurityToken",
    CreateSecurityToken = "CreateSecurityToken",
    CreateCheckpoint = "CreateCheckpoint",
    CreateErc20DividendDistribution = "CreateErc20DividendDistribution",
    CreateEtherDividendDistribution = "CreateEtherDividendDistribution",
    SetErc20TaxWithholding = "SetErc20TaxWithholding",
    SetEtherTaxWithholding = "SetEtherTaxWithholding",
    EnableDividends = "EnableDividends",
    ReclaimDividendFunds = "ReclaimDividendFunds",
    WithdrawTaxWithholdings = "WithdrawTaxWithholdings",
    PushDividendPayment = "PushDividendPayment",
    SetDividendsWallet = "SetDividendsWallet"
}
export declare enum TransactionStatus {
    Idle = "IDLE",
    Unapproved = "UNAPPROVED",
    Running = "RUNNING",
    Rejected = "REJECTED",
    Succeeded = "SUCCEEDED",
    Failed = "FAILED"
}
export declare enum TransactionQueueStatus {
    Idle = "IDLE",
    Running = "RUNNING",
    Failed = "FAILED",
    Succeeded = "SUCCEEDED"
}
export declare type Id = string;
export declare type Address = string;
export declare type TransactionHash = string;
export interface Entity {
    uid: string;
}
export interface TransactionEntity extends Entity {
    txHash?: string;
    transactionQueueUid: string;
    status: TransactionStatus;
    tag: PolyTransactionTags;
    error?: PolymathError;
    args: any;
}
export interface TransactionPojo extends TransactionEntity {
}
export interface DividendInvestorStatus {
    address: string;
    paymentReceived: boolean;
    excluded: boolean;
    withheldTax: BigNumber;
    amountReceived: BigNumber;
    balance: BigNumber;
}
export interface DividendEntity extends Entity {
    index: number;
    securityTokenSymbol: string;
    securityTokenId: string;
    checkpointId: string;
    dividendType: DividendModuleTypes;
    created: Date;
    maturity: Date;
    expiry: Date;
    amount: BigNumber;
    claimedAmount: BigNumber;
    totalSupply: BigNumber;
    reclaimed: boolean;
    totalWithheld: BigNumber;
    totalWithheldWithdrawn: BigNumber;
    investors: DividendInvestorStatus[];
    name: string;
    currency: string | null;
}
export interface DividendPojo extends DividendEntity {
}
export interface CheckpointEntity extends Entity {
    index: number;
    securityTokenSymbol: string;
    securityTokenId: string;
    investorBalances: Array<{
        address: string;
        balance: BigNumber;
    }>;
    totalSupply: BigNumber;
    createdAt: Date;
}
export interface CheckpointPojo extends CheckpointEntity {
    dividends: DividendPojo[];
}
export interface Erc20DividendsModuleEntity extends Entity {
    address: string;
    securityTokenSymbol: string;
    securityTokenId: string;
    storageWalletAddress: string;
}
export interface Erc20DividendsModulePojo extends Erc20DividendsModuleEntity {
}
export declare enum DividendModuleTypes {
    Erc20 = "erc20",
    Eth = "eth"
}
export interface TaxWithholdingEntity extends Entity {
    securityTokenSymbol: string;
    securityTokenId: string;
    dividendType: DividendModuleTypes;
    investorAddress: string;
    percentage: number;
}
export interface TaxWithholdingPojo extends TaxWithholdingEntity {
}
export interface TransactionQueueEntity extends Entity {
    status: TransactionQueueStatus;
    procedureType: ProcedureTypes;
    args: any;
}
export interface TransactionQueuePojo extends TransactionQueueEntity {
    transactions: TransactionPojo[];
}
export interface Erc20TokenBalanceEntity extends Entity {
    tokenSymbol: string | null;
    tokenAddress: string;
    balance: BigNumber;
}
export interface Erc20TokenBalancePojo extends Erc20TokenBalanceEntity {
}
export declare function isPojo(pojo: any): pojo is Pojo;
export interface Pojo {
    [key: string]: string | number | boolean | null | Pojo | BigNumber | Date | Array<string | number | boolean | null | Pojo | BigNumber | Date>;
}
export interface AuthToken {
    accessKeyId: string;
    cognitoIdentityId: string;
    congnitoSessionExpireTime: string;
    email: string;
    fullName: string;
    googleRefreshCode: string;
    googleSessionExpireTime: string;
    secretAccessKey: string;
    sessionToken: string;
}
export interface ApolloRequest {
    operationName: string;
    query: string;
    variables: any;
}
export interface UserIdentityInfo {
    cognitoIdentityId: string;
    accessKeyId: string;
    secretAccessKey: string;
    sessionToken: string;
    congnitoSessionExpireTime: Date;
    googleRefreshCode: string;
    googleSessionExpireTime: Date;
    email: string;
    fullName: string;
}
export interface SecurityToken {
    tokenSymbol: string;
    tokenName: string;
    divisible: boolean;
    additionalInfo: string;
    maxInvestors: number;
    totalSupply: number;
}
export interface TransactionResult {
    status: 'success' | 'failed';
    transactionHash?: string;
    message?: string;
    code?: number;
}
export interface NotificationMessage {
    message: string;
    type: 'info' | 'warning' | 'error' | 'success';
}
export interface BlockInfo {
    number: string;
    hash: string;
    account: string;
}
export {};
//# sourceMappingURL=types.d.ts.map