import { TAddress } from '../../models/TAddress'; import { TAccount } from '../../models/TAccount'; import { ClientEventsStream, TClientEventsStreamData } from '../../clients/ClientEventsStream'; import { ContractBase } from '../../contracts/ContractBase'; import { TxWriter } from '../../txs/TxWriter'; import { ITxLogItem } from '../../txs/receipt/ITxLogItem'; import { Web3Client } from '../../clients/Web3Client'; import { IBlockchainExplorer } from '../../explorer/IBlockchainExplorer'; import { SubjectStream } from '../../class/SubjectStream'; import type { TAbiItem } from '../../types/TAbi'; import type { TEth } from '../../models/TEth'; import type { TOverrideReturns } from '../../utils/types'; export declare class PaymentSplitter extends ContractBase { address: TEth.Address; client: Web3Client; explorer: IBlockchainExplorer; constructor(address?: TEth.Address, client?: Web3Client, explorer?: IBlockchainExplorer); Types: TPaymentSplitterTypes; $meta: { class: string; }; $constructor(deployer: TSender, payees: TAddress[], shares_: bigint[]): Promise; payee(index: bigint): Promise; releasable(account: TAddress): Promise; releasable(token: TAddress, account: TAddress): Promise; release(sender: TSender, account: TAddress): Promise; release(sender: TSender, token: TAddress, account: TAddress): Promise; released(token: TAddress, account: TAddress): Promise; released(account: TAddress): Promise; shares(account: TAddress): Promise; totalReleased(token: TAddress): Promise; totalReleased(): Promise; totalShares(): Promise; $call(): IPaymentSplitterTxCaller; $signed(): TOverrideReturns>; $data(): IPaymentSplitterTxData; $gas(): TOverrideReturns>; onTransaction(method: TMethod, options: Parameters[0]): SubjectStream<{ tx: TEth.Tx; block: TEth.Block; calldata: { method: TMethod; arguments: TPaymentSplitterTypes['Methods'][TMethod]['arguments']; }; }>; onLog(event: keyof TEvents, cb?: (event: TClientEventsStreamData) => void): ClientEventsStream; getPastLogs(events: TEventName[], options?: TEventLogOptions>): Promise, TEventName>[]>; getPastLogs(event: TEventName, options?: TEventLogOptions>): Promise, TEventName>[]>; onERC20PaymentReleased(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; onPayeeAdded(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; onPaymentReceived(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; onPaymentReleased(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; extractLogsERC20PaymentReleased(tx: TEth.TxReceipt): ITxLogItem>[]; extractLogsPayeeAdded(tx: TEth.TxReceipt): ITxLogItem>[]; extractLogsPaymentReceived(tx: TEth.TxReceipt): ITxLogItem>[]; extractLogsPaymentReleased(tx: TEth.TxReceipt): ITxLogItem>[]; getPastLogsERC20PaymentReleased(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: { token?: TAddress; }; }): Promise>[]>; getPastLogsPayeeAdded(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: {}; }): Promise>[]>; getPastLogsPaymentReceived(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: {}; }): Promise>[]>; getPastLogsPaymentReleased(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: {}; }): Promise>[]>; abi: TAbiItem[]; } type TSender = TAccount & { value?: string | number | bigint; }; type TEventLogOptions = { fromBlock?: number | Date; toBlock?: number | Date; params?: TParams; }; export type TPaymentSplitterTypes = { Events: { ERC20PaymentReleased: { outputParams: { token: TAddress; to: TAddress; amount: bigint; }; outputArgs: [token: TAddress, to: TAddress, amount: bigint]; }; PayeeAdded: { outputParams: { account: TAddress; shares: bigint; }; outputArgs: [account: TAddress, shares: bigint]; }; PaymentReceived: { outputParams: { from: TAddress; amount: bigint; }; outputArgs: [from: TAddress, amount: bigint]; }; PaymentReleased: { outputParams: { to: TAddress; amount: bigint; }; outputArgs: [to: TAddress, amount: bigint]; }; }; Methods: { payee: { method: "payee"; arguments: [index: bigint]; }; releasable: { method: "releasable"; arguments: [account: TAddress] | [token: TAddress, account: TAddress]; }; release: { method: "release"; arguments: [account: TAddress] | [token: TAddress, account: TAddress]; }; released: { method: "released"; arguments: [token: TAddress, account: TAddress] | [account: TAddress]; }; shares: { method: "shares"; arguments: [account: TAddress]; }; totalReleased: { method: "totalReleased"; arguments: [token: TAddress] | []; }; totalShares: { method: "totalShares"; arguments: []; }; }; }; interface IPaymentSplitterTxCaller { release(sender: TSender, account: TAddress): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; release(sender: TSender, token: TAddress, account: TAddress): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; } interface IPaymentSplitterTxData { release(sender: TSender, account: TAddress): Promise; release(sender: TSender, token: TAddress, account: TAddress): Promise; } type TEvents = TPaymentSplitterTypes['Events']; type TEventParams = Partial; type TEventArguments = Partial; export {};