import type { KeyPair, SignedPassport } from '../types/passport.js';
import type { PrincipalIdentity, PrincipalEndorsement, PrincipalDisclosure, FleetRecord, FleetAgent, EndorsementVerification, DisclosureLevel } from '../types/principal.js';
/**
 * Create a new principal identity with its own Ed25519 keypair.
 * The principal is the human or org behind the agent.
 */
export declare function createPrincipalIdentity(options: {
    displayName: string;
    domain?: string;
    jurisdiction?: string;
    contactChannel?: string;
    disclosureLevel?: DisclosureLevel;
    metadata?: Record<string, unknown>;
}): {
    principal: PrincipalIdentity;
    keyPair: KeyPair;
};
/**
 * Endorse an agent. The principal signs a commitment:
 * "This agent acts under my authority within this scope."
 * Creates a two-layer trust chain: principal → agent.
 */
export declare function endorseAgent(options: {
    principal: PrincipalIdentity;
    principalPrivateKey: string;
    agentId: string;
    agentPublicKey: string;
    scope: string[];
    relationship: PrincipalEndorsement['relationship'];
    expiresInDays?: number;
}): PrincipalEndorsement;
/**
 * Verify an endorsement's cryptographic signature.
 */
export declare function verifyEndorsement(endorsement: PrincipalEndorsement): EndorsementVerification;
/**
 * Revoke a principal's endorsement of an agent.
 * "I no longer authorize this agent."
 */
export declare function revokeEndorsement(endorsement: PrincipalEndorsement, reason: string): PrincipalEndorsement;
/**
 * Create a selective disclosure of principal identity.
 * Controls how much information is revealed.
 *
 * - minimal: just a hash of principalId + proof (verifiable but anonymous)
 * - verified-only: principalId + publicKey + domain
 * - public: everything
 */
export declare function createDisclosure(principal: PrincipalIdentity, principalPrivateKey: string, level?: DisclosureLevel): PrincipalDisclosure;
/**
 * Verify a selective disclosure's proof.
 * For minimal disclosures, you can verify the proof without knowing the identity.
 */
export declare function verifyDisclosure(disclosure: PrincipalDisclosure): {
    valid: boolean;
    level: DisclosureLevel;
    error?: string;
};
/**
 * Create a fleet record for a principal.
 * A fleet tracks all agents endorsed by one principal.
 */
export declare function createFleet(principal: PrincipalIdentity): FleetRecord;
/**
 * Add an endorsed agent to the fleet.
 */
export declare function addToFleet(fleet: FleetRecord, endorsement: PrincipalEndorsement): FleetRecord;
/**
 * Get fleet status summary.
 */
export declare function getFleetStatus(fleet: FleetRecord): {
    principalId: string;
    totalAgents: number;
    activeAgents: number;
    revokedAgents: number;
    expiredAgents: number;
    agents: FleetAgent[];
};
/**
 * Revoke an agent from the fleet (updates status).
 */
export declare function revokeFromFleet(fleet: FleetRecord, agentId: string): FleetRecord;
/**
 * Endorse a signed passport. The principal signs the agent's passport,
 * creating a verifiable chain: principal → agent.
 * Returns the endorsement + the passport with principal info in metadata.
 */
export declare function endorsePassport(options: {
    principal: PrincipalIdentity;
    principalPrivateKey: string;
    signedPassport: SignedPassport;
    scope: string[];
    relationship: PrincipalEndorsement['relationship'];
    expiresInDays?: number;
}): {
    endorsement: PrincipalEndorsement;
    endorsedPassport: SignedPassport;
};
/**
 * Verify that a passport's principal endorsement is valid.
 * Checks the endorsement signature embedded in passport metadata.
 */
export declare function verifyPassportEndorsement(signedPassport: SignedPassport): EndorsementVerification;
/**
 * Check if a passport has a principal endorsement.
 */
export declare function hasPrincipalEndorsement(signedPassport: SignedPassport): boolean;
//# sourceMappingURL=principal.d.ts.map