2022-10-27 10:32:13 -07:00
|
|
|
import {
|
|
|
|
Commitment,
|
|
|
|
Connection,
|
|
|
|
PublicKey,
|
|
|
|
PublicKeyInitData,
|
|
|
|
} from "@solana/web3.js";
|
2022-10-26 07:28:46 -07:00
|
|
|
import { deriveAddress } from "../../utils";
|
2022-10-27 10:32:13 -07:00
|
|
|
import {
|
|
|
|
deriveEmitterSequenceKey,
|
|
|
|
getSequenceTracker,
|
|
|
|
SequenceTracker,
|
|
|
|
} from "./sequence";
|
2022-10-26 07:28:46 -07:00
|
|
|
|
|
|
|
export interface EmitterAccounts {
|
|
|
|
emitter: PublicKey;
|
|
|
|
sequence: PublicKey;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function deriveWormholeEmitterKey(
|
|
|
|
emitterProgramId: PublicKeyInitData
|
|
|
|
): PublicKey {
|
|
|
|
return deriveAddress([Buffer.from("emitter")], emitterProgramId);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getEmitterKeys(
|
|
|
|
emitterProgramId: PublicKeyInitData,
|
|
|
|
wormholeProgramId: PublicKeyInitData
|
|
|
|
): EmitterAccounts {
|
|
|
|
const emitter = deriveWormholeEmitterKey(emitterProgramId);
|
|
|
|
return {
|
|
|
|
emitter,
|
|
|
|
sequence: deriveEmitterSequenceKey(emitter, wormholeProgramId),
|
|
|
|
};
|
|
|
|
}
|
2022-10-27 10:32:13 -07:00
|
|
|
|
|
|
|
export async function getProgramSequenceTracker(
|
|
|
|
connection: Connection,
|
|
|
|
emitterProgramId: PublicKeyInitData,
|
|
|
|
wormholeProgramId: PublicKeyInitData,
|
|
|
|
commitment?: Commitment
|
|
|
|
): Promise<SequenceTracker> {
|
|
|
|
return getSequenceTracker(
|
|
|
|
connection,
|
|
|
|
deriveWormholeEmitterKey(emitterProgramId),
|
|
|
|
wormholeProgramId,
|
|
|
|
commitment
|
|
|
|
);
|
|
|
|
}
|