+
+ {loadingVotingPowerData ? (
+
+ ) : (
+
+ )}
+
-
-
-
- Net Tokens In/Out (90D)
-
-
- {!netBalanceChange ? (
-
- ) : (
- // this is inverted because is relative to the drawer address
- // thus a positive value on the row means the drawer address is sending tokens
-
- {netBalanceChange < 0 ? (
-
- ) : (
-
- )}
- {formatNumberUserReadable(Math.abs(netBalanceChange))}
-
- )}
+
+
+
+ Net Tokens In/Out
+
+
+ {!netBalanceChange || loadingVotingPowerData ? (
+
+ ) : (
+ // this is inverted because is relative to the drawer address
+ // thus a positive value on the row means the drawer address is sending tokens
+
+ {netBalanceChange < 0 ? (
+
+ ) : (
+
+ )}
+ {formatNumberUserReadable(Math.abs(netBalanceChange))}
+
+ )}
+
-
-
+
-
-
- Top Interaction (by aggregated value)
-
+
+
+ Top Interaction (by aggregated value)
+
-
- {!legendItems || !topFive ? (
-
- ) : !topFive ? (
-
- Loading Interactions...
-
- ) : topFive && topFive.length > 0 ? (
-
- ) : (
-
- No interactions found
-
- )}
+
+
+
-
+ )}
diff --git a/apps/dashboard/features/holders-and-delegates/token-holder/drawer/top-interactions/TopInteractionsChart.tsx b/apps/dashboard/features/holders-and-delegates/token-holder/drawer/top-interactions/TopInteractionsChart.tsx
index 32583f313..15f320922 100644
--- a/apps/dashboard/features/holders-and-delegates/token-holder/drawer/top-interactions/TopInteractionsChart.tsx
+++ b/apps/dashboard/features/holders-and-delegates/token-holder/drawer/top-interactions/TopInteractionsChart.tsx
@@ -9,7 +9,7 @@ import {
TooltipProps,
} from "recharts";
import { formatNumberUserReadable } from "@/shared/utils";
-import { renderCustomizedLabel } from "@/features/holders-and-delegates/delegate/drawer/voting-power/utils/renderCustomizedLabel";
+import { renderCustomizedLabel } from "@/features/holders-and-delegates/delegate/drawer/vote-composition/utils/renderCustomizedLabel";
import { SkeletonRow } from "@/shared/components/skeletons/SkeletonRow";
import { AnticaptureWatermark } from "@/shared/components/icons/AnticaptureWatermark";
diff --git a/apps/dashboard/features/holders-and-delegates/token-holder/drawer/top-interactions/TopInteractionsTable.tsx b/apps/dashboard/features/holders-and-delegates/token-holder/drawer/top-interactions/TopInteractionsTable.tsx
index 51e2b9a0b..08c95ac60 100644
--- a/apps/dashboard/features/holders-and-delegates/token-holder/drawer/top-interactions/TopInteractionsTable.tsx
+++ b/apps/dashboard/features/holders-and-delegates/token-holder/drawer/top-interactions/TopInteractionsTable.tsx
@@ -45,9 +45,7 @@ export const TopInteractionsTable = ({
const [sortBy, setSortBy] = useQueryState(
"orderBy",
- parseAsStringEnum(["transferCount", "totalVolume"]).withDefault(
- "transferCount",
- ),
+ parseAsStringEnum(["count", "volume"]).withDefault("count"),
);
const [sortDirection, setSortDirection] = useQueryState(
"orderDirection",
@@ -178,9 +176,9 @@ export const TopInteractionsTable = ({
setSortDirection(
filterState.sortOrder === "largest-first" ? "desc" : "asc",
);
- setSortBy("totalVolume");
+ setSortBy("volume");
} else {
- setSortBy("transferCount");
+ setSortBy("count");
setSortDirection("desc");
}
@@ -203,7 +201,7 @@ export const TopInteractionsTable = ({
}}
onReset={() => {
setIsFilterActive(false);
- setSortBy("transferCount");
+ setSortBy("count");
setFilterVariables(() => ({
minAmount: null,
maxAmount: null,
diff --git a/apps/dashboard/features/holders-and-delegates/token-holder/drawer/top-interactions/hooks/useAccountInteractionsData.ts b/apps/dashboard/features/holders-and-delegates/token-holder/drawer/top-interactions/hooks/useAccountInteractionsData.ts
index 72174c4fd..2b340c74a 100644
--- a/apps/dashboard/features/holders-and-delegates/token-holder/drawer/top-interactions/hooks/useAccountInteractionsData.ts
+++ b/apps/dashboard/features/holders-and-delegates/token-holder/drawer/top-interactions/hooks/useAccountInteractionsData.ts
@@ -9,6 +9,7 @@ import { useGetAccountInteractionsQuery } from "@anticapture/graphql-client/hook
import daoConfig from "@/shared/dao-config";
import {
Query_AccountInteractions_Items_Items,
+ QueryInput_AccountInteractions_OrderBy,
QueryInput_AccountInteractions_OrderDirection,
} from "@anticapture/graphql-client";
import { DAYS_IN_SECONDS } from "@/shared/constants/time-related";
@@ -53,6 +54,7 @@ export const useAccountInteractionsData = ({
daoId,
address,
filterAddress,
+ sortBy,
sortDirection,
filterVariables,
limit = 100,
@@ -60,7 +62,7 @@ export const useAccountInteractionsData = ({
daoId: DaoIdEnum;
address: string;
filterAddress?: string;
- sortBy?: "transferCount" | "totalVolume";
+ sortBy?: "count" | "volume";
sortDirection?: "asc" | "desc";
filterVariables?: {
minAmount: string | null;
@@ -79,7 +81,7 @@ export const useAccountInteractionsData = ({
const { data, loading, error } = useGetAccountInteractionsQuery({
variables: {
address,
- fromDate,
+ orderBy: sortBy as QueryInput_AccountInteractions_OrderBy,
orderDirection:
sortDirection as QueryInput_AccountInteractions_OrderDirection,
minAmount: filterVariables?.minAmount,
diff --git a/apps/dashboard/features/holders-and-delegates/utils/index.ts b/apps/dashboard/features/holders-and-delegates/utils/index.ts
index b04bfcf75..2ccdb628c 100644
--- a/apps/dashboard/features/holders-and-delegates/utils/index.ts
+++ b/apps/dashboard/features/holders-and-delegates/utils/index.ts
@@ -1 +1,3 @@
export * from "./constants";
+export { getAvgVoteTimingData } from "./proposalsTableUtils";
+export { getTimestampRangeFromPeriod } from "./timestampUtils";
diff --git a/apps/dashboard/features/holders-and-delegates/utils/proposalsTableUtils.tsx b/apps/dashboard/features/holders-and-delegates/utils/proposalsTableUtils.tsx
index 101d4adca..b5cc4a9e4 100644
--- a/apps/dashboard/features/holders-and-delegates/utils/proposalsTableUtils.tsx
+++ b/apps/dashboard/features/holders-and-delegates/utils/proposalsTableUtils.tsx
@@ -133,6 +133,27 @@ export const isProposalFinished = (finalResultStatus: string): boolean => {
return status !== "ongoing" && status !== "pending";
};
+const formatVoteTiming = (
+ timeBeforeEnd: number,
+ votingPeriod: number,
+ suffix: "left" | "avg",
+): { text: string; percentage: number } => {
+ const timeElapsed = votingPeriod - timeBeforeEnd;
+ const percentage = Math.max(
+ 0,
+ Math.min(100, (timeElapsed / votingPeriod) * 100),
+ );
+
+ const daysLeft = Math.floor(timeBeforeEnd / (24 * 60 * 60));
+
+ if (daysLeft >= 4) {
+ return { text: `Early (${daysLeft}d ${suffix})`, percentage };
+ } else if (daysLeft < 1) {
+ return { text: `Late (<1d ${suffix})`, percentage };
+ }
+ return { text: `Late (${daysLeft}d ${suffix})`, percentage };
+};
+
// Helper function to format vote timing and calculate percentage
export const getVoteTimingData = (
userVote: Query_ProposalsActivity_Proposals_Items_UserVote | null | undefined,
@@ -159,22 +180,18 @@ export const getVoteTimingData = (
return { text: "Expired", percentage: 100 };
}
- // Calculate how much time has passed as a percentage
- const timeElapsed = voteTime - startTime;
- const percentage = Math.max(
- 0,
- Math.min(100, (timeElapsed / daoVotingPeriod) * 100),
- );
-
- const timeDiff = endTime - voteTime;
- const daysLeft = Math.floor(timeDiff / (24 * 60 * 60));
+ const timeBeforeEnd = endTime - voteTime;
+ return formatVoteTiming(timeBeforeEnd, daoVotingPeriod, "left");
+};
- if (daysLeft >= 4) {
- return { text: `Early (${daysLeft}d left)`, percentage };
- } else {
- if (daysLeft == 0) {
- return { text: `Late (<1d left)`, percentage };
- }
- return { text: `Late (${daysLeft}d left)`, percentage };
+export const getAvgVoteTimingData = (
+ avgTimeBeforeEnd: number | undefined | null,
+ votingPeriodSeconds: number,
+ votedProposals: number = 0,
+): { text: string; percentage: number } => {
+ if (!avgTimeBeforeEnd || votedProposals === 0) {
+ return { text: "-", percentage: 0 };
}
+
+ return formatVoteTiming(avgTimeBeforeEnd, votingPeriodSeconds, "avg");
};
diff --git a/apps/dashboard/features/holders-and-delegates/utils/timestampUtils.ts b/apps/dashboard/features/holders-and-delegates/utils/timestampUtils.ts
new file mode 100644
index 000000000..defc25718
--- /dev/null
+++ b/apps/dashboard/features/holders-and-delegates/utils/timestampUtils.ts
@@ -0,0 +1,24 @@
+import { TimePeriod } from "@/features/holders-and-delegates/components/TimePeriodSwitcher";
+import { SECONDS_PER_DAY } from "@/shared/constants/time-related";
+
+interface TimestampRange {
+ fromTimestamp: number | undefined;
+ toTimestamp: number | undefined;
+}
+
+export function getTimestampRangeFromPeriod(
+ selectedPeriod: TimePeriod,
+): TimestampRange {
+ if (selectedPeriod === "all") {
+ return { fromTimestamp: undefined, toTimestamp: undefined };
+ }
+
+ const nowInSeconds = Date.now() / 1000;
+ const daysInSeconds =
+ selectedPeriod === "90d" ? 90 * SECONDS_PER_DAY : 30 * SECONDS_PER_DAY;
+
+ return {
+ fromTimestamp: Math.floor(nowInSeconds - daysInSeconds),
+ toTimestamp: Math.floor(nowInSeconds),
+ };
+}
diff --git a/apps/dashboard/features/transactions/TransactionsTable.tsx b/apps/dashboard/features/transactions/TransactionsTable.tsx
index 5194d55d8..7412aa05e 100644
--- a/apps/dashboard/features/transactions/TransactionsTable.tsx
+++ b/apps/dashboard/features/transactions/TransactionsTable.tsx
@@ -90,7 +90,7 @@ export const TransactionsTable = ({
id: "loading-row",
affectedSupply: ["CEX", "DEX"] as SupplyType[],
amount: "1000000",
- date: "2 hours ago",
+ timestamp: "0",
from: "0x1234567890abcdef",
to: "0xabcdef1234567890",
txHash:
diff --git a/apps/dashboard/features/transactions/hooks/useTransactionsTableData.ts b/apps/dashboard/features/transactions/hooks/useTransactionsTableData.ts
index 960ac987c..f0a144715 100644
--- a/apps/dashboard/features/transactions/hooks/useTransactionsTableData.ts
+++ b/apps/dashboard/features/transactions/hooks/useTransactionsTableData.ts
@@ -33,7 +33,7 @@ export interface TransactionsFilters extends TransactionsParamsType {
export interface TransactionData {
id: string;
amount: string;
- date: string;
+ timestamp: string;
from: string;
to: string;
affectedSupply?: SupplyType[];
diff --git a/apps/dashboard/features/transactions/utils/getTransactionsColumns.tsx b/apps/dashboard/features/transactions/utils/getTransactionsColumns.tsx
index a16a433e7..e7281ea38 100644
--- a/apps/dashboard/features/transactions/utils/getTransactionsColumns.tsx
+++ b/apps/dashboard/features/transactions/utils/getTransactionsColumns.tsx
@@ -17,6 +17,7 @@ import { Address, zeroAddress } from "viem";
import { EnsAvatar } from "@/shared/components/design-system/avatars/ens-avatar/EnsAvatar";
import { cn } from "@/shared/utils";
import { TransactionsParamsType } from "@/features/transactions/hooks/useTransactionParams";
+import { DateCell } from "@/shared/components/design-system/table/cells/DateCell";
export const getTransactionsColumns = ({
loading,
@@ -136,7 +137,7 @@ export const getTransactionsColumns = ({
size: 162,
},
{
- accessorKey: "date",
+ accessorKey: "timestamp",
header: () => (
),
cell: ({ row }) => {
- const date = row.getValue("date") as string;
+ const timestamp = row.getValue("timestamp") as string;
if (loading) {
return (
@@ -169,8 +170,10 @@ export const getTransactionsColumns = ({
);
}
- return date ? (
- {date}
+ return timestamp ? (
+
+
+
) : null;
},
size: 162,
diff --git a/apps/dashboard/features/transactions/utils/transactionsAdapter.ts b/apps/dashboard/features/transactions/utils/transactionsAdapter.ts
index 87d7a07d5..093bbf736 100644
--- a/apps/dashboard/features/transactions/utils/transactionsAdapter.ts
+++ b/apps/dashboard/features/transactions/utils/transactionsAdapter.ts
@@ -52,20 +52,6 @@ const deduceSupplyTypes = (tx: GraphTransaction): SupplyType[] => {
return types;
};
-const formatRelativeTime = (timestampSec: string): string => {
- const ts = Number(timestampSec);
- if (!ts) return "";
- const now = Math.floor(Date.now() / 1000);
- const diff = Math.max(0, now - ts);
- const minutes = Math.floor(diff / 60);
- const hours = Math.floor(diff / 3600);
- const days = Math.floor(diff / 86400);
- if (days > 0) return `${days} day${days > 1 ? "s" : ""} ago`;
- if (hours > 0) return `${hours} hour${hours > 1 ? "s" : ""} ago`;
- if (minutes > 0) return `${minutes} min ago`;
- return "just now";
-};
-
const toBigIntSafe = (val: string | number | undefined | null): bigint => {
if (val == null || val === "") return 0n;
if (typeof val === "bigint") return val;
@@ -111,7 +97,7 @@ export const adaptTransactionsToTableData = (
Number(formatUnits(toBigIntSafe(t.amount || 0), decimals)),
2,
),
- date: formatRelativeTime(t.timestamp),
+ timestamp: t.timestamp,
from: t.fromAccountId,
to: t.toAccountId,
}));
@@ -122,19 +108,19 @@ export const adaptTransactionsToTableData = (
Number(formatUnits(toBigIntSafe(d.delegatedValue), decimals)) || 0,
2,
),
- date: formatRelativeTime(d.timestamp),
+ timestamp: d.timestamp,
from: d.delegatorAccountId,
to: d.delegateAccountId,
}));
const subRows = [...transfersSubRows, ...delegationsSubRows].sort(
- (a, b) => new Date(a.date).getTime() - new Date(b.date).getTime(),
+ (a, b) => Number(a.timestamp) - Number(b.timestamp),
);
return {
id: String(idx + 1),
affectedSupply,
amount: amount,
- date: formatRelativeTime(tx.timestamp),
+ timestamp: tx.timestamp,
from: tx.from,
to: tx.to,
txHash: tx.transactionHash,
diff --git a/apps/dashboard/shared/components/design-system/SimpleProgressBar.tsx b/apps/dashboard/shared/components/design-system/SimpleProgressBar.tsx
index db92f2363..bbcf5daae 100644
--- a/apps/dashboard/shared/components/design-system/SimpleProgressBar.tsx
+++ b/apps/dashboard/shared/components/design-system/SimpleProgressBar.tsx
@@ -16,7 +16,7 @@ export const SimpleProgressBar = ({
return (
diff --git a/apps/dashboard/shared/components/design-system/avatars/ens-avatar/EnsAvatar.tsx b/apps/dashboard/shared/components/design-system/avatars/ens-avatar/EnsAvatar.tsx
index e49b48134..7a5e7781f 100644
--- a/apps/dashboard/shared/components/design-system/avatars/ens-avatar/EnsAvatar.tsx
+++ b/apps/dashboard/shared/components/design-system/avatars/ens-avatar/EnsAvatar.tsx
@@ -104,8 +104,9 @@ export const EnsAvatar = ({
};
const displayName = getDisplayName();
- const isLoadingName = loading || ensLoading;
+ const isLoadingName = loading || (ensLoading && !address);
const isEnsName = Boolean(ensData?.ens);
+ const isResolvingEns = ensLoading && address;
const baseClasses = cn(
sizeClasses[size],
@@ -115,7 +116,7 @@ export const EnsAvatar = ({
);
const avatarElement = () => {
- if (isLoadingName) {
+ if (loading || (ensLoading && !address)) {
return (
diff --git a/apps/dashboard/shared/components/design-system/table/cells/DateCell.tsx b/apps/dashboard/shared/components/design-system/table/cells/DateCell.tsx
new file mode 100644
index 000000000..0a89f727d
--- /dev/null
+++ b/apps/dashboard/shared/components/design-system/table/cells/DateCell.tsx
@@ -0,0 +1,31 @@
+"use client";
+
+import { Tooltip } from "@/shared/components/design-system/tooltips/Tooltip";
+import {
+ formatRelativeTime,
+ formatFullDate,
+} from "@/shared/utils/formatRelativeTime";
+import { cn } from "@/shared/utils";
+
+interface DateCellProps {
+ timestampSeconds: number | string;
+ className?: string;
+}
+
+export const DateCell = ({ timestampSeconds, className }: DateCellProps) => {
+ const relativeTime = formatRelativeTime(timestampSeconds);
+ const fullDate = formatFullDate(timestampSeconds);
+
+ return (
+
+
+ {relativeTime}
+
+
+ );
+};
diff --git a/apps/dashboard/shared/utils/formatRelativeTime.ts b/apps/dashboard/shared/utils/formatRelativeTime.ts
new file mode 100644
index 000000000..2c7ccc6bd
--- /dev/null
+++ b/apps/dashboard/shared/utils/formatRelativeTime.ts
@@ -0,0 +1,64 @@
+const MILLISECONDS_PER_SECOND = 1000;
+const SECONDS_PER_MINUTE = 60;
+const MINUTES_PER_HOUR = 60;
+const HOURS_PER_DAY = 24;
+const DAYS_PER_YEAR = 365;
+
+// - Converts timestamp from seconds to milliseconds for Date object
+// - Returns granularity from years down to minutes
+// - Skips months and weeks, showing days directly (e.g., "40 days ago", "200 days ago")
+// - Returns "Just now" for timestamps less than a minute ago
+
+// Example: formatRelativeTime(1706889600) // "40 days ago"
+
+export function formatRelativeTime(timestampSeconds: number | string): string {
+ const timestamp =
+ typeof timestampSeconds === "string"
+ ? parseInt(timestampSeconds, 10)
+ : timestampSeconds;
+
+ const date = new Date(timestamp * MILLISECONDS_PER_SECOND);
+ const now = new Date();
+ const diffInMs = now.getTime() - date.getTime();
+
+ const diffInSeconds = Math.floor(diffInMs / MILLISECONDS_PER_SECOND);
+ const diffInMinutes = Math.floor(diffInSeconds / SECONDS_PER_MINUTE);
+ const diffInHours = Math.floor(diffInMinutes / MINUTES_PER_HOUR);
+ const diffInDays = Math.floor(diffInHours / HOURS_PER_DAY);
+ const diffInYears = Math.floor(diffInDays / DAYS_PER_YEAR);
+
+ if (diffInYears > 0) {
+ return `${diffInYears} year${diffInYears > 1 ? "s" : ""} ago`;
+ }
+
+ if (diffInDays > 0) {
+ return `${diffInDays} day${diffInDays > 1 ? "s" : ""} ago`;
+ }
+
+ if (diffInHours > 0) {
+ return `${diffInHours} hour${diffInHours > 1 ? "s" : ""} ago`;
+ }
+ if (diffInMinutes > 0) {
+ return `${diffInMinutes} minute${diffInMinutes > 1 ? "s" : ""} ago`;
+ }
+ return "Just now";
+}
+
+// Formats timestamp in seconds to "YYYY-MM-DD HH:MM:SS" format
+export function formatFullDate(timestampSeconds: number | string): string {
+ const timestamp =
+ typeof timestampSeconds === "string"
+ ? parseInt(timestampSeconds, 10)
+ : timestampSeconds;
+
+ const date = new Date(timestamp * MILLISECONDS_PER_SECOND);
+
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, "0");
+ const day = String(date.getDate()).padStart(2, "0");
+ const hours = String(date.getHours()).padStart(2, "0");
+ const minutes = String(date.getMinutes()).padStart(2, "0");
+ const seconds = String(date.getSeconds()).padStart(2, "0");
+
+ return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+}
diff --git a/packages/graphql-client/documents/balanceHistory.graphql b/packages/graphql-client/documents/balanceHistory.graphql
index 5aa2d243e..08faf5c45 100644
--- a/packages/graphql-client/documents/balanceHistory.graphql
+++ b/packages/graphql-client/documents/balanceHistory.graphql
@@ -8,6 +8,8 @@ query BalanceHistory(
$to: String
$fromValue: String
$toValue: String
+ $fromDate: Float
+ $toDate: Float
) {
transfers(
address: $address
@@ -19,6 +21,8 @@ query BalanceHistory(
to: $to
fromValue: $fromValue
toValue: $toValue
+ fromDate: $fromDate
+ toDate: $toDate
) {
items {
timestamp
diff --git a/packages/graphql-client/documents/delegate/drawer/voting-power/delegatorsVotingPower.graphql b/packages/graphql-client/documents/delegate/drawer/voting-power/delegatorsVotingPower.graphql
index 0075629cf..7b77c3949 100644
--- a/packages/graphql-client/documents/delegate/drawer/voting-power/delegatorsVotingPower.graphql
+++ b/packages/graphql-client/documents/delegate/drawer/voting-power/delegatorsVotingPower.graphql
@@ -6,7 +6,7 @@ query GetDelegatorVotingPowerDetails(
$skip: NonNegativeInt
) {
votingPowerByAccountId(accountId: $address) {
- accountId
+ accountId
votingPower
}
accountBalances(
diff --git a/packages/graphql-client/documents/delegationsAndHistoricalVoting.graphql b/packages/graphql-client/documents/delegationsAndHistoricalVoting.graphql
index 441f2aa46..9e288f6e9 100644
--- a/packages/graphql-client/documents/delegationsAndHistoricalVoting.graphql
+++ b/packages/graphql-client/documents/delegationsAndHistoricalVoting.graphql
@@ -22,6 +22,7 @@ query GetHistoricalVotingAndActivity(
totalProposals
votedProposals
neverVoted
+ avgTimeBeforeEnd
}
}
@@ -32,5 +33,6 @@ query GetDelegateProposalsActivity($address: String!, $fromDate: String) {
totalProposals
votedProposals
neverVoted
+ avgTimeBeforeEnd
}
}
diff --git a/packages/graphql-client/documents/historicalVotingPowerByAccountId.graphql b/packages/graphql-client/documents/historicalVotingPowerByAccountId.graphql
index fcfca4059..076eba0a1 100644
--- a/packages/graphql-client/documents/historicalVotingPowerByAccountId.graphql
+++ b/packages/graphql-client/documents/historicalVotingPowerByAccountId.graphql
@@ -6,6 +6,8 @@ query HistoricalVotingPowerByAccount(
$orderDirection: queryInput_historicalVotingPowerByAccountId_orderDirection = desc
$toValue: String
$fromValue: String
+ $fromDate: String
+ $toDate: String
) {
historicalVotingPowerByAccountId(
address: $account
@@ -15,6 +17,8 @@ query HistoricalVotingPowerByAccount(
limit: $limit
toValue: $toValue
fromValue: $fromValue
+ fromDate: $fromDate
+ toDate: $toDate
) {
items {
accountId
diff --git a/packages/graphql-client/documents/token-holder/drawer/accountInteractions.graphql b/packages/graphql-client/documents/token-holder/drawer/accountInteractions.graphql
index 245c0e15e..d377ecc65 100644
--- a/packages/graphql-client/documents/token-holder/drawer/accountInteractions.graphql
+++ b/packages/graphql-client/documents/token-holder/drawer/accountInteractions.graphql
@@ -1,19 +1,19 @@
query getAccountInteractions(
$address: String!
- $fromDate: String
$limit: PositiveInt
$maxAmount: String
$minAmount: String
+ $orderBy: queryInput_accountInteractions_orderBy
$orderDirection: queryInput_accountInteractions_orderDirection
$skip: NonNegativeInt
$filterAddress: String
) {
accountInteractions(
address: $address
- fromDate: $fromDate
limit: $limit
maxAmount: $maxAmount
minAmount: $minAmount
+ orderBy: $orderBy
orderDirection: $orderDirection
skip: $skip
filterAddress: $filterAddress
diff --git a/packages/graphql-client/generated.ts b/packages/graphql-client/generated.ts
index 581e51f70..351683423 100644
--- a/packages/graphql-client/generated.ts
+++ b/packages/graphql-client/generated.ts
@@ -15,7 +15,6 @@ export type Scalars = {
Boolean: { input: boolean; output: boolean; }
Int: { input: number; output: number; }
Float: { input: number; output: number; }
- BigInt: { input: any; output: any; }
JSON: { input: any; output: any; }
NonNegativeInt: { input: any; output: any; }
ObjMap: { input: any; output: any; }
@@ -57,24 +56,16 @@ export enum HttpMethod {
Trace = 'TRACE'
}
-export type Meta = {
- __typename?: 'Meta';
- status?: Maybe;
-};
-
export type PageInfo = {
__typename?: 'PageInfo';
- endCursor?: Maybe;
endDate?: Maybe;
hasNextPage: Scalars['Boolean']['output'];
hasPreviousPage: Scalars['Boolean']['output'];
- startCursor?: Maybe;
startDate?: Maybe;
};
export type Query = {
__typename?: 'Query';
- _meta?: Maybe ;
/** Returns account balance information for a specific address */
accountBalanceByAccountId?: Maybe;
/** Returns a mapping of the biggest variations to account balances associated by account address */
@@ -152,10 +143,7 @@ export type Query = {
proposalsActivity?: Maybe;
/** Get property data for a specific token */
token?: Maybe;
- /**
- * Returns token related metrics for a single metric type.
- * Available types: TOTAL_SUPPLY, DELEGATED_SUPPLY, CEX_SUPPLY, DEX_SUPPLY, LENDING_SUPPLY, CIRCULATING_SUPPLY, TREASURY
- */
+ /** Returns token related metrics for a single metric type. */
tokenMetrics?: Maybe;
/** Get transactions with their associated transfers and delegations, with optional filtering and sorting */
transactions?: Maybe;
@@ -165,10 +153,8 @@ export type Query = {
votes?: Maybe;
/** Returns a paginated list of votes cast on a specific proposal */
votesByProposalId?: Maybe;
- votesOnchains: VotesOnchainPage;
/** Returns voting power information for a specific address (account) */
votingPowerByAccountId?: Maybe;
- votingPowerHistorys: VotingPowerHistoryPage;
/** Returns a mapping of the voting power changes within a time frame for the given addresses */
votingPowerVariations?: Maybe;
/** Returns a the changes to voting power by period and accountId */
@@ -491,33 +477,11 @@ export type QueryVotesByProposalIdArgs = {
};
-export type QueryVotesOnchainsArgs = {
- after?: InputMaybe;
- before?: InputMaybe;
- limit?: InputMaybe;
- offset?: InputMaybe;
- orderBy?: InputMaybe;
- orderDirection?: InputMaybe;
- where?: InputMaybe;
-};
-
-
export type QueryVotingPowerByAccountIdArgs = {
accountId: Scalars['String']['input'];
};
-export type QueryVotingPowerHistorysArgs = {
- after?: InputMaybe;
- before?: InputMaybe;
- limit?: InputMaybe;
- offset?: InputMaybe;
- orderBy?: InputMaybe;
- orderDirection?: InputMaybe;
- where?: InputMaybe;
-};
-
-
export type QueryVotingPowerVariationsArgs = {
addresses?: InputMaybe;
fromDate?: InputMaybe;
@@ -545,138 +509,6 @@ export type QueryVotingPowersArgs = {
toValue?: InputMaybe;
};
-export type ViewPageInfo = {
- __typename?: 'ViewPageInfo';
- hasNextPage: Scalars['Boolean']['output'];
- hasPreviousPage: Scalars['Boolean']['output'];
-};
-
-export type Account = {
- __typename?: 'account';
- balances?: Maybe;
- delegatedFromBalances?: Maybe;
- delegationsFrom?: Maybe;
- delegationsTo?: Maybe;
- id: Scalars['String']['output'];
- powers?: Maybe;
- proposals?: Maybe;
- receivedTransfers?: Maybe;
- sentTransfers?: Maybe;
- votes?: Maybe;
-};
-
-
-export type AccountBalancesArgs = {
- after?: InputMaybe;
- before?: InputMaybe;
- limit?: InputMaybe;
- offset?: InputMaybe;
- orderBy?: InputMaybe;
- orderDirection?: InputMaybe;
- where?: InputMaybe;
-};
-
-
-export type AccountDelegatedFromBalancesArgs = {
- after?: InputMaybe;
- before?: InputMaybe;
- limit?: InputMaybe;
- offset?: InputMaybe;
- orderBy?: InputMaybe;
- orderDirection?: InputMaybe;
- where?: InputMaybe;
-};
-
-
-export type AccountDelegationsFromArgs = {
- after?: InputMaybe;
- before?: InputMaybe;
- limit?: InputMaybe;
- offset?: InputMaybe;
- orderBy?: InputMaybe;
- orderDirection?: InputMaybe;
- where?: InputMaybe;
-};
-
-
-export type AccountDelegationsToArgs = {
- after?: InputMaybe;
- before?: InputMaybe;
- limit?: InputMaybe;
- offset?: InputMaybe;
- orderBy?: InputMaybe;
- orderDirection?: InputMaybe;
- where?: InputMaybe;
-};
-
-
-export type AccountPowersArgs = {
- after?: InputMaybe;
- before?: InputMaybe;
- limit?: InputMaybe;
- offset?: InputMaybe;
- orderBy?: InputMaybe;
- orderDirection?: InputMaybe;
- where?: InputMaybe;
-};
-
-
-export type AccountProposalsArgs = {
- after?: InputMaybe;
- before?: InputMaybe;
- limit?: InputMaybe;
- offset?: InputMaybe;
- orderBy?: InputMaybe;
- orderDirection?: InputMaybe;
- where?: InputMaybe;
-};
-
-
-export type AccountReceivedTransfersArgs = {
- after?: InputMaybe;
- before?: InputMaybe;
- limit?: InputMaybe;
- offset?: InputMaybe;
- orderBy?: InputMaybe;
- orderDirection?: InputMaybe;
- where?: InputMaybe;
-};
-
-
-export type AccountSentTransfersArgs = {
- after?: InputMaybe;
- before?: InputMaybe;
- limit?: InputMaybe;
- offset?: InputMaybe;
- orderBy?: InputMaybe;
- orderDirection?: InputMaybe;
- where?: InputMaybe;
-};
-
-
-export type AccountVotesArgs = {
- after?: InputMaybe;
- before?: InputMaybe;
- limit?: InputMaybe;
- offset?: InputMaybe;
- orderBy?: InputMaybe;
- orderDirection?: InputMaybe;
- where?: InputMaybe;
-};
-
-export type AccountBalance = {
- __typename?: 'accountBalance';
- account?: Maybe;
- accountId: Scalars['String']['output'];
- balance: Scalars['BigInt']['output'];
- delegate: Scalars['String']['output'];
- delegateAccount?: Maybe;
- delegatePower?: Maybe;
- delegatedTo?: Maybe;
- token?: Maybe;
- tokenId: Scalars['String']['output'];
-};
-
export type AccountBalanceByAccountId_200_Response = {
__typename?: 'accountBalanceByAccountId_200_response';
address: Scalars['String']['output'];
@@ -685,56 +517,6 @@ export type AccountBalanceByAccountId_200_Response = {
tokenId: Scalars['String']['output'];
};
-export type AccountBalanceFilter = {
- AND?: InputMaybe>>;
- OR?: InputMaybe>>;
- accountId?: InputMaybe;
- accountId_contains?: InputMaybe;
- accountId_ends_with?: InputMaybe;
- accountId_in?: InputMaybe>>;
- accountId_not?: InputMaybe;
- accountId_not_contains?: InputMaybe;
- accountId_not_ends_with?: InputMaybe;
- accountId_not_in?: InputMaybe>>;
- accountId_not_starts_with?: InputMaybe;
- accountId_starts_with?: InputMaybe;
- balance?: InputMaybe;
- balance_gt?: InputMaybe;
- balance_gte?: InputMaybe;
- balance_in?: InputMaybe>>;
- balance_lt?: InputMaybe;
- balance_lte?: InputMaybe;
- balance_not?: InputMaybe;
- balance_not_in?: InputMaybe>>;
- delegate?: InputMaybe;
- delegate_contains?: InputMaybe;
- delegate_ends_with?: InputMaybe;
- delegate_in?: InputMaybe>>;
- delegate_not?: InputMaybe;
- delegate_not_contains?: InputMaybe;
- delegate_not_ends_with?: InputMaybe;
- delegate_not_in?: InputMaybe>>;
- delegate_not_starts_with?: InputMaybe;
- delegate_starts_with?: InputMaybe;
- tokenId?: InputMaybe;
- tokenId_contains?: InputMaybe;
- tokenId_ends_with?: InputMaybe;
- tokenId_in?: InputMaybe>>;
- tokenId_not?: InputMaybe;
- tokenId_not_contains?: InputMaybe;
- tokenId_not_ends_with?: InputMaybe;
- tokenId_not_in?: InputMaybe>>;
- tokenId_not_starts_with?: InputMaybe;
- tokenId_starts_with?: InputMaybe;
-};
-
-export type AccountBalancePage = {
- __typename?: 'accountBalancePage';
- items: Array;
- pageInfo: PageInfo;
- totalCount: Scalars['Int']['output'];
-};
-
export type AccountBalanceVariationsByAccountId_200_Response = {
__typename?: 'accountBalanceVariationsByAccountId_200_response';
data: Query_AccountBalanceVariationsByAccountId_Data;
@@ -753,21 +535,6 @@ export type AccountBalances_200_Response = {
totalCount: Scalars['Float']['output'];
};
-export type AccountFilter = {
- AND?: InputMaybe>>;
- OR?: InputMaybe>>;
- id?: InputMaybe;
- id_contains?: InputMaybe;
- id_ends_with?: InputMaybe;
- id_in?: InputMaybe>>;
- id_not?: InputMaybe;
- id_not_contains?: InputMaybe;
- id_not_ends_with?: InputMaybe;
- id_not_in?: InputMaybe>>;
- id_not_starts_with?: InputMaybe;
- id_starts_with?: InputMaybe;
-};
-
export type AccountInteractions_200_Response = {
__typename?: 'accountInteractions_200_response';
items: Array>;
@@ -775,191 +542,6 @@ export type AccountInteractions_200_Response = {
totalCount: Scalars['Float']['output'];
};
-export type AccountPage = {
- __typename?: 'accountPage';
- items: Array;
- pageInfo: PageInfo;
- totalCount: Scalars['Int']['output'];
-};
-
-export type AccountPower = {
- __typename?: 'accountPower';
- account?: Maybe;
- accountId: Scalars['String']['output'];
- daoId: Scalars['String']['output'];
- delegationsCount: Scalars['Int']['output'];
- lastVoteTimestamp: Scalars['BigInt']['output'];
- proposalsCount: Scalars['Int']['output'];
- votesCount: Scalars['Int']['output'];
- votingPower: Scalars['BigInt']['output'];
-};
-
-export type AccountPowerFilter = {
- AND?: InputMaybe>>;
- OR?: InputMaybe>>;
- accountId?: InputMaybe;
- accountId_contains?: InputMaybe;
- accountId_ends_with?: InputMaybe;
- accountId_in?: InputMaybe>>;
- accountId_not?: InputMaybe;
- accountId_not_contains?: InputMaybe;
- accountId_not_ends_with?: InputMaybe;
- accountId_not_in?: InputMaybe>>;
- accountId_not_starts_with?: InputMaybe;
- accountId_starts_with?: InputMaybe;
- daoId?: InputMaybe;
- daoId_contains?: InputMaybe;
- daoId_ends_with?: InputMaybe;
- daoId_in?: InputMaybe>>;
- daoId_not?: InputMaybe;
- daoId_not_contains?: InputMaybe;
- daoId_not_ends_with?: InputMaybe;
- daoId_not_in?: InputMaybe>>;
- daoId_not_starts_with?: InputMaybe;
- daoId_starts_with?: InputMaybe;
- delegationsCount?: InputMaybe;
- delegationsCount_gt?: InputMaybe;
- delegationsCount_gte?: InputMaybe;
- delegationsCount_in?: InputMaybe>>;
- delegationsCount_lt?: InputMaybe;
- delegationsCount_lte?: InputMaybe;
- delegationsCount_not?: InputMaybe;
- delegationsCount_not_in?: InputMaybe>>;
- lastVoteTimestamp?: InputMaybe;
- lastVoteTimestamp_gt?: InputMaybe;
- lastVoteTimestamp_gte?: InputMaybe;
- lastVoteTimestamp_in?: InputMaybe>>;
- lastVoteTimestamp_lt?: InputMaybe;
- lastVoteTimestamp_lte?: InputMaybe;
- lastVoteTimestamp_not?: InputMaybe;
- lastVoteTimestamp_not_in?: InputMaybe>>;
- proposalsCount?: InputMaybe;
- proposalsCount_gt?: InputMaybe;
- proposalsCount_gte?: InputMaybe;
- proposalsCount_in?: InputMaybe>>;
- proposalsCount_lt?: InputMaybe;
- proposalsCount_lte?: InputMaybe;
- proposalsCount_not?: InputMaybe;
- proposalsCount_not_in?: InputMaybe>>;
- votesCount?: InputMaybe;
- votesCount_gt?: InputMaybe;
- votesCount_gte?: InputMaybe;
- votesCount_in?: InputMaybe>>;
- votesCount_lt?: InputMaybe;
- votesCount_lte?: InputMaybe;
- votesCount_not?: InputMaybe;
- votesCount_not_in?: InputMaybe>>;
- votingPower?: InputMaybe;
- votingPower_gt?: InputMaybe;
- votingPower_gte?: InputMaybe;
- votingPower_in?: InputMaybe>>;
- votingPower_lt?: InputMaybe