import { LogLevel } from '../utils/logger';
import { NetworkType } from '../utils/types';
import { TransactionReceipt, PrivateKey } from '@hashgraph/sdk';
import { z } from 'zod';
/**
 * HCS-2 operation types
 * - register: Add a new entry/version
 * - update: Modify a previous entry (indexed topics only)
 * - delete: Remove an entry by uid (indexed topics only)
 * - migrate: Move a topic to a new one
 */
export declare enum HCS2Operation {
    REGISTER = "register",
    UPDATE = "update",
    DELETE = "delete",
    MIGRATE = "migrate"
}
/**
 * HCS-2 registry type
 * - 0: Indexed registry - All records are considered for processing
 * - 1: Non-indexed registry - Only the latest message is considered
 */
export declare enum HCS2RegistryType {
    INDEXED = 0,
    NON_INDEXED = 1
}
/**
 * Base HCS-2 message format
 */
export interface HCS2Message {
    p: string;
    op: HCS2Operation;
    t_id?: string;
    uid?: string;
    metadata?: string;
    m?: string;
    ttl?: number;
}
/**
 * Register operation message
 */
export interface HCS2RegisterMessage extends HCS2Message {
    op: HCS2Operation.REGISTER;
    t_id: string;
}
/**
 * Update operation message
 */
export interface HCS2UpdateMessage extends HCS2Message {
    op: HCS2Operation.UPDATE;
    uid: string;
    t_id: string;
}
/**
 * Delete operation message
 */
export interface HCS2DeleteMessage extends HCS2Message {
    op: HCS2Operation.DELETE;
    uid: string;
}
/**
 * Migrate operation message
 */
export interface HCS2MigrateMessage extends HCS2Message {
    op: HCS2Operation.MIGRATE;
    t_id: string;
}
/**
 * Configuration for HCS-2 client
 */
export interface HCS2ClientConfig {
    network: NetworkType;
    logLevel?: LogLevel;
    silent?: boolean;
    mirrorNodeUrl?: string;
}
/**
 * Response from topic registration
 */
export interface TopicRegistrationResponse {
    success: boolean;
    topicId?: string;
    transactionId?: string;
    error?: string;
}
/**
 * Response from a registry operation
 */
export interface RegistryOperationResponse {
    success: boolean;
    transactionId?: string;
    receipt?: TransactionReceipt;
    error?: string;
    sequenceNumber?: number;
}
/**
 * Registry entry information
 */
export interface RegistryEntry {
    topicId: string;
    sequence: number;
    timestamp: string;
    payer: string;
    message: HCS2Message;
    consensus_timestamp: string;
    registry_type: HCS2RegistryType;
}
/**
 * Topic registry information
 */
export interface TopicRegistry {
    topicId: string;
    registryType: HCS2RegistryType;
    ttl: number;
    entries: RegistryEntry[];
    latestEntry?: RegistryEntry;
}
/**
 * Options for creating a new registry
 */
export interface CreateRegistryOptions {
    memo?: string;
    ttl?: number;
    adminKey?: boolean | string | PrivateKey;
    submitKey?: boolean | string | PrivateKey;
    registryType?: HCS2RegistryType;
}
/**
 * Options for registering a topic entry
 */
export interface RegisterEntryOptions {
    targetTopicId: string;
    metadata?: string;
    memo?: string;
}
/**
 * Options for updating a topic entry
 */
export interface UpdateEntryOptions {
    targetTopicId: string;
    uid: string;
    metadata?: string;
    memo?: string;
}
/**
 * Options for deleting a topic entry
 */
export interface DeleteEntryOptions {
    uid: string;
    memo?: string;
}
/**
 * Options for migrating a topic
 */
export interface MigrateTopicOptions {
    targetTopicId: string;
    metadata?: string;
    memo?: string;
}
/**
 * Options for querying registry entries
 */
export interface QueryRegistryOptions {
    limit?: number;
    order?: 'asc' | 'desc';
    skip?: number;
}
/**
 * Zod schemas for HCS-2 message validation
 */
export declare const topicIdSchema: z.ZodString;
export declare const baseMessageSchema: z.ZodObject<{
    p: z.ZodLiteral<"hcs-2">;
    op: z.ZodEnum<[HCS2Operation.REGISTER, HCS2Operation.UPDATE, HCS2Operation.DELETE, HCS2Operation.MIGRATE]>;
    m: z.ZodOptional<z.ZodString>;
    ttl: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    p?: "hcs-2";
    op?: HCS2Operation;
    ttl?: number;
    m?: string;
}, {
    p?: "hcs-2";
    op?: HCS2Operation;
    ttl?: number;
    m?: string;
}>;
export declare const registerMessageSchema: z.ZodObject<{
    p: z.ZodLiteral<"hcs-2">;
    m: z.ZodOptional<z.ZodString>;
    ttl: z.ZodOptional<z.ZodNumber>;
} & {
    op: z.ZodLiteral<HCS2Operation.REGISTER>;
    t_id: z.ZodString;
    metadata: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    p?: "hcs-2";
    metadata?: string;
    op?: HCS2Operation.REGISTER;
    ttl?: number;
    m?: string;
    t_id?: string;
}, {
    p?: "hcs-2";
    metadata?: string;
    op?: HCS2Operation.REGISTER;
    ttl?: number;
    m?: string;
    t_id?: string;
}>;
export declare const updateMessageSchema: z.ZodObject<{
    p: z.ZodLiteral<"hcs-2">;
    m: z.ZodOptional<z.ZodString>;
    ttl: z.ZodOptional<z.ZodNumber>;
} & {
    op: z.ZodLiteral<HCS2Operation.UPDATE>;
    uid: z.ZodString;
    t_id: z.ZodString;
    metadata: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    p?: "hcs-2";
    metadata?: string;
    op?: HCS2Operation.UPDATE;
    ttl?: number;
    m?: string;
    t_id?: string;
    uid?: string;
}, {
    p?: "hcs-2";
    metadata?: string;
    op?: HCS2Operation.UPDATE;
    ttl?: number;
    m?: string;
    t_id?: string;
    uid?: string;
}>;
export declare const deleteMessageSchema: z.ZodObject<{
    p: z.ZodLiteral<"hcs-2">;
    m: z.ZodOptional<z.ZodString>;
    ttl: z.ZodOptional<z.ZodNumber>;
} & {
    op: z.ZodLiteral<HCS2Operation.DELETE>;
    uid: z.ZodString;
}, "strip", z.ZodTypeAny, {
    p?: "hcs-2";
    op?: HCS2Operation.DELETE;
    ttl?: number;
    m?: string;
    uid?: string;
}, {
    p?: "hcs-2";
    op?: HCS2Operation.DELETE;
    ttl?: number;
    m?: string;
    uid?: string;
}>;
export declare const migrateMessageSchema: z.ZodObject<{
    p: z.ZodLiteral<"hcs-2">;
    m: z.ZodOptional<z.ZodString>;
    ttl: z.ZodOptional<z.ZodNumber>;
} & {
    op: z.ZodLiteral<HCS2Operation.MIGRATE>;
    t_id: z.ZodString;
    metadata: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    p?: "hcs-2";
    metadata?: string;
    op?: HCS2Operation.MIGRATE;
    ttl?: number;
    m?: string;
    t_id?: string;
}, {
    p?: "hcs-2";
    metadata?: string;
    op?: HCS2Operation.MIGRATE;
    ttl?: number;
    m?: string;
    t_id?: string;
}>;
export declare const hcs2MessageSchema: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
    p: z.ZodLiteral<"hcs-2">;
    m: z.ZodOptional<z.ZodString>;
    ttl: z.ZodOptional<z.ZodNumber>;
} & {
    op: z.ZodLiteral<HCS2Operation.REGISTER>;
    t_id: z.ZodString;
    metadata: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    p?: "hcs-2";
    metadata?: string;
    op?: HCS2Operation.REGISTER;
    ttl?: number;
    m?: string;
    t_id?: string;
}, {
    p?: "hcs-2";
    metadata?: string;
    op?: HCS2Operation.REGISTER;
    ttl?: number;
    m?: string;
    t_id?: string;
}>, z.ZodObject<{
    p: z.ZodLiteral<"hcs-2">;
    m: z.ZodOptional<z.ZodString>;
    ttl: z.ZodOptional<z.ZodNumber>;
} & {
    op: z.ZodLiteral<HCS2Operation.UPDATE>;
    uid: z.ZodString;
    t_id: z.ZodString;
    metadata: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    p?: "hcs-2";
    metadata?: string;
    op?: HCS2Operation.UPDATE;
    ttl?: number;
    m?: string;
    t_id?: string;
    uid?: string;
}, {
    p?: "hcs-2";
    metadata?: string;
    op?: HCS2Operation.UPDATE;
    ttl?: number;
    m?: string;
    t_id?: string;
    uid?: string;
}>, z.ZodObject<{
    p: z.ZodLiteral<"hcs-2">;
    m: z.ZodOptional<z.ZodString>;
    ttl: z.ZodOptional<z.ZodNumber>;
} & {
    op: z.ZodLiteral<HCS2Operation.DELETE>;
    uid: z.ZodString;
}, "strip", z.ZodTypeAny, {
    p?: "hcs-2";
    op?: HCS2Operation.DELETE;
    ttl?: number;
    m?: string;
    uid?: string;
}, {
    p?: "hcs-2";
    op?: HCS2Operation.DELETE;
    ttl?: number;
    m?: string;
    uid?: string;
}>, z.ZodObject<{
    p: z.ZodLiteral<"hcs-2">;
    m: z.ZodOptional<z.ZodString>;
    ttl: z.ZodOptional<z.ZodNumber>;
} & {
    op: z.ZodLiteral<HCS2Operation.MIGRATE>;
    t_id: z.ZodString;
    metadata: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    p?: "hcs-2";
    metadata?: string;
    op?: HCS2Operation.MIGRATE;
    ttl?: number;
    m?: string;
    t_id?: string;
}, {
    p?: "hcs-2";
    metadata?: string;
    op?: HCS2Operation.MIGRATE;
    ttl?: number;
    m?: string;
    t_id?: string;
}>]>;
//# sourceMappingURL=types.d.ts.map