import { BTreeSetStatType, PolymeshPrimitivesTransferComplianceTransferCondition } from "../../polkadot/types-lookup.ts";
import BigNumber from 'bignumber.js';
import { Procedure } from "../../internal";
import { CountTransferRestrictionInput, PercentageTransferRestrictionInput, TransferRestrictionType } from "../../types";
import { ProcedureAuthorization } from "../../types/internal";
export declare type AddCountTransferRestrictionParams = CountTransferRestrictionInput & {
    type: TransferRestrictionType.Count;
};
export declare type AddPercentageTransferRestrictionParams = PercentageTransferRestrictionInput & {
    type: TransferRestrictionType.Percentage;
};
/**
 * @hidden
 */
export declare type AddTransferRestrictionParams = {
    ticker: string;
} & (AddCountTransferRestrictionParams | AddPercentageTransferRestrictionParams);
export interface Storage {
    currentRestrictions: PolymeshPrimitivesTransferComplianceTransferCondition[];
    currentStats: BTreeSetStatType;
    needStat: boolean;
}
/**
 * @hidden
 */
export declare function prepareAddTransferRestriction(this: Procedure<AddTransferRestrictionParams, BigNumber, Storage>, args: AddTransferRestrictionParams): Promise<BigNumber>;
/**
 * @hidden
 */
export declare function getAuthorization(this: Procedure<AddTransferRestrictionParams, BigNumber, Storage>, { ticker, exemptedIdentities }: AddTransferRestrictionParams): ProcedureAuthorization;
/**
 * @hidden
 */
export declare function prepareStorage(this: Procedure<AddTransferRestrictionParams, BigNumber, Storage>, args: AddTransferRestrictionParams): Promise<Storage>;
/**
 * @hidden
 */
export declare const addTransferRestriction: () => Procedure<AddTransferRestrictionParams, BigNumber, Storage>;
//# sourceMappingURL=addTransferRestriction.d.ts.map