import { Logger, SubgraphDeploymentID } from '@graphprotocol/common-ts'; import { Action, ActionFailure, Allocation, AllocationResult, CloseAllocationResult, CreateAllocationResult, GraphNode, IndexerManagementModels, IndexingStatus, Network, ReallocateAllocationResult, PresentPOIResult, ResizeAllocationResult, POIData, ExecuteActionResult } from '@graphprotocol/indexer-common'; import { BigNumberish, BytesLike, TransactionReceipt, TransactionRequest } from 'ethers'; export interface TransactionPreparationContext { activeAllocations: Allocation[]; recentlyClosedAllocations: Allocation[]; currentEpoch: bigint; indexingStatuses: IndexingStatus[]; } export interface AllocateTransactionParams { indexer: string; subgraphDeploymentID: BytesLike; tokens: BigNumberish; allocationID: string; metadata: BytesLike; proof: BytesLike; } export interface UnallocateTransactionParams { allocationID: string; poi: POIData; isLegacy: boolean; indexer: string; actionID: number; protocolNetwork: string; } export interface PresentPOITransactionParams { allocationID: string; poi: POIData; indexer: string; actionID: number; protocolNetwork: string; } export interface ResizeTransactionParams { allocationID: string; newAmount: bigint; indexer: string; actionID: number; protocolNetwork: string; } export interface ReallocateTransactionParams { closingAllocationID: string; poi: POIData; indexer: string; subgraphDeploymentID: BytesLike; tokens: BigNumberish; newAllocationID: string; metadata: BytesLike; proof: BytesLike; closingAllocationIsLegacy: boolean; actionID: number; protocolNetwork: string; } export interface ActionStakeUsageSummary { action: Action; allocates: bigint; unallocates: bigint; rewards: bigint; balance: bigint; } export type PopulateTransactionResult = ActionTransactionRequest | ActionTransactionRequest[] | ActionFailure; export type ActionTransactionRequest = TransactionRequest & { actionID: number; protocolNetwork: string; }; export type TransactionResult = (TransactionReceipt | 'paused' | 'unauthorized')[] | ActionFailure[]; /** * Encodes collect indexing rewards data for Horizon allocations. * Shared helper used by collect and unallocate operations. */ export declare function encodeCollectData(allocationId: string, poiData: POIData): string; export declare class AllocationManager { private logger; private models; private graphNode; private network; constructor(logger: Logger, models: IndexerManagementModels, graphNode: GraphNode, network: Network); executeBatch(actions: Action[], onFinishedDeploying: (actions: Action[]) => Promise): Promise; private executeTransactions; /** * Processes the result of transaction batches for an action * * Reallocate actions can have multiple transaction batches associated with it (one for the staking contract and one for the subgraph service). * This method is used to consolidate the results to one per action. * * @param actionResults - Track the result of each action * @param transactions - The transactions to process, multicalled together * @param transactionResult - The result of the transaction that was multicalled and executed */ processActionResults(actionResults: ExecuteActionResult[], transactions: ActionTransactionRequest[], transactionResult: Partial | TransactionReceipt | 'paused' | 'unauthorized'): void; /** * Confirms the execution of an action. * * Note that an unallocate actions can require multiple transaction batches to resolve. * * @param actionResults - The results of the action * @param actions - The actions to confirm */ confirmTransactions(actionResults: ExecuteActionResult[], actions: Action[]): Promise; /** * Confirms the execution of an action using transaction receipts. * * Reallocate actions can have multiple receipts. * * @param receipts - The receipts to process * @param action - The action to confirm */ confirmActionExecution(receipts: TransactionReceipt[], action: Action): Promise; prepareTransactions(actions: Action[]): Promise; prepareTransaction(action: Action, context: TransactionPreparationContext): Promise; deployBeforeAllocating(logger: Logger, actions: Action[]): Promise; prepareAllocateParams(logger: Logger, context: TransactionPreparationContext, deployment: SubgraphDeploymentID, amount: bigint): Promise; confirmAllocate(actionID: number, deployment: string, amount: string, receipt: TransactionReceipt | 'paused' | 'unauthorized'): Promise; prepareAllocate(logger: Logger, context: TransactionPreparationContext, deployment: SubgraphDeploymentID, amount: bigint, actionID: number, protocolNetwork: string): Promise; prepareUnallocateParams(logger: Logger, context: TransactionPreparationContext, allocationID: string, poi: string | undefined, force: boolean, poiBlockNumber: number | undefined, publicPOI: string | undefined, actionID: number, protocolNetwork: string): Promise; confirmUnallocate(actionID: number, allocationID: string, receipt: TransactionReceipt | 'paused' | 'unauthorized'): Promise; populateUnallocateTransaction(logger: Logger, params: UnallocateTransactionParams): Promise; prepareUnallocate(logger: Logger, context: TransactionPreparationContext, allocationID: string, poi: string | undefined, force: boolean, poiBlockNumber: number | undefined, publicPOI: string | undefined, actionID: number, protocolNetwork: string): Promise; preparePresentPOIParams(logger: Logger, context: TransactionPreparationContext, allocationID: string, poi: string | undefined, force: boolean, poiBlockNumber: number | undefined, publicPOI: string | undefined, actionID: number, protocolNetwork: string): Promise; populatePresentPOITransaction(logger: Logger, params: PresentPOITransactionParams): Promise; preparePresentPOI(logger: Logger, context: TransactionPreparationContext, allocationID: string, poi: string | undefined, force: boolean, poiBlockNumber: number | undefined, publicPOI: string | undefined, actionID: number, protocolNetwork: string): Promise; confirmPresentPOI(actionID: number, allocationID: string, receipt: TransactionReceipt | 'paused' | 'unauthorized'): Promise; prepareResizeParams(logger: Logger, allocationID: string, newAmount: bigint, actionID: number, protocolNetwork: string): Promise; populateResizeTransaction(logger: Logger, params: ResizeTransactionParams): Promise; prepareResize(logger: Logger, allocationID: string, newAmount: bigint, actionID: number, protocolNetwork: string): Promise; confirmResize(actionID: number, allocationID: string, newAmount: string, receipt: TransactionReceipt | 'paused' | 'unauthorized'): Promise; prepareReallocateParams(logger: Logger, context: TransactionPreparationContext, allocationID: string, poi: string | undefined, amount: bigint, force: boolean, poiBlockNumber: number | undefined, publicPOI: string | undefined, actionID: number, protocolNetwork: string): Promise; confirmReallocate(actionID: number, allocationID: string, receipts: TransactionReceipt[]): Promise; prepareReallocate(logger: Logger, context: TransactionPreparationContext, allocationID: string, poi: string | undefined, amount: bigint, force: boolean, poiBlockNumber: number | undefined, publicPOI: string | undefined, actionID: number, protocolNetwork: string): Promise; populateReallocateTransaction(logger: Logger, params: ReallocateTransactionParams): Promise; matchingRuleExists(logger: Logger, subgraphDeploymentID: SubgraphDeploymentID): Promise; stakeUsageSummary(action: Action): Promise; validateActionBatchFeasibilty(batch: Action[]): Promise; }