import { ethers, BigNumber } from 'ethers';
import { Timestamp } from '@energyweb/utils-general';
import { IBlockchainProperties } from './BlockchainProperties';
export declare const MAX_ENERGY_PER_CERTIFICATE: ethers.BigNumber;
export interface ICertificationRequestBlockchain {
    id: number;
    deviceId: string;
    owner: string;
    fromTime: number;
    toTime: number;
    created: number;
    approved: boolean;
    revoked: boolean;
    approvedDate?: Date;
    revokedDate?: Date;
    issuedCertificateTokenId?: number;
}
export declare class CertificationRequest implements ICertificationRequestBlockchain {
    id: number;
    blockchainProperties: IBlockchainProperties;
    owner: string;
    fromTime: Timestamp;
    toTime: Timestamp;
    deviceId: string;
    approved: boolean;
    approvedDate: Date;
    revoked: boolean;
    revokedDate: Date;
    created: Timestamp;
    issuedCertificateTokenId: number;
    initialized: boolean;
    constructor(id: number, blockchainProperties: IBlockchainProperties);
    /**
     *
     *
     * @description Uses Issuer contract to create Certificate request
     *
     */
    static create(generationStartTime: Timestamp, generationEndTime: Timestamp, deviceId: string, blockchainProperties: IBlockchainProperties, forAddress?: string): Promise<CertificationRequest>;
    /**
    *
    *
    * @description Returns all Certification Requests for an Issuer
    *
    */
    static getAll(blockchainProperties: IBlockchainProperties): Promise<CertificationRequest[]>;
    /**
   *
   *
   * @description Retrieves Certificate data
   *
   */
    sync(): Promise<CertificationRequest>;
    /**
   *
   *
   * @description Uses Issuer contract to approve a Certificate request
   *
   */
    approve(energy: BigNumber): Promise<CertificationRequest['issuedCertificateTokenId']>;
    /**
   *
   *
   * @description Uses Issuer contract to revoke a Certificate request
   *
   */
    revoke(): Promise<ethers.ContractTransaction>;
}
