Skip to content

Commit 05e6b92

Browse files
authored
fix: add getScheduledRemovals method (#464)
* fix: use pdpverifier contract for piece removal * chore: remove schedulePieceDeletions and revert integration * chore: attempt to lint:fix generated.ts * chore: remove generated.ts changes
1 parent 734a59f commit 05e6b92

File tree

4 files changed

+60
-0
lines changed

4 files changed

+60
-0
lines changed

packages/synapse-sdk/src/pdp/verifier.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,16 @@ export class PDPVerifier {
165165
}
166166
}
167167

168+
/**
169+
* Get pieces scheduled for removal from a data set
170+
* @param dataSetId - The PDPVerifier data set ID
171+
* @returns Array of piece IDs scheduled for removal
172+
*/
173+
async getScheduledRemovals(dataSetId: number): Promise<number[]> {
174+
const result = await this._contract.getScheduledRemovals(dataSetId)
175+
return result.map((pieceId: bigint) => Number(pieceId))
176+
}
177+
168178
/**
169179
* Get the PDPVerifier contract address for the current network
170180
*/

packages/synapse-sdk/src/test/mocks/jsonrpc/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,7 @@ export const presets = {
478478
getActivePieces: () => [[], [], false],
479479
getDataSetStorageProvider: () => [ADDRESSES.serviceProvider1, ADDRESSES.zero],
480480
getDataSetLeafCount: () => [0n],
481+
getScheduledRemovals: () => [[]],
481482
},
482483
serviceRegistry: {
483484
getProviderByAddress: (data) => [

packages/synapse-sdk/src/test/mocks/jsonrpc/pdp.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export type getDataSetStorageProvider = ExtractAbiFunction<
1414
'getDataSetStorageProvider'
1515
>
1616
export type getDataSetLeafCount = ExtractAbiFunction<typeof CONTRACT_ABIS.PDP_VERIFIER, 'getDataSetLeafCount'>
17+
export type getScheduledRemovals = ExtractAbiFunction<typeof CONTRACT_ABIS.PDP_VERIFIER, 'getScheduledRemovals'>
1718

1819
export interface PDPVerifierOptions {
1920
dataSetLive?: (args: AbiToType<dataSetLive['inputs']>) => AbiToType<dataSetLive['outputs']>
@@ -24,6 +25,7 @@ export interface PDPVerifierOptions {
2425
args: AbiToType<getDataSetStorageProvider['inputs']>
2526
) => AbiToType<getDataSetStorageProvider['outputs']>
2627
getDataSetLeafCount?: (args: AbiToType<getDataSetLeafCount['inputs']>) => AbiToType<getDataSetLeafCount['outputs']>
28+
getScheduledRemovals?: (args: AbiToType<getScheduledRemovals['inputs']>) => AbiToType<getScheduledRemovals['outputs']>
2729
}
2830

2931
/**
@@ -95,6 +97,16 @@ export function pdpVerifierCallHandler(data: Hex, options: JSONRPCOptions): Hex
9597
options.pdpVerifier.getDataSetLeafCount(args)
9698
)
9799
}
100+
case 'getScheduledRemovals': {
101+
if (!options.pdpVerifier?.getScheduledRemovals) {
102+
throw new Error('PDP Verifier: getScheduledRemovals is not defined')
103+
}
104+
return encodeAbiParameters(
105+
CONTRACT_ABIS.PDP_VERIFIER.find((abi) => abi.type === 'function' && abi.name === 'getScheduledRemovals')!
106+
.outputs,
107+
options.pdpVerifier.getScheduledRemovals(args)
108+
)
109+
}
98110
default: {
99111
throw new Error(`PDP Verifier: unknown function: ${functionName} with args: ${args}`)
100112
}

packages/synapse-sdk/src/test/pdp-verifier.test.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,4 +207,41 @@ describe('PDPVerifier', () => {
207207
assert.equal(address, testAddress)
208208
})
209209
})
210+
211+
describe('getScheduledRemovals', () => {
212+
it('should get scheduled removals for a data set', async () => {
213+
server.use(
214+
JSONRPC({
215+
...presets.basic,
216+
pdpVerifier: {
217+
...presets.basic.pdpVerifier,
218+
getScheduledRemovals: () => [[1n, 2n, 5n]],
219+
},
220+
})
221+
)
222+
223+
const scheduledRemovals = await pdpVerifier.getScheduledRemovals(123)
224+
assert.isArray(scheduledRemovals)
225+
assert.equal(scheduledRemovals.length, 3)
226+
assert.equal(scheduledRemovals[0], 1)
227+
assert.equal(scheduledRemovals[1], 2)
228+
assert.equal(scheduledRemovals[2], 5)
229+
})
230+
231+
it('should return empty array when no removals scheduled', async () => {
232+
server.use(
233+
JSONRPC({
234+
...presets.basic,
235+
pdpVerifier: {
236+
...presets.basic.pdpVerifier,
237+
getScheduledRemovals: () => [[]],
238+
},
239+
})
240+
)
241+
242+
const scheduledRemovals = await pdpVerifier.getScheduledRemovals(123)
243+
assert.isArray(scheduledRemovals)
244+
assert.equal(scheduledRemovals.length, 0)
245+
})
246+
})
210247
})

0 commit comments

Comments
 (0)