///
///
import { AccountInfo, Commitment, Connection, PublicKey } from "@solana/web3.js";
import { AccountStructByName, ConfirmationStorageType, ExternalCallMetaType, SubmissionInfoType } from "./interfaces";
import { DebridgeProgram } from "./idl/debridge_program_v31";
import { DebridgeSettingsProgram } from "./idl/debridge_settings_program_v31";
import { Decoder } from "./decoder";
import { UpdatableAccountInfo } from "./accounts";
export declare enum UpdateActions {
ExternalCallStorage = "externalCallStorage",
ExternalCallMeta = "externalCallMeta",
ConfirmationStorage = "confirmationStorage",
Submission = "submission",
CorrectCalldata = "correctCalldata"
}
type ActionMap = {
[UpdateActions.ExternalCallStorage]: Buffer;
[UpdateActions.ExternalCallMeta]: ExternalCallMetaType;
[UpdateActions.ConfirmationStorage]: ConfirmationStorageType;
[UpdateActions.Submission]: SubmissionInfoType;
[UpdateActions.CorrectCalldata]: null;
};
type TypedCallback = (data: ActionMap[Action] | null) => unknown;
export declare class SubmissionState {
protected decoder: Decoder;
protected connection: Connection;
submissionId: Buffer;
accounts: {
confirmationStorage: PublicKey;
submission: PublicKey;
externalCall: WithExtCall extends true ? {
externalCallMeta: PublicKey;
externalCallStorage: PublicKey;
} : null;
commitment?: Commitment;
};
private logFn?;
private subManager;
private nativeSubscriptions;
confirmationStorage: UpdatableAccountInfo>;
submission: UpdatableAccountInfo>;
externalCallStorage: WithExtCall extends true ? UpdatableAccountInfo : null;
externalCallMeta: WithExtCall extends true ? UpdatableAccountInfo> : null;
private expectedCalldata?;
onAction>(type: Action, callback: TypedCallback, repeat: "unlimited" | number): void;
onActionOnce>(type: Action, callback: TypedCallback): void;
onCorrectCalldataOnce(expected: Buffer, callback: () => unknown): void;
private updateListener;
constructor(decoder: Decoder, connection: Connection, submissionId: Buffer, accounts: {
confirmationStorage: PublicKey;
submission: PublicKey;
externalCall: WithExtCall extends true ? {
externalCallMeta: PublicKey;
externalCallStorage: PublicKey;
} : null;
commitment?: Commitment;
}, logFn?: ((...args: any[]) => unknown) | undefined, initialState?: {
confirmationStorage: AccountInfo | null;
submission: AccountInfo | null;
externalCall: WithExtCall extends true ? {
meta: AccountInfo | null;
storage: AccountInfo | null;
} : null;
}, subscriptionCommitment?: Commitment);
getInitialState(): Promise;
unsubscribe(): Promise;
}
export {};
//# sourceMappingURL=submission.d.ts.map