export declare const NOTIFICATION_KINDS: readonly ["discussion", "payment", "protocol"]; export declare const LIST_WALLET_NOTIFICATIONS_DEFAULT_LIMIT = 20; export declare const LIST_WALLET_NOTIFICATIONS_LIMIT_MIN = 1; export declare const LIST_WALLET_NOTIFICATIONS_LIMIT_MAX = 50; export declare const LIST_WALLET_NOTIFICATIONS_CURSOR_MAX_LENGTH = 512; export type NotificationKind = (typeof NOTIFICATION_KINDS)[number]; export type NotificationDtoValue = string | boolean | null | NotificationDtoValue[] | { [key: string]: NotificationDtoValue; }; type NotificationDtoRecord = { [key: string]: NotificationDtoValue; }; export type ProtocolNotificationRole = "requester" | "challenger" | "proposer" | "budget_controller" | "goal_owner" | "goal_stakeholder" | "goal_underwriter" | "budget_underwriter" | "juror"; export interface ProtocolNotificationActor extends NotificationDtoRecord { walletAddress: string | null; } export interface ProtocolNotificationResource extends NotificationDtoRecord { kind: string | null; goalTreasury: string | null; budgetTreasury: string | null; itemId: string | null; requestIndex: string | null; arbitrator: string | null; disputeId: string | null; } export interface ProtocolNotificationLabels extends NotificationDtoRecord { goalName: string | null; budgetName: string | null; mechanismName: string | null; reminderContextLabel: string | null; } export interface ProtocolNotificationSchedule extends NotificationDtoRecord { deliverAt: string | null; votingStartAt: string | null; votingEndAt: string | null; revealEndAt: string | null; challengeWindowEndAt: string | null; reassertGraceDeadline: string | null; } export interface ProtocolNotificationAmounts extends NotificationDtoRecord { allocatedStake: string | null; claimable: string | null; claimedAmount: string | null; snapshotWeight: string | null; snapshotVotes: string | null; slashWeight: string | null; } export interface ProtocolNotificationReward extends NotificationDtoRecord { bucket: string | null; bucketLabel: string | null; } export interface ProtocolNotificationPayload extends NotificationDtoRecord { role: ProtocolNotificationRole | null; resource: ProtocolNotificationResource | null; actor: ProtocolNotificationActor | null; labels: ProtocolNotificationLabels | null; schedule: ProtocolNotificationSchedule | null; amounts: ProtocolNotificationAmounts | null; reward: ProtocolNotificationReward | null; } export type ProtocolNotificationPresentation = { title: string; excerpt: string | null; appPath: string; actorName: string | null; }; export type ProtocolRouteFocus = "request" | "dispute" | "budget" | "mechanism" | "goal" | "success_assertion" | "underwriter" | "premium"; export type ProtocolRouteState = { focus: ProtocolRouteFocus | null; budgetTreasury: string | null; itemId: string | null; requestIndex: string | null; disputeId: string | null; arbitrator: string | null; }; export type ProtocolRouteHint = { title: string; description: string; chips: Array<{ label: string; value: string; }>; focusSectionId: "position-summary" | "funding-flow" | null; }; export type WalletNotificationActor = { fid: number | null; walletAddress: string | null; name: string | null; username: string | null; avatarUrl: string | null; }; export type WalletNotificationSummary = { title: string | null; excerpt: string | null; }; export type WalletNotificationResource = { sourceType: string; sourceId: string; sourceHash: string | null; rootHash: string | null; targetHash: string | null; appPath: string | null; }; export type PaymentNotificationPayload = { amount: string | null; }; export type WalletNotificationPayload = ProtocolNotificationPayload | PaymentNotificationPayload | null; export type WalletNotificationItem = { id: string; kind: string; reason: string; eventAt: string | null; createdAt: string; isUnread: boolean; actor: WalletNotificationActor | null; summary: WalletNotificationSummary; resource: WalletNotificationResource; payload: WalletNotificationPayload; }; export type WalletNotificationsUnreadState = { count: number; watermark: string; }; export type ListWalletNotificationsInput = { limit: number; cursor?: string; unreadOnly: boolean; kinds?: NotificationKind[]; }; export type ListWalletNotificationsOutput = { subjectWalletAddress: string; items: WalletNotificationItem[]; pageInfo: { limit: number; nextCursor: string | null; hasMore: boolean; }; unread: WalletNotificationsUnreadState; }; type RawSearchParams = Record; export declare function isNotificationKind(value: string): value is NotificationKind; export declare function parseProtocolNotificationPayload(value: unknown): ProtocolNotificationPayload | null; export declare function parsePaymentNotificationPayload(value: unknown): PaymentNotificationPayload | null; export declare function normalizeWalletNotificationPayload(kind: string, value: unknown): WalletNotificationPayload; export declare function pageForProtocolNotification(reason: string, payload?: ProtocolNotificationPayload | null): "events" | "allocate"; export declare function resolveProtocolRouteState(searchParams: RawSearchParams): ProtocolRouteState; export declare function buildProtocolRouteHint(page: "events" | "allocate", state: ProtocolRouteState): ProtocolRouteHint | null; export declare function buildProtocolNotificationRouteState(payload: ProtocolNotificationPayload | null, reason?: string): ProtocolRouteState; export declare function buildProtocolRouteSearchParams(state: ProtocolRouteState): URLSearchParams; export declare function buildProtocolNotificationAppPath(payload: ProtocolNotificationPayload | null, reason?: string): string; export declare function buildDiscussionNotificationAppPath(sourceHash: string | null, rootHash: string | null): string | null; export declare function buildProtocolNotificationPresentation(args: { reason: string; payload: unknown; actorWalletAddress: string | null; }): ProtocolNotificationPresentation; export {};