multisig.ts 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. /**
  2. * This code was AUTOGENERATED using the codama library.
  3. * Please DO NOT EDIT THIS FILE, instead use visitors
  4. * to add features, then rerun codama to update it.
  5. *
  6. * @see https://github.com/codama-idl/codama
  7. */
  8. import {
  9. assertAccountExists,
  10. assertAccountsExist,
  11. combineCodec,
  12. decodeAccount,
  13. fetchEncodedAccount,
  14. fetchEncodedAccounts,
  15. getAddressDecoder,
  16. getAddressEncoder,
  17. getArrayDecoder,
  18. getArrayEncoder,
  19. getBooleanDecoder,
  20. getBooleanEncoder,
  21. getStructDecoder,
  22. getStructEncoder,
  23. getU8Decoder,
  24. getU8Encoder,
  25. type Account,
  26. type Address,
  27. type EncodedAccount,
  28. type FetchAccountConfig,
  29. type FetchAccountsConfig,
  30. type FixedSizeCodec,
  31. type FixedSizeDecoder,
  32. type FixedSizeEncoder,
  33. type MaybeAccount,
  34. type MaybeEncodedAccount,
  35. } from '@solana/kit';
  36. export type Multisig = {
  37. /** Number of signers required. */
  38. m: number;
  39. /** Number of valid signers. */
  40. n: number;
  41. /** Is `true` if this structure has been initialized. */
  42. isInitialized: boolean;
  43. /** Signer public keys. */
  44. signers: Array<Address>;
  45. };
  46. export type MultisigArgs = Multisig;
  47. export function getMultisigEncoder(): FixedSizeEncoder<MultisigArgs> {
  48. return getStructEncoder([
  49. ['m', getU8Encoder()],
  50. ['n', getU8Encoder()],
  51. ['isInitialized', getBooleanEncoder()],
  52. ['signers', getArrayEncoder(getAddressEncoder(), { size: 11 })],
  53. ]) as FixedSizeEncoder<MultisigArgs>;
  54. }
  55. export function getMultisigDecoder(): FixedSizeDecoder<Multisig> {
  56. return getStructDecoder([
  57. ['m', getU8Decoder()],
  58. ['n', getU8Decoder()],
  59. ['isInitialized', getBooleanDecoder()],
  60. ['signers', getArrayDecoder(getAddressDecoder(), { size: 11 })],
  61. ]) as FixedSizeDecoder<Multisig>;
  62. }
  63. export function getMultisigCodec(): FixedSizeCodec<MultisigArgs, Multisig> {
  64. return combineCodec(
  65. getMultisigEncoder(),
  66. getMultisigDecoder()
  67. ) as FixedSizeCodec<MultisigArgs, Multisig>;
  68. }
  69. export function decodeMultisig<TAddress extends string = string>(
  70. encodedAccount: EncodedAccount<TAddress>
  71. ): Account<Multisig, TAddress>;
  72. export function decodeMultisig<TAddress extends string = string>(
  73. encodedAccount: MaybeEncodedAccount<TAddress>
  74. ): MaybeAccount<Multisig, TAddress>;
  75. export function decodeMultisig<TAddress extends string = string>(
  76. encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>
  77. ): Account<Multisig, TAddress> | MaybeAccount<Multisig, TAddress> {
  78. return decodeAccount(
  79. encodedAccount as MaybeEncodedAccount<TAddress>,
  80. getMultisigDecoder()
  81. );
  82. }
  83. export async function fetchMultisig<TAddress extends string = string>(
  84. rpc: Parameters<typeof fetchEncodedAccount>[0],
  85. address: Address<TAddress>,
  86. config?: FetchAccountConfig
  87. ): Promise<Account<Multisig, TAddress>> {
  88. const maybeAccount = await fetchMaybeMultisig(rpc, address, config);
  89. assertAccountExists(maybeAccount);
  90. return maybeAccount;
  91. }
  92. export async function fetchMaybeMultisig<TAddress extends string = string>(
  93. rpc: Parameters<typeof fetchEncodedAccount>[0],
  94. address: Address<TAddress>,
  95. config?: FetchAccountConfig
  96. ): Promise<MaybeAccount<Multisig, TAddress>> {
  97. const maybeAccount = await fetchEncodedAccount(rpc, address, config);
  98. return decodeMultisig(maybeAccount);
  99. }
  100. export async function fetchAllMultisig(
  101. rpc: Parameters<typeof fetchEncodedAccounts>[0],
  102. addresses: Array<Address>,
  103. config?: FetchAccountsConfig
  104. ): Promise<Account<Multisig>[]> {
  105. const maybeAccounts = await fetchAllMaybeMultisig(rpc, addresses, config);
  106. assertAccountsExist(maybeAccounts);
  107. return maybeAccounts;
  108. }
  109. export async function fetchAllMaybeMultisig(
  110. rpc: Parameters<typeof fetchEncodedAccounts>[0],
  111. addresses: Array<Address>,
  112. config?: FetchAccountsConfig
  113. ): Promise<MaybeAccount<Multisig>[]> {
  114. const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
  115. return maybeAccounts.map((maybeAccount) => decodeMultisig(maybeAccount));
  116. }
  117. export function getMultisigSize(): number {
  118. return 355;
  119. }