export type DisclosureLevel = 'public' | 'verified-only' | 'minimal';
/**
 * A Principal is the human or organization that owns/operates agents.
 * They have their own Ed25519 keypair, separate from any agent's keys.
 */
export interface PrincipalIdentity {
    principalId: string;
    displayName: string;
    publicKey: string;
    domain?: string;
    jurisdiction?: string;
    contactChannel?: string;
    disclosureLevel: DisclosureLevel;
    createdAt: string;
    metadata: Record<string, unknown>;
    /** Optional legal entity binding (e.g. Corpo Wyoming DAO LLC).
     *  Root trust anchor: the entity establishes the maximum authority ceiling
     *  that every downstream delegation narrows from. */
    entityBinding?: EntityBinding;
}
/** Legal entity binding — links a principal to a registered legal entity.
 *  The entity proves the agent ecosystem has a legal counterparty
 *  for contracts, regulated payments, and dispute resolution. */
export interface EntityBinding {
    entityId: string;
    jurisdiction: string;
    entityType?: string;
    operatingAgreementHash?: string;
    verificationEndpoint?: string;
    boundAt: string;
}
/**
 * An Endorsement is the principal's cryptographic sign-off on an agent.
 * "I created/operate this agent and I'm accountable for it."
 * The principal signs the agent's public key + scope, creating a
 * verifiable chain from human to machine.
 */
export interface PrincipalEndorsement {
    endorsementId: string;
    principalId: string;
    principalPublicKey: string;
    agentId: string;
    agentPublicKey: string;
    scope: string[];
    relationship: 'creator' | 'operator' | 'employer' | 'sponsor';
    endorsedAt: string;
    expiresAt: string;
    revoked: boolean;
    revokedAt?: string;
    revokedReason?: string;
    signature: string;
}
/**
 * Selective disclosure: a principal can reveal different amounts
 * of identity information depending on context.
 */
export interface PrincipalDisclosure {
    disclosureId: string;
    principalId: string;
    level: DisclosureLevel;
    revealedFields: Record<string, unknown>;
    proof: string;
    createdAt: string;
}
/**
 * Fleet: a principal's collection of endorsed agents.
 */
export interface FleetRecord {
    principalId: string;
    principalPublicKey: string;
    agents: FleetAgent[];
    createdAt: string;
    updatedAt: string;
}
export interface FleetAgent {
    agentId: string;
    agentPublicKey: string;
    endorsementId: string;
    relationship: PrincipalEndorsement['relationship'];
    status: 'active' | 'revoked' | 'expired';
    endorsedAt: string;
}
/**
 * Result of verifying an endorsement.
 */
export interface EndorsementVerification {
    valid: boolean;
    expired: boolean;
    revoked: boolean;
    principalId: string;
    agentId: string;
    errors: string[];
}
//# sourceMappingURL=principal.d.ts.map