import type { AgentProfileInput, ServiceInput, JobRecordInput, ReviewRecordInput, WorkspaceAttestationInput, DisputePolicy } from './finalize.js';
export declare const DATA_DESCRIPTOR_KEY = "i4GC1YGEVD21afWudGoFJVdnfjJ5XWnCQv";
export declare const MULTIMAPREMOVE_KEY = "i5Zkx5Z7tEfh42xtKfwbJ5LgEWE9rEgpFY";
/**
 * @deprecated Parent group keys removed in 25-key flat format (2026-03-28).
 * Kept ONLY for backwards-compatible reading of old on-chain data.
 * Do NOT use for new writes — use flat VDXF_KEYS directly.
 */
export declare const PARENT_KEYS: {
    readonly agent: "i8XMutgp1MRNoFoHQuzZ4ReowJd9NvCgDP";
    readonly service: "i8pfR86vr8qbTPHbhmNQFJo8MYSWKv2TZD";
    readonly review: "iMTQf3r1icnRfKLNtr5eByLKXZfsSzUt5f";
    readonly session: "iGxK7ke8RptD2mkhmUgjMASFysopezAT4n";
    readonly platform: "iMc951yUdCup5rFgZb8nwDFhkdd8Fktg2a";
    readonly bounty: "i5L3iHEG4sFm4Lp5HSN1NLLxKQUfFaoU8S";
    readonly workspace: "iEibMMaoeMGjoSLSY61wSPB8Qy5rXnXjAk";
    readonly job: "iC6GEa5mq15EBatbHiwVtd53QHb8HiEDnT";
};
/**
 * 25 flat VDXF keys — each is its own top-level contentmultimap entry.
 * No parent group wrapping. Values wrapped via makeSubDD().
 */
export declare const VDXF_KEYS: {
    readonly agent: {
        readonly displayName: "iKkdwxhdupLgf7v2qn4JGBQHntsBb17kjW";
        readonly type: "iNxeLSDFARVQezfEt4i8CBZjTSRpFTPAyP";
        readonly description: "iQr3yKEn2DXaG4GQGVAVYivC3jwcvScfzk";
        readonly status: "iLy373iaKafmRCY43ahty4m8aLQx32y8Fh";
        readonly payAddress: "iRxxUvbDXJT5wVpnx7oc9nkYALCoDh6aTD";
        readonly services: "i8Wk7fcbsBWtcf965Z3WvDUjahF1aTH1tu";
        readonly models: "iQJUQmdFSmM49cvLJfKLZnuRYsjXSmTTHY";
        readonly markup: "iBLx3rga8DewiN6gyQyC5avFin8fnnojnS";
        readonly networkCapabilities: "iF7174LxgcAnu3qZ7iJzSyJYthDJXBzQNw";
        readonly networkEndpoints: "i5VzGsiFmJYuRr7b8aUyHzAS8vd9DC4puS";
        readonly networkProtocols: "iSAVTXMb9TyWWuDDnWopFhgZpjm21WPigv";
        readonly profileTags: "iKM57qfzmgM1sxBgR3XBQa2XCRURZ2YVo2";
        readonly profileWebsite: "i7HY93tqfqCkpyKYiNtcDbioAgF8gRL9TQ";
        readonly profileAvatar: "iALo91Z75iXZxMvymvQMRwo7GAeHv5veKc";
        readonly profileCategory: "iD3quozCGbzJyZ29uvRCeecr12np2dMsvN";
        readonly disputePolicy: "iFxerhcrMr2e5eWyvHiXuWHXj2dnhEZF8p";
    };
    readonly service: {
        readonly schema: "i4D2ifpAG7BYnfJZGVT1Tph7BMkp9qZPyS";
    };
    readonly review: {
        readonly record: "iLbUN8TFvMZR9uaZYY1qBmL99bJE2uYdad";
    };
    readonly bounty: {
        readonly record: "i6PC1B9vgVf8bLtHcdsNunLtr6ibtnL7ZC";
        readonly application: "iE8Z7gZmAs4NU8AqEJzV9MWHUCoUBQqfum";
    };
    readonly platform: {
        readonly config: "iMs3n1aCWQh5rmkXCNLRi8WqbzZrq3F7Ye";
    };
    readonly session: {
        readonly params: "iHjLTt9P8Jb1uCYSpVpwXFbwzbPYWW4n8p";
    };
    readonly workspace: {
        readonly attestation: "i8xp9AgvueoAHyYXbxNACMgRQfEXF82V5D";
        readonly capability: "iMxAXRfTWUkKBmLGEZtEJbKj58kDi1GjZ9";
    };
    readonly job: {
        readonly record: "iPsXc7vcBzAxyjFYfPAs9PUtMLh1EJPHSn";
    };
};
/**
 * Build a sub-DataDescriptor (text/plain, flags=96).
 * Label is the field i-address, value is stored as objectdata.message.
 */
export declare function makeSubDD(label: string, value: string): object;
export declare function encodeVdxfValue(value: unknown): string;
export declare function decodeVdxfValue(hex: string): unknown;
export declare function getCanonicalVdxfDefinitionCount(): number;
/**
 * Build a flat contentmultimap for an agent profile + services.
 * Each field is its own top-level key wrapped in makeSubDD().
 *
 * Network fields → 3 separate keys (capabilities, endpoints, protocols).
 * Profile fields → 4 separate keys (tags, website, avatar, category).
 * No parent key wrapping.
 */
export declare function buildAgentContentMultimap(profile?: AgentProfileInput, services?: ServiceInput[], disputePolicy?: DisputePolicy): Record<string, unknown[]>;
/**
 * Decode a contentmultimap back into AgentProfileInput + services.
 * Supports BOTH the new 25-key flat format and the legacy parent-keyed format.
 */
export declare function decodeContentMultimap(cmm: Record<string, unknown[]>): {
    profile: AgentProfileInput;
    services: ServiceInput[];
    disputePolicy?: DisputePolicy;
};
export interface CanonicalAgentUpdateParams {
    fullName?: string;
    parent?: string;
    primaryaddresses: string[];
    minimumsignatures?: number;
    vdxfKeys: Record<string, string>;
    fields?: Record<string, unknown>;
}
export interface CanonicalIdentitySnapshot {
    name?: string;
    parent?: string;
    contentmultimap?: Record<string, unknown[]>;
}
/**
 * Build a flat contentmultimap from field-name -> value pairs.
 * Each field is mapped to its VDXF_KEYS.agent i-address.
 */
export declare function buildCanonicalAgentUpdate(params: CanonicalAgentUpdateParams): Record<string, unknown>;
export declare function verifyPublishedIdentity(params: {
    identity: CanonicalIdentitySnapshot;
    expectedPayload: Record<string, unknown>;
}): {
    ok: boolean;
    errors: string[];
};
export declare function buildUpdateIdentityPayload(identityName: string, contentmultimap: Record<string, unknown[]>): Record<string, unknown>;
export declare function buildUpdateIdentityCommand(payload: Record<string, unknown>, chain?: 'verustest' | 'verus'): string[];
/**
 * Build flat contentmultimap additions for job completion (read-merge-write pattern).
 * Each record is its own top-level key.
 */
export declare function buildJobCompletionAdditions(params: {
    jobRecord: JobRecordInput;
    reviewRecord?: ReviewRecordInput;
    workspaceAttestation?: WorkspaceAttestationInput;
}): Record<string, unknown[]>;
/**
 * Merge two contentmultimaps. Values from `additions` are appended to `existing`.
 */
export declare function mergeContentMultimap(existing: Record<string, unknown[]>, additions: Record<string, unknown[]>): Record<string, unknown[]>;
/**
 * Build a contentmultimapremove payload for specific VDXF keys.
 * Uses action 3 (remove all values under a key) for each target.
 *
 * @param identityName - e.g. "myagent.agentplatform@"
 * @param vdxfKeyAddresses - i-addresses of VDXF keys to remove
 * @returns updateidentity-ready JSON object with removal instructions
 */
export declare function buildContentMultimapRemove(identityName: string, vdxfKeyAddresses: string[]): Record<string, unknown>;
export interface VdxfUpdateParams {
    /** Authenticated agent — needs client.broadcast, client.getChainInfo, client.getIdentityRaw, client.getUtxos */
    agent: {
        client: any;
        _client?: any;
    };
    /** Full identity name, e.g. "myagent.agentplatform@" */
    identityName: string;
    /** Map of agent field name → new value (keys from VDXF_KEYS.agent) */
    fieldsToUpdate: Record<string, string>;
    /** Verus network */
    chain: 'verus' | 'verustest';
    /** Agent WIF for signing transactions */
    wif: string;
    /** Progress callback for UI feedback */
    onProgress?: (step: string) => void;
}
export interface VdxfUpdateResult {
    removeTxid: string;
    writeTxid: string;
    blocksWaited: number;
}
/**
 * Remove old VDXF values and write new ones in two separate transactions.
 * Waits for block confirmation between remove and write (required by Verus daemon).
 *
 * @throws If block confirmation times out (20 minutes) or transaction fails
 */
export declare function removeAndRewriteVdxfFields(params: VdxfUpdateParams): Promise<VdxfUpdateResult>;
//# sourceMappingURL=vdxf.d.ts.map