{"version":3,"file":"Signer.cjs","sources":["../../../src/types/Signer.ts"],"sourcesContent":["import { PublicKey, Transaction } from '@solana/web3.js';\n\nexport type Signer = KeypairSigner | IdentitySigner;\n\nexport type KeypairSigner = {\n  publicKey: PublicKey;\n  secretKey: Uint8Array;\n};\n\nexport type IdentitySigner = {\n  publicKey: PublicKey;\n  signMessage(message: Uint8Array): Promise<Uint8Array>;\n  signTransaction(transaction: Transaction): Promise<Transaction>;\n  signAllTransactions(transactions: Transaction[]): Promise<Transaction[]>;\n};\n\nexport const isSigner = (input: any): input is Signer => {\n  return (\n    typeof input === 'object' &&\n    'publicKey' in input &&\n    ('secretKey' in input || 'signTransaction' in input)\n  );\n};\n\nexport const isKeypairSigner = (input: any): input is KeypairSigner => {\n  return isSigner(input) && 'secretKey' in input && input.secretKey != null;\n};\n\nexport const isIdentitySigner = (input: any): input is IdentitySigner => {\n  return isSigner(input) && !isKeypairSigner(input);\n};\n\nexport type SignerHistogram = {\n  all: Signer[];\n  keypairs: KeypairSigner[];\n  identities: IdentitySigner[];\n};\n\nexport const getSignerHistogram = (signers: Signer[]) =>\n  signers.reduce(\n    (signers: SignerHistogram, signer: Signer) => {\n      const duplicateIndex = signers.all.findIndex(({ publicKey }) =>\n        publicKey.equals(signer.publicKey)\n      );\n      const duplicate = signers.all[duplicateIndex] ?? null;\n      const duplicateIsIdentity = duplicate\n        ? isIdentitySigner(duplicate)\n        : false;\n      const signerIsIdentity = isIdentitySigner(signer);\n\n      if (!duplicate) {\n        signers.all.push(signer);\n        if (signerIsIdentity) {\n          signers.identities.push(signer);\n        } else {\n          signers.keypairs.push(signer);\n        }\n      } else if (duplicateIsIdentity && !signerIsIdentity) {\n        // Prefer keypair than identity signer as it requires less user interactions.\n        const duplicateIdentitiesIndex = signers.identities.findIndex(\n          ({ publicKey }) => publicKey.equals(signer.publicKey)\n        );\n        signers.all.splice(duplicateIndex, 1);\n        signers.identities.splice(duplicateIdentitiesIndex, 1);\n        signers.all.push(signer);\n        signers.keypairs.push(signer);\n      }\n\n      return signers;\n    },\n    { all: [], keypairs: [], identities: [] }\n  );\n"],"names":["isSigner","input","_typeof","isKeypairSigner","secretKey","isIdentitySigner","getSignerHistogram","signers","reduce","signer","_signers$all$duplicat","duplicateIndex","all","findIndex","_ref","publicKey","equals","duplicate","duplicateIsIdentity","signerIsIdentity","push","identities","keypairs","duplicateIdentitiesIndex","_ref2","splice"],"mappings":"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"}