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.
Related
- IDA Forwarder - Simplified interface for IDA operations
- GDA - Next-generation distribution agreement with streaming support
- Host Contract - Required for direct IDA calls