/**
 * Ownership, stability, and tagging types for ContractSpec.
 *
 * Provides canonical enums and metadata interfaces for spec ownership,
 * lifecycle stages, and categorization.
 *
 * @module ownership
 */
import type { DocId } from './docs';
/**
 * Lifecycle stability stages for specs.
 *
 * Specs progress through these stages as they mature:
 * - `idea`: Initial concept, not implemented
 * - `in_creation`: Currently being built
 * - `experimental`: Working but may change significantly
 * - `beta`: Feature-complete, seeking feedback
 * - `stable`: Production-ready, breaking changes require major version bump
 * - `deprecated`: Scheduled for removal, use alternatives
 */
export declare const StabilityEnum: {
    /** Initial concept, not yet implemented. */
    readonly Idea: "idea";
    /** Currently being built, not ready for use. */
    readonly InCreation: "in_creation";
    /** Working but unstable, may change significantly. */
    readonly Experimental: "experimental";
    /** Feature-complete, seeking feedback before stabilization. */
    readonly Beta: "beta";
    /** Production-ready, follows semantic versioning. */
    readonly Stable: "stable";
    /** Scheduled for removal, use alternatives. */
    readonly Deprecated: "deprecated";
};
/** Stability level for a spec's lifecycle stage. */
export type Stability = (typeof StabilityEnum)[keyof typeof StabilityEnum];
/**
 * Curated owner identifiers for business/product ownership.
 *
 * Used for CODEOWNERS, on-call routing, and approval workflows.
 * Custom owner strings are also allowed for flexibility.
 */
export declare const OwnersEnum: {
    /** Core platform team. */
    readonly PlatformCore: "platform.core";
    /** Sigil/auth team. */
    readonly PlatformSigil: "platform.sigil";
    /** Marketplace team. */
    readonly PlatformMarketplace: "platform.marketplace";
    /** Messaging/notifications team. */
    readonly PlatformMessaging: "platform.messaging";
    /** Content/CMS team. */
    readonly PlatformContent: "platform.content";
    /** Feature flags team. */
    readonly PlatformFeatureFlags: "platform.featureflags";
    /** Finance/billing team. */
    readonly PlatformFinance: "platform.finance";
};
/**
 * Owner identifier for a spec.
 * Can be a predefined OwnersEnum value or any custom string.
 */
export type Owner = (typeof OwnersEnum)[keyof typeof OwnersEnum] | (string & {});
/** @deprecated Use OwnersEnum instead. */
export declare const Owners: {
    /** Core platform team. */
    readonly PlatformCore: "platform.core";
    /** Sigil/auth team. */
    readonly PlatformSigil: "platform.sigil";
    /** Marketplace team. */
    readonly PlatformMarketplace: "platform.marketplace";
    /** Messaging/notifications team. */
    readonly PlatformMessaging: "platform.messaging";
    /** Content/CMS team. */
    readonly PlatformContent: "platform.content";
    /** Feature flags team. */
    readonly PlatformFeatureFlags: "platform.featureflags";
    /** Finance/billing team. */
    readonly PlatformFinance: "platform.finance";
};
/**
 * Common tags for categorizing specs.
 *
 * Used for search, grouping, and documentation navigation.
 * Custom tag strings are also allowed for flexibility.
 */
export declare const TagsEnum: {
    /** Spots/locations domain. */
    readonly Spots: "spots";
    /** Collectivity/community domain. */
    readonly Collectivity: "collectivity";
    /** Marketplace domain. */
    readonly Marketplace: "marketplace";
    /** Seller-related features. */
    readonly Sellers: "sellers";
    /** Authentication features. */
    readonly Auth: "auth";
    /** Login flows. */
    readonly Login: "login";
    /** Signup flows. */
    readonly Signup: "signup";
    /** Onboarding/guides. */
    readonly Guide: "guide";
    /** Documentation. */
    readonly Docs: "docs";
    /** Internationalization. */
    readonly I18n: "i18n";
    /** Incident management. */
    readonly Incident: "incident";
    /** Automation/workflows. */
    readonly Automation: "automation";
    /** Code hygiene/maintenance. */
    readonly Hygiene: "hygiene";
};
/**
 * Tag for categorizing a spec.
 * Can be a predefined TagsEnum value or any custom string.
 */
export type Tag = (typeof TagsEnum)[keyof typeof TagsEnum] | (string & {});
/** @deprecated Use TagsEnum instead. */
export declare const Tags: {
    /** Spots/locations domain. */
    readonly Spots: "spots";
    /** Collectivity/community domain. */
    readonly Collectivity: "collectivity";
    /** Marketplace domain. */
    readonly Marketplace: "marketplace";
    /** Seller-related features. */
    readonly Sellers: "sellers";
    /** Authentication features. */
    readonly Auth: "auth";
    /** Login flows. */
    readonly Login: "login";
    /** Signup flows. */
    readonly Signup: "signup";
    /** Onboarding/guides. */
    readonly Guide: "guide";
    /** Documentation. */
    readonly Docs: "docs";
    /** Internationalization. */
    readonly I18n: "i18n";
    /** Incident management. */
    readonly Incident: "incident";
    /** Automation/workflows. */
    readonly Automation: "automation";
    /** Code hygiene/maintenance. */
    readonly Hygiene: "hygiene";
};
/**
 * Common metadata interface for all ContractSpec specifications.
 *
 * Every spec type (operations, events, presentations, etc.) extends this
 * interface to provide consistent ownership, versioning, and discoverability.
 *
 * @example
 * ```typescript
 * const meta: OwnerShipMeta = {
 *   key: 'auth.login',
 *   version: '1.0.0',
 *   description: 'Authenticates a user with email and password',
 *   stability: StabilityEnum.Stable,
 *   owners: [OwnersEnum.PlatformSigil],
 *   tags: [TagsEnum.Auth, TagsEnum.Login],
 * };
 * ```
 */
export interface OwnerShipMeta {
    /**
     * Semantic version string (e.g., "1.0.0").
     * Bump for breaking changes according to semver rules.
     */
    version: string;
    /**
     * Fully-qualified spec key (e.g., "sigil.beginSignup", "user.created").
     * Must be unique within the spec type.
     */
    key: string;
    /**
     * Human-friendly title (e.g., "Begin Signup").
     * Used in documentation and UI.
     */
    title?: string;
    /**
     * Short human-friendly summary of what this spec does.
     * Should be concise (1-2 sentences).
     */
    description: string;
    /**
     * Business domain this spec belongs to (e.g., "auth", "marketplace").
     * Used for grouping and discovery.
     */
    domain?: string;
    /**
     * Lifecycle stability marker.
     * Indicates maturity level and change expectations.
     */
    stability: Stability;
    /**
     * Team/individual owners responsible for this spec.
     * Used for CODEOWNERS, on-call routing, and approvals.
     */
    owners: Owner[];
    /**
     * Tags for search, grouping, and documentation navigation.
     */
    tags: Tag[];
    /**
     * Associated DocBlock identifiers for documentation linkage.
     */
    docId?: DocId[];
}
