import { type ActivityEventType, type ActivitySpatialAnchor } from "./activity-event.js";
import { type ActivityEmitStatus, type ActivityEventEmitter } from "./activity-event-emitter.js";
import { type CommunityConsentClient } from "./community-consent-client.js";
import type { ConfigPort } from "../ports/config-port.js";
/** 一条要发射的活动:类型 + 空间锚点(街区/店铺)+ 可选对端 + 敏感度。actorPetId/ts/id 由 sink 注入。 */
export interface PetActivityInput {
    type: ActivityEventType;
    anchor?: ActivitySpatialAnchor;
    peerRef?: string;
    /** 高敏感内容 → 升级问人,不自动外发(DR3);默认 false。 */
    highSensitivity?: boolean;
}
export type PetActivityEmitStatus = ActivityEmitStatus | "escalate";
export interface PetActivitySink {
    /** 发一条活动事件。绝不抛(任何失败都 best-effort 吞掉)。 */
    emit(input: PetActivityInput): Promise<PetActivityEmitStatus>;
}
export interface PetActivitySinkDeps {
    actorPetId: string;
    consent: Pick<CommunityConsentClient, "getConsent">;
    emitter: ActivityEventEmitter;
    now: () => number;
    newId: () => string;
}
/** 纯逻辑 sink(可注入,供测试)。游历闸定 visibility,emitter 落库。 */
export declare function createPetActivitySink(deps: PetActivitySinkDeps): PetActivitySink;
/**
 * 由 (owner,device) 派生本 agent 自家宠物的 actorPetId。env 由 gateway 注入。
 * 缺 owner/device(dev / 未登录)→ null(无身份不发,fail-safe)。
 */
export declare function resolveActorPetId(configPort?: ConfigPort): string | null;
/**
 * 默认 sink:从 env 解析 actorPetId + 构造 consent/transport。
 * 无身份 / 无 token(dev)→ null(调用方 ?.emit 即 no-op,fail-safe 不发)。
 */
export declare function createDefaultPetActivitySink(configPort?: ConfigPort): PetActivitySink | null;
