import { JustProtocolRequest, TransactionKind } from '@lens-protocol/domain/entities';
import { IResettableTransactionGateway } from '@lens-protocol/domain/use-cases/authentication';
import { IMetaTransactionNonceGateway, IPendingTransactionGateway, NewTransactionsSubscriber, AnyTransactionRequest } from '@lens-protocol/domain/use-cases/transactions';
import { IStorage } from '@lens-protocol/storage';
import { TransactionList } from "../schemas/transactions.js";
import { ISerializableDataTransaction, ISerializableMetaTransaction, ISerializableNativeTransaction, ISerializableTransactionFactory } from "./ISerializableTransactionFactory.js";
type ISerializableTransaction<T extends AnyTransactionRequest> = ISerializableNativeTransaction<T> | ISerializableMetaTransaction<JustProtocolRequest<T>> | ISerializableDataTransaction<JustProtocolRequest<T>>;
export declare class PendingTransactionGateway implements IPendingTransactionGateway<AnyTransactionRequest>, IMetaTransactionNonceGateway, IResettableTransactionGateway {
    private readonly storage;
    private readonly transactionFactory;
    private cache?;
    constructor(storage: IStorage<TransactionList>, transactionFactory: ISerializableTransactionFactory);
    save(tx: ISerializableTransaction<AnyTransactionRequest>): Promise<void>;
    remove(id: string): Promise<void>;
    reset(): Promise<void>;
    getAll(): Promise<readonly ISerializableTransaction<AnyTransactionRequest>[]>;
    getNextMetaTransactionNonceFor(kind: TransactionKind): Promise<number | undefined>;
    subscribe(subscriber: NewTransactionsSubscriber<AnyTransactionRequest>): void;
    private update;
    private toEntity;
}
export {};
