Skip to content

removeApprovedProviderSync

removeApprovedProviderSync(client, options): Promise<OutputType>

Defined in: packages/synapse-core/src/warm-storage/remove-approved-provider.ts:160

Remove an approved provider for the client and wait for confirmation

Removes a provider ID from the approved list using a swap-and-pop pattern. After removal, the client can no longer create data sets with this provider. Waits for the transaction to be confirmed and returns the receipt with the event.

ParameterTypeDescription
clientClient<Transport, Chain, Account>The client to use to remove the approved provider.
options{ contractAddress?: `0x${string}`; index: bigint; onHash?: (hash) => void; providerId: bigint; }removeApprovedProviderSync.OptionsType
options.contractAddress?`0x${string}`Warm storage contract address. If not provided, the default is the storage contract address for the chain.
options.indexbigintThe index of the provider in the approvedProviderIds array. Must match the providerId at that index (reverts on mismatch). Use getApprovedProviders to find the correct index.
options.onHash?(hash) => voidCallback function called with the transaction hash before waiting for the receipt.
options.providerIdbigintThe ID of the provider to remove from approved list. Reverts if provider is not in list.

Promise<OutputType>

The transaction receipt and extracted event removeApprovedProviderSync.OutputType

Errors removeApprovedProviderSync.ErrorType

import { removeApprovedProviderSync, getApprovedProviders } from '@filoz/synapse-core/warm-storage'
import { createWalletClient, createPublicClient, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { calibration } from '@filoz/synapse-core/chains'
const account = privateKeyToAccount('0x...')
const walletClient = createWalletClient({
account,
chain: calibration,
transport: http(),
})
const publicClient = createPublicClient({
chain: calibration,
transport: http(),
})
// First, get the list to find the index
const providers = await getApprovedProviders(publicClient, {
client: account.address,
})
const providerId = 1n
const index = providers.findIndex((id) => id === providerId)
const { receipt, event } = await removeApprovedProviderSync(walletClient, {
providerId,
index: BigInt(index),
onHash: (hash) => console.log('Transaction sent:', hash),
})
console.log('Removed provider ID:', event.args.providerId)