@nori-zk/mina-token-bridge
Version:
A Mina zk-program contract allowing users to mint tokens on Nori Bridge.
930 lines (929 loc) • 114 kB
TypeScript
import { getCanComputeEthProof$, getCanMint$, getDepositProcessingStatus$ } from '../rx/deposit.js';
import { getBridgeStateTopic$, getBridgeTimingsTopic$, getEthStateTopic$ } from '../rx/topics.js';
import { Observable } from 'rxjs';
type ObservableValue<T> = T extends Observable<infer U> ? U : never;
export declare const getDepositMachine: (initialContext: {
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}) => import("xstate").StateMachine<{
activeDepositNumber: number | null;
depositMintTx: string | null;
computedEthProof: string | null;
processingStatus: ObservableValue<ReturnType<typeof getDepositProcessingStatus$>> | null;
canComputeStatus: ObservableValue<ReturnType<typeof getCanComputeEthProof$>> | null;
canMintStatus: ObservableValue<ReturnType<typeof getCanMint$>> | null;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, {
type: "SET_DEPOSIT_NUMBER";
value: number;
} | {
type: "CHECK_STATUS";
} | {
type: "COMPUTE_ETH_PROOF";
} | {
type: "BUILD_MINT_TX";
} | {
type: "SUBMIT_MINT_TX";
} | {
type: "RESET";
}, {
[x: string]: import("xstate").ActorRefFromLogic<import("xstate").ObservableActorLogic<{
time_remaining_sec: number;
elapsed_sec: number;
deposit_processing_status: import("../rx/deposit.js").BridgeDepositProcessingStatus;
deposit_block_number: number;
stage_name: import("node_modules/@nori-zk/pts-types/build/public/src/index.js").KeyTransitionStageMessageTypes;
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
last_finalized_job: "unknown" | {
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
};
}, {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").ObservableActorLogic<import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting" | "CanCompute", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").ObservableActorLogic<import("../rx/deposit.js").BridgeDepositProcessingStatus.ReadyToMint | import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<string, {
depositBlockNumber: number;
}, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<string, {
depositBlockNumber: number;
ethProof: string;
}, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<void, {
mintTx: string;
}, import("xstate").EventObject>>;
}, import("xstate").Values<{
depositProcessingStatusActor: {
src: "depositProcessingStatusActor";
logic: import("xstate").ObservableActorLogic<{
time_remaining_sec: number;
elapsed_sec: number;
deposit_processing_status: import("../rx/deposit.js").BridgeDepositProcessingStatus;
deposit_block_number: number;
stage_name: import("node_modules/@nori-zk/pts-types/build/public/src/index.js").KeyTransitionStageMessageTypes;
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
last_finalized_job: "unknown" | {
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
};
}, {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
canComputeEthProofActor: {
src: "canComputeEthProofActor";
logic: import("xstate").ObservableActorLogic<import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting" | "CanCompute", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
canMintActor: {
src: "canMintActor";
logic: import("xstate").ObservableActorLogic<import("../rx/deposit.js").BridgeDepositProcessingStatus.ReadyToMint | import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
computeEthProofService: {
src: "computeEthProofService";
logic: import("xstate").PromiseActorLogic<string, {
depositBlockNumber: number;
}, import("xstate").EventObject>;
id: string;
};
buildMintTxService: {
src: "buildMintTxService";
logic: import("xstate").PromiseActorLogic<string, {
depositBlockNumber: number;
ethProof: string;
}, import("xstate").EventObject>;
id: string;
};
submitMintTxService: {
src: "submitMintTxService";
logic: import("xstate").PromiseActorLogic<void, {
mintTx: string;
}, import("xstate").EventObject>;
id: string;
};
}>, never, import("xstate").Values<{
canMint: {
type: "canMint";
params: unknown;
};
hasComputedEthProof: {
type: "hasComputedEthProof";
params: unknown;
};
hasDepositMintTx: {
type: "hasDepositMintTx";
params: unknown;
};
hasActiveDepositNumber: {
type: "hasActiveDepositNumber";
params: unknown;
};
canComputeEthProof: {
type: "canComputeEthProof";
params: unknown;
};
isMissedOpportunity: {
type: "isMissedOpportunity";
params: unknown;
};
}>, never, "hasComputedEthProof" | "hasDepositMintTx" | "hasActiveDepositNumber" | "checking" | "noActiveDepositNumber" | "checkingCanCompute" | "missedOpportunity" | "computingEthProof" | "canComputeEvaluation" | "buildingMintTx" | "canMintEvaluation" | "submittingMintTx" | "completed", string, {}, {}, import("xstate").EventObject, import("xstate").MetaObject, {
readonly id: "deposit";
readonly initial: "checking";
readonly context: {
readonly activeDepositNumber: number;
readonly depositMintTx: string;
readonly computedEthProof: string;
readonly processingStatus: any;
readonly canComputeStatus: any;
readonly canMintStatus: any;
readonly ethStateTopic$: Observable<{
latest_finality_block_number: number;
latest_finality_slot: number;
}>;
readonly bridgeStateTopic$: Observable<{
stage_name: import("node_modules/@nori-zk/pts-types/build/public/src/index.js").KeyTransitionStageMessageTypes;
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
elapsed_sec: number;
last_finalized_job: "unknown" | {
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
};
}>;
readonly bridgeTimingsTopic$: Observable<{
message_type: "TransitionTiming";
extension: import("node_modules/@nori-zk/pts-types/build/public/src/index.js").KeyTransitionStageEstimatedTransitionTime;
datetime_iso: string;
topic: "timings.notices.transition";
}>;
};
readonly states: {
readonly checking: {
readonly entry: import("xstate").ActionFunction<{
activeDepositNumber: number | null;
depositMintTx: string | null;
computedEthProof: string | null;
processingStatus: ObservableValue<ReturnType<typeof getDepositProcessingStatus$>> | null;
canComputeStatus: ObservableValue<ReturnType<typeof getCanComputeEthProof$>> | null;
canMintStatus: ObservableValue<ReturnType<typeof getCanMint$>> | null;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, {
type: "SET_DEPOSIT_NUMBER";
value: number;
} | {
type: "CHECK_STATUS";
} | {
type: "COMPUTE_ETH_PROOF";
} | {
type: "BUILD_MINT_TX";
} | {
type: "SUBMIT_MINT_TX";
} | {
type: "RESET";
}, {
type: "SET_DEPOSIT_NUMBER";
value: number;
} | {
type: "CHECK_STATUS";
} | {
type: "COMPUTE_ETH_PROOF";
} | {
type: "BUILD_MINT_TX";
} | {
type: "SUBMIT_MINT_TX";
} | {
type: "RESET";
}, undefined, import("xstate").Values<{
depositProcessingStatusActor: {
src: "depositProcessingStatusActor";
logic: import("xstate").ObservableActorLogic<{
time_remaining_sec: number;
elapsed_sec: number;
deposit_processing_status: import("../rx/deposit.js").BridgeDepositProcessingStatus;
deposit_block_number: number;
stage_name: import("node_modules/@nori-zk/pts-types/build/public/src/index.js").KeyTransitionStageMessageTypes;
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
last_finalized_job: "unknown" | {
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
};
}, {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
canComputeEthProofActor: {
src: "canComputeEthProofActor";
logic: import("xstate").ObservableActorLogic<import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting" | "CanCompute", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
canMintActor: {
src: "canMintActor";
logic: import("xstate").ObservableActorLogic<import("../rx/deposit.js").BridgeDepositProcessingStatus.ReadyToMint | import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
computeEthProofService: {
src: "computeEthProofService";
logic: import("xstate").PromiseActorLogic<string, {
depositBlockNumber: number;
}, import("xstate").EventObject>;
id: string;
};
buildMintTxService: {
src: "buildMintTxService";
logic: import("xstate").PromiseActorLogic<string, {
depositBlockNumber: number;
ethProof: string;
}, import("xstate").EventObject>;
id: string;
};
submitMintTxService: {
src: "submitMintTxService";
logic: import("xstate").PromiseActorLogic<void, {
mintTx: string;
}, import("xstate").EventObject>;
id: string;
};
}>, never, never, never, never>;
readonly always: readonly [{
readonly target: "hasComputedEthProof";
readonly guard: "hasComputedEthProof";
}, {
readonly target: "hasDepositMintTx";
readonly guard: "hasDepositMintTx";
}, {
readonly target: "hasActiveDepositNumber";
readonly guard: "hasActiveDepositNumber";
}, {
readonly target: "noActiveDepositNumber";
}];
};
readonly noActiveDepositNumber: {
readonly on: {
readonly SET_DEPOSIT_NUMBER: {
readonly actions: import("xstate").ActionFunction<{
activeDepositNumber: number | null;
depositMintTx: string | null;
computedEthProof: string | null;
processingStatus: ObservableValue<ReturnType<typeof getDepositProcessingStatus$>> | null;
canComputeStatus: ObservableValue<ReturnType<typeof getCanComputeEthProof$>> | null;
canMintStatus: ObservableValue<ReturnType<typeof getCanMint$>> | null;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, {
type: "SET_DEPOSIT_NUMBER";
value: number;
}, {
type: "SET_DEPOSIT_NUMBER";
value: number;
} | {
type: "CHECK_STATUS";
} | {
type: "COMPUTE_ETH_PROOF";
} | {
type: "BUILD_MINT_TX";
} | {
type: "SUBMIT_MINT_TX";
} | {
type: "RESET";
}, undefined, import("xstate").Values<{
depositProcessingStatusActor: {
src: "depositProcessingStatusActor";
logic: import("xstate").ObservableActorLogic<{
time_remaining_sec: number;
elapsed_sec: number;
deposit_processing_status: import("../rx/deposit.js").BridgeDepositProcessingStatus;
deposit_block_number: number;
stage_name: import("node_modules/@nori-zk/pts-types/build/public/src/index.js").KeyTransitionStageMessageTypes;
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
last_finalized_job: "unknown" | {
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
};
}, {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
canComputeEthProofActor: {
src: "canComputeEthProofActor";
logic: import("xstate").ObservableActorLogic<import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting" | "CanCompute", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
canMintActor: {
src: "canMintActor";
logic: import("xstate").ObservableActorLogic<import("../rx/deposit.js").BridgeDepositProcessingStatus.ReadyToMint | import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
computeEthProofService: {
src: "computeEthProofService";
logic: import("xstate").PromiseActorLogic<string, {
depositBlockNumber: number;
}, import("xstate").EventObject>;
id: string;
};
buildMintTxService: {
src: "buildMintTxService";
logic: import("xstate").PromiseActorLogic<string, {
depositBlockNumber: number;
ethProof: string;
}, import("xstate").EventObject>;
id: string;
};
submitMintTxService: {
src: "submitMintTxService";
logic: import("xstate").PromiseActorLogic<void, {
mintTx: string;
}, import("xstate").EventObject>;
id: string;
};
}>, never, never, never, never>;
readonly target: "hasActiveDepositNumber";
};
};
};
readonly hasActiveDepositNumber: {
readonly entry: import("xstate").ActionFunction<{
activeDepositNumber: number | null;
depositMintTx: string | null;
computedEthProof: string | null;
processingStatus: ObservableValue<ReturnType<typeof getDepositProcessingStatus$>> | null;
canComputeStatus: ObservableValue<ReturnType<typeof getCanComputeEthProof$>> | null;
canMintStatus: ObservableValue<ReturnType<typeof getCanMint$>> | null;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, {
type: "SET_DEPOSIT_NUMBER";
value: number;
} | {
type: "CHECK_STATUS";
} | {
type: "COMPUTE_ETH_PROOF";
} | {
type: "BUILD_MINT_TX";
} | {
type: "SUBMIT_MINT_TX";
} | {
type: "RESET";
}, {
type: "SET_DEPOSIT_NUMBER";
value: number;
} | {
type: "CHECK_STATUS";
} | {
type: "COMPUTE_ETH_PROOF";
} | {
type: "BUILD_MINT_TX";
} | {
type: "SUBMIT_MINT_TX";
} | {
type: "RESET";
}, undefined, import("xstate").Values<{
depositProcessingStatusActor: {
src: "depositProcessingStatusActor";
logic: import("xstate").ObservableActorLogic<{
time_remaining_sec: number;
elapsed_sec: number;
deposit_processing_status: import("../rx/deposit.js").BridgeDepositProcessingStatus;
deposit_block_number: number;
stage_name: import("node_modules/@nori-zk/pts-types/build/public/src/index.js").KeyTransitionStageMessageTypes;
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
last_finalized_job: "unknown" | {
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
};
}, {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
canComputeEthProofActor: {
src: "canComputeEthProofActor";
logic: import("xstate").ObservableActorLogic<import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting" | "CanCompute", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
canMintActor: {
src: "canMintActor";
logic: import("xstate").ObservableActorLogic<import("../rx/deposit.js").BridgeDepositProcessingStatus.ReadyToMint | import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
computeEthProofService: {
src: "computeEthProofService";
logic: import("xstate").PromiseActorLogic<string, {
depositBlockNumber: number;
}, import("xstate").EventObject>;
id: string;
};
buildMintTxService: {
src: "buildMintTxService";
logic: import("xstate").PromiseActorLogic<string, {
depositBlockNumber: number;
ethProof: string;
}, import("xstate").EventObject>;
id: string;
};
submitMintTxService: {
src: "submitMintTxService";
logic: import("xstate").PromiseActorLogic<void, {
mintTx: string;
}, import("xstate").EventObject>;
id: string;
};
}>, never, never, never, never>;
readonly invoke: readonly [{
readonly id: "depositProcessingStatus";
readonly src: "depositProcessingStatusActor";
readonly input: ({ context }: {
context: {
activeDepositNumber: number | null;
depositMintTx: string | null;
computedEthProof: string | null;
processingStatus: ObservableValue<ReturnType<typeof getDepositProcessingStatus$>> | null;
canComputeStatus: ObservableValue<ReturnType<typeof getCanComputeEthProof$>> | null;
canMintStatus: ObservableValue<ReturnType<typeof getCanMint$>> | null;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
};
event: {
type: "SET_DEPOSIT_NUMBER";
value: number;
} | {
type: "CHECK_STATUS";
} | {
type: "COMPUTE_ETH_PROOF";
} | {
type: "BUILD_MINT_TX";
} | {
type: "SUBMIT_MINT_TX";
} | {
type: "RESET";
};
self: import("xstate").ActorRef<import("xstate").MachineSnapshot<{
activeDepositNumber: number | null;
depositMintTx: string | null;
computedEthProof: string | null;
processingStatus: ObservableValue<ReturnType<typeof getDepositProcessingStatus$>> | null;
canComputeStatus: ObservableValue<ReturnType<typeof getCanComputeEthProof$>> | null;
canMintStatus: ObservableValue<ReturnType<typeof getCanMint$>> | null;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, {
type: "SET_DEPOSIT_NUMBER";
value: number;
} | {
type: "CHECK_STATUS";
} | {
type: "COMPUTE_ETH_PROOF";
} | {
type: "BUILD_MINT_TX";
} | {
type: "SUBMIT_MINT_TX";
} | {
type: "RESET";
}, Record<string, import("xstate").AnyActorRef>, import("xstate").StateValue, string, unknown, any, any>, {
type: "SET_DEPOSIT_NUMBER";
value: number;
} | {
type: "CHECK_STATUS";
} | {
type: "COMPUTE_ETH_PROOF";
} | {
type: "BUILD_MINT_TX";
} | {
type: "SUBMIT_MINT_TX";
} | {
type: "RESET";
}, import("xstate").AnyEventObject>;
}) => {
depositBlockNumber: number;
ethStateTopic$: Observable<{
latest_finality_block_number: number;
latest_finality_slot: number;
}>;
bridgeStateTopic$: Observable<{
stage_name: import("node_modules/@nori-zk/pts-types/build/public/src/index.js").KeyTransitionStageMessageTypes;
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
elapsed_sec: number;
last_finalized_job: "unknown" | {
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
};
}>;
bridgeTimingsTopic$: Observable<{
message_type: "TransitionTiming";
extension: import("node_modules/@nori-zk/pts-types/build/public/src/index.js").KeyTransitionStageEstimatedTransitionTime;
datetime_iso: string;
topic: "timings.notices.transition";
}>;
};
readonly onSnapshot: {
readonly actions: import("xstate").ActionFunction<{
activeDepositNumber: number | null;
depositMintTx: string | null;
computedEthProof: string | null;
processingStatus: ObservableValue<ReturnType<typeof getDepositProcessingStatus$>> | null;
canComputeStatus: ObservableValue<ReturnType<typeof getCanComputeEthProof$>> | null;
canMintStatus: ObservableValue<ReturnType<typeof getCanMint$>> | null;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").SnapshotEvent<import("xstate").ObservableSnapshot<{
time_remaining_sec: number;
elapsed_sec: number;
deposit_processing_status: import("../rx/deposit.js").BridgeDepositProcessingStatus;
deposit_block_number: number;
stage_name: import("node_modules/@nori-zk/pts-types/build/public/src/index.js").KeyTransitionStageMessageTypes;
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
last_finalized_job: "unknown" | {
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
};
}, {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}>>, {
type: "SET_DEPOSIT_NUMBER";
value: number;
} | {
type: "CHECK_STATUS";
} | {
type: "COMPUTE_ETH_PROOF";
} | {
type: "BUILD_MINT_TX";
} | {
type: "SUBMIT_MINT_TX";
} | {
type: "RESET";
}, undefined, import("xstate").Values<{
depositProcessingStatusActor: {
src: "depositProcessingStatusActor";
logic: import("xstate").ObservableActorLogic<{
time_remaining_sec: number;
elapsed_sec: number;
deposit_processing_status: import("../rx/deposit.js").BridgeDepositProcessingStatus;
deposit_block_number: number;
stage_name: import("node_modules/@nori-zk/pts-types/build/public/src/index.js").KeyTransitionStageMessageTypes;
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
last_finalized_job: "unknown" | {
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
};
}, {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
canComputeEthProofActor: {
src: "canComputeEthProofActor";
logic: import("xstate").ObservableActorLogic<import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting" | "CanCompute", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
canMintActor: {
src: "canMintActor";
logic: import("xstate").ObservableActorLogic<import("../rx/deposit.js").BridgeDepositProcessingStatus.ReadyToMint | import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
computeEthProofService: {
src: "computeEthProofService";
logic: import("xstate").PromiseActorLogic<string, {
depositBlockNumber: number;
}, import("xstate").EventObject>;
id: string;
};
buildMintTxService: {
src: "buildMintTxService";
logic: import("xstate").PromiseActorLogic<string, {
depositBlockNumber: number;
ethProof: string;
}, import("xstate").EventObject>;
id: string;
};
submitMintTxService: {
src: "submitMintTxService";
logic: import("xstate").PromiseActorLogic<void, {
mintTx: string;
}, import("xstate").EventObject>;
id: string;
};
}>, never, never, never, never>;
};
}, {
readonly id: "canComputeEthProof";
readonly src: "canComputeEthProofActor";
readonly input: ({ context }: {
context: {
activeDepositNumber: number | null;
depositMintTx: string | null;
computedEthProof: string | null;
processingStatus: ObservableValue<ReturnType<typeof getDepositProcessingStatus$>> | null;
canComputeStatus: ObservableValue<ReturnType<typeof getCanComputeEthProof$>> | null;
canMintStatus: ObservableValue<ReturnType<typeof getCanMint$>> | null;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
};
event: {
type: "SET_DEPOSIT_NUMBER";
value: number;
} | {
type: "CHECK_STATUS";
} | {
type: "COMPUTE_ETH_PROOF";
} | {
type: "BUILD_MINT_TX";
} | {
type: "SUBMIT_MINT_TX";
} | {
type: "RESET";
};
self: import("xstate").ActorRef<import("xstate").MachineSnapshot<{
activeDepositNumber: number | null;
depositMintTx: string | null;
computedEthProof: string | null;
processingStatus: ObservableValue<ReturnType<typeof getDepositProcessingStatus$>> | null;
canComputeStatus: ObservableValue<ReturnType<typeof getCanComputeEthProof$>> | null;
canMintStatus: ObservableValue<ReturnType<typeof getCanMint$>> | null;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, {
type: "SET_DEPOSIT_NUMBER";
value: number;
} | {
type: "CHECK_STATUS";
} | {
type: "COMPUTE_ETH_PROOF";
} | {
type: "BUILD_MINT_TX";
} | {
type: "SUBMIT_MINT_TX";
} | {
type: "RESET";
}, Record<string, import("xstate").AnyActorRef>, import("xstate").StateValue, string, unknown, any, any>, {
type: "SET_DEPOSIT_NUMBER";
value: number;
} | {
type: "CHECK_STATUS";
} | {
type: "COMPUTE_ETH_PROOF";
} | {
type: "BUILD_MINT_TX";
} | {
type: "SUBMIT_MINT_TX";
} | {
type: "RESET";
}, import("xstate").AnyEventObject>;
}) => {
depositBlockNumber: number;
ethStateTopic$: Observable<{
latest_finality_block_number: number;
latest_finality_slot: number;
}>;
bridgeStateTopic$: Observable<{
stage_name: import("node_modules/@nori-zk/pts-types/build/public/src/index.js").KeyTransitionStageMessageTypes;
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
elapsed_sec: number;
last_finalized_job: "unknown" | {
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
};
}>;
bridgeTimingsTopic$: Observable<{
message_type: "TransitionTiming";
extension: import("node_modules/@nori-zk/pts-types/build/public/src/index.js").KeyTransitionStageEstimatedTransitionTime;
datetime_iso: string;
topic: "timings.notices.transition";
}>;
};
readonly onSnapshot: {
readonly actions: import("xstate").ActionFunction<{
activeDepositNumber: number | null;
depositMintTx: string | null;
computedEthProof: string | null;
processingStatus: ObservableValue<ReturnType<typeof getDepositProcessingStatus$>> | null;
canComputeStatus: ObservableValue<ReturnType<typeof getCanComputeEthProof$>> | null;
canMintStatus: ObservableValue<ReturnType<typeof getCanMint$>> | null;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").SnapshotEvent<import("xstate").ObservableSnapshot<import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting" | "CanCompute", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}>>, {
type: "SET_DEPOSIT_NUMBER";
value: number;
} | {
type: "CHECK_STATUS";
} | {
type: "COMPUTE_ETH_PROOF";
} | {
type: "BUILD_MINT_TX";
} | {
type: "SUBMIT_MINT_TX";
} | {
type: "RESET";
}, undefined, import("xstate").Values<{
depositProcessingStatusActor: {
src: "depositProcessingStatusActor";
logic: import("xstate").ObservableActorLogic<{
time_remaining_sec: number;
elapsed_sec: number;
deposit_processing_status: import("../rx/deposit.js").BridgeDepositProcessingStatus;
deposit_block_number: number;
stage_name: import("node_modules/@nori-zk/pts-types/build/public/src/index.js").KeyTransitionStageMessageTypes;
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
last_finalized_job: "unknown" | {
input_slot: number;
input_block_number: number;
output_slot: number;
output_block_number: number;
};
}, {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
canComputeEthProofActor: {
src: "canComputeEthProofActor";
logic: import("xstate").ObservableActorLogic<import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting" | "CanCompute", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
canMintActor: {
src: "canMintActor";
logic: import("xstate").ObservableActorLogic<import("../rx/deposit.js").BridgeDepositProcessingStatus.ReadyToMint | import("../rx/deposit.js").BridgeDepositProcessingStatus.MissedMintingOpportunity | "Waiting", {
depositBlockNumber: number;
ethStateTopic$: ReturnType<typeof getEthStateTopic$>;
bridgeStateTopic$: ReturnType<typeof getBridgeStateTopic$>;
bridgeTimingsTopic$: ReturnType<typeof getBridgeTimingsTopic$>;
}, import("xstate").EventObject>;
id: string;
};
computeEthProofService: {
src: "computeEthProofService";
logic: import("xstate").PromiseActorLogic<string, {
depositBlockNumber: number;
}, import("xstate").EventObject>;
id: string;
};
buildMintTxService: {
src: "buildMintTxService";
logic: import("xstate").PromiseActorLogic<string, {
depositBlockNumber: number;
ethProof: string;
}, import("xstate").EventObject>;
id: string;
};
submitMintTxService: {
src: "submitMintTxService";
logic: import("xstate").PromiseActorLogic<void, {
mintTx: string;
}, import("xstate").EventObject>;