{"version":3,"file":"Keypair.mjs","sources":["../../src/Keypair.ts"],"sourcesContent":["import type { PublicKey } from '@metaplex-foundation/umi-public-keys';\nimport type { Context } from './Context';\nimport type { Signer } from './Signer';\nimport { addTransactionSignature, Transaction } from './Transaction';\n\n/**\n * Represents a keypair with a public key and a secret key.\n * @category Signers and PublicKeys\n */\nexport type Keypair = {\n  publicKey: PublicKey;\n  secretKey: Uint8Array;\n};\n\n/**\n * Represent a {@link Signer} that can is aware of its secret key.\n * @category Signers and PublicKeys\n */\nexport type KeypairSigner = Signer & Keypair;\n\n/**\n * Generate a new random {@link KeypairSigner} using the Eddsa interface.\n * @category Signers and PublicKeys\n */\nexport const generateSigner = (\n  context: Pick<Context, 'eddsa'>\n): KeypairSigner =>\n  createSignerFromKeypair(context, context.eddsa.generateKeypair());\n\n/**\n * Creates a {@link KeypairSigner} from a {@link Keypair} object.\n * @category Signers and PublicKeys\n */\nexport const createSignerFromKeypair = (\n  context: Pick<Context, 'eddsa'>,\n  keypair: Keypair\n): KeypairSigner => ({\n  publicKey: keypair.publicKey,\n  secretKey: keypair.secretKey,\n  async signMessage(message: Uint8Array): Promise<Uint8Array> {\n    return context.eddsa.sign(message, keypair);\n  },\n  async signTransaction(transaction: Transaction): Promise<Transaction> {\n    const message = transaction.serializedMessage;\n    const signature = context.eddsa.sign(message, keypair);\n    return addTransactionSignature(transaction, signature, keypair.publicKey);\n  },\n  async signAllTransactions(\n    transactions: Transaction[]\n  ): Promise<Transaction[]> {\n    return Promise.all(\n      transactions.map((transaction) => this.signTransaction(transaction))\n    );\n  },\n});\n\n/**\n * Whether the given signer is a {@link KeypairSigner}.\n * @category Signers and PublicKeys\n */\nexport const isKeypairSigner = (\n  signer: Signer & { secretKey?: Uint8Array }\n): signer is KeypairSigner => signer.secretKey !== undefined;\n"],"names":["generateSigner","context","createSignerFromKeypair","eddsa","generateKeypair","keypair","publicKey","secretKey","signMessage","message","sign","signTransaction","transaction","serializedMessage","signature","addTransactionSignature","signAllTransactions","transactions","Promise","all","map","isKeypairSigner","signer","undefined"],"mappings":";;AAKA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;AACaA,MAAAA,cAAc,GACzBC,OAA+B,IAE/BC,uBAAuB,CAACD,OAAO,EAAEA,OAAO,CAACE,KAAK,CAACC,eAAe,EAAE,EAAC;;AAEnE;AACA;AACA;AACA;MACaF,uBAAuB,GAAG,CACrCD,OAA+B,EAC/BI,OAAgB,MACG;EACnBC,SAAS,EAAED,OAAO,CAACC,SAAS;EAC5BC,SAAS,EAAEF,OAAO,CAACE,SAAS;EAC5B,MAAMC,WAAW,CAACC,OAAmB,EAAuB;IAC1D,OAAOR,OAAO,CAACE,KAAK,CAACO,IAAI,CAACD,OAAO,EAAEJ,OAAO,CAAC,CAAA;GAC5C;EACD,MAAMM,eAAe,CAACC,WAAwB,EAAwB;AACpE,IAAA,MAAMH,OAAO,GAAGG,WAAW,CAACC,iBAAiB,CAAA;IAC7C,MAAMC,SAAS,GAAGb,OAAO,CAACE,KAAK,CAACO,IAAI,CAACD,OAAO,EAAEJ,OAAO,CAAC,CAAA;IACtD,OAAOU,uBAAuB,CAACH,WAAW,EAAEE,SAAS,EAAET,OAAO,CAACC,SAAS,CAAC,CAAA;GAC1E;EACD,MAAMU,mBAAmB,CACvBC,YAA2B,EACH;AACxB,IAAA,OAAOC,OAAO,CAACC,GAAG,CAChBF,YAAY,CAACG,GAAG,CAAER,WAAW,IAAK,IAAI,CAACD,eAAe,CAACC,WAAW,CAAC,CAAC,CACrE,CAAA;AACH,GAAA;AACF,CAAC,EAAC;;AAEF;AACA;AACA;AACA;AACO,MAAMS,eAAe,GAC1BC,MAA2C,IACfA,MAAM,CAACf,SAAS,KAAKgB;;;;"}