types.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { PublicKey } from '@solana/web3.js';
  2. import { SolanaSignInInput } from "@solana/wallet-standard-features";
  3. type DisplayEncoding = 'utf8' | 'hex';
  4. type PhantomEvent = 'connect' | 'disconnect' | 'accountChanged';
  5. type PhantomRequestMethod =
  6. | 'connect'
  7. | 'disconnect'
  8. | 'signMessage'
  9. | 'signIn';
  10. interface ConnectOpts {
  11. onlyIfTrusted: boolean;
  12. }
  13. export interface Provider {
  14. publicKey: PublicKey | null;
  15. isConnected: boolean | null;
  16. signMessage: (message: Uint8Array | string, display?: DisplayEncoding) => Promise<Uint8Array>;
  17. signIn: (signInData: SolanaSignInInput) => Promise<{
  18. address: PublicKey, signedMessage: Uint8Array, signature: Buffer
  19. }>;
  20. connect: (opts?: Partial<ConnectOpts>) => Promise<{ publicKey: PublicKey }>;
  21. disconnect: () => Promise<void>;
  22. on: (event: PhantomEvent, handler: (args: any) => void) => void;
  23. request: (method: PhantomRequestMethod, params: any) => Promise<unknown>;
  24. }
  25. export type Status = 'success' | 'warning' | 'error' | 'info';
  26. export interface TLog {
  27. status: Status;
  28. method?: PhantomRequestMethod | Extract<PhantomEvent, 'accountChanged'>;
  29. confirmation?: {signature: string, link: string};
  30. message: string;
  31. messageTwo?: string;
  32. }