@sentio/sdk 2.7.3 → 2.7.4-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/aptos/context.js +1 -1
- package/lib/aptos/context.js.map +1 -1
- package/lib/aptos/ext/aptos-dex.d.ts +2 -2
- package/lib/aptos/ext/aptos-dex.js +12 -11
- package/lib/aptos/ext/aptos-dex.js.map +1 -1
- package/lib/eth/context.js +1 -1
- package/lib/eth/context.js.map +1 -1
- package/lib/sui/context.js +1 -1
- package/lib/sui/context.js.map +1 -1
- package/package.json +4 -4
- package/src/aptos/context.ts +1 -1
- package/src/aptos/ext/aptos-dex.ts +12 -9
- package/src/eth/context.ts +1 -1
- package/src/sui/context.ts +1 -1
    
        package/lib/aptos/context.js
    CHANGED
    
    | @@ -8,7 +8,7 @@ export class AptosContext extends BaseContext { | |
| 8 8 | 
             
                transaction;
         | 
| 9 9 | 
             
                constructor(moduleName, network, address, version, transaction) {
         | 
| 10 10 | 
             
                    super();
         | 
| 11 | 
            -
                    this.address = address;
         | 
| 11 | 
            +
                    this.address = address.toLowerCase();
         | 
| 12 12 | 
             
                    this.network = network;
         | 
| 13 13 | 
             
                    this.moduleName = moduleName;
         | 
| 14 14 | 
             
                    this.version = version;
         | 
    
        package/lib/aptos/context.js.map
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/aptos/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAEvE,OAAO,EAAgB,UAAU,EAAE,MAAM,cAAc,CAAA;AAEvD,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC3C,OAAO,CAAQ;IACf,OAAO,CAAc;IACrB,UAAU,CAAQ;IAClB,OAAO,CAAQ;IACf,WAAW,CAA6B;IAExC,YACE,UAAkB,EAClB,OAAqB,EACrB,OAAe,EACf,OAAe,EACf,WAAyC;QAEzC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA; | 
| 1 | 
            +
            {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/aptos/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAEvE,OAAO,EAAgB,UAAU,EAAE,MAAM,cAAc,CAAA;AAEvD,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC3C,OAAO,CAAQ;IACf,OAAO,CAAc;IACrB,UAAU,CAAQ;IAClB,OAAO,CAAQ;IACf,WAAW,CAA6B;IAExC,YACE,UAAkB,EAClB,OAAqB,EACrB,OAAe,EACf,OAAe,EACf,WAAyC;QAEzC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;SAC/B;IACH,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,MAAc;QACtC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,UAAU;YAC7B,WAAW,EAAE,IAAI,CAAC,OAAO;YACzB,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE;YAC7C,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YACjC,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;SAChC,CAAA;IACH,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IACnD,OAAO,CAAQ;IACf,OAAO,CAAc;IACrB,OAAO,CAAQ;IACf,iBAAiB,CAAQ;IAEzB,YAAY,OAAqB,EAAE,OAAe,EAAE,OAAe,EAAE,iBAAyB;QAC5F,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;IAC5C,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,MAAc;QACtC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,WAAW;YACzB,WAAW,EAAE,IAAI,CAAC,OAAO;YACzB,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YACjC,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;SAChC,CAAA;IACH,CAAC;CACF","sourcesContent":["import { RecordMetaData } from '@sentio/protos'\nimport { type Labels, BaseContext, normalizeLabels } from '@sentio/sdk'\nimport { Transaction_UserTransaction } from './move-types.js'\nimport { AptosNetwork, getChainId } from './network.js'\n\nexport class AptosContext extends BaseContext {\n  address: string\n  network: AptosNetwork\n  moduleName: string\n  version: bigint\n  transaction: Transaction_UserTransaction\n\n  constructor(\n    moduleName: string,\n    network: AptosNetwork,\n    address: string,\n    version: bigint,\n    transaction?: Transaction_UserTransaction\n  ) {\n    super()\n    this.address = address.toLowerCase()\n    this.network = network\n    this.moduleName = moduleName\n    this.version = version\n    if (transaction) {\n      this.transaction = transaction\n    }\n  }\n\n  getMetaData(name: string, labels: Labels): RecordMetaData {\n    return {\n      address: this.address,\n      contractName: this.moduleName,\n      blockNumber: this.version,\n      transactionIndex: 0,\n      transactionHash: this.transaction?.hash || '', // TODO\n      logIndex: 0,\n      chainId: getChainId(this.network),\n      name: name,\n      labels: normalizeLabels(labels),\n    }\n  }\n}\n\nexport class AptosResourceContext extends BaseContext {\n  address: string\n  network: AptosNetwork\n  version: bigint\n  timestampInMicros: number\n\n  constructor(network: AptosNetwork, address: string, version: bigint, timestampInMicros: number) {\n    super()\n    this.address = address\n    this.network = network\n    this.version = version\n    this.timestampInMicros = timestampInMicros\n  }\n\n  getMetaData(name: string, labels: Labels): RecordMetaData {\n    return {\n      address: this.address,\n      contractName: 'resources',\n      blockNumber: this.version,\n      transactionIndex: 0,\n      transactionHash: '',\n      logIndex: 0,\n      chainId: getChainId(this.network),\n      name: name,\n      labels: normalizeLabels(labels),\n    }\n  }\n}\n"]}
         | 
| @@ -10,11 +10,11 @@ export interface PoolAdaptor<T> { | |
| 10 10 | 
             
            export declare class AptosDex<T> {
         | 
| 11 11 | 
             
                poolAdaptor: PoolAdaptor<T>;
         | 
| 12 12 | 
             
                volume: Gauge;
         | 
| 13 | 
            -
                 | 
| 13 | 
            +
                volumeByCoin: Gauge;
         | 
| 14 14 | 
             
                tvlAll: Gauge;
         | 
| 15 15 | 
             
                tvlByPool: Gauge;
         | 
| 16 16 | 
             
                tvlByCoin: Gauge;
         | 
| 17 | 
            -
                constructor(volume: Gauge, tvlAll: Gauge, tvlByCoin: Gauge, tvlByPool: Gauge, poolAdaptor: PoolAdaptor<T>);
         | 
| 17 | 
            +
                constructor(volume: Gauge, volumeByCoin: Gauge, tvlAll: Gauge, tvlByCoin: Gauge, tvlByPool: Gauge, poolAdaptor: PoolAdaptor<T>);
         | 
| 18 18 | 
             
                recordTradingVolume(ctx: AptosContext, coinx: string, coiny: string, coinXAmount: bigint, coinYAmount: bigint, extraLabels?: any): Promise<BigDecimal>;
         | 
| 19 19 | 
             
                syncPools(resources: MoveResource[], ctx: AptosResourceContext, poolsHandler?: (pools: TypedMoveResource<T>[]) => Promise<void> | void): Promise<void>;
         | 
| 20 20 | 
             
            }
         | 
| @@ -4,15 +4,13 @@ import { defaultMoveCoder, } from '@sentio/sdk/aptos'; | |
| 4 4 | 
             
            export class AptosDex {
         | 
| 5 5 | 
             
                poolAdaptor;
         | 
| 6 6 | 
             
                volume;
         | 
| 7 | 
            -
                 | 
| 7 | 
            +
                volumeByCoin;
         | 
| 8 8 | 
             
                tvlAll;
         | 
| 9 9 | 
             
                tvlByPool;
         | 
| 10 10 | 
             
                tvlByCoin;
         | 
| 11 | 
            -
                constructor(volume, 
         | 
| 12 | 
            -
                // volumeSingle: Gauge,
         | 
| 13 | 
            -
                tvlAll, tvlByCoin, tvlByPool, poolAdaptor) {
         | 
| 11 | 
            +
                constructor(volume, volumeByCoin, tvlAll, tvlByCoin, tvlByPool, poolAdaptor) {
         | 
| 14 12 | 
             
                    this.volume = volume;
         | 
| 15 | 
            -
                     | 
| 13 | 
            +
                    this.volumeByCoin = volumeByCoin;
         | 
| 16 14 | 
             
                    this.tvlAll = tvlAll;
         | 
| 17 15 | 
             
                    this.tvlByPool = tvlByPool;
         | 
| 18 16 | 
             
                    this.tvlByCoin = tvlByCoin;
         | 
| @@ -44,19 +42,22 @@ export class AptosDex { | |
| 44 42 | 
             
                    if (resultY.eq(0)) {
         | 
| 45 43 | 
             
                        resultY = BigDecimal(resultX);
         | 
| 46 44 | 
             
                    }
         | 
| 47 | 
            -
                     | 
| 48 | 
            -
             | 
| 45 | 
            +
                    const total = resultX.plus(resultY);
         | 
| 46 | 
            +
                    if (total.gt(0)) {
         | 
| 47 | 
            +
                        this.volume.record(ctx, total, {
         | 
| 49 48 | 
             
                            ...baseLabels,
         | 
| 50 | 
            -
                            coin: coinXInfo.symbol,
         | 
| 51 49 | 
             
                            bridge: coinXInfo.bridge,
         | 
| 50 | 
            +
                        });
         | 
| 51 | 
            +
                    }
         | 
| 52 | 
            +
                    if (resultX.gt(0)) {
         | 
| 53 | 
            +
                        this.volumeByCoin.record(ctx, resultX, {
         | 
| 54 | 
            +
                            coin: coinXInfo.symbol,
         | 
| 52 55 | 
             
                            type: coinXInfo.token_type.type,
         | 
| 53 56 | 
             
                        });
         | 
| 54 57 | 
             
                    }
         | 
| 55 58 | 
             
                    if (resultY.gt(0)) {
         | 
| 56 | 
            -
                        this. | 
| 57 | 
            -
                            ...baseLabels,
         | 
| 59 | 
            +
                        this.volumeByCoin.record(ctx, resultY, {
         | 
| 58 60 | 
             
                            coin: coinYInfo.symbol,
         | 
| 59 | 
            -
                            bridge: coinYInfo.bridge,
         | 
| 60 61 | 
             
                            type: coinYInfo.token_type.type,
         | 
| 61 62 | 
             
                        });
         | 
| 62 63 | 
             
                    }
         | 
| @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"aptos-dex.js","sourceRoot":"","sources":["../../../src/aptos/ext/aptos-dex.ts"],"names":[],"mappings":"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","sourcesContent":["import { Gauge } from '@sentio/sdk'\nimport { BigDecimal } from '@sentio/bigdecimal'\nimport { calculateValueInUsd, getCoinInfo, whitelistCoins, whiteListed } from './coin.js'\nimport {\n  AptosResourceContext,\n  TypedMoveResource,\n  MoveResource,\n  defaultMoveCoder,\n  AptosContext,\n} from '@sentio/sdk/aptos'\n\nexport interface PoolAdaptor<T> {\n  getXReserve(pool: T): bigint\n  getYReserve(pool: T): bigint\n  getExtraPoolTags(pool: TypedMoveResource<T>): any\n  poolTypeName: string\n}\n\nexport class AptosDex<T> {\n  poolAdaptor: PoolAdaptor<T>\n  volume: Gauge\n  volumeSingle: Gauge\n  tvlAll: Gauge\n  tvlByPool: Gauge\n  tvlByCoin: Gauge\n\n  constructor(\n    volume: Gauge,\n    // volumeSingle: Gauge,\n    tvlAll: Gauge,\n    tvlByCoin: Gauge,\n    tvlByPool: Gauge,\n    poolAdaptor: PoolAdaptor<T>\n  ) {\n    this.volume = volume\n    // this.volumeSingle = volumeSingle\n    this.tvlAll = tvlAll\n    this.tvlByPool = tvlByPool\n    this.tvlByCoin = tvlByCoin\n    this.poolAdaptor = poolAdaptor\n  }\n\n  async recordTradingVolume(\n    ctx: AptosContext,\n    coinx: string,\n    coiny: string,\n    coinXAmount: bigint,\n    coinYAmount: bigint,\n    extraLabels?: any\n  ): Promise<BigDecimal> {\n    let result = BigDecimal(0)\n\n    const whitelistx = whiteListed(coinx)\n    const whitelisty = whiteListed(coiny)\n    if (!whitelistx && !whitelisty) {\n      return result\n    }\n    const coinXInfo = await getCoinInfo(coinx)\n    const coinYInfo = await getCoinInfo(coiny)\n    const timestamp = ctx.transaction.timestamp\n    let resultX = BigDecimal(0)\n    let resultY = BigDecimal(0)\n    const pair = await getPair(coinx, coiny)\n    const baseLabels: Record<string, string> = extraLabels ? { ...extraLabels, pair } : { pair }\n    if (whitelistx) {\n      resultX = await calculateValueInUsd(coinXAmount, coinXInfo, timestamp)\n    }\n    if (whitelisty) {\n      resultY = await calculateValueInUsd(coinYAmount, coinYInfo, timestamp)\n    }\n    if (resultX.eq(0)) {\n      resultX = BigDecimal(resultY)\n    }\n    if (resultY.eq(0)) {\n      resultY = BigDecimal(resultX)\n    }\n    if (resultX.gt(0)) {\n      this.volume.record(ctx, resultX, {\n        ...baseLabels,\n        coin: coinXInfo.symbol,\n        bridge: coinXInfo.bridge,\n        type: coinXInfo.token_type.type,\n      })\n    }\n    if (resultY.gt(0)) {\n      this.volume.record(ctx, resultY, {\n        ...baseLabels,\n        coin: coinYInfo.symbol,\n        bridge: coinYInfo.bridge,\n        type: coinYInfo.token_type.type,\n      })\n    }\n    result = resultX.plus(resultY).div(2)\n    return result\n  }\n\n  async syncPools(\n    resources: MoveResource[],\n    ctx: AptosResourceContext,\n    poolsHandler?: (pools: TypedMoveResource<T>[]) => Promise<void> | void\n  ) {\n    const pools: TypedMoveResource<T>[] = defaultMoveCoder().filterAndDecodeResources(\n      this.poolAdaptor.poolTypeName,\n      resources\n    )\n\n    const volumeByCoin = new Map<string, BigDecimal>()\n    const timestamp = ctx.timestampInMicros\n\n    console.log('num of pools: ', pools.length, ctx.version.toString())\n\n    let tvlAllValue = BigDecimal(0)\n    for (const pool of pools) {\n      // savePool(ctx.version, pool.type_arguments)\n      const coinx = pool.type_arguments[0]\n      const coiny = pool.type_arguments[1]\n      const whitelistx = whiteListed(coinx)\n      const whitelisty = whiteListed(coiny)\n      if (!whitelistx && !whitelisty) {\n        continue\n      }\n\n      const pair = await getPair(coinx, coiny)\n      const extraLabels = this.poolAdaptor.getExtraPoolTags(pool)\n      const baseLabels: Record<string, string> = { ...extraLabels, pair }\n\n      const coinXInfo = await getCoinInfo(coinx)\n      const coinYInfo = await getCoinInfo(coiny)\n\n      const coinx_amount = this.poolAdaptor.getXReserve(pool.data_decoded)\n      const coiny_amount = this.poolAdaptor.getYReserve(pool.data_decoded)\n\n      let resultX = BigDecimal(0)\n      let resultY = BigDecimal(0)\n\n      if (whitelistx) {\n        resultX = await calculateValueInUsd(coinx_amount, coinXInfo, timestamp)\n        let coinXTotal = volumeByCoin.get(coinXInfo.token_type.type)\n        if (!coinXTotal) {\n          coinXTotal = resultX\n        } else {\n          coinXTotal = coinXTotal.plus(resultX)\n        }\n        volumeByCoin.set(coinXInfo.token_type.type, coinXTotal)\n      }\n      if (whitelisty) {\n        resultY = await calculateValueInUsd(coiny_amount, coinYInfo, timestamp)\n        let coinYTotal = volumeByCoin.get(coinYInfo.token_type.type)\n        if (!coinYTotal) {\n          coinYTotal = resultY\n        } else {\n          coinYTotal = coinYTotal.plus(resultY)\n        }\n        volumeByCoin.set(coinYInfo.token_type.type, coinYTotal)\n      }\n\n      if (resultX.eq(0)) {\n        resultX = BigDecimal(resultY)\n      }\n      if (resultY.eq(0)) {\n        resultY = BigDecimal(resultX)\n      }\n\n      const poolValue = resultX.plus(resultY)\n\n      if (poolValue.isGreaterThan(0)) {\n        this.tvlByPool.record(ctx, poolValue, baseLabels)\n      }\n      tvlAllValue = tvlAllValue.plus(poolValue)\n    }\n    this.tvlAll.record(ctx, tvlAllValue)\n\n    if (poolsHandler) {\n      poolsHandler(pools)\n    }\n\n    for (const [k, v] of volumeByCoin) {\n      const coinInfo = whitelistCoins().get(k)\n      if (!coinInfo) {\n        throw Error('unexpected coin ' + k)\n      }\n      // const price = await getPrice(coinInfo, timestamp)\n      // priceGauge.record(ctx, price, { coin: coinInfo.symbol })\n      if (v.isGreaterThan(0)) {\n        this.tvlByCoin.record(ctx, v, {\n          coin: coinInfo.symbol,\n          bridge: coinInfo.bridge,\n          type: coinInfo.token_type.type,\n        })\n      }\n    }\n  }\n}\n\nexport async function getPair(coinx: string, coiny: string): Promise<string> {\n  const coinXInfo = await getCoinInfo(coinx)\n  const coinYInfo = await getCoinInfo(coiny)\n  if (coinXInfo.symbol.localeCompare(coinYInfo.symbol) > 0) {\n    return `${coinYInfo.symbol}-${coinXInfo.symbol}`\n  }\n  return `${coinXInfo.symbol}-${coinYInfo.symbol}`\n}\n\nexport async function getPairValue(\n  ctx: AptosContext,\n  coinx: string,\n  coiny: string,\n  coinXAmount: bigint,\n  coinYAmount: bigint\n): Promise<BigDecimal> {\n  const whitelistx = whiteListed(coinx)\n  const whitelisty = whiteListed(coiny)\n  const coinXInfo = await getCoinInfo(coinx)\n  const coinYInfo = await getCoinInfo(coiny)\n  const timestamp = ctx.transaction.timestamp\n  let result = BigDecimal(0.0)\n\n  if (!whitelistx || !whitelisty) {\n    return result\n  }\n\n  if (whitelistx) {\n    const value = await calculateValueInUsd(coinXAmount, coinXInfo, timestamp)\n    result = value\n\n    if (!whitelisty) {\n      result = result.plus(value)\n    }\n  }\n  if (whitelisty) {\n    const value = await calculateValueInUsd(coinYAmount, coinYInfo, timestamp)\n\n    if (!whitelistx) {\n      result = result.plus(value)\n    }\n  }\n\n  return result\n}\n"]}
         | 
| 1 | 
            +
            {"version":3,"file":"aptos-dex.js","sourceRoot":"","sources":["../../../src/aptos/ext/aptos-dex.ts"],"names":[],"mappings":"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","sourcesContent":["import { Gauge } from '@sentio/sdk'\nimport { BigDecimal } from '@sentio/bigdecimal'\nimport { calculateValueInUsd, getCoinInfo, whitelistCoins, whiteListed } from './coin.js'\nimport {\n  AptosResourceContext,\n  TypedMoveResource,\n  MoveResource,\n  defaultMoveCoder,\n  AptosContext,\n} from '@sentio/sdk/aptos'\n\nexport interface PoolAdaptor<T> {\n  getXReserve(pool: T): bigint\n  getYReserve(pool: T): bigint\n  getExtraPoolTags(pool: TypedMoveResource<T>): any\n  poolTypeName: string\n}\n\nexport class AptosDex<T> {\n  poolAdaptor: PoolAdaptor<T>\n  volume: Gauge\n  volumeByCoin: Gauge\n  tvlAll: Gauge\n  tvlByPool: Gauge\n  tvlByCoin: Gauge\n\n  constructor(\n    volume: Gauge,\n    volumeByCoin: Gauge,\n    tvlAll: Gauge,\n    tvlByCoin: Gauge,\n    tvlByPool: Gauge,\n    poolAdaptor: PoolAdaptor<T>\n  ) {\n    this.volume = volume\n    this.volumeByCoin = volumeByCoin\n    this.tvlAll = tvlAll\n    this.tvlByPool = tvlByPool\n    this.tvlByCoin = tvlByCoin\n    this.poolAdaptor = poolAdaptor\n  }\n\n  async recordTradingVolume(\n    ctx: AptosContext,\n    coinx: string,\n    coiny: string,\n    coinXAmount: bigint,\n    coinYAmount: bigint,\n    extraLabels?: any\n  ): Promise<BigDecimal> {\n    let result = BigDecimal(0)\n\n    const whitelistx = whiteListed(coinx)\n    const whitelisty = whiteListed(coiny)\n    if (!whitelistx && !whitelisty) {\n      return result\n    }\n    const coinXInfo = await getCoinInfo(coinx)\n    const coinYInfo = await getCoinInfo(coiny)\n    const timestamp = ctx.transaction.timestamp\n    let resultX = BigDecimal(0)\n    let resultY = BigDecimal(0)\n    const pair = await getPair(coinx, coiny)\n    const baseLabels: Record<string, string> = extraLabels ? { ...extraLabels, pair } : { pair }\n    if (whitelistx) {\n      resultX = await calculateValueInUsd(coinXAmount, coinXInfo, timestamp)\n    }\n    if (whitelisty) {\n      resultY = await calculateValueInUsd(coinYAmount, coinYInfo, timestamp)\n    }\n    if (resultX.eq(0)) {\n      resultX = BigDecimal(resultY)\n    }\n    if (resultY.eq(0)) {\n      resultY = BigDecimal(resultX)\n    }\n    const total = resultX.plus(resultY)\n    if (total.gt(0)) {\n      this.volume.record(ctx, total, {\n        ...baseLabels,\n        bridge: coinXInfo.bridge,\n      })\n    }\n    if (resultX.gt(0)) {\n      this.volumeByCoin.record(ctx, resultX, {\n        coin: coinXInfo.symbol,\n        type: coinXInfo.token_type.type,\n      })\n    }\n    if (resultY.gt(0)) {\n      this.volumeByCoin.record(ctx, resultY, {\n        coin: coinYInfo.symbol,\n        type: coinYInfo.token_type.type,\n      })\n    }\n    result = resultX.plus(resultY).div(2)\n    return result\n  }\n\n  async syncPools(\n    resources: MoveResource[],\n    ctx: AptosResourceContext,\n    poolsHandler?: (pools: TypedMoveResource<T>[]) => Promise<void> | void\n  ) {\n    const pools: TypedMoveResource<T>[] = defaultMoveCoder().filterAndDecodeResources(\n      this.poolAdaptor.poolTypeName,\n      resources\n    )\n\n    const volumeByCoin = new Map<string, BigDecimal>()\n    const timestamp = ctx.timestampInMicros\n\n    console.log('num of pools: ', pools.length, ctx.version.toString())\n\n    let tvlAllValue = BigDecimal(0)\n    for (const pool of pools) {\n      // savePool(ctx.version, pool.type_arguments)\n      const coinx = pool.type_arguments[0]\n      const coiny = pool.type_arguments[1]\n      const whitelistx = whiteListed(coinx)\n      const whitelisty = whiteListed(coiny)\n      if (!whitelistx && !whitelisty) {\n        continue\n      }\n\n      const pair = await getPair(coinx, coiny)\n      const extraLabels = this.poolAdaptor.getExtraPoolTags(pool)\n      const baseLabels: Record<string, string> = { ...extraLabels, pair }\n\n      const coinXInfo = await getCoinInfo(coinx)\n      const coinYInfo = await getCoinInfo(coiny)\n\n      const coinx_amount = this.poolAdaptor.getXReserve(pool.data_decoded)\n      const coiny_amount = this.poolAdaptor.getYReserve(pool.data_decoded)\n\n      let resultX = BigDecimal(0)\n      let resultY = BigDecimal(0)\n\n      if (whitelistx) {\n        resultX = await calculateValueInUsd(coinx_amount, coinXInfo, timestamp)\n        let coinXTotal = volumeByCoin.get(coinXInfo.token_type.type)\n        if (!coinXTotal) {\n          coinXTotal = resultX\n        } else {\n          coinXTotal = coinXTotal.plus(resultX)\n        }\n        volumeByCoin.set(coinXInfo.token_type.type, coinXTotal)\n      }\n      if (whitelisty) {\n        resultY = await calculateValueInUsd(coiny_amount, coinYInfo, timestamp)\n        let coinYTotal = volumeByCoin.get(coinYInfo.token_type.type)\n        if (!coinYTotal) {\n          coinYTotal = resultY\n        } else {\n          coinYTotal = coinYTotal.plus(resultY)\n        }\n        volumeByCoin.set(coinYInfo.token_type.type, coinYTotal)\n      }\n\n      if (resultX.eq(0)) {\n        resultX = BigDecimal(resultY)\n      }\n      if (resultY.eq(0)) {\n        resultY = BigDecimal(resultX)\n      }\n\n      const poolValue = resultX.plus(resultY)\n\n      if (poolValue.isGreaterThan(0)) {\n        this.tvlByPool.record(ctx, poolValue, baseLabels)\n      }\n      tvlAllValue = tvlAllValue.plus(poolValue)\n    }\n    this.tvlAll.record(ctx, tvlAllValue)\n\n    if (poolsHandler) {\n      poolsHandler(pools)\n    }\n\n    for (const [k, v] of volumeByCoin) {\n      const coinInfo = whitelistCoins().get(k)\n      if (!coinInfo) {\n        throw Error('unexpected coin ' + k)\n      }\n      // const price = await getPrice(coinInfo, timestamp)\n      // priceGauge.record(ctx, price, { coin: coinInfo.symbol })\n      if (v.isGreaterThan(0)) {\n        this.tvlByCoin.record(ctx, v, {\n          coin: coinInfo.symbol,\n          bridge: coinInfo.bridge,\n          type: coinInfo.token_type.type,\n        })\n      }\n    }\n  }\n}\n\nexport async function getPair(coinx: string, coiny: string): Promise<string> {\n  const coinXInfo = await getCoinInfo(coinx)\n  const coinYInfo = await getCoinInfo(coiny)\n  if (coinXInfo.symbol.localeCompare(coinYInfo.symbol) > 0) {\n    return `${coinYInfo.symbol}-${coinXInfo.symbol}`\n  }\n  return `${coinXInfo.symbol}-${coinYInfo.symbol}`\n}\n\nexport async function getPairValue(\n  ctx: AptosContext,\n  coinx: string,\n  coiny: string,\n  coinXAmount: bigint,\n  coinYAmount: bigint\n): Promise<BigDecimal> {\n  const whitelistx = whiteListed(coinx)\n  const whitelisty = whiteListed(coiny)\n  const coinXInfo = await getCoinInfo(coinx)\n  const coinYInfo = await getCoinInfo(coiny)\n  const timestamp = ctx.transaction.timestamp\n  let result = BigDecimal(0.0)\n\n  if (!whitelistx || !whitelisty) {\n    return result\n  }\n\n  if (whitelistx) {\n    const value = await calculateValueInUsd(coinXAmount, coinXInfo, timestamp)\n    result = value\n\n    if (!whitelisty) {\n      result = result.plus(value)\n    }\n  }\n  if (whitelisty) {\n    const value = await calculateValueInUsd(coinYAmount, coinYInfo, timestamp)\n\n    if (!whitelistx) {\n      result = result.plus(value)\n    }\n  }\n\n  return result\n}\n"]}
         | 
    
        package/lib/eth/context.js
    CHANGED
    
    | @@ -17,7 +17,7 @@ export class EthContext extends BaseContext { | |
| 17 17 | 
             
                    this.log = log;
         | 
| 18 18 | 
             
                    this.block = block;
         | 
| 19 19 | 
             
                    this.trace = trace;
         | 
| 20 | 
            -
                    this.address = address;
         | 
| 20 | 
            +
                    this.address = address.toLowerCase();
         | 
| 21 21 | 
             
                    this.transaction = transaction;
         | 
| 22 22 | 
             
                    this.transactionReceipt = transactionReceipt;
         | 
| 23 23 | 
             
                    this.timestamp = timestamp || new Date(0);
         | 
    
        package/lib/eth/context.js.map
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/eth/context.ts"],"names":[],"mappings":"AAKA,OAAO,EAAU,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,MAAM,OAAgB,UAAW,SAAQ,WAAW;IAClD,OAAO,CAAQ;IACf,OAAO,CAAQ;IACE,GAAG,CAAY;IAChC,KAAK,CAAc;IACF,KAAK,CAAQ;IAC9B,WAAW,CAAiB;IAC5B,eAAe,CAAS;IACxB,WAAW,CAA4B;IACvC,kBAAkB,CAA2B;IAC7C,SAAS,CAAM;IAEf,YACE,OAAe,EACf,OAAe,EACf,SAAgB,EAChB,KAAmB,EACnB,GAAe,EACf,KAAa,EACb,WAAuC,EACvC,kBAA6C;QAE7C,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA; | 
| 1 | 
            +
            {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/eth/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseContract } from 'ethers'\nimport { LogParams, BlockParams, TransactionReceiptParams, TransactionResponseParams } from 'ethers/providers'\n\nimport { RecordMetaData } from '@sentio/protos'\nimport { Trace } from './trace.js'\nimport { Labels, normalizeLabels } from '../core/index.js'\nimport { BaseContext } from '../core/base-context.js'\n\nexport abstract class EthContext extends BaseContext {\n  chainId: number\n  address: string\n  private readonly log?: LogParams\n  block?: BlockParams\n  private readonly trace?: Trace\n  blockNumber: bigint | number\n  transactionHash?: string\n  transaction?: TransactionResponseParams\n  transactionReceipt?: TransactionReceiptParams\n  timestamp: Date\n\n  constructor(\n    chainId: number,\n    address: string,\n    timestamp?: Date,\n    block?: BlockParams,\n    log?: LogParams,\n    trace?: Trace,\n    transaction?: TransactionResponseParams,\n    transactionReceipt?: TransactionReceiptParams\n  ) {\n    super()\n    this.chainId = chainId\n    this.log = log\n    this.block = block\n    this.trace = trace\n    this.address = address.toLowerCase()\n    this.transaction = transaction\n    this.transactionReceipt = transactionReceipt\n    this.timestamp = timestamp || new Date(0)\n    if (log) {\n      this.blockNumber = log.blockNumber\n      this.transactionHash = log.transactionHash\n    } else if (block) {\n      this.blockNumber = block.number\n    } else if (trace) {\n      this.blockNumber = trace.blockNumber\n      this.transactionHash = trace.transactionHash\n    }\n  }\n\n  protected abstract getContractName(): string\n\n  getMetaData(name: string, labels: Labels): RecordMetaData {\n    if (this.log) {\n      return {\n        address: this.address,\n        contractName: this.getContractName(),\n        blockNumber: BigInt(this.blockNumber),\n        transactionIndex: this.log.transactionIndex,\n        transactionHash: this.transactionHash || '',\n        logIndex: this.log.index,\n        chainId: this.chainId.toString(),\n        name: name,\n        labels: normalizeLabels(labels),\n      }\n    }\n    if (this.block) {\n      return {\n        address: this.address,\n        contractName: this.getContractName(),\n        blockNumber: BigInt(this.blockNumber),\n        transactionIndex: -1,\n        transactionHash: '',\n        logIndex: -1,\n        chainId: this.chainId.toString(),\n        name: name,\n        labels: normalizeLabels(labels),\n      }\n    }\n    if (this.trace) {\n      return {\n        address: this.address,\n        contractName: this.getContractName(),\n        blockNumber: BigInt(this.blockNumber),\n        transactionIndex: this.trace.transactionPosition,\n        transactionHash: this.transactionHash || '',\n        logIndex: -1,\n        chainId: this.chainId.toString(),\n        name: name,\n        labels: normalizeLabels(labels),\n      }\n    }\n    throw new Error(\"Invaid ctx argument can't happen\")\n  }\n}\n\nexport class AccountContext extends EthContext {\n  // constructor(chainId: number, address: string, block?: Block, log?: Log, trace?: Trace) {\n  //   super(chainId, address, new Date(0), block, log, trace)\n  // }\n  protected getContractName(): string {\n    return 'account'\n  }\n}\n\nexport class ContractContext<\n  TContract extends BaseContract,\n  TContractBoundView extends BoundContractView<TContract, ContractView<TContract>>\n> extends EthContext {\n  contract: TContractBoundView\n  contractName: string\n\n  constructor(\n    contractName: string,\n    view: TContractBoundView,\n    chainId: number,\n    timestamp?: Date,\n    block?: BlockParams,\n    log?: LogParams,\n    trace?: Trace,\n    transaction?: TransactionResponseParams,\n    transactionReceipt?: TransactionReceiptParams\n  ) {\n    super(chainId, view.address, timestamp, block, log, trace, transaction, transactionReceipt)\n    view.context = this\n    this.contractName = contractName\n    this.contract = view\n  }\n\n  protected getContractName(): string {\n    return this.contractName\n  }\n}\n\nexport class ContractView<TContract extends BaseContract> {\n  protected contract: TContract\n\n  constructor(contract: TContract) {\n    this.contract = contract\n  }\n\n  get rawContract() {\n    return this.contract\n  }\n\n  get provider() {\n    if (this.contract.runner?.provider) {\n      return this.contract.runner.provider\n    }\n    throw Error(\"Can't find provider for contract\" + this.contract.toString())\n  }\n}\n\nexport class BoundContractView<TContract extends BaseContract, TContractView extends ContractView<TContract>> {\n  protected view: TContractView\n  readonly address: string\n  // context will be set right after context creation (in context's constructor)\n  context: ContractContext<TContract, BoundContractView<TContract, TContractView>>\n\n  constructor(address: string, view: TContractView) {\n    this.address = address\n    this.view = view\n  }\n\n  get rawContract() {\n    return this.view.rawContract\n  }\n\n  get provider() {\n    return this.view.provider\n  }\n\n  get filters() {\n    return this.view.rawContract.filters\n  }\n}\n"]}
         | 
    
        package/lib/sui/context.js
    CHANGED
    
    | @@ -9,7 +9,7 @@ export class SuiContext extends BaseContext { | |
| 9 9 | 
             
                transaction;
         | 
| 10 10 | 
             
                constructor(moduleName, network, address, timestamp, slot, transaction) {
         | 
| 11 11 | 
             
                    super();
         | 
| 12 | 
            -
                    this.address = address;
         | 
| 12 | 
            +
                    this.address = address.toLowerCase();
         | 
| 13 13 | 
             
                    this.network = network;
         | 
| 14 14 | 
             
                    this.moduleName = moduleName;
         | 
| 15 15 | 
             
                    this.timestamp = timestamp;
         | 
    
        package/lib/sui/context.js.map
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/sui/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAc,UAAU,EAAE,MAAM,cAAc,CAAA;AAGrD,MAAM,OAAO,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAQ;IACf,OAAO,CAAY;IACnB,UAAU,CAAQ;IAClB,SAAS,CAAM;IACf,IAAI,CAAQ;IACZ,WAAW,CAAwB;IAEnC,YACE,UAAkB,EAClB,OAAmB,EACnB,OAAe,EACf,SAAe,EACf,IAAY,EACZ,WAAoC;QAEpC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA; | 
| 1 | 
            +
            {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/sui/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAc,UAAU,EAAE,MAAM,cAAc,CAAA;AAGrD,MAAM,OAAO,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAQ;IACf,OAAO,CAAY;IACnB,UAAU,CAAQ;IAClB,SAAS,CAAM;IACf,IAAI,CAAQ;IACZ,WAAW,CAAwB;IAEnC,YACE,UAAkB,EAClB,OAAmB,EACnB,OAAe,EACf,SAAe,EACf,IAAY,EACZ,WAAoC;QAEpC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;SAC/B;IACH,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,MAAc;QACtC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,UAAU;YAC7B,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,iBAAiB,IAAI,EAAE;YACtE,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YACjC,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;SAChC,CAAA;IACH,CAAC;CACF","sourcesContent":["import { RecordMetaData } from '@sentio/protos'\nimport { type Labels, BaseContext, normalizeLabels } from '../index.js'\nimport { SuiNetwork, getChainId } from './network.js'\nimport { SuiTransactionResponse } from '@mysten/sui.js'\n\nexport class SuiContext extends BaseContext {\n  address: string\n  network: SuiNetwork\n  moduleName: string\n  timestamp: Date\n  slot: bigint\n  transaction: SuiTransactionResponse\n\n  constructor(\n    moduleName: string,\n    network: SuiNetwork,\n    address: string,\n    timestamp: Date,\n    slot: bigint,\n    transaction?: SuiTransactionResponse\n  ) {\n    super()\n    this.address = address.toLowerCase()\n    this.network = network\n    this.moduleName = moduleName\n    this.timestamp = timestamp\n    this.slot = slot\n    if (transaction) {\n      this.transaction = transaction\n    }\n  }\n\n  getMetaData(name: string, labels: Labels): RecordMetaData {\n    return {\n      address: this.address,\n      contractName: this.moduleName,\n      blockNumber: this.slot,\n      transactionIndex: 0,\n      transactionHash: this.transaction?.certificate.transactionDigest || '', // TODO\n      logIndex: 0,\n      chainId: getChainId(this.network),\n      name: name,\n      labels: normalizeLabels(labels),\n    }\n  }\n}\n"]}
         | 
    
        package/package.json
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            {
         | 
| 2 2 | 
             
              "name": "@sentio/sdk",
         | 
| 3 3 | 
             
              "license": "Apache-2.0",
         | 
| 4 | 
            -
              "version": "2.7. | 
| 4 | 
            +
              "version": "2.7.4-rc.2",
         | 
| 5 5 | 
             
              "type": "module",
         | 
| 6 6 | 
             
              "scripts": {
         | 
| 7 7 | 
             
                "compile": "tsc && cp src/utils/*.csv lib/utils && cp src/tsup.config.ts lib",
         | 
| @@ -23,8 +23,8 @@ | |
| 23 23 | 
             
                "@project-serum/anchor": "^0.26.0",
         | 
| 24 24 | 
             
                "@sentio/bigdecimal": "^9.1.1-patch.3",
         | 
| 25 25 | 
             
                "@sentio/ethers-v6": "^1.0.25",
         | 
| 26 | 
            -
                "@sentio/protos": "^2.7. | 
| 27 | 
            -
                "@sentio/runtime": "^2.7. | 
| 26 | 
            +
                "@sentio/protos": "^2.7.4-rc.2",
         | 
| 27 | 
            +
                "@sentio/runtime": "^2.7.4-rc.2",
         | 
| 28 28 | 
             
                "@solana/web3.js": "^1.73.2",
         | 
| 29 29 | 
             
                "@types/prettier": "^2.7.2",
         | 
| 30 30 | 
             
                "aptos-sdk": "npm:aptos@^1.7.1",
         | 
| @@ -80,5 +80,5 @@ | |
| 80 80 | 
             
              "engines": {
         | 
| 81 81 | 
             
                "node": ">=16"
         | 
| 82 82 | 
             
              },
         | 
| 83 | 
            -
              "gitHead": " | 
| 83 | 
            +
              "gitHead": "5f121c6585d0175729927c13d1e3aea8fce741ad"
         | 
| 84 84 | 
             
            }
         | 
    
        package/src/aptos/context.ts
    CHANGED
    
    | @@ -18,7 +18,7 @@ export class AptosContext extends BaseContext { | |
| 18 18 | 
             
                transaction?: Transaction_UserTransaction
         | 
| 19 19 | 
             
              ) {
         | 
| 20 20 | 
             
                super()
         | 
| 21 | 
            -
                this.address = address
         | 
| 21 | 
            +
                this.address = address.toLowerCase()
         | 
| 22 22 | 
             
                this.network = network
         | 
| 23 23 | 
             
                this.moduleName = moduleName
         | 
| 24 24 | 
             
                this.version = version
         | 
| @@ -19,21 +19,21 @@ export interface PoolAdaptor<T> { | |
| 19 19 | 
             
            export class AptosDex<T> {
         | 
| 20 20 | 
             
              poolAdaptor: PoolAdaptor<T>
         | 
| 21 21 | 
             
              volume: Gauge
         | 
| 22 | 
            -
               | 
| 22 | 
            +
              volumeByCoin: Gauge
         | 
| 23 23 | 
             
              tvlAll: Gauge
         | 
| 24 24 | 
             
              tvlByPool: Gauge
         | 
| 25 25 | 
             
              tvlByCoin: Gauge
         | 
| 26 26 |  | 
| 27 27 | 
             
              constructor(
         | 
| 28 28 | 
             
                volume: Gauge,
         | 
| 29 | 
            -
                 | 
| 29 | 
            +
                volumeByCoin: Gauge,
         | 
| 30 30 | 
             
                tvlAll: Gauge,
         | 
| 31 31 | 
             
                tvlByCoin: Gauge,
         | 
| 32 32 | 
             
                tvlByPool: Gauge,
         | 
| 33 33 | 
             
                poolAdaptor: PoolAdaptor<T>
         | 
| 34 34 | 
             
              ) {
         | 
| 35 35 | 
             
                this.volume = volume
         | 
| 36 | 
            -
                 | 
| 36 | 
            +
                this.volumeByCoin = volumeByCoin
         | 
| 37 37 | 
             
                this.tvlAll = tvlAll
         | 
| 38 38 | 
             
                this.tvlByPool = tvlByPool
         | 
| 39 39 | 
             
                this.tvlByCoin = tvlByCoin
         | 
| @@ -74,19 +74,22 @@ export class AptosDex<T> { | |
| 74 74 | 
             
                if (resultY.eq(0)) {
         | 
| 75 75 | 
             
                  resultY = BigDecimal(resultX)
         | 
| 76 76 | 
             
                }
         | 
| 77 | 
            -
                 | 
| 78 | 
            -
             | 
| 77 | 
            +
                const total = resultX.plus(resultY)
         | 
| 78 | 
            +
                if (total.gt(0)) {
         | 
| 79 | 
            +
                  this.volume.record(ctx, total, {
         | 
| 79 80 | 
             
                    ...baseLabels,
         | 
| 80 | 
            -
                    coin: coinXInfo.symbol,
         | 
| 81 81 | 
             
                    bridge: coinXInfo.bridge,
         | 
| 82 | 
            +
                  })
         | 
| 83 | 
            +
                }
         | 
| 84 | 
            +
                if (resultX.gt(0)) {
         | 
| 85 | 
            +
                  this.volumeByCoin.record(ctx, resultX, {
         | 
| 86 | 
            +
                    coin: coinXInfo.symbol,
         | 
| 82 87 | 
             
                    type: coinXInfo.token_type.type,
         | 
| 83 88 | 
             
                  })
         | 
| 84 89 | 
             
                }
         | 
| 85 90 | 
             
                if (resultY.gt(0)) {
         | 
| 86 | 
            -
                  this. | 
| 87 | 
            -
                    ...baseLabels,
         | 
| 91 | 
            +
                  this.volumeByCoin.record(ctx, resultY, {
         | 
| 88 92 | 
             
                    coin: coinYInfo.symbol,
         | 
| 89 | 
            -
                    bridge: coinYInfo.bridge,
         | 
| 90 93 | 
             
                    type: coinYInfo.token_type.type,
         | 
| 91 94 | 
             
                  })
         | 
| 92 95 | 
             
                }
         | 
    
        package/src/eth/context.ts
    CHANGED
    
    | @@ -33,7 +33,7 @@ export abstract class EthContext extends BaseContext { | |
| 33 33 | 
             
                this.log = log
         | 
| 34 34 | 
             
                this.block = block
         | 
| 35 35 | 
             
                this.trace = trace
         | 
| 36 | 
            -
                this.address = address
         | 
| 36 | 
            +
                this.address = address.toLowerCase()
         | 
| 37 37 | 
             
                this.transaction = transaction
         | 
| 38 38 | 
             
                this.transactionReceipt = transactionReceipt
         | 
| 39 39 | 
             
                this.timestamp = timestamp || new Date(0)
         | 
    
        package/src/sui/context.ts
    CHANGED