import BigNumber from 'bignumber.js';
import { Asset, Checkpoint, CheckpointSchedule, Context, Entity, LinkCaDocsParams, ModifyCaCheckpointParams } from "../../../internal";
import { InputCaCheckpoint, ProcedureMethod } from "../../../types";
import { HumanReadableType, Modify } from "../../../types/utils";
import { CorporateActionKind, CorporateActionTargets, TaxWithholding } from './types';
export interface UniqueIdentifiers {
    id: BigNumber;
    ticker: string;
}
export interface HumanReadable {
    id: string;
    ticker: string;
    declarationDate: string;
    description: string;
    targets: HumanReadableType<CorporateActionTargets>;
    defaultTaxWithholding: string;
    taxWithholdings: HumanReadableType<TaxWithholding[]>;
}
export interface Params {
    kind: CorporateActionKind;
    declarationDate: Date;
    description: string;
    targets: CorporateActionTargets;
    defaultTaxWithholding: BigNumber;
    taxWithholdings: TaxWithholding[];
}
/**
 * Represents an action initiated by the issuer of an Asset which may affect the positions of
 *   the Asset Holders
 */
export declare abstract class CorporateActionBase extends Entity<UniqueIdentifiers, unknown> {
    /**
     * @hidden
     * Check if a value is of type [[UniqueIdentifiers]]
     */
    static isUniqueIdentifiers(identifier: unknown): identifier is UniqueIdentifiers;
    /**
     * internal Corporate Action ID
     */
    id: BigNumber;
    /**
     * Asset affected by this Corporate Action
     */
    asset: Asset;
    /**
     * date at which the Corporate Action was created
     */
    declarationDate: Date;
    /**
     * brief text description of the Corporate Action
     */
    description: string;
    /**
     * Asset Holder Identities related to this Corporate action. If the treatment is `Exclude`, the Identities
     *   in the array will not be targeted by the Action, Identities not in the array will be targeted, and vice versa
     */
    targets: CorporateActionTargets;
    /**
     * default percentage (0-100) of tax withholding for this Corporate Action
     */
    defaultTaxWithholding: BigNumber;
    /**
     * percentage (0-100) of tax withholding per Identity. Any Identity not present
     *   in this array uses the default tax withholding percentage
     */
    taxWithholdings: TaxWithholding[];
    /**
     * type of corporate action being represented
     */
    protected kind: CorporateActionKind;
    /**
     * @hidden
     */
    constructor(args: UniqueIdentifiers & Params, context: Context);
    /**
     * Link a list of documents to this corporate action
     *
     * @note any previous links are removed in favor of the new list
     */
    linkDocuments: ProcedureMethod<LinkCaDocsParams, void>;
    /**
     * Modify the Corporate Action's Checkpoint
     */
    abstract modifyCheckpoint: ProcedureMethod<Modify<ModifyCaCheckpointParams, {
        checkpoint: InputCaCheckpoint;
    }>, void>;
    /**
     * Determine whether this Corporate Action exists on chain
     */
    exists(): Promise<boolean>;
    /**
     * Retrieve the Checkpoint associated with this Corporate Action. If the Checkpoint is scheduled and has
     *   not been created yet, the corresponding CheckpointSchedule is returned instead. A null value means
     *   the Corporate Action was created without an associated Checkpoint
     */
    checkpoint(): Promise<Checkpoint | CheckpointSchedule | null>;
    /**
     * @hidden
     */
    private fetchCorporateAction;
    /**
     * Return the Corporate Action's static data
     */
    toJson(): HumanReadable;
}
//# sourceMappingURL=index.d.ts.map