* Bumping drift-common to ab538e0c1efbf64a3dfecf2af16e5a75aab81400 * Bumping drift-common to cf7f6ec63febe0d3b661f187e4e26e729797c4d0 * Bumping drift-common to 149f5efe5444d89b53b5370dcea4a3115fec8c5f * Bumping drift-common to c879f8a85bfcbaef1f1c6d9c6bf4a05e8970fa0a * Bumping drift-common to d089c9ed7e7400a0f3ea98a0184a4e3bf273fcf5 * dlob add fetch indicative quotes (#372) * dlob add fetch indicative quotes * indicative ws stream * prettify * allow for oracle orders * Bumping drift-common to 56331c89a2285a04cc86a639e0fceeda03366f43 * add console log for debugging indicative * add indicative in l2 queries * add more console logging for debugging * bump common and remove logging * Bumping drift-common to 43104f473f43111f8cc34733a43a85b5fef7f778 * Bumping drift-common to 6d75612fa1fab858daa90cdb91f0c8c9edbc8242 * Bumping drift-common to 3a42e9665c04a27bcf92e7faa50c168690312880 * Bumping drift-common to 20351d45f2644fb7194ffce441d3d2cb8d6c6b4b * Bumping drift-common to 04216dfc03aa659db24fc24ba42aa8a4e9a8bb9a * Bumping drift-common to ad20bbe9d3a262c547f66ec464306fabac539fd8 * Bumping drift-common to 5539ad5f3849b19e1b7106f783a16a182fc9a411 * Bumping drift-common to 8b7e118f1aed9d1d7a786cd165f0ceef2a07297c * Bumping drift-common to 52b7948cebb0ed6bc1f8278b0f549366a1be3ba0 * Bumping drift-common to 26a603c2d78f7f662cb872075bdff1fd6b75ec43 * Bumping drift-common to 683bfc5cefe5097a257511507f22831f185f1549 * Bumping drift-common to b66eaade382a58b563fdc5ee6c03bc98e5bb2195 * Bumping drift-common to 9a48bea13265723c5d17377e68aaf9984b24c722 * Bumping drift-common to a147ab129f6eb59d77889ac2b7a915ca910d83dd * Bumping drift-common to 65891abfcd5f59c726aecb211ae77ca38394bdf1 * Bumping drift-common to 540cdbbc9b322990d288af8f4f3183f2c96087b7 * Bumping drift-common to 978b8a03b59d0dc24d1269f319ff6a7ff711775a * Bumping drift-common to af74d01953db3683bca585c2111910cbbe171a72 * Bumping drift-common to cd684e22082438f0cb784ec234fd9e5d3cd63bb2 --------- Co-authored-by: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com>
108 lines
2.5 KiB
TypeScript
108 lines
2.5 KiB
TypeScript
import {
|
|
DLOB,
|
|
OrderSubscriber,
|
|
ProtectMakerParamsMap,
|
|
UserAccount,
|
|
UserMap,
|
|
} from '@drift-labs/sdk';
|
|
import { PublicKey } from '@solana/web3.js';
|
|
|
|
export type DLOBProvider = {
|
|
subscribe(): Promise<void>;
|
|
getDLOB(
|
|
slot: number,
|
|
protectedMakerParamsMap?: ProtectMakerParamsMap
|
|
): Promise<DLOB>;
|
|
getUniqueAuthorities(): PublicKey[];
|
|
getUserAccounts(): Generator<{
|
|
userAccount: UserAccount;
|
|
publicKey: PublicKey;
|
|
}>;
|
|
getUserAccount(publicKey: PublicKey): UserAccount | undefined;
|
|
size(): number;
|
|
fetch(): Promise<void>;
|
|
getSlot(): number;
|
|
};
|
|
|
|
export function getDLOBProviderFromUserMap(userMap: UserMap): DLOBProvider {
|
|
return {
|
|
subscribe: async () => {
|
|
await userMap.subscribe();
|
|
},
|
|
getDLOB: async (
|
|
slot: number,
|
|
protectedMakerParamsMap?: ProtectMakerParamsMap
|
|
) => {
|
|
return await userMap.getDLOB(slot, protectedMakerParamsMap);
|
|
},
|
|
getUniqueAuthorities: () => {
|
|
return userMap.getUniqueAuthorities();
|
|
},
|
|
getUserAccounts: function* () {
|
|
for (const user of userMap.values()) {
|
|
yield {
|
|
userAccount: user.getUserAccount(),
|
|
publicKey: user.getUserAccountPublicKey(),
|
|
};
|
|
}
|
|
},
|
|
getUserAccount: (publicKey) => {
|
|
return userMap.get(publicKey.toString())?.getUserAccount();
|
|
},
|
|
size: () => {
|
|
return userMap.size();
|
|
},
|
|
fetch: () => {
|
|
return userMap.sync();
|
|
},
|
|
getSlot: () => {
|
|
return userMap.getSlot();
|
|
},
|
|
};
|
|
}
|
|
|
|
export function getDLOBProviderFromOrderSubscriber(
|
|
orderSubscriber: OrderSubscriber
|
|
): DLOBProvider {
|
|
return {
|
|
subscribe: async () => {
|
|
await orderSubscriber.subscribe();
|
|
},
|
|
getDLOB: async (
|
|
slot: number,
|
|
protectedMakerParamsMap?: ProtectMakerParamsMap
|
|
) => {
|
|
return await orderSubscriber.getDLOB(slot, protectedMakerParamsMap);
|
|
},
|
|
getUniqueAuthorities: () => {
|
|
const authorities = new Set<string>();
|
|
for (const { userAccount } of orderSubscriber.usersAccounts.values()) {
|
|
authorities.add(userAccount.authority.toBase58());
|
|
}
|
|
const pubkeys = Array.from(authorities).map((a) => new PublicKey(a));
|
|
return pubkeys;
|
|
},
|
|
getUserAccounts: function* () {
|
|
for (const [
|
|
key,
|
|
{ userAccount },
|
|
] of orderSubscriber.usersAccounts.entries()) {
|
|
yield { userAccount: userAccount, publicKey: new PublicKey(key) };
|
|
}
|
|
},
|
|
getUserAccount: (publicKey) => {
|
|
return orderSubscriber.usersAccounts.get(publicKey.toString())
|
|
?.userAccount;
|
|
},
|
|
size(): number {
|
|
return orderSubscriber.usersAccounts.size;
|
|
},
|
|
fetch() {
|
|
return orderSubscriber.fetch();
|
|
},
|
|
getSlot: () => {
|
|
return orderSubscriber.getSlot();
|
|
},
|
|
};
|
|
}
|