From 76bc58a6cd39c5dcad4571a0c6cc4f70c7face9f Mon Sep 17 00:00:00 2001 From: Dmitry Nechay Date: Wed, 18 Mar 2026 11:48:50 +0300 Subject: [PATCH 1/4] feat: return tx & block for escrow statuses [ts] --- .../src/escrow/escrow_utils.ts | 10 +++++- .../src/graphql/queries/escrow.ts | 7 +++- .../human-protocol-sdk/src/graphql/types.ts | 2 ++ .../human-protocol-sdk/src/interfaces.ts | 3 ++ .../human-protocol-sdk/test/escrow.test.ts | 32 ++++++++++++++----- 5 files changed, 44 insertions(+), 10 deletions(-) diff --git a/packages/sdk/typescript/human-protocol-sdk/src/escrow/escrow_utils.ts b/packages/sdk/typescript/human-protocol-sdk/src/escrow/escrow_utils.ts index 7d3639cdfa..3551c70791 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/escrow/escrow_utils.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/escrow/escrow_utils.ts @@ -212,6 +212,7 @@ export class EscrowUtils { from, to, launcher, + escrowAddress, first = 10, skip = 0, orderDirection = OrderDirection.DESC, @@ -221,6 +222,10 @@ export class EscrowUtils { throw ErrorInvalidAddress; } + if (escrowAddress && !ethers.isAddress(escrowAddress)) { + throw ErrorInvalidAddress; + } + const networkData = NETWORKS[chainId]; if (!networkData) { throw ErrorUnsupportedChainID; @@ -242,12 +247,13 @@ export class EscrowUtils { escrowStatusEvents: StatusEvent[]; }>( getSubgraphUrl(networkData), - GET_STATUS_UPDATES_QUERY(from, to, launcher), + GET_STATUS_UPDATES_QUERY(from, to, launcher, escrowAddress), { status: statusNames, from: from ? getUnixTimestamp(from) : undefined, to: to ? getUnixTimestamp(to) : undefined, launcher: launcher || undefined, + escrowAddress: escrowAddress || undefined, orderDirection, first: Math.min(first, 1000), skip, @@ -264,6 +270,8 @@ export class EscrowUtils { escrowAddress: event.escrowAddress, status: EscrowStatus[event.status as keyof typeof EscrowStatus], chainId, + block: BigInt(event.block), + txHash: event.txHash, })); } diff --git a/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/escrow.ts b/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/escrow.ts index d173298396..64cd13a781 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/escrow.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/escrow.ts @@ -107,7 +107,8 @@ export const GET_ESCROWS_QUERY = (filter: IEscrowsFilter) => { export const GET_STATUS_UPDATES_QUERY = ( from?: Date, to?: Date, - launcher?: string + launcher?: string, + escrowAddress?: string ) => { const WHERE_CLAUSE = ` where: { @@ -115,6 +116,7 @@ export const GET_STATUS_UPDATES_QUERY = ( ${from ? `timestamp_gte: $from` : ''} ${to ? `timestamp_lte: $to` : ''} ${launcher ? `launcher: $launcher` : ''} + ${escrowAddress ? `escrowAddress: $escrowAddress` : ''} } `; return gql` @@ -123,6 +125,7 @@ export const GET_STATUS_UPDATES_QUERY = ( $from: Int $to: Int $launcher: String + $escrowAddress: String $orderDirection: String $first: Int $skip: Int @@ -137,6 +140,8 @@ export const GET_STATUS_UPDATES_QUERY = ( escrowAddress, timestamp, status, + block, + txHash, } } `; diff --git a/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts b/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts index 295acaac4a..0c6938f2f5 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts @@ -121,6 +121,8 @@ export type StatusEvent = { timestamp: string; escrowAddress: string; status: string; + block: string; + txHash: string; }; export type KVStoreData = { diff --git a/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts b/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts index cac654ae4c..10a654627e 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts @@ -176,6 +176,7 @@ export interface IStatusEventFilter extends IPagination { from?: Date; to?: Date; launcher?: string; + escrowAddress?: string; } export interface IWorker { @@ -282,6 +283,8 @@ export interface IStatusEvent { escrowAddress: string; status: EscrowStatus; chainId: ChainId; + block: bigint; + txHash: string; } export interface ICancellationRefund { diff --git a/packages/sdk/typescript/human-protocol-sdk/test/escrow.test.ts b/packages/sdk/typescript/human-protocol-sdk/test/escrow.test.ts index 08579ea475..0929a35c44 100644 --- a/packages/sdk/typescript/human-protocol-sdk/test/escrow.test.ts +++ b/packages/sdk/typescript/human-protocol-sdk/test/escrow.test.ts @@ -4083,13 +4083,15 @@ describe('EscrowUtils', () => { escrowAddress: '0x1', timestamp: '1234567890', status: 'Pending', - chainId: ChainId.LOCALHOST, + block: '123456', + txHash: '0x123', }, { escrowAddress: '0x2', timestamp: '1234567891', status: 'Pending', - chainId: ChainId.LOCALHOST, + block: '123457', + txHash: '0x124', }, ]; @@ -4104,6 +4106,8 @@ describe('EscrowUtils', () => { ...event, status: EscrowStatus.Pending, timestamp: +event.timestamp * 1000, + block: BigInt(event.block), + chainId: ChainId.LOCALHOST, })); expect(result).toEqual(expectedResults); expect(gqlFetchSpy).toHaveBeenCalled(); @@ -4118,13 +4122,15 @@ describe('EscrowUtils', () => { escrowAddress: '0x1', timestamp: '1234567890', status: 'Pending', - chainId: ChainId.POLYGON_AMOY, + block: '123456', + txHash: '0x123', }, { escrowAddress: '0x2', timestamp: '1234567891', status: 'Pending', - chainId: ChainId.POLYGON_AMOY, + block: '123457', + txHash: '0x124', }, ]; @@ -4142,6 +4148,8 @@ describe('EscrowUtils', () => { ...event, status: EscrowStatus.Pending, timestamp: +event.timestamp * 1000, + block: BigInt(event.block), + chainId: ChainId.POLYGON_AMOY, })); expect(result).toEqual(expectedResults); expect(gqlFetchSpy).toHaveBeenCalled(); @@ -4156,13 +4164,15 @@ describe('EscrowUtils', () => { escrowAddress: '0x1', timestamp: '1234567890', status: 'Partial', - chainId: ChainId.POLYGON_AMOY, + block: '123456', + txHash: '0x123', }, { escrowAddress: '0x2', timestamp: '1234567891', status: 'Partial', - chainId: ChainId.POLYGON_AMOY, + block: '123457', + txHash: '0x124', }, ]; @@ -4181,6 +4191,8 @@ describe('EscrowUtils', () => { ...event, status: EscrowStatus.Partial, timestamp: +event.timestamp * 1000, + block: BigInt(event.block), + chainId: ChainId.POLYGON_AMOY, })); expect(result).toEqual(expectedResults); expect(gqlFetchSpy).toHaveBeenCalled(); @@ -4195,13 +4207,15 @@ describe('EscrowUtils', () => { escrowAddress: '0x1', timestamp: '1234567890', status: 'Pending', - chainId: ChainId.POLYGON_AMOY, + block: '123456', + txHash: '0x123', }, { escrowAddress: '0x2', timestamp: '1234567891', status: 'Pending', - chainId: ChainId.POLYGON_AMOY, + block: '123457', + txHash: '0x124', }, ]; @@ -4219,6 +4233,8 @@ describe('EscrowUtils', () => { ...event, status: EscrowStatus.Pending, timestamp: +event.timestamp * 1000, + block: BigInt(event.block), + chainId: ChainId.POLYGON_AMOY, })); expect(result).toEqual(expectedResults); expect(gqlFetchSpy).toHaveBeenCalled(); From 3cd32d021d0a022f5a46eb35b628d42c8d914d80 Mon Sep 17 00:00:00 2001 From: Dmitry Nechay Date: Wed, 18 Mar 2026 12:15:49 +0300 Subject: [PATCH 2/4] feat: extend pythong get status events --- .../human_protocol_sdk/escrow/escrow_utils.py | 22 +++++++++++++++++-- .../human_protocol_sdk/filter.py | 4 ++++ .../human_protocol_sdk/gql/cancel.py | 4 +++- .../human_protocol_sdk/gql/escrow.py | 17 +++++++++++--- .../human_protocol_sdk/gql/reward.py | 4 +++- .../human_protocol_sdk/gql/transaction.py | 4 +++- .../human_protocol_sdk/gql/worker.py | 4 +++- .../escrow/test_escrow_utils.py | 12 ++++++++++ 8 files changed, 62 insertions(+), 9 deletions(-) diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/escrow/escrow_utils.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/escrow/escrow_utils.py index fa759799d1..2c08b7d1b9 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/escrow/escrow_utils.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/escrow/escrow_utils.py @@ -143,12 +143,20 @@ class StatusEvent: """ def __init__( - self, timestamp: int, status: str, chain_id: ChainId, escrow_address: str + self, + timestamp: int, + status: str, + chain_id: ChainId, + escrow_address: str, + block: str, + tx_hash: str, ): self.timestamp = timestamp * 1000 self.status = status self.chain_id = chain_id self.escrow_address = escrow_address + self.block = int(block) + self.tx_hash = tx_hash class Payout: @@ -473,6 +481,9 @@ def get_status_events( if filter.launcher and not Web3.is_address(filter.launcher): raise EscrowClientError("Invalid Address") + if filter.escrow_address and not Web3.is_address(filter.escrow_address): + raise EscrowClientError("Invalid Address") + network = NETWORKS.get(filter.chain_id) if not network: raise EscrowClientError("Unsupported Chain ID") @@ -481,12 +492,17 @@ def get_status_events( data = custom_gql_fetch( network, - get_status_query(filter.date_from, filter.date_to, filter.launcher), + get_status_query( + filter.date_from, filter.date_to, filter.launcher, filter.escrow_address + ), { "status": status_names, "from": int(filter.date_from.timestamp()) if filter.date_from else None, "to": int(filter.date_to.timestamp()) if filter.date_to else None, "launcher": filter.launcher.lower() if filter.launcher else None, + "escrowAddress": ( + filter.escrow_address.lower() if filter.escrow_address else None + ), "first": filter.first, "skip": filter.skip, "orderDirection": filter.order_direction.value, @@ -510,6 +526,8 @@ def get_status_events( escrow_address=event["escrowAddress"], status=event["status"], chain_id=filter.chain_id, + block=event["block"], + tx_hash=event["txHash"], ) for event in status_events ] diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/filter.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/filter.py index 896bc09fd2..027d4829ee 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/filter.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/filter.py @@ -302,6 +302,7 @@ class StatusEventFilter: date_from (Optional[datetime]): Filter events from this date. date_to (Optional[datetime]): Filter events until this date. launcher (Optional[str]): Launcher address to filter by. + escrow_address (Optional[str]): Escrow address to filter by. first (int): Number of items per page. skip (int): Number of items to skip for pagination. order_direction (OrderDirection): Sort order for results. @@ -314,6 +315,7 @@ def __init__( date_from: Optional[datetime] = None, date_to: Optional[datetime] = None, launcher: Optional[str] = None, + escrow_address: Optional[str] = None, first: int = 10, skip: int = 0, order_direction: OrderDirection = OrderDirection.DESC, @@ -326,6 +328,7 @@ def __init__( :param date_from: Optional start date for filtering. :param date_to: Optional end date for filtering. :param launcher: Optional launcher address to filter by. + :param escrow_address: Optional escrow address to filter by. :param first: Optional number of events per page. Default is 10. :param skip: Optional number of events to skip. Default is 0. :param order_direction: Optional order direction. Default is DESC. @@ -342,6 +345,7 @@ def __init__( self.date_from = date_from self.date_to = date_to self.launcher = launcher + self.escrow_address = escrow_address self.first = first self.skip = skip self.order_direction = order_direction diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/cancel.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/cancel.py index 223b88aafb..6d5ddf36db 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/cancel.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/cancel.py @@ -70,4 +70,6 @@ def get_cancellation_refund_by_escrow_query(): }} }} {cancellation_refund_fragment} -""".format(cancellation_refund_fragment=cancellation_refund_fragment) +""".format( + cancellation_refund_fragment=cancellation_refund_fragment + ) diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/escrow.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/escrow.py index 5d1b01f6e6..a5cf67458e 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/escrow.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/escrow.py @@ -97,11 +97,16 @@ def get_escrow_query(): }} }} {escrow_fragment} -""".format(escrow_fragment=escrow_fragment) +""".format( + escrow_fragment=escrow_fragment + ) def get_status_query( - from_: datetime = None, to_: datetime = None, launcher: str = None + from_: datetime = None, + to_: datetime = None, + launcher: str = None, + escrow_address: str = None, ): return """ query getStatus( @@ -109,6 +114,7 @@ def get_status_query( $from: Int $to: Int $launcher: String + $escrowAddress: String $orderDirection: String $first: Int $skip: Int @@ -119,20 +125,25 @@ def get_status_query( {from_clause} {to_clause} {launcher_clause} + {escrow_address_clause} }} orderBy: timestamp orderDirection: $orderDirection first: $first skip: $skip ) {{ - id escrowAddress timestamp status + block + txHash }} }} """.format( from_clause="timestamp_gte: $from" if from_ else "", to_clause="timestamp_lte: $to" if to_ else "", launcher_clause=f"launcher: $launcher" if launcher else "", + escrow_address_clause=( + f"escrowAddress: $escrowAddress" if escrow_address else "" + ), ) diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/reward.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/reward.py index 09c06278ae..3f43bbff9e 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/reward.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/reward.py @@ -14,4 +14,6 @@ }} }} {reward_added_event_fragment} -""".format(reward_added_event_fragment=reward_added_event_fragment) +""".format( + reward_added_event_fragment=reward_added_event_fragment +) diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/transaction.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/transaction.py index f17cc61876..ef637424b2 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/transaction.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/transaction.py @@ -103,4 +103,6 @@ def get_transaction_query() -> str: }} }} {transaction_fragment} -""".format(transaction_fragment=transaction_fragment) +""".format( + transaction_fragment=transaction_fragment + ) diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/worker.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/worker.py index ee21af1ef7..9788272612 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/worker.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/worker.py @@ -18,7 +18,9 @@ def get_worker_query() -> str: }} }} {worker_fragment} -""".format(worker_fragment=worker_fragment) +""".format( + worker_fragment=worker_fragment + ) def get_workers_query(filter: WorkerFilter) -> str: diff --git a/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/escrow/test_escrow_utils.py b/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/escrow/test_escrow_utils.py index c4f22de6bb..98158e7358 100644 --- a/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/escrow/test_escrow_utils.py +++ b/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/escrow/test_escrow_utils.py @@ -381,6 +381,8 @@ def test_get_status_events(self): "timestamp": 1620000000, "escrowAddress": "0x123", "status": "Pending", + "block": "123456", + "txHash": "0xabc", } ] } @@ -396,6 +398,8 @@ def test_get_status_events(self): self.assertEqual(result[0].escrow_address, "0x123") self.assertEqual(result[0].status, "Pending") self.assertEqual(result[0].chain_id, ChainId.POLYGON_AMOY) + self.assertEqual(result[0].block, 123456) + self.assertEqual(result[0].tx_hash, "0xabc") def test_get_status_events_with_date_range(self): with patch( @@ -408,6 +412,8 @@ def test_get_status_events_with_date_range(self): "timestamp": 1620000000, "escrowAddress": "0x123", "status": "Pending", + "block": "123456", + "txHash": "0xabc", } ] } @@ -429,6 +435,8 @@ def test_get_status_events_with_date_range(self): self.assertEqual(result[0].escrow_address, "0x123") self.assertEqual(result[0].status, "Pending") self.assertEqual(result[0].chain_id, ChainId.POLYGON_AMOY) + self.assertEqual(result[0].block, 123456) + self.assertEqual(result[0].tx_hash, "0xabc") def test_get_status_events_no_data(self): with patch( @@ -454,6 +462,8 @@ def test_get_status_events_with_launcher(self): "timestamp": 1620000000, "escrowAddress": "0x123", "status": "Pending", + "block": "123456", + "txHash": "0xabc", } ] } @@ -471,6 +481,8 @@ def test_get_status_events_with_launcher(self): self.assertEqual(result[0].escrow_address, "0x123") self.assertEqual(result[0].status, "Pending") self.assertEqual(result[0].chain_id, ChainId.POLYGON_AMOY) + self.assertEqual(result[0].block, 123456) + self.assertEqual(result[0].tx_hash, "0xabc") def test_get_payouts_unsupported_chain_id(self): filter = PayoutFilter(chain_id=9999) From b936df0db9969924f49314c8c3a2eac1ac202122 Mon Sep 17 00:00:00 2001 From: Dmitry Nechay Date: Wed, 18 Mar 2026 12:22:27 +0300 Subject: [PATCH 3/4] feat: consistent return in sdk --- .../server/src/modules/cron-job/cron-job.service.spec.ts | 2 +- .../server/src/modules/cron-job/cron-job.service.ts | 6 +++--- .../human-protocol-sdk/src/escrow/escrow_utils.ts | 2 +- .../sdk/typescript/human-protocol-sdk/src/interfaces.ts | 2 +- .../sdk/typescript/human-protocol-sdk/test/escrow.test.ts | 8 ++++---- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.spec.ts b/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.spec.ts index b7f7706a97..660fab11e1 100644 --- a/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.spec.ts +++ b/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.spec.ts @@ -885,7 +885,7 @@ describe('CronJobService', () => { escrowEventMock = { chainId: ChainId.LOCALHOST, escrowAddress: MOCK_ADDRESS, - status: EscrowStatus.Partial, + status: 'Partial', }; jest.spyOn(repository, 'findOneByType').mockResolvedValue(null); diff --git a/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.ts b/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.ts index 12f245123b..f41f759733 100644 --- a/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.ts +++ b/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.ts @@ -435,19 +435,19 @@ export class CronJobService { } if (!job || job.status === JobStatus.CANCELED) continue; - if (event.status === EscrowStatus.Cancelled) { + if (event.status === EscrowStatus[EscrowStatus.Cancelled]) { await this.jobService.cancelJob(job); continue; } let newStatus: JobStatus | null = null; if ( - event.status === EscrowStatus.Partial && + event.status === EscrowStatus[EscrowStatus.Partial] && job.status !== JobStatus.PARTIAL ) { newStatus = JobStatus.PARTIAL; } else if ( - event.status === EscrowStatus.Complete && + event.status === EscrowStatus[EscrowStatus.Complete] && job.status !== JobStatus.COMPLETED ) { newStatus = JobStatus.COMPLETED; diff --git a/packages/sdk/typescript/human-protocol-sdk/src/escrow/escrow_utils.ts b/packages/sdk/typescript/human-protocol-sdk/src/escrow/escrow_utils.ts index 3551c70791..ff3e582a4b 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/escrow/escrow_utils.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/escrow/escrow_utils.ts @@ -268,7 +268,7 @@ export class EscrowUtils { return data['escrowStatusEvents'].map((event) => ({ timestamp: Number(event.timestamp) * 1000, escrowAddress: event.escrowAddress, - status: EscrowStatus[event.status as keyof typeof EscrowStatus], + status: event.status as keyof typeof EscrowStatus, chainId, block: BigInt(event.block), txHash: event.txHash, diff --git a/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts b/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts index 10a654627e..007f9fd483 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts @@ -281,7 +281,7 @@ export interface IDailyHMT { export interface IStatusEvent { timestamp: number; escrowAddress: string; - status: EscrowStatus; + status: keyof typeof EscrowStatus; chainId: ChainId; block: bigint; txHash: string; diff --git a/packages/sdk/typescript/human-protocol-sdk/test/escrow.test.ts b/packages/sdk/typescript/human-protocol-sdk/test/escrow.test.ts index 0929a35c44..ac9e09262c 100644 --- a/packages/sdk/typescript/human-protocol-sdk/test/escrow.test.ts +++ b/packages/sdk/typescript/human-protocol-sdk/test/escrow.test.ts @@ -4104,7 +4104,7 @@ describe('EscrowUtils', () => { }); const expectedResults = pendingEvents.map((event) => ({ ...event, - status: EscrowStatus.Pending, + status: EscrowStatus[EscrowStatus.Pending], timestamp: +event.timestamp * 1000, block: BigInt(event.block), chainId: ChainId.LOCALHOST, @@ -4146,7 +4146,7 @@ describe('EscrowUtils', () => { const expectedResults = pendingEvents.map((event) => ({ ...event, - status: EscrowStatus.Pending, + status: EscrowStatus[EscrowStatus.Pending], timestamp: +event.timestamp * 1000, block: BigInt(event.block), chainId: ChainId.POLYGON_AMOY, @@ -4189,7 +4189,7 @@ describe('EscrowUtils', () => { const expectedResults = partialEvents.map((event) => ({ ...event, - status: EscrowStatus.Partial, + status: EscrowStatus[EscrowStatus.Partial], timestamp: +event.timestamp * 1000, block: BigInt(event.block), chainId: ChainId.POLYGON_AMOY, @@ -4231,7 +4231,7 @@ describe('EscrowUtils', () => { const expectedResults = pendingEvents.map((event) => ({ ...event, - status: EscrowStatus.Pending, + status: EscrowStatus[EscrowStatus.Pending], timestamp: +event.timestamp * 1000, block: BigInt(event.block), chainId: ChainId.POLYGON_AMOY, From c0629b8fe5597d455c2757b687ad440376214b41 Mon Sep 17 00:00:00 2001 From: Dmitry Nechay Date: Wed, 18 Mar 2026 12:24:40 +0300 Subject: [PATCH 4/4] chore: add changeset --- .changeset/brown-yaks-flow.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/brown-yaks-flow.md diff --git a/.changeset/brown-yaks-flow.md b/.changeset/brown-yaks-flow.md new file mode 100644 index 0000000000..d29af3b1ed --- /dev/null +++ b/.changeset/brown-yaks-flow.md @@ -0,0 +1,7 @@ +--- +"@human-protocol/sdk": minor +"@human-protocol/python-sdk": minor +--- + +Extended SDK to return block and tx hash for "getStatusEvents". +Fixed "status" field in return value to be consistent in SDKs.