import { providers, ContractTransaction, Contract } from 'ethers';
import { Certificate, IClaimData, ICertificate, IData } from './Certificate';
import { IBlockchainEvent } from '../utils/events';
import { IBlockchainProperties } from './BlockchainProperties';
export interface IShareInCertificate {
    [address: string]: string;
}
export declare const encodeClaimData: (claimData: IClaimData) => string;
export declare const decodeClaimData: (encodedClaimData: string) => IClaimData;
export declare const encodeData: (data: IData) => string;
export declare const decodeData: (encodedData: string) => IData;
export declare function getAllCertificates(blockchainProperties: IBlockchainProperties): Promise<Certificate[]>;
export declare function getAllOwnedCertificates(blockchainProperties: IBlockchainProperties): Promise<Certificate[]>;
export declare function decodeEvent(eventName: string, event: providers.Log, contract: Contract): Promise<IBlockchainEvent>;
export declare const getAllCertificateEvents: (certId: number, blockchainProperties: IBlockchainProperties) => Promise<IBlockchainEvent[]>;
export declare const calculateOwnership: (certificateId: ICertificate['id'], blockchainProperties: IBlockchainProperties) => Promise<IShareInCertificate>;
export declare const calculateClaims: (certificateId: ICertificate['id'], blockchainProperties: IBlockchainProperties) => Promise<IShareInCertificate>;
export declare function approveOperator(operator: string, blockchainProperties: IBlockchainProperties): Promise<ContractTransaction>;
export declare function isApprovedForAll(operator: string, blockchainProperties: IBlockchainProperties): Promise<boolean>;
