import type { CharterCore, CharterSignature, Office, OfficeRegistry, OfficeTransfer, CharterAmendment, CharterVerification, AmendmentVerification, DelegationSurvival, DissolutionPolicy, DisputeVenue, SuccessionRule, SuccessionTrigger, QuorumFailurePolicy } from '../types/charter.js';
import type { MultiClassThresholdPolicy, ApprovalRequest, ApprovalSignature, ApprovalSubjectType, ApprovalEvaluation, ApprovalPolicy } from '../types/approval.js';
import type { AttributionReceipt } from '../v2/attribution-consent/index.js';
export interface CreateCharterOptions {
    name: string;
    offices: Office[];
    amendmentPolicy: MultiClassThresholdPolicy;
    dissolutionPolicy: DissolutionPolicy;
    delegationSurvival: DelegationSurvival;
    disputeVenue?: DisputeVenue;
    founderPrivateKey: string;
    founderPublicKey: string;
    founderRole: string;
    version?: string;
    /** Optional AttributionConsent citations. See verifyCharter. */
    citations?: import('../v2/attribution-consent/index.js').ArtifactCitation[];
}
/** Create a new charter. The founder signs it as the first founding signatory.
 *  Additional signatories can be added with signCharter() until the
 *  amendment policy threshold is met. */
export declare function createCharter(opts: CreateCharterOptions): CharterCore;
/** Add a founding signature to a charter. Returns a new charter
 *  with the additional signature and a re-signed outer signature. */
export declare function signCharter(charter: CharterCore, signerPrivateKey: string, signerPublicKey: string, signerRole: string, resignerPrivateKey: string): CharterCore;
/** Verify a charter's integrity: content hash, signatures, office consistency. */
export declare function verifyCharter(charter: CharterCore, attributionReceipts?: AttributionReceipt[]): CharterVerification;
/** Evaluate whether a set of signatures satisfies a multi-class threshold policy.
 *  All class requirements must be met (conjunction). Review Q5. */
export declare function evaluateThreshold(policy: MultiClassThresholdPolicy, signatures: ApprovalSignature[]): ApprovalEvaluation;
export interface CreateAmendmentOptions {
    charter: CharterCore;
    proposedCharter: CharterCore;
    description: string;
    proposerPrivateKey: string;
    proposerPublicKey: string;
    effectiveAt?: string;
}
/** Create a charter amendment proposal. Does NOT apply it —
 *  signatures must be collected and threshold evaluated first. */
export declare function createAmendment(opts: CreateAmendmentOptions): CharterAmendment;
/** Add a signature to a charter amendment. */
export declare function signAmendment(amendment: CharterAmendment, signerPrivateKey: string, signerPublicKey: string, signerRole: string): CharterAmendment;
/** Verify a charter amendment against the charter's amendment policy. */
export declare function verifyAmendment(amendment: CharterAmendment, charter: CharterCore): AmendmentVerification;
/** Create an OfficeRegistry from a charter's offices. */
export declare function createOfficeRegistry(charter: CharterCore, successionRules: SuccessionRule[], quorumFailurePolicies: QuorumFailurePolicy[], signerPrivateKey: string): OfficeRegistry;
export interface CreateOfficeTransferOptions {
    charter: CharterCore;
    officeId: string;
    fromHolder: string | null;
    toHolder: string | null;
    trigger: SuccessionTrigger | 'appointment' | 'resignation';
    delegationHandling: 'frozen' | 'transferred' | 'revoked';
    approvalSignatures: CharterSignature[];
    signerPrivateKey: string;
}
/** Record an office holder change. */
export declare function createOfficeTransfer(opts: CreateOfficeTransferOptions): OfficeTransfer;
/** Create an approval request for a multi-party action. */
export declare function createApprovalRequest(policyId: string, subject: string, subjectType: ApprovalSubjectType, requestedBy: string, timeoutSeconds: number): ApprovalRequest;
/** Add a signature to an approval request. Validates the signer
 *  is not a duplicate and the request hasn't expired. */
export declare function addApprovalSignature(request: ApprovalRequest, signerPrivateKey: string, signerPublicKey: string, keyClass: string, officeId?: string): ApprovalRequest;
/** Evaluate an approval request against its policy. For 'threshold'
 *  type, delegates to evaluateThreshold. For simpler types, does
 *  direct checks. Returns the updated request with status. */
export declare function evaluateApprovalRequest(request: ApprovalRequest, policy: ApprovalPolicy): {
    request: ApprovalRequest;
    evaluation: ApprovalEvaluation;
};
/** Find an office by ID within a charter. */
export declare function findOffice(charter: CharterCore, officeId: string): Office | undefined;
/** Find which office(s) a public key holds. */
export declare function findOfficesByHolder(charter: CharterCore, publicKey: string): Office[];
/** Resolve the successor office for a vacant office. Walks the
 *  succession order and returns the first non-vacant office. */
export declare function resolveSuccessor(charter: CharterCore, officeId: string): Office | null;
/** Check if a holder can take an office without violating
 *  incompatibility constraints (GPT #20). */
export declare function checkIncompatibility(charter: CharterCore, officeId: string, holderPublicKey: string): {
    compatible: boolean;
    conflicts: string[];
};
/** Check if an office has quorum per its QuorumFailurePolicy. */
export declare function checkQuorum(office: Office, policy: QuorumFailurePolicy | undefined): {
    hasQuorum: boolean;
    holders: number;
    required: number;
};
/** Check if a charter is in dissolution grace period. */
export declare function isInDissolutionGrace(charter: CharterCore): boolean;
/** Verify an office transfer signature. */
export declare function verifyOfficeTransfer(transfer: OfficeTransfer): boolean;
//# sourceMappingURL=charter.d.ts.map