@cfxlabsinc/b2b-services
    Preparing search index...
    Index

    Constructors

    Methods

    • Parameters

      • args: { address: Address; blockTime?: Date; token: "MOVEUSD" }
        • address: Address
        • OptionalblockTime?: Date

          If this is provided it provides the balance at this point in time, otherwise it defaults to the latest balance

        • token: "MOVEUSD"

      Returns Promise<
          {
              ok: true;
              value: { address: Address; amount: BigNumber; token: "MOVEUSD" }
              | null;
          },
      >

    • Parameters

      • __namedParameters: { addresses: Address[]; blockTime?: Date; token: "MOVEUSD" }
        • addresses: Address[]
        • OptionalblockTime?: Date

          If this is provided it provides the balance at this point in time, otherwise it defaults to the latest balance

        • token: "MOVEUSD"

      Returns Promise<{ ok: true; value: T }>

    • Parameters

      • args: {
            addresses: Address[];
            blockTime: Exclude<Required<DbTimestampCriteria>, undefined>;
            granularity: "1 day" | "1 hour" | "1 minute";
            samplePoint: "CLOSE" | "OPEN";
            timeZone?: string;
            token: "MOVEUSD";
        }

      Returns { params: unknown[]; sql: string }

    • Parameters

      • args: {
            addresses: Address[];
            blockTime: Exclude<Required<DbTimestampCriteria>, undefined>;
            granularity: "1 day" | "1 hour" | "1 minute";
            samplePoint: "CLOSE" | "OPEN";
            token: "MOVEUSD";
        }

      Returns { params: unknown[]; sql: string }

    • Returns a LATERAL subquery fragment that resolves the latest balance for an address column on the outer query, scoped to the given token. Pass as the first argument to .leftJoin(..., sql\TRUE`)so each outer row gets its own balance lookup in a single round trip — no in-memory LUT, no separategetMultiple` call.

      The subquery is aliased latest_balance and projects a single numeric column post_balance. Read it from the outer SELECT via postBalance.

      One call per outer query. Both the subquery alias (latest_balance) and the projected column name (post_balance) are literal strings — a second latestBalanceJoin() in the same query would alias-collide and Postgres would reject it. If you need two balances (e.g. different tokens or snapshot times) on the same row, this helper needs to grow an alias parameter — don't reach for two joins.

      Parameters

      • args: { addressColumn: SQLWrapper; blockTime?: Date; token: "MOVEUSD" }
        • addressColumn: SQLWrapper
        • OptionalblockTime?: Date

          If provided, latest balance at this point in time; otherwise latest known.

        • token: "MOVEUSD"

      Returns SQL

      .leftJoin(
      service.latestBalanceJoin({
      token: "MOVEUSD",
      blockTime: snapshotDate,
      addressColumn: ledgerAccountTable.address,
      }),
      sql`TRUE`,
      )
    • Parameters

      • __namedParameters: {
            address: Address;
            blockTime: Exclude<Required<DbTimestampCriteria>, undefined>;
            orderBy?: DbOrderByCriterion<
                Omit<
                    PgTableWithColumns<
                        {
                            columns: {
                                blockTime: PgColumn<
                                    {
                                        baseColumn: never;
                                        columnType: "PgTimestamp";
                                        data: Date;
                                        dataType: "date";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: "blockTime";
                                        notNull: true;
                                        tableName: "solana_transaction";
                                    },
                                    {},
                                    {},
                                >;
                                createdAt: PgColumn<
                                    {
                                        baseColumn: never;
                                        columnType: "PgTimestamp";
                                        data: Date;
                                        dataType: "date";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: "createdAt";
                                        notNull: true;
                                        tableName: "solana_transaction";
                                    },
                                    {},
                                    {},
                                >;
                                data: PgColumn<
                                    {
                                        baseColumn: never;
                                        columnType: "PgJsonb";
                                        data: {
                                            blockTime: ...;
                                            indexWithinBlock: ...;
                                            meta: ...;
                                            slot: ...;
                                            transaction: ...;
                                        };
                                        dataType: "json";
                                        driverParam: unknown;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: "data";
                                        notNull: true;
                                        tableName: "solana_transaction";
                                    },
                                    {},
                                    {
                                        $type: {
                                            blockTime: ...;
                                            indexWithinBlock: ...;
                                            meta: ...;
                                            slot: ...;
                                            transaction: ...;
                                        };
                                    },
                                >;
                                id: PgColumn<
                                    {
                                        baseColumn: never;
                                        columnType: "PgInteger";
                                        data: number;
                                        dataType: "number";
                                        driverParam: (...)
                                        | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: "byDefault";
                                        isAutoincrement: false;
                                        isPrimaryKey: true;
                                        name: "id";
                                        notNull: true;
                                        tableName: "solana_transaction";
                                    },
                                    {},
                                    {},
                                >;
                                indexWithinBlock: PgColumn<
                                    {
                                        baseColumn: never;
                                        columnType: "PgInteger";
                                        data: number;
                                        dataType: "number";
                                        driverParam: (...)
                                        | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: "indexWithinBlock";
                                        notNull: true;
                                        tableName: "solana_transaction";
                                    },
                                    {},
                                    {},
                                >;
                                signature: PgColumn<
                                    {
                                        baseColumn: never;
                                        columnType: "PgText";
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: [(...), ...(...)[]];
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: "signature";
                                        notNull: true;
                                        tableName: "solana_transaction";
                                    },
                                    {},
                                    {},
                                >;
                                slot: PgColumn<
                                    {
                                        baseColumn: never;
                                        columnType: "PgInteger";
                                        data: number;
                                        dataType: "number";
                                        driverParam: (...)
                                        | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: "slot";
                                        notNull: true;
                                        tableName: "solana_transaction";
                                    },
                                    {},
                                    {},
                                >;
                                updatedAt: PgColumn<
                                    {
                                        baseColumn: never;
                                        columnType: "PgTimestamp";
                                        data: Date;
                                        dataType: "date";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: "updatedAt";
                                        notNull: true;
                                        tableName: "solana_transaction";
                                    },
                                    {},
                                    {},
                                >;
                            };
                            dialect: "pg";
                            name: "solana_transaction";
                            schema: "b2b";
                        },
                    >,
                    "enableRLS",
                >,
                "blockTime",
            >[];
            pageSize?: number;
            token: "MOVEUSD";
        }

      Returns Promise<
          {
              ok: true;
              value: {
                  hasNext: boolean;
                  items: {
                      address: Address;
                      amount: BigNumber;
                      blockTime: Date;
                      token: "MOVEUSD";
                  }[];
              };
          },
      >

    • Parameters

      • __namedParameters: {
            address: Address;
            blockTime: Exclude<Required<DbTimestampCriteria>, undefined>;
            granularity: "1 day" | "1 hour" | "1 minute";
            samplePoint: "CLOSE" | "OPEN";
            token: "MOVEUSD";
        }

      Returns Promise<
          {
              ok: true;
              value: {
                  hasNext: boolean;
                  items: {
                      address: Address;
                      amount: BigNumber;
                      timestamp: Date;
                      token: "MOVEUSD";
                  }[];
              };
          },
      >

    • Parameters

      • __namedParameters: {
            addresses: Address[];
            blockTime: Exclude<Required<DbTimestampCriteria>, undefined>;
            granularity: "1 day" | "1 hour" | "1 minute";
            samplePoint: "CLOSE" | "OPEN";
            timeZone?: string;
            token: "MOVEUSD";
        }
        • addresses: Address[]
        • blockTime: Exclude<Required<DbTimestampCriteria>, undefined>
        • granularity: "1 day" | "1 hour" | "1 minute"
        • samplePoint: "CLOSE" | "OPEN"
        • OptionaltimeZone?: string

          IANA timezone (e.g. "America/Chicago"). Aligns day boundaries and localDate output to this timezone. Defaults to "UTC".

        • token: "MOVEUSD"

      Returns Promise<
          {
              ok: true;
              value: {
                  items: { aggregate: BigNumber; localDate: string; timestamp: Date }[];
              };
          },
      >

    • Parameters

      • __namedParameters: {
            addresses: Address[];
            blockTime: Exclude<Required<DbTimestampCriteria>, undefined>;
            granularity: "1 day" | "1 hour" | "1 minute";
            samplePoint: "CLOSE" | "OPEN";
            token: "MOVEUSD";
        }

      Returns Promise<
          {
              ok: true;
              value: {
                  items: {
                      aggregate: BigNumber;
                      balances: Record<string, BigNumber>;
                      timestamp: Date;
                  }[];
              };
          },
      >