@sfpro/sdk

IDA

IDA contract API reference for instant token distributions

The Instant Distribution Agreement (IDA) enables instant, gas-efficient token distributions to multiple recipients. It uses a publish-subscribe model where publishers can distribute tokens to subscribers based on their subscription units.

Overview

The IDA contract provides:

  • Index-based publish/subscribe system
  • Proportional instant distributions
  • Gas-efficient multi-recipient transfers
  • Subscription approval mechanisms

Note: IDA is being superseded by GDA (General Distribution Agreement) which offers more features including streaming distributions. Consider using GDA for new implementations.

Read Functions

getIndex

Returns information about a distribution index.

import { useReadIda } from '@sfpro/sdk/hook/core';

const { data: index } = useReadIda({
  address: '0x...',
  functionName: 'getIndex',
  args: [token, publisher, indexId],
});
import { idaAbi } from '@sfpro/sdk/abi/core';

const index = await client.readContract({
  address: '0x...',
  abi: idaAbi,
  functionName: 'getIndex',
  args: [token, publisher, indexId],
});
import { readIda } from '@sfpro/sdk/action/core';

const index = await readIda(client, {
  address: '0x...',
  functionName: 'getIndex',
  args: [token, publisher, indexId],
});

getSubscription

Returns subscription information for a subscriber.

getSubscriptionByID

Returns subscription information by its unique ID.

listSubscriptions

Returns all subscriptions for a subscriber.

Write Functions

createIndex

Creates a new distribution index through the Host contract.

import { useWriteIda } from '@sfpro/sdk/hook/core';

const { writeContract } = useWriteIda();

await writeContract({
  address: '0x...',
  functionName: 'createIndex',
  args: [token, indexId],
});
import { idaAbi } from '@sfpro/sdk/abi/core';

// Note: IDA operations must be called through the Host contract
const callData = encodeFunctionData({
  abi: idaAbi,
  functionName: 'createIndex',
  args: [token, indexId, userData],
});
// Use the forwarder contract for direct calls
import { writeIda } from '@sfpro/sdk/action/core';

const hash = await writeIda(client, {
  address: '0x...',
  functionName: 'createIndex',
  args: [token, indexId],
});

updateSubscriptionUnits

Updates a subscriber's units (share) in an index.

distribute

Distributes tokens to all subscribers of an index.

approveSubscription

Approves a subscription to automatically receive distributions.

deleteSubscription

Deletes a subscription from an index.

claim

Claims pending distributions for a subscriber.

  • IDA Forwarder - Simplified interface for IDA operations
  • GDA - Next-generation distribution agreement with streaming support
  • Host Contract - Required for direct IDA calls