import { ABIDecoder } from "../serializer/Decoder.js";
import { ABIEncoder } from "../serializer/Encoder.js";
import { ABISerializableObject } from "../serializer/Serializable.js";
import { AnyInt, Int64, Int64Type, UInt32, UInt32Type } from "./Integer.js";
export type TimePointType = TimePoint | TimePointSec | string | Date | AnyInt;
interface TimePointConstructor {
    from(value: TimePointType): TimePointBase;
    fromInteger(value: AnyInt): TimePointBase;
    fromDate(value: Date): TimePointBase;
    fromString(value: string): TimePointBase;
    fromMilliseconds(value: number): TimePointBase;
    new (...args: any[]): TimePointBase;
}
declare class TimePointBase implements ABISerializableObject {
    static abiName: string;
    static from<T extends TimePointConstructor>(this: T, value: TimePointType): InstanceType<T>;
    static from(value: TimePointType): unknown;
    static fromString<T extends TimePointConstructor>(this: T, string: string): InstanceType<T>;
    static fromString(string: string): unknown;
    static fromDate<T extends TimePointConstructor>(this: T, date: Date): InstanceType<T>;
    static fromDate(date: Date): unknown;
    static abiDefault<T extends TimePointConstructor>(this: T): InstanceType<T>;
    toABI(encoder: ABIEncoder): void;
    equals(other: TimePointType): boolean;
    toMilliseconds(): number;
    toDate(): Date;
    toJSON(): string;
}
/** Timestamp with microsecond accuracy. */
export declare class TimePoint extends TimePointBase {
    static abiName: string;
    static fromMilliseconds(ms: number): TimePoint;
    static fromInteger(value: Int64Type): TimePoint;
    static fromABI(decoder: ABIDecoder): TimePoint;
    value: Int64;
    constructor(value: Int64);
    toString(): string;
    toMilliseconds(): number;
}
/** Timestamp with second accuracy. */
export declare class TimePointSec extends TimePointBase {
    static abiName: string;
    static fromMilliseconds(ms: number): TimePointSec;
    static fromInteger(value: UInt32Type): TimePointSec;
    static fromABI(decoder: ABIDecoder): TimePointSec;
    value: UInt32;
    constructor(value: UInt32);
    toString(): string;
    toMilliseconds(): number;
}
export declare class BlockTimestamp extends TimePointBase {
    static abiName: string;
    static fromMilliseconds(ms: number): BlockTimestamp;
    static fromInteger(value: UInt32Type): BlockTimestamp;
    static fromABI(decoder: ABIDecoder): BlockTimestamp;
    value: UInt32;
    constructor(value: UInt32);
    toString(): string;
    toMilliseconds(): number;
}
export {};
//# sourceMappingURL=Time.d.ts.map