@drift-labs/sdk
Version:
SDK for Drift Protocol
132 lines (118 loc) • 2.55 kB
text/typescript
import { MemcmpFilter } from '@solana/web3.js';
import bs58 from 'bs58';
import { BorshAccountsCoder } from '@coral-xyz/anchor';
import { encodeName } from './userName';
export function getUserFilter(): MemcmpFilter {
return {
memcmp: {
offset: 0,
bytes: bs58.encode(BorshAccountsCoder.accountDiscriminator('User')),
},
};
}
export function getNonIdleUserFilter(): MemcmpFilter {
return {
memcmp: {
offset: 4350,
bytes: bs58.encode(Uint8Array.from([0])),
},
};
}
export function getUserWithOrderFilter(): MemcmpFilter {
return {
memcmp: {
offset: 4352,
bytes: bs58.encode(Uint8Array.from([1])),
},
};
}
export function getUserWithoutOrderFilter(): MemcmpFilter {
return {
memcmp: {
offset: 4352,
bytes: bs58.encode(Uint8Array.from([0])),
},
};
}
export function getUserWithAuctionFilter(): MemcmpFilter {
return {
memcmp: {
offset: 4354,
bytes: bs58.encode(Uint8Array.from([1])),
},
};
}
export function getUserThatHasBeenLP(): MemcmpFilter {
return {
memcmp: {
offset: 4267,
bytes: bs58.encode(Uint8Array.from([99])),
},
};
}
export function getUserWithName(name: string): MemcmpFilter {
return {
memcmp: {
offset: 72,
bytes: bs58.encode(Uint8Array.from(encodeName(name))),
},
};
}
export function getUsersWithPoolId(poolId: number): MemcmpFilter {
return {
memcmp: {
offset: 4356,
bytes: bs58.encode(Uint8Array.from([poolId])),
},
};
}
export function getUserStatsFilter(): MemcmpFilter {
return {
memcmp: {
offset: 0,
bytes: bs58.encode(BorshAccountsCoder.accountDiscriminator('UserStats')),
},
};
}
export function getUserStatsIsReferredFilter(): MemcmpFilter {
return {
memcmp: {
offset: 188,
bytes: bs58.encode(Buffer.from(Uint8Array.from([2]))),
},
};
}
export function getUserStatsIsReferredOrReferrerFilter(): MemcmpFilter {
return {
memcmp: {
offset: 188,
bytes: bs58.encode(Buffer.from(Uint8Array.from([3]))),
},
};
}
export function getSignedMsgUserOrdersFilter(): MemcmpFilter {
return {
memcmp: {
offset: 0,
bytes: bs58.encode(
BorshAccountsCoder.accountDiscriminator('SignedMsgUserOrders')
),
},
};
}
export function getPerpMarketAccountsFilter(): MemcmpFilter {
return {
memcmp: {
offset: 0,
bytes: bs58.encode(BorshAccountsCoder.accountDiscriminator('PerpMarket')),
},
};
}
export function getSpotMarketAccountsFilter(): MemcmpFilter {
return {
memcmp: {
offset: 0,
bytes: bs58.encode(BorshAccountsCoder.accountDiscriminator('SpotMarket')),
},
};
}