import { type Address, BN, Program, type Provider } from "@coral-xyz/anchor"; import { type Commitment, type Connection, PublicKey, type TransactionInstruction } from "@solana/web3.js"; import { TransactionPayload } from "@zebec-network/solana-common"; import { type ZebecStreamIdl } from "../artifacts"; import type { CancelStreamParams, ChangeStreamReceiverParams, CreateStreamParams, InitializeStreamConfigParams, RpcNetwork, StreamConfigInfo, StreamMetadataInfo, TokenMetadata, UpdateStreamConfigParams, WhiteListTokensParams, WithdrawStreamParams } from "../types"; export declare class ZebecStreamService { readonly streamConfigName: string; readonly provider: Provider; readonly network: RpcNetwork; readonly program: Program; constructor(streamConfigName: string, provider: Provider, network: RpcNetwork, program: Program); static create(streamConfigName: string, provider: Provider, network: RpcNetwork): ZebecStreamService; private _createPayload; get connection(): Connection; get programId(): PublicKey; getInitializeStreamConfigInstruction(admin: PublicKey, streamConfig: PublicKey, config: { baseFee: BN; frequencies: BN[]; platformFee: BN; withdrawAccount: PublicKey; configName: string; feeTiers: { minAmount: BN; maxAmount: BN; fee: BN; }[]; feeVault: PublicKey; }): Promise; getUpdateStreamConfigInstruction(admin: PublicKey, streamConfig: PublicKey, config: { baseFee: BN; frequencies: BN[]; platformFee: BN; withdrawAccount: PublicKey; configName: string; feeTiers: { minAmount: BN; maxAmount: BN; fee: BN; }[]; feeVault: PublicKey; }): Promise; getCreateStreamInstruction(streamConfig: PublicKey, feePayer: PublicKey, receiver: PublicKey, senderAta: PublicKey, streamToken: PublicKey, withdrawAccount: PublicKey, sender: PublicKey, streamMetadata: PublicKey, streamData: { amount: BN; automaticWithdrawal: boolean; cancelableByRecipient: boolean; cancelableBySender: boolean; canTopup: boolean; cliffPercentage: BN; duration: BN; isPausable: boolean; rateUpdatable: boolean; startNow: boolean; startTime: BN; autoWithdrawFrequency: BN; streamName: Uint8Array | Buffer; transferableByRecipient: boolean; transferableBySender: boolean; }): Promise; getPauseResumeStreamInstruction(streamMetadata: PublicKey, user: PublicKey): Promise; getCancelStreamInstruction(feePayer: PublicKey, otherParty: PublicKey, otherPartyAta: PublicKey, signer: PublicKey, signerAta: PublicKey, streamMetadata: PublicKey, streamToken: PublicKey, streamVault: PublicKey, streamVaultAta: PublicKey): Promise; getWithdrawStreamInstruction(receiver: PublicKey, receiverAta: PublicKey, streamConfig: PublicKey, streamMetadata: PublicKey, streamToken: PublicKey, streamVault: PublicKey, streamVaultAta: PublicKey, withdrawer: PublicKey, feePayer: PublicKey): Promise; getWhitelistTokensInstruction(admin: PublicKey, streamConfig: PublicKey, tokens: PublicKey[]): Promise; getChangeStreamReceiverInstruction(streamMetadata: PublicKey, newRecipient: PublicKey, signer: PublicKey): Promise; initializeStreamConfig(params: InitializeStreamConfigParams): Promise; updateStreamConfig(params: UpdateStreamConfigParams): Promise; createStream(params: CreateStreamParams): Promise; cancelStream(params: CancelStreamParams): Promise; pauseResumeStream(params: { streamMetadata: Address; }): Promise; withdrawStream(params: WithdrawStreamParams): Promise; whiteListTokens(params: WhiteListTokensParams): Promise; changeStreamReceiver(params: ChangeStreamReceiverParams): Promise; getStreamConfigInfo(configName: string, commitment?: Commitment): Promise; getWhitelistedTokens(configName: string, commitment?: "processed" | "confirmed" | "finalized"): Promise; getStreamMetadataInfo(streamMetadata: Address, commitment?: Commitment): Promise; }