Commit 3767e0eb authored by imtase's avatar imtase
Browse files

feat(read): add high-level summary models refs #4

parent b9f8ad3c
Loading
Loading
Loading
Loading
+108 −0
Original line number Diff line number Diff line
@@ -4362,6 +4362,110 @@ declare module 'dblurt/helpers/nexus' {
	    }>;
	}

}
declare module 'dblurt/helpers/read_models' {
	import { Asset } from 'dblurt/chain/asset';
	import { Witness } from 'dblurt/chain/witness';
	import type { Client } from 'dblurt/client';
	export const BLURT_NULL_SIGNING_KEY = "BLT1111111111111111111111111111111114T1Anm";
	export interface AccountReadModel {
	    account: {
	        name: string;
	        about?: string;
	        created?: string;
	        last_active?: string;
	        last_post: string;
	        last_vote_time: string;
	        post_count?: number;
	        following?: number;
	        followers?: number;
	        referrer?: string;
	        mana_percent: number;
	    };
	    wallet: {
	        balance: string | Asset;
	        savings_balance: string | Asset;
	        vesting_shares: string | Asset;
	        vesting_to_blurt: number;
	        delegation_in_blurt: number;
	        delegation_out_blurt: number;
	        currently_power_down: boolean;
	        power_down_blurt: number;
	    };
	    witness: {
	        witness_votes: number;
	    };
	    rewards: {
	        cumulative_posting_rewards: string;
	        cumulative_curation_rewards: string;
	    };
	}
	export interface DelegationReadModel {
	    delegatee: string;
	    blurt_power: number;
	    vesting_shares: string | Asset;
	    min_delegation_time: string;
	}
	export interface OutgoingDelegationSummary {
	    delegator: string;
	    count: number;
	    total_delegated_blurt: number;
	    delegations: DelegationReadModel[];
	}
	export interface SocialGraphSummary {
	    account: string;
	    follower_count: number;
	    following_count: number;
	    followers_sample: string[];
	    following_sample: string[];
	}
	export interface WitnessReadModel {
	    owner: string;
	    enabled: boolean;
	    vote_weight_blurt: number;
	    missed_blocks_lifetime: number;
	    running_version: string;
	    last_confirmed_block_num: number;
	    blocks_behind_head: number;
	    url: string;
	    chain_props: Witness['props'];
	}
	export interface RankedWitnessReadModel extends WitnessReadModel {
	    rank: number;
	}
	export interface VoteValueReadModel {
	    account: string;
	    weight_percent: number;
	    current_mana_percent: number;
	    vote_value_blurt: number;
	}
	/**
	 * High-level read models for common Blurt account, stake, social and governance summaries.
	 *
	 * These helpers compose existing Layer 1/Nexus calls and dblurt conversion primitives,
	 * but intentionally return structured data only. Presentation, LLM wording, fiat pricing,
	 * alerting and dashboard-specific formatting remain application concerns.
	 */
	export class ReadModels {
	    readonly client: Client;
	    constructor(client: Client);
	    /** Build a structured account, wallet/stake, witness-vote and lifetime-reward summary. */
	    getAccountSummary(username: string): Promise<AccountReadModel>;
	    /** Build an outgoing vesting delegation summary with BLURT Power conversion. */
	    getOutgoingDelegationSummary(username: string, limit?: number): Promise<OutgoingDelegationSummary>;
	    /** Build follower/following counts and optional samples. */
	    getSocialGraphSummary(username: string, sample?: number): Promise<SocialGraphSummary>;
	    /** Build a single witness governance/health read model. */
	    getWitnessSummary(username: string): Promise<WitnessReadModel>;
	    /** Build ranked witness governance/health read models. */
	    listWitnessSummaries(limit?: number): Promise<RankedWitnessReadModel[]>;
	    /** Estimate an account's current vote value in BLURT using existing dblurt vote-value primitives. */
	    estimateVoteValue(username: string, weight?: number): Promise<VoteValueReadModel>;
	    private requireAccount;
	    private convertVestsToBlurt;
	    private witnessToModel;
	}

}
declare module 'dblurt/helpers/tools' {
	/**
@@ -4760,6 +4864,7 @@ declare module 'dblurt' {
	export * from 'dblurt/helpers/condenser';
	export * from 'dblurt/helpers/database';
	export * from 'dblurt/helpers/nexus';
	export * from 'dblurt/helpers/read_models';
	export * from 'dblurt/helpers/tools';
	export * from 'dblurt/chain/account';
	export * from 'dblurt/chain/account_history';
@@ -4831,6 +4936,7 @@ declare module 'dblurt/client' {
	import { CondenserAPI } from 'dblurt/index-browser';
	import { DatabaseAPI } from 'dblurt/helpers/database';
	import { Nexus } from 'dblurt/helpers/nexus';
	import { ReadModels } from 'dblurt/helpers/read_models';
	import { Tools } from 'dblurt/helpers/tools';
	import { RpcTransportKind } from 'dblurt/transports/rpc_transport';
	/** Library version. */
@@ -4895,6 +5001,8 @@ declare module 'dblurt/client' {
	    readonly database: DatabaseAPI;
	    /** Nexus (A.k.a. Bridge) helper */
	    readonly nexus: Nexus;
	    /** High-level read model helper */
	    readonly read: ReadModels;
	    /** Tools helper */
	    readonly tools: Tools;
	    /** Chain ID for current network. */
+1 −1

File changed.

Preview size limit exceeded, changes collapsed.

+1.3 KiB (108 KiB)

File changed.

No diff preview for this file type.

+1 −1

File changed.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
window.navigationData = "data:application/octet-stream;base64,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"
 No newline at end of file
window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA6WcWXPbOBaF/4ufk+nu9DKZvHmRE0+8jWSnZ6qrywWTVxLKJMCAoG3NVP/3KVISxQW4C/1qnvMdCgZBELjkH/878vDqjz4dqUK/X1U6haN3R4Xy66NPR6lNqhyML39QhX5oDv5t7fPs6N3Rkzbp0aePP3/8+NuPH/9611JOLm9Ov55+Ob64fri6OZtdhmBDDcV8dFaliSp9CNYeZFBeSnARRn2IIiRuU3gbAmyPUH54VXmRQRki7I9RjKXSmX0O/4z9MZrxPWz/TjlX4L02q/elV85DGqLsJA87CUXMlTZeaQPu/Yt1T8vMvgTb56B7aHUU28BrFYQ1Byj3fHZ8djUL2bdHKL+rjNc5vE9sXiivH3Wm/SaE2wkfekKKXkJSOe038Ut2r+Bdt35TQJk4XQQvssNRiqNNCq8HRG7TKoPyh+bPfe+Hd0fJWmepA3P06Y8WUHmdlTFAc7CP+SWMsQU45bU1Ny4F1wE+K6fV4xA5kPcjfv7Q+YHP2vlKZTcFyTwoEVxii06nWFYmqc+iD6o1fcRvv3Sb3Nfnbt3CO1A5BeurEWyunuBE+ytVPp3rzHeHnDB5ZKDhL7oEEfxgQOAOvNtoszoHn6wpcE+MQMsMoKBgjQiBvCjtz62bPYPxFKurHSH/7N5yM5s8JWulzZXtDgVgqnyP7GsGF3GHdZwktjL+iy69dZvj24sDLslUWbZdfCTsM3/60KOWJfgoqT6Iuiu/tq43eA4IewFGObRADHNQYJzTTPf+eX3G9ijqtyYFU4JDGrerwVkO5kVy55QpC+viZzXQYcwz5dWjKgE5vY4EI81eC3C6voGoDG+1sRLjfoHXk2q57I4ZfVwrwCiXsFLJhtN6YyXGve5POvqo6/HEo+++dTqBmLs5SLiflYevEL1UDgqUUz1mOsEwewFGmYNK69EmizbHQYFxFnpllK9ctF1aAUa5szZ+Is1BdAzaDncHvzYe3FIlwwFxMMf59bcxpB2uvqlMp9tZR9GM/zQ+7p0WPIeyyhg/K2plxJ46UB5u9jMsOmxgYES0HYmGt1IG9r5IZWc+MDAiftfeQFneOvu6EQQFbfy4b1b0s0IuPMzrZ6jlKHsvQlFFkWlI5V0J8/EDBT0A8/EDxf2BdovD2b2DNHOim5FlDi/KpZLQkI0Rd6pMAllzJ1+CO3c2X6hnbValIJtmcE5krcwK5pDUKzabXRtKTgL1c04gUzqfkBuyceO2/68TldUtKA0NmznRNq/nlidgYKkSP6G3UQT+SchDJ4U0U4IpWX0jJ7IZWpt/UDsUSIIxOzv+1tnClvVaizB4ZOREVm43AZL2orCRFVl6m/+zrGd7griRiR0ljpFEnEGSaVPf+rVZzfVq7SVdFXOzwjNYKQ/foKwBi7VyIIvH/MwT8CAfDsI+RuCsTJx9OS4KZ58lg27Yxw4802VRiSYSYR87cA4ZqFIeOPSxA/czAHHiyMiIPAe4VZIp4cDAidBZYFYjicQBzFPYXVm/a79OnXoR5sfcjPAvyqVL654EiSMLI0aAl2BvnU2rBOSTm4iRF9ncPWUdM+RihO2muvIpRsTIiszt85TJRcTIivxeQenbxYrt9F4UjQJYp1CCn9LMARsrzlfO7C7b3d1ViyY6FIFxEgvwE392zMkL3Q9Tu5OfW9kdkyJwTqIozysjGS+GDkbI25633/ikPeE2PeUGvffc2em/cOwVBe/6wKTgoZcRvF3k2o9y9cKP5Ddjbka4cJFKuiw1uKwESTEnL7ReQluAr5sFnNeiFkXt/HjxmmfYhwbutxNmzyqruFsgUZMwit70iHlYQXebAl337upooGA6J10SbZazdKKV2zS3DYQ9lKLYdh99W2NC/2cjDjLkC6i0uw0cBm9VBGw1M95tcNRWg4HetLr8tmXl07r5Dtc9ltNXEtBpi9TTV6ely9Li9ehpC9ETV6C31Qz0FdDTocDt+g+G2ioYkCkL4m9ZCd95r8CrVHnFaJWggREh+CWSMxesq09YUK8tldF+s6get8WW3YcYXmuRfvwEjAfj79SKEzbQ4uB+/REHH3SgIRM3IibvQMi3HibsOcg3GybsMmyX8E+0UbylhqCeDqi3Ik4qnaX1gxXZAyIWXgz/V7D3R/gbI4IdkYlbIVP3QCZvfkzf9Tisx3CKdAJqCi7aS5FvopzpMqnKksC2IgL1fav6VwXoZHOgRKEbo3KdfM7so8pY87+IAwsRbyHJ947Em0by3SLxNpF8f0i+MTRhR2hcLksPp1EPHuTBpO1dEcX3lBh0+i7TG7aXJu4rTd1QOrdZZl9OiUbrqGhY7yWWCGr05koIpM2KBGmzokGCqWnYgEVI9uJEm3Djam769KMeLKip9d5dD9fW66VOFBUU9ZBB7eSfordCPrKZ679iPTmo5wfsRw92wt5ARpxnanVrS9bcIGwgI64qD6KIkYGMuFUbW/mFV57sPB0pjdVGdOJDPR1gS7LX1BoWiFzsGyhpqLNLnWGrnl0Zias3Am3GmlcE9ZyA+xLcnfaylLGJjLo34l4dsDBipF1w7KBD2n0m8uLpSCVY/tkHPFgQB8wDVX5le5vjiyrPFfoMEvVgQbfKqXxmqvxb4DXZUURAjcLB5Zk2T82CAH3XDsk5+GvrcpXp/zLnNpgNjcMHR2pc7F0EjLMMyFG8uJpoQhnRfiUMpzYSDoYxjRhKOVhmdZO0rKm7883AUi/KzJV5ardiOUstYQMaASrtzkoF3Y+y4rGPmV2JwkIGPEJaWzahqGwOS3BOZfTT9ECJQ6UlahNq0+ZQZBvRPyCgxwOmVr29odxNWvAlLvN6Q2XbW0ratgNwXaKFBuxFKKpIrm0Kp9YsNbZq0NMRwMD71iFe5GXrOO6kWaMju2bYgYVMqA2cUhT4hmrAt5QB1i9PQ9oUSmAJBxUTRj6ujbQ0uPnPqYRqjaEWBV/dDb5OMebtJCjGJlpln50q1vTMeixG0fwCTUllJq8tma3YkTVjgMupU404yBB5Wc3UghrJIr5o+X5Soei0CtFJpaHTakIH1X/0SBw20BHietOphaajuy+SMdKiYGbpKrtmtRZ+U1kFnHn/WIyhJ9TBTimA3T2G4NRawYBwGkHy2LMvq03WUH+LjKbulRxot1aXQe7KpXjm/25aCbG4dlheNNxzSFpt6GCENKMETW5kaA3v4PMpp/VnZw7c5rt6+/LdkHTA/vEff//p1+7n45qJyWKTP9osQj0ISFboGy+q7P4Xe+SYnMo50StT5WHo9hhFGNQFhlEDkZDZjJAscKPk0Ee1eceD2dcwJGKYlFWXOd2qTWZVKgjsuMjUtpoKjxnKKO4ZlOB0vbDafZroIrsKktYW6jSFNafKw8p2J+s9cFhMZWw3u8mWGMl43N/XymPA+jhF+gqbeuspjNkdpBjb3SXr/Gfw26XE/oJ2FxnWshLqlyS6C4dIwFBK8dubzrXKI23Rk7B5/RdAgrzAux8jXvO5tzirPUxxhmuvZM9EDHRWvfTKSBjISG5n2earNjHsQEVRF8TIsmCPK+0GFtmlQkopPd4pQkrBHGIOK3jtfOV0+GHbkbTP7n3Z9uTyfn73cH1/efmwuPh8fXH9+eHr7D9xdliPBCT7O1a7+IuffFiPBTRf9b7vf5B4RD2IENTZ7Pz4/vLu4fjsbD5bLB5u57Pzi3/HqWE9I2D7WfWLMxq9V3KgN9d3s+u7h7vjzw+XF1cXdwz60ILEzEzTiJBeQW7D9/thTNSCxPQuOaqzBMQcdH29sdEHMYKuRUj3aw4j9m+z+eLi5joO2AkwRGDEon5j3CMI4jRm3IMEPdYVAdGHiOHnmEPqPrz3jedW3p1NP4aeiaNBESc79N6Uk2NDXjIYe+8iHEe9ezEOGdSQEgEDNQW/Cu+0BNFX8a2VMThS3RQEI3VNYfC+9ITB3UspbHSjnsiI+ujA3mY9GdNT0/DuRjTJ7opZaOY/oKelwPcmtbJGCTjokKXochrp6YBccEkN1CQ8tsoYhmNLjD14ColNoZ5SxJEHDQICQ4MOGgy0/QABtItt59b1vss9ooYNSMQKfPetrsEXyIf8kJqGlySwRCC6bJYYT4n5/pCM2pA4syvkg8M7rsj5h9QcOD10jKQItlCuBPaMJqRG4M/bBV4YrlDHA2IORkh9s9JmJQgZOkYhf/715/8BOxvPnudqAAA="
 No newline at end of file
Loading