import { type LedgerJsonApiClient } from '../../clients/ledger-json-api';
import { type ValidatorApiClient } from '../../clients/validator-api';
export interface PreApproveTransfersParams {
    /** Party ID to enable pre-approved transfers for (receiver) */
    receiverPartyId: string;
    /** Party ID of the provider (defaults to receiverPartyId if not specified) */
    providerPartyId?: string;
    /** When the pre-approval expires (defaults to 1 day from now) */
    expiresAt?: Date;
    /** Contract details for disclosed contracts (optional - will be fetched if not provided) */
    contractDetails?: {
        amuletRules?: {
            createdEventBlob: string;
            synchronizerId: string;
        };
        openMiningRound?: {
            createdEventBlob: string;
            synchronizerId: string;
        };
        issuingMiningRounds?: Array<{
            createdEventBlob: string;
            synchronizerId: string;
        }>;
        featuredAppRight?: {
            createdEventBlob: string;
            synchronizerId: string;
        };
    };
}
export interface PreApproveTransfersResult {
    /** Contract ID of the created TransferPreapproval contract */
    contractId: string;
    /** Domain ID where the contract was created */
    domainId: string;
    /** Amount of amulet paid for the pre-approval */
    amuletPaid: string;
}
/**
 * Creates a TransferPreapproval contract to enable pre-approved transfers for a party
 *
 * @param ledgerClient - Ledger JSON API client for submitting commands
 * @param validatorClient - Validator API client for getting network information
 * @param params - Parameters for creating the pre-approval
 * @returns Promise resolving to the pre-approval result
 */
export declare function preApproveTransfers(ledgerClient: LedgerJsonApiClient, validatorClient: ValidatorApiClient, params: PreApproveTransfersParams): Promise<PreApproveTransfersResult>;
//# sourceMappingURL=pre-approve-transfers.d.ts.map