type FieldKeyMap = Record | Map; export interface FieldStreamPolicySummary { policyId: string; policyVersion: number; providerPeerId: string; listingId: string; streamId: string; schemaCode: string; schemaHash?: Uint8Array; audiences: FieldStreamAudienceSummary[]; rules: FieldStreamRuleSummary[]; allowedOperations: string[]; keyScope?: string; keyEpoch?: string; validFrom?: bigint; expiresAt?: bigint; revocationStatus: string; revokedAt?: bigint; revocationReason?: string; providerSignature?: Uint8Array; } export interface FieldStreamAudienceSummary { audienceType: string; subjectId?: string; subjectEpmCid?: string; subjectKeyId?: string; } export interface FieldStreamRuleSummary { fieldPath: string; fieldIdPath: number[]; decision: string; tags: string[]; requiredAttributes: string[]; keyId?: string; } export interface FieldStreamMessageSummary { messageId: string; providerPeerId: string; listingId: string; streamId: string; schemaCode: string; schemaHash?: Uint8Array; policyId: string; policyVersion: number; keyEpoch?: string; sequence: bigint; producedAt?: bigint; expiresAt?: bigint; subjectId?: string; fields: FieldStreamFieldSummary[]; payloadHash?: Uint8Array; previousMessageHash?: Uint8Array; providerSignature?: Uint8Array; } export interface FieldStreamFieldSummary { fieldPath: string; fieldIdPath: number[]; state: string; encoding: string; value?: Uint8Array; ciphertext?: Uint8Array; nonce?: Uint8Array; tag?: Uint8Array; keyId?: string; aadHash?: Uint8Array; releaseTags: string[]; decision?: string; ciphertextLength: number; } export type FieldStreamFieldVisibility = 'public' | 'decrypted' | 'encrypted' | 'redacted' | 'unavailable'; export interface FieldStreamAccessGrant { grantId?: string; subjectId: string; providerPeerId: string; listingId: string; streamId: string; schemaCode?: string; policyId: string; policyVersion: number; keyEpoch?: string; allowedFieldPaths: string[]; redactedFieldPaths?: string[]; fieldKeysById?: FieldKeyMap; grantedAt?: bigint | number | string | Date; expiresAt?: bigint | number | string | Date; revokedAt?: bigint | number | string | Date; revocationReason?: string; deliveryTopic?: string; grantScope?: string; allowedOperations?: string[]; fieldStreamPolicy?: FieldStreamGrantPolicyPayload; providerSignature?: Uint8Array; signaturePayload?: Uint8Array; } export interface FieldStreamGrantPolicyPayload { policyId?: string; policyVersion?: number; streamId?: string; schemaCode?: string; allowedFieldPaths?: string[]; redactedFieldPaths?: string[]; keyEpoch?: string; grantScope?: string; allowedOperations?: string[]; } export interface FieldStreamProviderSignatureInput { message: FieldStreamMessageSummary; signature: Uint8Array; signaturePayload: Uint8Array; } export interface FieldStreamGrantSignatureInput { grant: FieldStreamAccessGrant; signature: Uint8Array; signaturePayload: Uint8Array; } export interface FieldStreamDecryptFieldInput { message: FieldStreamMessageSummary; field: FieldStreamFieldSummary; grant: FieldStreamAccessGrant; fieldPath: string; keyId: string; keyBytes: Uint8Array; ciphertext: Uint8Array; tag: Uint8Array; nonce: Uint8Array; aad: Uint8Array; } export interface ResolveFieldStreamMessageViewOptions { now?: bigint | number | string | Date; decryptField?: (input: FieldStreamDecryptFieldInput) => Promise | Uint8Array; verifyProviderSignature?: (input: FieldStreamProviderSignatureInput) => Promise | boolean; verifyGrantSignature?: (input: FieldStreamGrantSignatureInput) => Promise | boolean; replayGuard?: FieldStreamReplayGuard; auditEvent?: (event: FieldStreamAuditEvent) => void; aadForField?: (message: FieldStreamMessageSummary, field: FieldStreamFieldSummary, grant: FieldStreamAccessGrant) => Uint8Array | undefined; } export type FieldStreamAuditEventType = 'field_stream.decrypt_success' | 'field_stream.decrypt_denied' | 'field_stream.key_epoch_mismatch'; export interface FieldStreamAuditEvent { type: FieldStreamAuditEventType; messageId: string; providerPeerId: string; listingId: string; streamId: string; schemaCode: string; policyId: string; policyVersion: number; keyEpoch?: string; sequence: string; grantId?: string; grantSubjectId: string; fieldPath?: string; reason?: string; messageKeyEpoch?: string; grantKeyEpoch?: string; } export interface FieldStreamResolvedField { fieldPath: string; fieldIdPath: number[]; state: string; visibility: FieldStreamFieldVisibility; encoding: string; value?: Uint8Array; plaintext?: Uint8Array; keyId?: string; releaseTags: string[]; decision?: string; reason?: string; ciphertextLength: number; } export interface FieldStreamMessageView { messageId: string; providerPeerId: string; listingId: string; streamId: string; schemaCode: string; policyId: string; policyVersion: number; keyEpoch?: string; sequence: bigint; subjectId?: string; grantSubjectId: string; fields: FieldStreamResolvedField[]; } export interface FieldStreamReplayGuard { check(message: FieldStreamMessageSummary): void; accept(message: FieldStreamMessageSummary): void; reset(): void; } export declare function createFieldStreamReplayGuard(): FieldStreamReplayGuard; export declare function decodeFieldStreamPolicySummary(bytes: Uint8Array): FieldStreamPolicySummary; export declare function decodeFieldStreamMessageSummary(bytes: Uint8Array): FieldStreamMessageSummary; export declare function resolveFieldStreamMessageView(bytesOrSummary: Uint8Array | FieldStreamMessageSummary, grant: FieldStreamAccessGrant, options?: ResolveFieldStreamMessageViewOptions): Promise; export declare function buildFieldStreamProviderSignaturePayload(message: FieldStreamMessageSummary): Uint8Array; export declare function buildFieldStreamGrantSignaturePayload(grant: FieldStreamAccessGrant): Uint8Array; export declare function verifyFieldStreamProviderSignature(message: FieldStreamMessageSummary, providerPublicKey: Uint8Array): Promise; export declare function verifyFieldStreamGrantSignature(grant: FieldStreamAccessGrant, providerPublicKey: Uint8Array): Promise; export {}; //# sourceMappingURL=field-stream.d.ts.map